K3s GitOps 自动部署指南
🎯 GitOps 工作流概述
本项目已配置完整的 GitOps 自动部署流程:Git 提交 → 自动同步 → 集群部署
✅ 已满足的实现条件
1. 基础设施 ✅
- k3s 集群: v1.34.3+k3s1 (单节点)
- 存储系统: Longhorn 分布式存储
- 证书管理: cert-manager + Let's Encrypt
- Ingress: Traefik
2. GitOps 工具链 ✅
-
ArgoCD: 已部署并运行
- 访问地址: https://argocd.u9.net3w.com
- 用户名:
admin - 初始密码:
R5ALO8NIRi4KoN8Q
-
Gitea: 已部署并运行
- 访问地址: https://git.u9.net3w.com
- 用于托管 k3s 配置文件
3. Git 仓库 ✅
- 本地仓库已初始化
- 所有 k3s 配置文件已提交
🚀 GitOps 自动部署流程
方式一:使用 Gitea(推荐)
步骤 1: 在 Gitea 创建仓库
# 1. 访问 https://git.u9.net3w.com
# 2. 注册/登录账号
# 3. 创建新仓库: k3s-configs
# 4. 获取仓库 URL
步骤 2: 推送代码到 Gitea
# 添加远程仓库
git remote add origin https://git.u9.net3w.com/你的用户名/k3s-configs.git
# 推送代码
git push -u origin master
步骤 3: 配置 ArgoCD 连接 Gitea
# 1. 访问 https://argocd.u9.net3w.com
# 2. 登录 (admin / R5ALO8NIRi4KoN8Q)
# 3. Settings → Repositories → Connect Repo
# - Repository URL: https://git.u9.net3w.com/你的用户名/k3s-configs.git
# - Username: 你的 Gitea 用户名
# - Password: 你的 Gitea 密码
步骤 4: 创建 ArgoCD Application
# 修改 k3s/argocd-app.yaml 中的 repoURL
# 然后应用配置
kubectl apply -f k3s/argocd-app.yaml
方式二:使用 GitHub/GitLab
如果你想使用 GitHub 或 GitLab:
# 推送到 GitHub
git remote add origin https://github.com/你的用户名/k3s-configs.git
git push -u origin master
# 在 ArgoCD 中配置对应的仓库地址
📝 日常使用流程
1. 修改配置文件
# 例如:修改 WordPress 副本数
vim k3s/my-blog/02-wordpress.yaml
# 将 replicas: 2 改为 replicas: 3
2. 提交并推送
git add k3s/my-blog/02-wordpress.yaml
git commit -m "Scale WordPress to 3 replicas"
git push
3. 自动部署 🎉
- ArgoCD 会在 3 分钟内自动检测到变更
- 自动同步到 k3s 集群
- 可在 ArgoCD UI 查看部署状态
🔧 ArgoCD 配置说明
自动同步策略
syncPolicy:
automated:
prune: true # 自动删除 Git 中不存在的资源
selfHeal: true # 自动修复被手动修改的资源
手动同步
如果需要立即同步,可以:
- 在 ArgoCD UI 点击 "Sync" 按钮
- 或使用命令行:
# 安装 argocd CLI
curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
chmod +x /usr/local/bin/argocd
# 登录
argocd login argocd.u9.net3w.com --username admin --password R5ALO8NIRi4KoN8Q
# 手动同步
argocd app sync k3s-apps
📊 已部署的服务
| 服务 | 域名 | 配置文件路径 |
|---|---|---|
| WordPress | https://blog.u9.net3w.com | k3s/my-blog/ |
| Docker Registry | https://registry.u9.net3w.com | k3s/registry/ |
| n8n | https://n8n.u9.net3w.com | k3s/n8n/ |
| Gitea | https://git.u9.net3w.com | k3s/ztg_自托管/ |
| Uptime Kuma | https://status.u9.net3w.com | k3s/kuma-stack.yaml |
| 导航页 | https://nav.u9.net3w.com | k3s/nav/ |
| ArgoCD | https://argocd.u9.net3w.com | - |
🎯 最佳实践
1. 分支策略
# 创建开发分支
git checkout -b dev
# 在 dev 分支测试
git add .
git commit -m "Test new feature"
git push origin dev
# 测试通过后合并到 master
git checkout master
git merge dev
git push
2. 配置文件组织
k3s/
├── my-blog/ # WordPress 博客
├── registry/ # Docker 仓库
├── n8n/ # 工作流自动化
├── nav/ # 导航页
└── argocd-app.yaml # ArgoCD 应用配置
3. 回滚操作
# 查看历史提交
git log --oneline
# 回滚到指定版本
git revert <commit-hash>
git push
# ArgoCD 会自动同步回滚
🔍 监控和调试
查看 ArgoCD 应用状态
kubectl get applications -n argocd
kubectl describe application k3s-apps -n argocd
查看同步日志
# 在 ArgoCD UI 中查看
# 或使用 CLI
argocd app logs k3s-apps
常见问题
1. 同步失败
- 检查 Git 仓库是否可访问
- 检查 YAML 文件语法是否正确
- 查看 ArgoCD 日志
2. 证书问题
# 如果 Gitea 使用自签名证书
kubectl patch configmap argocd-cm -n argocd --type merge -p '{"data":{"repositories":"- url: https://git.u9.net3w.com/user/repo\n insecure: true"}}'
📚 下一步
- 配置 Webhook: 在 Gitea 中配置 Webhook,实现即时同步
- 多环境部署: 创建 dev/staging/prod 分支
- 密钥管理: 使用 Sealed Secrets 管理敏感信息
- 监控告警: 集成 Prometheus + Grafana
🎉 总结
现在你已经拥有完整的 GitOps 工作流:
修改 YAML → Git Commit → Git Push → ArgoCD 自动同步 → k3s 集群更新
所有配置变更都通过 Git 管理,实现了:
- ✅ 版本控制
- ✅ 自动部署
- ✅ 快速回滚
- ✅ 审计追踪
Description