

 **協助改進此頁面** 

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

若要為本使用者指南貢獻內容，請點選每個頁面右側面板中的**在 GitHub 上編輯此頁面**連結。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Kubernetes 專用 AWS 控制器 (ACK) 從 Kubernetes 部署 AWS 資源
<a name="ack"></a>

 AWS Kubernetes (ACK) 的控制器可讓您直接從 Kubernetes 定義和管理 AWS 服務資源。使用 AWS Controllers for Kubernetes (ACK)，您可以使用 Kubernetes 自訂資源來管理工作負載資源和雲端基礎設施，以及使用熟悉的 Kubernetes APIs 和工具的應用程式工作負載。

透過 EKS 功能，ACK 完全由 管理 AWS，無需在叢集上安裝、維護和擴展 ACK 控制器。

## ACK 的運作方式
<a name="_how_ack_works"></a>

ACK 會將 Kubernetes 自訂資源規格轉換為 AWS API 呼叫。當您建立、更新或刪除代表 AWS 服務資源的 Kubernetes 自訂資源時，ACK 會進行必要的 AWS API 呼叫來建立、更新或刪除 AWS 資源。

ACK 支援的每個 AWS 資源都有自己的自訂資源定義 (CRD)，可定義用於指定其組態的 Kubernetes API 結構描述。例如，ACK 為 S3 提供 CRDs，包括儲存貯體、儲存貯體政策和其他 S3 資源。

ACK 會持續將 AWS 資源的狀態與 Kubernetes 自訂資源中定義的所需狀態進行協調。如果資源偏離其所需狀態，ACK 會偵測到此情況，並採取修正動作，使其重新對齊。Kubernetes 資源的變更會立即反映在 AWS 資源狀態中，而上游 AWS 資源變更的被動偏離偵測和修復可能需要長達 10 小時 （重新同步期間），但通常會更快發生。

 **範例 S3 儲存貯體資源資訊清單** 

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

當您將此自訂資源套用至叢集時，如果帳戶尚未存在，ACK 會在帳戶中建立 Amazon S3 儲存貯體。此資源的後續變更，例如指定非預設儲存層或新增政策，將會套用至 中的 S3 資源 AWS。從叢集刪除此資源時，預設 AWS 會刪除 中的 S3 儲存貯體。

## ACK 的優點
<a name="_benefits_of_ack"></a>

ACK 提供 Kubernetes 原生 AWS 資源管理，可讓您使用與應用程式相同的 Kubernetes APIs 和工具來管理 AWS 資源。這種統一的方法可簡化您的基礎設施管理工作流程，無需在不同工具之間切換或學習單獨的infrastructure-as-code系統。您可以在 Kubernetes 資訊清單中宣告地定義 AWS 資源，讓 GitOps 工作流程和基礎設施成為與現有開發程序無縫整合的程式碼實務。

ACK 會持續協調 AWS 資源的所需狀態及其實際狀態，修正偏離並確保基礎設施的一致性。此持續對帳表示對 AWS 資源進行必要的out-of-band變更會自動還原，以符合您宣告的組態，以維護基礎設施的完整性做為程式碼。您可以設定 ACK 以跨多個 AWS 帳戶和區域管理資源，啟用複雜的多帳戶架構，無需額外的工具。

對於從其他基礎設施管理工具遷移的組織，ACK 支援資源採用，允許您在 ACK 管理下使用現有 AWS 資源，而無需重新建立它們。ACK 也提供唯讀資源，用於不修改存取 AWS 的資源觀察，以及即使從叢集刪除 Kubernetes 資源，可選擇保留 AWS 資源的註釋。

若要進一步了解並開始使用適用於 ACK 的 EKS 功能，請參閱 [ACK 概念](ack-concepts.md)和 [EKS 的 ACK 考量事項](ack-considerations.md)。

## 支援 AWS 的服務
<a name="supported_shared_aws_services"></a>

ACK 支援各種 AWS 服務，包括但不限於：
+ Amazon EC2
+ Amazon S3
+ Amazon RDS
+ Amazon DynamoDB
+ Amazon ElastiCache
+ Amazon EKS
+ Amazon SQS
+ Amazon SNS
+  AWS Lambda
+  AWS IAM

ACK 的 EKS 功能支援所有列為一般可用的上游 AWS 服務。如需詳細資訊，請參閱[支援 AWS 的服務完整清單](https://aws-controllers-k8s.github.io/community/docs/community/services/)。

## 與其他 EKS 受管功能整合
<a name="_integration_with_other_eks_managed_capabilities"></a>

ACK 與其他 EKS 受管功能整合。
+  **Argo CD**：使用 Argo CD 管理跨多個叢集的 ACK 資源部署，為您的 AWS 基礎設施啟用 GitOps 工作流程。
  + ACK 與 ArgoCD 搭配使用時可延伸 GitOps 的優點，但 ACK 不需要與 git 整合。
+  **kro (Kube Resource Orchestrator)**：使用 kro 從 ACK 資源編寫複雜的資源，建立更高階的抽象，簡化資源管理。
  + 您可以使用定義 Kubernetes 資源和資源的 kro 建立複合自訂 AWS 資源。團隊成員可以使用這些自訂資源快速部署複雜的應用程式。

## ACK 入門
<a name="_getting_started_with_ack"></a>

若要開始使用 ACK 的 EKS 功能：

1. 建立並設定具有必要許可的 IAM 功能角色，讓 ACK 代表您管理 AWS 資源。

1.  透過 AWS 主控台、 AWS CLI 或您偏好的基礎設施做為程式碼工具，在 EKS 叢集上[建立 ACK 功能資源](create-ack-capability.md)。

1. 將 Kubernetes 自訂資源套用至您的叢集，以開始在 Kubernetes 中管理您的 AWS 資源。