K3s GitOps 自动部署指南

🎯 GitOps 工作流概述

本项目已配置完整的 GitOps 自动部署流程:Git 提交 → 自动同步 → 集群部署

已满足的实现条件

1. 基础设施

  • k3s 集群: v1.34.3+k3s1 (单节点)
  • 存储系统: Longhorn 分布式存储
  • 证书管理: cert-manager + Let's Encrypt
  • Ingress: Traefik

2. GitOps 工具链

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   # 自动修复被手动修改的资源

手动同步

如果需要立即同步,可以:

  1. 在 ArgoCD UI 点击 "Sync" 按钮
  2. 或使用命令行:
# 安装 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"}}'

📚 下一步

  1. 配置 Webhook: 在 Gitea 中配置 Webhook实现即时同步
  2. 多环境部署: 创建 dev/staging/prod 分支
  3. 密钥管理: 使用 Sealed Secrets 管理敏感信息
  4. 监控告警: 集成 Prometheus + Grafana

🎉 总结

现在你已经拥有完整的 GitOps 工作流:

修改 YAML → Git Commit → Git Push → ArgoCD 自动同步 → k3s 集群更新

所有配置变更都通过 Git 管理,实现了:

  • 版本控制
  • 自动部署
  • 快速回滚
  • 审计追踪
Description
No description provided
Readme 88 KiB