

 **帮助改进此页面** 

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

# 使用 Argo CD 持续部署
<a name="argocd"></a>

Argo CD 是一款适用于 Kubernetes 的声明式 GitOps 持续交付工具。借助 Argo CD，您可以跨多个集群和环境自动部署应用程序并管理其生命周期。Argo CD 支持多种来源类型，包括 Git 存储库、Helm 注册表（HTTP 和 OCI）和 OCI 映像，为具有不同安全和合规要求的组织提供了灵活性。

得益于 EKS 功能，Argo CD 完全由 Amazon 托管，无需您在集群上安装、维护和扩展 Argo CD 控制器及其依赖项。

## Argo CD 的工作原理
<a name="_how_argo_cd_works"></a>

Argo CD 遵循 GitOps 模式，其中您的应用程序源（Git 存储库、Helm 注册表或 OCI 映像）是用于定义所需应用程序状态的事实来源。在创建 Argo CD `Application` 资源时，需要指定包含应用程序清单的源以及目标 Kubernetes 集群和命名空间。Argo CD 持续监控集群中的源状态和实时状态，并且自动同步所有更改以确保集群状态与所需状态保持一致。

**注意**  
借助适用于 Argo CD 的 EKS 功能，Argo CD 软件可在 Amazon 控制面板上运行，而不是在 Worker 节点上运行。这意味着您的 Worker 节点不需要直接访问 Git 存储库或 Helm 注册表：此功能可处理来自 Amazon 账户的源访问。

Argo CD 提供三种主要资源类型：
+  **Application**：定义从 Git 存储库到目标集群的部署
+  **ApplicationSet**：根据用于多集群部署的模板生成多个应用程序
+  **AppProject**：为应用程序提供逻辑分组和访问权限控制

 **示例：创建 Argo CD 应用程序** 

以下示例说明了如何创建 Argo CD `Application` 资源：

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: guestbook
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/argoproj/argocd-example-apps.git
    targetRevision: HEAD
    path: guestbook
  destination:
    name: in-cluster
    namespace: guestbook
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
```

**注意**  
将 `destination.name` 用于您注册集群时使用的集群名称（如适用于本地集群的 `in-cluster`）。`destination.server` 字段也适用于 EKS 集群 ARN，但为了提高可读性，建议使用集群名称。

## Argo CD 的优势
<a name="_benefits_of_argo_cd"></a>

Argo CD 实施 GitOps 工作流程，在该工作流程中，您可以在 Git 存储库中定义应用程序配置，然后 Argo CD 会自动同步您的应用程序，以便与预期状态保持一致。这种以 Git 为中心的方法可提供对所有更改的完整审计跟踪记录，实现轻松回滚，并且可以自然地与您现有的代码审查和批准流程集成。Argo CD 会自动检测和协调 Git 中所需状态与集群中实际状态之间的偏差，确保您的部署与声明的配置保持一致。

借助 Argo CD，您可以从单个 Argo CD 实例跨多个集群部署和管理应用程序，从而简化多集群和多区域环境中的操作。Argo CD 用户界面提供可视化和监控功能，允许您查看应用程序的部署状态、运行状况和历史记录。用户界面与 Amazon Identity Center（原 Amazon SSO）集成，可实现无缝身份验证和授权，使您能够使用现有的身份管理基础设施控制访问权限。

作为 EKS 托管功能的一部分，Argo CD 完全由 Amazon 管理，无需安装、配置和维护 Argo CD 基础设施。Amazon 负责扩展、修补和操作管理，让您的团队能够专注于应用程序交付而不是工具维护。

## 与 Amazon Identity Center 集成
<a name="integration_with_shared_aws_identity_center"></a>

EKS 托管功能提供 Argo CD 与 Amazon Identity Center 之间的直接集成，为您的用户提供无缝身份验证和授权。启用 Argo CD 功能后，您可以将 Amazon Identity Center 集成配置为将 Identity Center 组和用户映射到 Argo CD RBAC 角色，从而控制谁可以访问和管理 Argo CD 中的应用程序。

## 与其他 EKS 托管功能集成
<a name="_integration_with_other_eks_managed_capabilities"></a>

Argo CD 可与其他 EKS 托管功能集成。
+  **Amazon Controllers for Kubernetes（ACK）**：使用 Argo CD 跨多个集群管理 ACK 资源的部署，为 Amazon 基础设施启用 GitOps 工作流程。
+  **kro（Kube Resource Orchestrator）**：使用 Argo CD 在多个集群中部署 kro 组合，从而在整个 Kubernetes 资产中实现一致的资源组合。

## 开始使用 Argo CD
<a name="_getting_started_with_argo_cd"></a>

要开始使用适用于 Argo CD 的 EKS 功能，请执行以下操作：

1. 创建和配置 IAM 功能角色，该角色具有必要权限，能让 Argo CD 访问您的源和管理应用程序。

1.  通过 Amazon 控制台、Amazon CLI 或偏好的基础设施即代码工具，在 EKS 集群上[创建 Argo CD 功能资源](create-argocd-capability.md)。

1. 配置存储库访问权限并注册集群，进行应用程序部署。

1. 创建应用程序资源，以从声明式源部署应用程序。