适用于 Argo CD 的 EKS 功能与自主管理型 Argo CD 的比较 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

适用于 Argo CD 的 EKS 功能与自主管理型 Argo CD 的比较

适用于 Argo CD 的 EKS 功能提供了在 EKS 中运行的完全托管的 Argo CD。有关 EKS 功能与自主管理型解决方案的总体比较,请参阅 EKS 功能和注意事项。本主题将重点介绍 Argo CD 特有的差异,包括身份验证、多集群管理及上游功能支持。

与上游 Argo CD 的区别

适用于 Argo CD 的 EKS 功能基于上游 Argo CD,但在访问方式、配置以及与 Amazon 服务的集成方面有所不同。

RBAC 和身份验证:该功能附带三个 RBAC 角色(管理员、编辑者和查看者),并使用 Amazon Identity Center 进行身份验证,而不是 Argo CD 的内置身份验证。通过该功能的 rbacRoleMapping 参数配置角色映射,以将 Identity Center 组映射到 Argo CD 角色,而不是通过 Argo CD 的 argocd-rbac-cm ConfigMap 进行配置。Argo CD 用户界面通过其自身的直接 URL 托管(可在 EKS 控制台中集群的“功能”选项卡下找到),API 访问则通过 IAM 使用 Amazon 身份验证和授权。

集群配置:该功能不会自动配置本地集群或轴辐式拓扑。您需要自行配置部署目标集群和 EKS 访问条目。该功能仅支持将 Amazon EKS 集群作为部署目标,且必须使用 EKS 集群 ARN(而非 Kubernetes API 服务器 URL)。该功能不会自动将本地集群 (kubernetes.default.svc) 添加为部署目标,若要部署到创建该功能的同一集群,请使用其 ARN 明确注册该集群。

简化的远程集群访问:该功能使用 EKS 访问条目来授予 Argo CD 远程集群访问权限,从而简化了多集群部署,无需配置服务账户的 IAM 角色(IRSA)或设置跨账户 IAM 角色代入。该功能还支持对完全私有的 EKS 集群进行透明访问,无需进行 VPC 对等连接或专门的网络配置,Amazon 会自动管理 Argo CD 功能与私有远程集群之间的连接。

直接的 Amazon 服务集成:该功能通过功能角色的 IAM 权限,提供与 Amazon 服务的直接集成。您可以直接在 Application 资源中引用 CodeCommit 存储库、ECR Helm 图表和 CodeConnections,而无需创建存储库配置。这简化了身份验证,无需为 Amazon 服务管理单独的凭证。有关详细信息,请参阅 配置存储库访问权限

命名空间支持:该功能最初仅支持将应用程序部署到单个命名空间,在创建此功能时需指定该命名空间。未来版本有望支持将应用程序部署到多个命名空间。

不支持的功能:托管功能中不提供以下功能:

  • 用于生成自定义清单的 Config 管理插件(CMP)

  • 用于资源运行状况评测的自定义 Lua 脚本(支持标准资源的内置运行状况检查)

  • 通知控制器

  • Argo CD 图像更新程序

  • 自定义 SSO 提供者(仅支持 Amazon Identity Center,包括通过 Amazon Identity Center 提供的第三方联合身份)

  • 用户界面扩展和自定义横幅

  • 直接访问 argocd-cmargocd-params 和其他配置 ConfigMaps

兼容性:Applications 和 ApplicationSets 的工作方式与上游 Argo CD 完全相同,清单无需更改。该功能使用同一 Kubernetes API 和 CRD,因此 kubectl 等工具的使用方式将保持不变。该功能完全支持 Applications 和 ApplicationSets、带自动同步的 GitOps 工作流程、多集群部署、同步策略(自动化、修剪、自我修复)、同步波次和钩子、标准 Kubernetes 资源的运行状况评估、回滚功能、Git 存储库源(HTTPS 和 SSH)、Helm、Kustomize 和原生 YAML 清单、GitHub 应用程序凭证、用于多租户的项目,以及资源排除项和包含项。

将 Argo CD CLI 与托管功能结合使用

对于大多数操作,Argo CD CLI 的工作方式与上游 Argo CD 相同,但身份验证和集群注册有所不同。

先决条件

按照上游安装说明,安装 Argo CD CLI。

配置

使用环境变量配置 CLI:

  1. 从 EKS 控制台(在集群的功能选项卡下)或使用 Amazon CLI 获取 Argo CD 服务器 URL:

    export ARGOCD_SERVER=$(aws eks describe-capability \ --cluster-name my-cluster \ --capability-name my-argocd \ --query 'capability.configuration.argoCd.serverUrl' \ --output text \ --region region-code)
  2. 从 Argo CD 用户界面(设置账户管理员生成新令牌)生成账户令牌,然后将其设置为环境变量:

    export ARGOCD_AUTH_TOKEN="your-token-here"
重要

此配置使用管理员账户令牌进行初始设置和开发工作流程。对于生产使用案例,为遵循最低权限原则,请使用项目作用域内的角色和令牌。有关配置项目角色和 RBAC 的更多信息,请参阅配置 Argo CD 权限

  1. 设置必需的 gRPC 选项:

    export ARGOCD_OPTS="--grpc-web"

设置这些环境变量后,无需使用 argocd login 命令即可使用 Argo CD CLI。

主要区别

托管功能具有以下 CLI 限制:

  • 不支持 argocd admin 命令 [这些命令需要直接访问容器组(pod)]

  • 不支持 argocd login(改用账户或项目令牌)

  • argocd cluster add 需要 --aws-cluster-name 标志并指定 EKS 集群 ARN

示例:注册集群

注册 EKS 集群以进行应用程序部署:

# Get the cluster ARN CLUSTER_ARN=$(aws eks describe-cluster \ --name my-cluster \ --query 'cluster.arn' \ --output text) # Register the cluster argocd cluster add $CLUSTER_ARN \ --aws-cluster-name $CLUSTER_ARN \ --name in-cluster \ --project default

有关完整的 Argo CD CLI 文档,请参阅 Argo CD CLI 参考

迁移路径

您可以从自主管理型 Argo CD 迁移到托管功能:

  1. 检查当前的 Argo CD 配置中是否存在不支持的功能(通知控制器、CMP、自定义运行状况检查)

  2. 将自主管理型 Argo CD 控制器缩减到零副本

  3. 在集群上创建 Argo CD 功能资源

  4. 导出现有的 Applications、ApplicationSets 和 AppProjects

  5. 迁移存储库凭证、集群密钥和存储库凭证模板(repocreds)

  6. 如果使用 GPG 密钥、TLS 证书或 SSH 已知主机,请同时迁移这些配置

  7. 更新 destination.server 字段以使用集群名称或 EKS 集群 ARN

  8. 将其应用于 Argo CD 托管实例

  9. 验证应用程序是否正确同步

  10. 停用自行管理型 Argo CD 安装

托管功能使用相同的 Argo CD API 和资源定义,因此只需最少的修改即可使用现有清单。

后续步骤