85 lines
3.3 KiB
Bash
85 lines
3.3 KiB
Bash
#!/bin/bash
|
||
# ============================================================
|
||
# 脚本功能:收集指定命名空间下副本数 > 0 的 Deployment 信息
|
||
# 包含:Deployment 名称、镜像名称、GIT 相关环境变量
|
||
# ============================================================
|
||
|
||
set -euo pipefail
|
||
|
||
# ── 配置区 ──────────────────────────────────────────────────
|
||
NAMESPACE="sd-wf-ga-fly-260327"
|
||
OUTPUT_FILE="deployment_info_$(date +%Y%m%d_%H%M%S).txt"
|
||
# ────────────────────────────────────────────────────────────
|
||
|
||
echo "=========================================="
|
||
echo " 命名空间 : $NAMESPACE"
|
||
echo " 输出文件 : $OUTPUT_FILE"
|
||
echo "=========================================="
|
||
|
||
# 创建(清空)输出文件
|
||
> "$OUTPUT_FILE"
|
||
|
||
# 获取所有 Deployment 名称(换行分隔)
|
||
DEPLOYMENTS=$(kubectl get deployments -n "$NAMESPACE" \
|
||
-o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' 2>/dev/null)
|
||
|
||
if [[ -z "$DEPLOYMENTS" ]]; then
|
||
echo "[ERROR] 命名空间 '$NAMESPACE' 下未发现任何 Deployment,请检查命名空间是否正确。"
|
||
exit 1
|
||
fi
|
||
|
||
PROCESSED=0
|
||
SKIPPED=0
|
||
|
||
while IFS= read -r DEPLOY; do
|
||
[[ -z "$DEPLOY" ]] && continue
|
||
|
||
# ── 1. 获取期望副本数 ──────────────────────────────────────
|
||
REPLICAS=$(kubectl get deployment "$DEPLOY" -n "$NAMESPACE" \
|
||
-o jsonpath='{.spec.replicas}' 2>/dev/null)
|
||
REPLICAS="${REPLICAS:-0}"
|
||
|
||
if [[ "$REPLICAS" == 0 ]]; then
|
||
echo "[SKIP] $DEPLOY (副本数=${REPLICAS},≤ 1,跳过)"
|
||
(( SKIPPED++ )) || true
|
||
continue
|
||
fi
|
||
|
||
echo "[INFO] 处理 Deployment: $DEPLOY (副本数=${REPLICAS})"
|
||
|
||
# ── 2. 获取第一个容器的镜像名称 ───────────────────────────
|
||
IMAGE=$(kubectl get deployment "$DEPLOY" -n "$NAMESPACE" \
|
||
-o jsonpath='{.spec.template.spec.containers[0].image}' 2>/dev/null)
|
||
IMAGE="${IMAGE:-<未获取到镜像>}"
|
||
|
||
# ── 3. 在第一个副本 Pod 中执行 env | grep GIT ─────────────
|
||
GIT_ENV=$(kubectl exec -n "$NAMESPACE" "deploy/$DEPLOY" \
|
||
-- sh -c "env | grep GIT" 2>/dev/null || echo "")
|
||
|
||
# ── 4. 写入输出文件 ───────────────────────────────────────
|
||
{
|
||
echo "deployment名称:${DEPLOY}"
|
||
echo "镜像名称:${IMAGE}"
|
||
echo "环境变量:"
|
||
if [[ -n "$GIT_ENV" ]]; then
|
||
while IFS= read -r env_line; do
|
||
echo " ${env_line}"
|
||
done <<< "$GIT_ENV"
|
||
else
|
||
echo " (未发现 GIT 相关环境变量)"
|
||
fi
|
||
echo ""
|
||
echo "------------------------------------------"
|
||
echo ""
|
||
} >> "$OUTPUT_FILE"
|
||
|
||
(( PROCESSED++ )) || true
|
||
|
||
done <<< "$DEPLOYMENTS"
|
||
|
||
# ── 汇总输出 ──────────────────────────────────────────────
|
||
echo ""
|
||
echo "=========================================="
|
||
echo " 完成!已处理: ${PROCESSED} 个,已跳过: ${SKIPPED} 个"
|
||
echo " 结果文件: $OUTPUT_FILE"
|
||
echo "==========================================" |