创建应用程序 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 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-name targetRevision: chart-version chart: chart-name

如果功能角色具有所需的 ECR 权限,则可以直接使用该存储库,无需配置。有关详细信息,请参阅 配置存储库访问权限

来自 CodeCommit 的 Git 存储库

spec: source: repoURL: https://git-codecommit.region.amazonaws.com/v1/repos/repository-name targetRevision: 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 WavesResource Hooks

忽略差异

防止 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 提交或标签,回滚到先前版本。

其他资源