GitOps 是从 Git 存储库管理基础设施和部署的实践,将存储库视为单一事实来源。 ArgoCD 是将这种模式应用于 [Kubernetes22] 集群的领先工具,提供自动同步、差异可视化和全面审核。
为什么采用 GitOps?
- 一致性,所需的状态在 Git 中进行版本控制;任何偏差都可以逆转。
- 审核,每个更改都有提交、作者和审核历史记录。
- 即时回滚,只需恢复提交,ArgoCD 即可协调集群。
- 协作,拉取请求允许在申请之前审查基础设施更改。
ArgoCD 基本架构
- 存储库服务器,存储清单(YAML、Helm、Kustomize)。
- 应用程序控制器,将集群状态与 Git 清单进行比较并应用差异。
- API 服务器,公开 UI 和 [REST API23 进行管理。
- Dex / SSO,与身份提供商集成(GitHub、Okta)。
工作流程很简单:ArgoCD 控制器从存储库中生成 1,通过 2 将清单应用到 [Kubernetes 24 集群,并持续读取集群状态以将其与所需状态进行比较。用户通过 UI 或 API 与控制器交互。因此,存储库仍然是单一事实来源,并且集群自动保持同步。
配置存储库
推荐的结构将3层(共享资源为4和5)与6层分开,其中每个应用程序(例如778)都有自己的9和10。 Kustomize 允许您覆盖每个环境(开发、暂存、生产)的配置,而无需重复清单。
ArgoCD 应用程序清单 (YAML),7 行
0
11 可以自动同步和清理过时的资源。
同步策略
- 自动,非常适合速度至关重要的临时环境。
- 手动(公关驱动),用于生产,每个更改在应用之前都会经过审核。
- 挂钩,同步之前或之后运行的脚本(例如:数据库迁移)。
可观察性和审计
- UI,显示所需状态和真实状态之间的差异,并带有“同步”按钮。
- Webhooks,通知 Slack/Teams 同步或失败事件。
- 指标,公开 Prometheus 指标(1213)。
- 日志,通过 Loki 或 Elasticsearch 集中跟踪操作。
安全
- RBAC,在命名空间17中定义角色(14、15、16)。
- SSO,与 OAuth2/OIDC(GitHub、Google、Okta)集成。
- 相互 TLS,ArgoCD 和 [Kubernetes25? API 服务器之间。
- 分支保护政策,合并前需要审查和状态检查。
实施清单
- 创建结构为 18 和 19 的 Git 存储库。
- 安装 ArgoCD (20)。
- 为[企业身份验证26配置SSO/Dex。
- 为每个微服务定义应用程序 CRD。
- 在测试环境中启用21。
- 在 Prometheus/Alertmanager 中配置同步失败警报。
- 文档 PR 流程 → 合并 → 同步。
结论
GitOps 与 ArgoCD 为交付 Kubernetes 应用程序带来了版本控制、可审计性和自动化。通过遵循存储库结构、安全性和可观察性的最佳实践,您的团队可以自信、快速地部署更改。
已经使用ArgoCD?在评论中分享您的技巧和挑战!
另请阅读
- [边缘计算架构:分布式处理策略28
- [HashiCorp Vault:应用程序中的安全秘密管理29
- [现代 CI/CD:自信部署的艺术30
- [应用程序的无服务器:日常生活中的架构31
- [生产中的 Cloudflare Workers:hello world 之后发生了什么变化32
- [应用程序中的电池消耗:比较和清单33
