EKS 的 ACK 考量事項 - Amazon EKS

協助改進此頁面

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

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

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

EKS 的 ACK 考量事項

本主題涵蓋使用 ACK 的 EKS 功能的重要考量,包括 IAM 組態、多帳戶模式,以及與其他 EKS 功能的整合。

IAM 組態模式

ACK 功能使用 IAM 功能角色進行身分驗證 AWS。根據您的需求選擇正確的 IAM 模式。

簡單:單一功能角色

對於開發、測試或簡單使用案例,請將所有必要的許可直接授予能力角色。

使用時機

  • ACK 入門

  • 單一帳戶部署

  • 由一個團隊管理的所有資源

  • 開發和測試環境

範例:使用資源標記條件將 S3 和 RDS 許可新增至您的能力角色:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:*"], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": ["us-west-2", "us-east-1"] } } }, { "Effect": "Allow", "Action": ["rds:*"], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": ["us-west-2", "us-east-1"] }, } } ] }

此範例會將 S3 和 RDS 操作限制在特定區域,並要求 RDS 資源具有ManagedBy: ACK標籤。

生產:IAM 角色選取器

對於生產環境,請使用 IAM 角色選取器實作最低權限存取和命名空間層級隔離。

使用時機

  • 生產環境

  • 多團隊叢集

  • 多帳戶資源管理

  • 最低權限的安全需求

  • 不同的服務需要不同的許可

優點

  • 每個命名空間只會取得所需的許可

  • 團隊隔離 - 團隊 A 無法使用團隊 B 的許可

  • 更輕鬆地稽核和合規

  • 跨帳戶資源管理的必要項目

如需詳細的 IAM 角色選取器組態,請參閱 設定 ACK 許可

與其他 EKS 功能整合

使用 Argo CD 的 GitOps

使用適用於 Argo CD 的 EKS 功能從 Git 儲存庫部署 ACK 資源,啟用基礎設施管理的 GitOps 工作流程。

考量:

  • 將 ACK 資源與end-to-end GitOps 的應用程式資訊清單一起存放

  • 根據您的團隊結構,依環境、服務或資源類型進行組織

  • 使用 Argo CD 的自動同步進行持續調校

  • 啟用剔除以自動移除已刪除的資源

  • 考慮多叢集基礎設施管理的hub-and-spoke模式

GitOps 提供稽核追蹤、復原功能和宣告式基礎設施管理。如需 Argo CD 的詳細資訊,請參閱使用 Argo CD

kro 的資源合成

使用 kro 的 EKS 功能 (Kube Resource Orchestrator),將多個 ACK 資源組成更高層級的抽象和自訂 APIs。

何時搭配 ACK 使用 kro

  • 為常見的基礎設施堆疊建立可重複使用的模式 (資料庫 + 備份 + 監控)

  • 為應用程式團隊建置具有簡化 APIs自助式平台

  • 管理資源相依性,並在資源之間傳遞值 (S3 儲存貯體 ARN 至 Lambda 函數)

  • 標準化跨團隊的基礎設施組態

  • 透過隱藏自訂資源後方的實作詳細資訊來降低複雜性

範例模式

  • 應用程式堆疊:S3 儲存貯體 + SQS 佇列 + 通知組態

  • 資料庫設定:RDS 執行個體 + 參數群組 + 安全群組 + 秘密

  • 網路:VPC + 子網路 + 路由表 + 安全群組

kro 會處理編寫資源的相依性排序、狀態傳播和生命週期管理。如需 kro 的詳細資訊,請參閱kro 概念

組織您的 資源

使用 Kubernetes 命名空間和資源標籤組織 ACK AWS 資源,以獲得更好的管理、存取控制和成本追蹤。

命名空間組織

使用 Kubernetes 命名空間,以邏輯方式依環境 (生產、預備、開發)、團隊 (平台、資料、ml) 或應用程式分隔 ACK 資源。

優點

  • 用於存取控制的命名空間範圍 RBAC

  • 使用註釋設定每個命名空間的預設區域

  • 更輕鬆地進行資源管理和清理

  • 符合組織結構的邏輯分隔

資源標記

EKS 會自動將標籤套用至 ACK 管理 AWS 的資源,包括功能資源 ARN。為成本分配、所有權追蹤和組織目的新增其他標籤。

建議的標籤

  • 環境 (生產、預備、開發)

  • 團隊或部門擁有權

  • 帳單分配的成本中心

  • 應用程式或服務名稱

  • ManagedBy:ACK (識別 ACK 受管資源)

從其他Infrastructure-as-code工具遷移

許多組織在工作負載協同運作之外,都在 Kubernetes 上尋找標準化的價值。將基礎設施 AWS 和資源管理遷移至 ACK 可讓您使用 Kubernetes APIs 和應用程式工作負載來標準化基礎設施管理。

在適用於基礎設施的 Kubernetes 上標準化的優勢

  • 單一事實來源:管理 Kubernetes 中的應用程式和基礎設施,實現end-to-end GitOps 實務

  • 統一工具:團隊使用 Kubernetes 資源和工具,而不是學習多個工具和架構

  • 一致的對帳:與 Kubernetes 一樣,ACK 會持續對工作負載 AWS 進行對帳,並與必要工具相比,偵測和修正偏離

  • 原生合成:使用 kro 和 ACK, AWS 直接在應用程式和資源資訊清單中參考資源,在資源之間傳遞連線字串和 ARNs

  • 簡化的操作:在整個系統中部署、復原和可觀測性的單一控制平面

ACK 支援採用現有的 AWS 資源,而無需重新建立這些資源,可從 CloudFormation、Terraform 或叢集外部的資源進行零停機時間遷移。

採用現有資源

apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: existing-bucket annotations: services.k8s.aws/adoption-policy: "adopt-or-create" spec: name: my-existing-bucket-name

一旦採用,資源將由 ACK 管理,並且可以透過 Kubernetes 資訊清單更新。您可以逐步遷移,視需要採用資源,同時維護其他資源的現有 IaC 工具。

ACK 也支援唯讀資源。對於您希望參考但未修改的其他團隊或工具管理的資源,請將採用與retain刪除政策結合,並僅授予讀取 IAM 許可。這可讓應用程式透過 Kubernetes API 探索共用基礎設施 (VPCs、IAM 角色、KMS 金鑰),而不會有修改的風險。 APIs

如需資源採用的詳細資訊,請參閱ACK 概念

刪除政策

當您刪除對應的 AWS Kubernetes 資源時,刪除政策會控制資源會發生的情況。根據資源生命週期和您的操作需求,選擇正確的政策。

刪除 (預設)

刪除 Kubernetes AWS 資源時會刪除資源。這可維持叢集與 之間的一致性 AWS,確保資源不會累積。

何時使用刪除

  • 清理很重要的開發和測試環境

  • 與應用程式生命週期繫結的暫時性資源 (測試資料庫、臨時儲存貯體)

  • 不應讓應用程式過期的資源 (SQS 佇列、ElastiCache 叢集)

  • 成本最佳化 - 自動清除未使用的資源

  • 使用 GitOps 管理的環境,其中從 Git 移除資源應刪除基礎設施

預設刪除政策符合 Kubernetes 的宣告式模型:叢集中的內容符合 中存在的內容 AWS。

保留

當您刪除 Kubernetes 資源時, AWS 資源會保留。這可保護關鍵資料,並允許資源超過其 Kubernetes 表示。

何時使用 保留

  • 生產資料庫具有必須承受叢集變更的關鍵資料

  • 具有合規或稽核要求的長期儲存貯體

  • 多個應用程式或團隊使用的共用資源

  • 要遷移至不同管理工具的資源

  • 您希望保留基礎設施的災難復原案例

  • 具有複雜相依性的資源需要仔細解除委任

apiVersion: rds.services.k8s.aws/v1alpha1 kind: DBInstance metadata: name: production-db annotations: services.k8s.aws/deletion-policy: "retain" spec: dbInstanceIdentifier: prod-db # ... configuration
重要

保留的資源會持續產生 AWS 成本,且必須在不再需要 AWS 時從 手動刪除。使用資源標記來追蹤保留的資源以進行清除。

如需刪除政策的詳細資訊,請參閱 ACK 概念

上游文件

如需使用 ACK 的詳細資訊:

後續步驟