58 lines
1.6 KiB
Bash
Executable File
58 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
||
# GitOps自动更新演示脚本
|
||
|
||
echo "🎯 GitOps自动更新演示"
|
||
echo "======================="
|
||
echo ""
|
||
|
||
# 检查当前版本
|
||
echo "📊 当前应用版本:"
|
||
curl -s http://8.216.38.248:30081 | grep -o "Version: v[0-9.]*"
|
||
echo ""
|
||
|
||
# 提示用户
|
||
echo "现在我们将更新应用到 v2.0..."
|
||
echo "按Enter键继续..."
|
||
read
|
||
|
||
# SSH到master节点并更新
|
||
echo "🔄 正在更新应用..."
|
||
ssh fei@8.216.38.248 "cd /home/fei/k3s/test-app && ./update-app.sh v2.0"
|
||
|
||
echo ""
|
||
echo "✅ Git提交完成!"
|
||
echo ""
|
||
echo "⏳ 等待ArgoCD检测变化并自动同步..."
|
||
echo " (ArgoCD每3分钟检查一次Git仓库)"
|
||
echo ""
|
||
|
||
# 监控同步状态
|
||
echo "📊 监控ArgoCD同步状态..."
|
||
for i in {1..12}; do
|
||
STATUS=$(ssh fei@8.216.38.248 "kubectl get application test-app -n argocd -o jsonpath='{.status.sync.status}'")
|
||
HEALTH=$(ssh fei@8.216.38.248 "kubectl get application test-app -n argocd -o jsonpath='{.status.health.status}'")
|
||
echo "[$i/12] Sync: $STATUS | Health: $HEALTH"
|
||
|
||
if [ "$STATUS" = "Synced" ] && [ "$HEALTH" = "Healthy" ]; then
|
||
echo ""
|
||
echo "✅ 同步完成!"
|
||
break
|
||
fi
|
||
|
||
sleep 15
|
||
done
|
||
|
||
echo ""
|
||
echo "🎉 验证更新后的版本:"
|
||
curl -s http://8.216.38.248:30081 | grep -o "Version: v[0-9.]*"
|
||
echo ""
|
||
echo "🌐 访问 http://8.216.38.248:30081 查看新版本(背景颜色已改变)"
|
||
echo ""
|
||
echo "📝 总结:"
|
||
echo " 1. 我们修改了Git仓库中的配置"
|
||
echo " 2. ArgoCD自动检测到变化"
|
||
echo " 3. ArgoCD自动部署了新版本"
|
||
echo " 4. 整个过程无需手动执行kubectl命令"
|
||
echo ""
|
||
echo "这就是GitOps的魅力!🚀"
|