3.3 KiB
#!/bin/bash
============================================================
脚本功能:收集指定命名空间下副本数 > 1 的 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 ; 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 "=========================================="