概述
- 目标:以Git为单一事实源,Argo CD自动同步到集群并进行健康检查与自愈,确保状态一致。
- 适用:Kubernetes应用的声明式交付、版本化回滚、跨环境一致性治理。
核心与实战
- Application清单:
```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: web
namespace: argocd
spec:
project: default
source:
repoURL: 'https://github.com/org/repo'
targetRevision: main
path: charts/web
destination:
server: https://kubernetes.default.svc
namespace: prod
syncPolicy:
automated:
selfHeal: true
prune: true
syncOptions:
- CreateNamespace=true
ignoreDifferences:
- group: apps
kind: Deployment
name: web
namespace: prod
jsonPointers:
- /spec/replicas
```
示例
- 通过CLI创建与同步:
```
argocd app create web --repo https://github.com/org/repo --path charts/web --dest-server https://kubernetes.default.svc --dest-namespace prod
argocd app sync web
argocd app wait web --health --timeout 300
```
- 查看健康与历史:
```
argocd app get web
argocd app history web
```
验证与监控
- 状态一致性:
- 检查`Sync Status`是否为`Synced`,`Health Status`是否为`Healthy`。
- 差异与自愈:
- 修改集群资源触发`OutOfSync`,验证`selfHeal`自动纠正。
- 访问控制:
- 使用`Project`限制源与目的;启用RBAC确保最小权限。
常见误区
- 未开启`prune`导致残留资源;需在`syncPolicy.automated`中启用。
- 忽视`ignoreDifferences`导致副本数差异被判不一致;按需忽略非Git受控字段。
- 将手工改动直接在集群进行而不更新Git;应以Git为唯一事实源。
结语
- 通过Argo CD的声明式同步与健康治理,可实现稳定的GitOps工作流,提升发布效率与回滚可靠性。

发表评论 取消回复