Files
CmiiDeploy/998-常用脚本/备份脚本/部署业务-镜像-分支.sh
2026-05-19 14:28:44 +08:00

85 lines
3.3 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 "=========================================="