通过 Amazon Controllers for Kubernetes(ACK)部署来自 Kubernetes 的 Amazon 资源 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

帮助改进此页面

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

通过 Amazon Controllers for Kubernetes(ACK)部署来自 Kubernetes 的 Amazon 资源

借助 Amazon Controllers for Kubernetes(ACK),您可以直接在 Kubernetes 定义和管理 Amazon 服务资源。借助 Amazon Controllers for Kubernetes(ACK),您还可以利用熟悉的 Kubernetes API 和工具,将 Kubernetes 自定义资源与应用程序工作负载配合使用,来管理工作负载资源和云基础设施。

得益于 EKS 功能,ACK 完全由 Amazon 托管,无需您在集群上安装、维护和扩展 ACK 控制器。

ACK 的工作原理

ACK 会将 Kubernetes 自定义资源规范转换为 Amazon API 调用。创建、更新或删除代表 Amazon 服务资源的 Kubernetes 自定义资源时,ACK 会进行必要的 Amazon API 调用来创建、更新或删除相应的 Amazon 资源。

ACK 支持的每个 Amazon 资源都有自己的自定义资源定义(CRD),其作用是定义用以指定其配置的 Kubernetes API 架构。例如,ACK 为 S3 提供 CRD,包括存储桶、存储桶策略及其他 S3 资源。

ACK 会持续协调 Amazon 资源的实际状态,使其与 Kubernetes 自定义资源中定义的预期状态保持一致。如果资源实际状态与预期状态存在偏差,ACK 会检测到这一情况,并采取纠正措施使其恢复一致。对 Kubernetes 资源进行的更改会立即反映在 Amazon 资源状态中,而对上游 Amazon 资源更改的被动偏差检测和修复可能需要长达 10 个小时(即重新同步周期),但实际速度通常要快得多。

示例 S3 存储桶资源清单

apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: my-ack-bucket spec: name: my-unique-bucket-name

将此自定义资源应用于集群时,如果 Amazon S3 存储桶尚不存在,ACK 会在账户中创建一个存储桶。对该资源的后续更改(例如指定非默认存储层或添加策略)将应用于 Amazon 中的 S3 资源。从集群中删除此资源时,默认情况下也将删除 Amazon 中的 S3 存储桶。

ACK 的优势

ACK 有助于您在 Kubernetes 本地管理 Amazon 资源,从而让您更方便地使用与管理应用程序相同的 Kubernetes API 和工具来管理 Amazon 资源。这种统一的方法简化了基础设施管理工作流程,无需在不同工具之间切换或学习单独的基础设施即代码系统。您可以在 Kubernetes 清单中以声明方式定义 Amazon 资源,从而实现 GitOps 工作流程和基础设施即代码实践,并与现有的开发流程无缝集成。

ACK 会根据 Amazon 资源的预期状态来持续协调实际状态,从而纠正偏差并确保整个基础设施的一致性。这种持续协调意味着,对 Amazon 资源进行的命令式带外更改都将自动恢复,以匹配所声明的配置,从而维护基础设施即代码的完整性。您可以配置 ACK 以管理跨多个 Amazon 账户和区域的资源,无需其他工具即可部署复杂的多账户架构。

对于从其他基础设施管理工具迁移的组织,ACK 支持资源接管,从而允许您将现有的 Amazon 资源纳入 ACK 管理,无需重新创建资源。此外,ACK 不仅可在不修改访问权限的前提下提供用于观察 Amazon 资源的只读资源,还可提供注释,即使从集群中删除 Kubernetes 资源也可选择保留 Amazon 资源。

要了解更多信息并开始使用适用于 ACK 的 EKS 功能,请参阅 ACK 概念针对 EKS 的 ACK 注意事项

支持的 Amazon 服务

ACK 支持众多 Amazon 服务,包括但不限于:

  • Amazon EC2

  • Amazon S3

  • Amazon RDS

  • Amazon DynamoDB

  • Amazon ElastiCache

  • Amazon EKS

  • Amazon SQS

  • Amazon SNS

  • Amazon Lambda

  • Amazon IAM

适用于 ACK 的 EKS 功能支持所有在上游列为“已正式发布”的 Amazon 服务。有关详细信息,请参阅支持的 Amazon 服务完整列表

与其他 EKS 托管功能集成

ACK 可与其他 EKS 托管功能集成。

  • Argo CD:使用 Argo CD 跨多个集群管理 ACK 资源的部署,为 Amazon 基础设施启用 GitOps 工作流。

    • 当与 ArgoCD 配对时,ACK 能扩大 GitOps 的优势,但 ACK 本身不要求与 git 集成。

  • kro(Kube Resource Orchestrator):使用 kro 从 ACK 资源组合复杂的资源,创建更高级别的抽象以简化资源管理。

    • 您可以使用 kro 创建复合自定义资源,这些资源同时定义了 Kubernetes 资源和 Amazon 资源。团队成员可以使用这些自定义资源,快速部署复杂的应用程序。

开始使用 ACK

要开始使用适用于 ACK 的 EKS 功能,请执行以下操作:

  1. 创建并配置一个 IAM 功能角色,授予 ACK 代表您管理 Amazon 资源所需的必要权限。

  2. 通过 Amazon 管理控制台、Amazon CLI 或偏好的基础设施即代码工具,在 EKS 集群上创建 ACK 功能资源

  3. 将 Kubernetes 自定义资源应用于集群,从而开始在 Kubernetes 中管理 Amazon 资源。