帮助改进此页面
要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。
创建应用程序
应用程序代表目标集群中的部署。每个应用程序都定义了源(Git 存储库)和目标(集群和命名空间)。应用后,Argo CD 会将 Git 存储库中清单指定的资源创建到集群中的命名空间。应用程序通常用于指定工作负载部署,但它们可以管理目标集群中任何可用的 Kubernetes 资源。
先决条件
创建基础应用程序
定义从 Git 存储库部署的应用程序:
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: guestbook namespace: argocd spec: project: default source: repoURL: https://github.com/argoproj/argocd-example-apps targetRevision: HEAD path: guestbook destination: server: arn:aws:eks:us-west-2:111122223333:cluster/my-cluster namespace: default
重要
在 destination.server 字段中使用 EKS 集群 ARN,而不是 Kubernetes API 服务器 URL。托管功能需要使用 ARN 来识别集群。
应用应用程序:
kubectl apply -f application.yaml
查看应用程序状态:
kubectl get application guestbook -n argocd
源配置
Git 存储库:
spec: source: repoURL: https://github.com/example/my-app targetRevision: main path: kubernetes/manifests
特定的 Git 标签或提交:
spec: source: targetRevision: v1.2.0 # or commit SHA
Helm 图表 –
spec: source: repoURL: https://github.com/example/helm-charts targetRevision: main path: charts/my-app helm: valueFiles: - values.yaml parameters: - name: image.tag value: v1.2.0
来自 ECR 的 Helm 图表:
spec: source: repoURL: oci://account-id.dkr.ecr.region.amazonaws.com/repository-nametargetRevision:chart-versionchart:chart-name
如果功能角色具有所需的 ECR 权限,则可以直接使用该存储库,无需配置。有关详细信息,请参阅 配置存储库访问权限。
来自 CodeCommit 的 Git 存储库:
spec: source: repoURL: https://git-codecommit.region.amazonaws.com/v1/repos/repository-nametargetRevision: main path: kubernetes/manifests
如果功能角色具有所需的 CodeCommit 权限,则可以直接使用该存储库,无需配置。有关详细信息,请参阅 配置存储库访问权限。
来自 CodeConnections 的 Git 存储库:
spec: source: repoURL: https://codeconnections.region.amazonaws.com/git-http/account-id/region/connection-id/owner/repository.git targetRevision: main path: kubernetes/manifests
存储库 URL 格式派生自 CodeConnections 连接 ARN。如果功能角色具有所需的 CodeConnections 权限且已配置连接,则可以直接使用该存储库,无需配置。有关详细信息,请参阅 配置存储库访问权限。
Kustomize:
spec: source: repoURL: https://github.com/example/kustomize-app targetRevision: main path: overlays/production kustomize: namePrefix: prod-
同步策略
控制 Argo CD 如何同步应用程序。
手动同步(默认):
应用程序需要手动批准才能同步:
spec: syncPolicy: {} # No automated sync
手动触发同步:
kubectl patch application guestbook -n argocd \ --type merge \ --patch '{"operation": {"initiatedBy": {"username": "admin"}, "sync": {}}}'
自动同步:
检测到 Git 更改时,应用程序会自动同步:
spec: syncPolicy: automated: {}
自我修复:
自动还原对集群所作的手动更改:
spec: syncPolicy: automated: selfHeal: true
启用后,Argo CD 会还原直接对集群所作的任何手动更改,确保 Git 始终是事实来源。
修剪:
自动删除从 Git 中移除的资源:
spec: syncPolicy: automated: prune: true
警告
修剪将从集群中删除资源。在生产环境中请谨慎使用。
组合式自动同步:
spec: syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true
同步选项
其他同步配置:
如果命名空间不存在,请创建一个:
spec: syncPolicy: syncOptions: - CreateNamespace=true
应用前验证资源:
spec: syncPolicy: syncOptions: - Validate=true
仅应用不同步项:
spec: syncPolicy: syncOptions: - ApplyOutOfSyncOnly=true
高级同步功能
Argo CD 支持用于复杂部署的高级同步功能:
-
同步波次:使用
argocd.argoproj.io/sync-wave注释控制资源创建顺序 -
同步钩子:使用
argocd.argoproj.io/hook注释(PreSync、PostSync、SyncFail)在同步前后运行任务 -
资源运行状况评测:针对特定于应用程序的资源进行自定义运行状况检查
有关详细信息,请参阅 Argo CD 文档中的 Sync Waves
忽略差异
防止 Argo CD 同步由其他控制器管理的特定字段(例如由 HPA 管理的副本):
spec: ignoreDifferences: - group: apps kind: Deployment jsonPointers: - /spec/replicas
有关忽略模式和字段排除项的详细信息,请参阅 Argo CD 文档中的 Diffing Customization
多环境部署
将同一应用程序部署到多个环境:
开发
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app-dev namespace: argocd spec: project: default source: repoURL: https://github.com/example/my-app targetRevision: develop path: overlays/development destination: server: arn:aws:eks:us-west-2:111122223333:cluster/dev-cluster namespace: my-app
生产环境:
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app-prod namespace: argocd spec: project: default source: repoURL: https://github.com/example/my-app targetRevision: main path: overlays/production destination: server: arn:aws:eks:us-west-2:111122223333:cluster/prod-cluster namespace: my-app syncPolicy: automated: prune: true selfHeal: true
监控和管理应用程序
查看应用程序状态:
kubectl get application my-app -n argocd
访问 Argo CD 用户界面:
通过 EKS 控制台打开 Argo CD 用户界面,查看应用程序拓扑、同步状态、资源运行状况和部署历史记录。有关用户界面访问说明,请参阅使用 Argo CD。
回滚应用程序:
可以通过 Argo CD 用户界面,或将应用程序规范中的 targetRevision 更新为之前的 Git 提交或标签,回滚到先前版本。
其他资源
-
使用 Argo CD 项目:为多租户环境使用项目组织应用程序
-
使用 ApplicationSets:通过模板部署到多个集群
-
Application Specification
:完整的应用程序 API 参考 -
Sync Options
:高级同步配置