使用 AWS Secrets and Configuration Provider CSI 搭配服務帳戶 (IRSA) 的 IAM 角色 - AWS Systems Manager

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

使用 AWS Secrets and Configuration Provider CSI 搭配服務帳戶 (IRSA) 的 IAM 角色

先決條件

  • Amazon EKS 叢集 (1.17 版或更新版本)

  • 透過 存取 AWS CLI 和 Amazon EKS 叢集 kubectl

設定存取控制

ASCP 會擷取 Amazon EKS Pod 身分,並將其交換為 IAM 角色。您可以在 IAM 政策中為該 IAM 角色設定許可。當 ASCP 擔任 IAM 角色時,它會存取您授權的參數。除非您也將其與 IAM 角色建立關聯,否則其他容器無法存取參數。

若要授予 中參數的 Amazon EKS Pod 存取權 Parameter Store
  1. 建立許可政策,將 Pod 需要存取的參數授予 ssm:GetParametersssm:DescribeParameters許可。

  2. 如果尚未建立,請為叢集建立 IAM OpenID Connect (OIDC) 提供者。如需詳細資訊,請參閱《Amazon EKS 使用者指南》中的為您的叢集建立 IAM OIDC 提供者

  3. 服務帳戶建立 IAM 角色,並將政策連接至該角色。如需詳細資訊,請參閱《Amazon EKS 使用者指南》中的為服務帳戶建立 IAM 角色

  4. 如果您使用私有 Amazon EKS 叢集,請確定叢集所在的 VPC 具有 AWS STS 端點。如需有關建立端點的資訊,請參閱AWS Identity and Access Management 《 使用者指南》中的界面 VPC 端點

識別要掛載的參數

若要判斷 ASCP 在 Amazon EKS 中掛載哪些參數做為檔案系統上的檔案,您可以建立 SecretProviderClass YAML 檔案。SecretProviderClass 列出要掛載的參數和要掛載的檔案名稱。SecretProviderClass 必須與參考的 Amazon EKS Pod 位於相同的命名空間中。

將參數掛載為檔案

下列指示說明如何使用範例 YAML 檔案 ExampleSecretProviderClass.yamlExampleDeployment.yaml 將參數掛載為檔案。

在 Amazon EKS 中掛載參數
  1. SecretProviderClass套用至 Pod:

    kubectl apply -f ExampleSecretProviderClass.yaml
  2. 部署您的 Pod:

    kubectl apply -f ExampleDeployment.yaml
  3. ASCP 掛載檔案。

疑難排解

您可以透過描述 Pod 部署來檢視大多數錯誤。

若要查看容器的錯誤訊息
  1. 使用下列命令取得 Pod 名稱清單。如果不使用預設命名空間,請使用 -n name-space

    kubectl get pods
  2. 若要描述 Pod,請在下列命令中,針對 Pod-id 使用您在上一個步驟中找到的 Pod 中的 Pod ID。如果不使用預設命名空間,請使用 -n nameSpace

    kubectl describe pod/pod-id
若要查看 ASCP 的錯誤
  • 若要在提供者日誌中尋找詳細資訊,請在下列命令中,針對 Pod-id,使用 csi-secrets-store-provider-aws Pod 的 ID。

    kubectl -n kube-system get pods kubectl -n kube-system logs Pod/pod-id
  • 確認 SecretProviderClass CRD 已安裝:
    kubectl get crd secretproviderclasses.secrets-store.csi.x-k8s.io

    此命令應會傳回SecretProviderClass自訂資源定義的相關資訊。

  • 確認已建立 SecretProviderClass 物件。
    kubectl get secretproviderclass SecretProviderClassName -o yaml