| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- #!/bin/bash
- # deploy-with-cleanup.sh
- # Helm部署脚本,内置cleanup-on-fail和自动清理旧RS
- set -e
- RELEASE_NAME="shop-recycle"
- CHART_PATH="./"
- ENVIRONMENT="${1:-dev}" # 默认dev环境
- case $ENVIRONMENT in
- dev)
- VALUES_FILE="environments/dev-values.yaml"
- ;;
- staging)
- VALUES_FILE="environments/staging-values.yaml"
- ;;
- prod)
- VALUES_FILE="environments/prod-values.yaml"
- ;;
- *)
- echo "未知环境: $ENVIRONMENT"
- echo "用法: ./deploy-with-cleanup.sh [dev|staging|prod]"
- exit 1
- ;;
- esac
- echo "=========================================="
- echo "部署配置:"
- echo "Release: $RELEASE_NAME"
- echo "环境: $ENVIRONMENT"
- echo "Values文件: $VALUES_FILE"
- echo "=========================================="
- # 检查Helm Release是否存在
- if helm status $RELEASE_NAME > /dev/null 2>&1; then
- echo "升级现有Release..."
- helm upgrade $RELEASE_NAME $CHART_PATH \
- -f $VALUES_FILE \
- --cleanup-on-fail \
- --timeout 5m \
- --wait
-
- echo "等待2秒后清理旧的ReplicaSets..."
- sleep 2
-
- # 清理旧的ReplicaSets(只保留3个最新版本)
- echo "清理旧的ReplicaSets..."
- kubectl delete rs --field-selector=status.replicas=0 -l project=shop-recycle || true
- else
- echo "安装新Release..."
- helm install $RELEASE_NAME $CHART_PATH \
- -f $VALUES_FILE \
- --timeout 5m \
- --wait
- fi
- echo "=========================================="
- echo "部署完成!"
- echo "=========================================="
- echo ""
- echo "验证部署状态:"
- helm status $RELEASE_NAME
- echo ""
- echo "查看Pods:"
- kubectl get pods -l project=shop-recycle -o wide
|