ArgoCD GitOps 实战指南
·
ArgoCD GitOps 实战指南
安装与配置 ArgoCD
在 Kubernetes 集群中安装 ArgoCD 可以通过 Helm 或直接使用 YAML 清单文件。以下是通过 Helm 安装的示例命令:
helm repo add argo https://argoproj.github.io/argo-helm
helm install argocd argo/argo-cd -n argocd --create-namespace
安装完成后,获取初始管理员密码:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
访问 ArgoCD UI
端口转发到本地以访问 UI:
kubectl port-forward svc/argocd-server -n argocd 8080:443
浏览器访问 https://localhost:8080,使用用户名 admin 和刚才获取的密码登录。
创建 GitOps 仓库
准备一个 Git 仓库存放 Kubernetes 清单文件,例如:
# application.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app
spec:
destination:
server: https://kubernetes.default.svc
namespace: default
source:
repoURL: https://github.com/your-repo/manifests.git
path: dev
targetRevision: HEAD
project: default
syncPolicy:
automated: {}
部署应用
通过 CLI 或 UI 创建 Application 资源:
argocd app create -f application.yaml
ArgoCD 会自动同步仓库中的配置到集群。手动触发同步:
argocd app sync my-app
自动同步策略
在 syncPolicy 中启用自动同步和修剪(删除集群中多余资源):
syncPolicy:
automated:
prune: true
selfHeal: true
健康检查与钩子
ArgoCD 内置健康检查逻辑。自定义钩子可通过注解实现,例如在 Deployment 中添加 argocd.argoproj.io/hook 注解:
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
argocd.argoproj.io/hook: PreSync
多环境管理
使用 ApplicationSet 实现多环境部署:
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: my-apps
spec:
generators:
- list:
elements:
- cluster: dev
url: https://dev-cluster.example.com
- cluster: prod
url: https://prod-cluster.example.com
template:
metadata:
name: '{{cluster}}-my-app'
spec:
project: default
source:
repoURL: https://github.com/your-repo/manifests.git
targetRevision: HEAD
path: '{{cluster}}'
destination:
server: '{{url}}'
namespace: default
回滚机制
查看历史版本并回滚:
argocd app history my-app
argocd app rollback my-app 2
监控与告警
集成 Prometheus 监控 ArgoCD 指标,或通过 ArgoCD Notifications 发送告警:
apiVersion: argoproj.io/v1alpha1
kind: Alert
metadata:
name: sync-failed
spec:
triggers:
- on: SyncFailed
template:
email:
subject: Application {{.app.metadata.name}} sync failed
最佳实践
- 将 ArgoCD 的 Application 资源也存储在 Git 仓库中,实现自管理。
- 使用 Kustomize 或 Helm 管理复杂配置,避免直接操作原生 YAML。
- 为生产环境启用签名验证(如 GPG 或 OCI 签名)确保清单安全性。
更多推荐
所有评论(0)