設定pods使用 AWS 服務帳戶存取服務 - Amazon EKS

協助改善此頁面

想要為此使用者指南做出貢獻嗎? 捲動至此頁面底部,然後選取 [編輯此頁面於] GitHub。您的貢獻將有助於使我們的用戶指南更適合所有人。

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

設定pods使用 AWS 服務帳戶存取服務

如果Pod需要存取 AWS 服務,則必須將其設定為使用Kubernetes服務帳戶。服務帳戶必須與具有存取權限的 AWS Identity and Access Management (IAM) 角色相關聯 AWS 服務。

必要條件
  • 現有的叢集。如果您沒有,則可以使用其中一個 開始使用 Amazon EKS 指南來建立一個。

  • 將服務帳戶與 IAM 角色建立關聯的現有 Kubernetes 服務帳戶和 EKS Pod 身分識別關聯。該角色必須具 有相關聯的 IAM 政策,其中包含您希望 Pods 必須具備以便使用 AWS 服務的許可。如需有關服務帳戶和角色之建立和設定方式的詳細資訊,請參閱將IAM角色指派給Kubernetes服務帳戶

  • 在您的裝置或上 AWS CLI 安裝和設定的最新版本 AWS CloudShell。您可以使用 aws --version | cut -d / -f2 | cut -d ' ' -f1 來檢查您的目前版本。如 yumapt-get 或適用於 macOS 的 Homebrew 等套件管理工具通常比最新版本的 AWS CLI落後數個版本之多。若要安裝最新版本,請參閱《 AWS Command Line Interface 使用指南》aws configure中的〈安裝、更新 AWS CLI和解除安裝〉和〈快速設定〉。安裝在中的 AWS CLI 版本也 AWS CloudShell 可能是最新版本之後的幾個版本。若要進行更新,請參閱《 AWS CloudShell 使用者指南》中的〈安裝 AWS CLI 到主目錄〉。

  • 已在裝置或 AWS CloudShell上安裝 kubectl 命令列工具。版本可以與您的叢集 Kubernetes 版本相同,或是為最多比該版本更舊一版或更新一版的次要版本。例如,如果您的叢集版本為 1.29,則可以搭配使用 kubectl 1.281.291.30 版。若要安裝或升級 kubectl,請參閱 設定kubectl和 eksctl

  • 包含叢集組態的現有 kubectl config 檔案。若要建立 kubectl config 檔案,請參閱透過建立檔案 Connect 線kubectl至 EKS 叢集 kubeconfig

設定 Pod 以使用服務帳戶
  1. 使用以下命令,以建立部署清單檔案,讓您可部署 Pod 以確認組態。以您自己的值取代 example values

    cat >my-deployment.yaml <<EOF apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: serviceAccountName: my-service-account containers: - name: my-app image: public.ecr.aws/nginx/nginx:X.XX EOF
  2. 將清單檔案部署到叢集。

    kubectl apply -f my-deployment.yaml
  3. 確認您的 Pod 有必要的環境變數。

    1. 檢視使用上一步中的部署作業進行部署的 Pods。

      kubectl get pods | grep my-app

      範例輸出如下。

      my-app-6f4dfff6cb-76cv9   1/1     Running   0          3m28s
    2. 確認 Pod 具有服務帳戶字符檔案掛載。

      kubectl describe pod my-app-6f4dfff6cb-76cv9 | grep AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE:

      範例輸出如下。

      AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE:  /var/run/secrets/pods.eks.amazonaws.com/serviceaccount/eks-pod-identity-token
  4. 確認您Pods可以 AWS 服務 使用您在附加到角色的 IAM 政策中指派的許可與互動。

    注意

    當Pod使用與服務帳戶相關聯的 IAM 角色的 AWS 登入資料時,容器中的 AWS CLI 或其他 SDK Pod 使用該角色提供的認證。如果您沒有對提供給 Amazon EKS 節點 IAM 角色的認證限制存取權,則 Pod 仍然可以存取這些認證。如需詳細資訊,請參閱‬限制存取指派給工作節點的執行個體設定檔‭

    如果您的 Pods 無法如預期與服務互動,請完成以下步驟以確認所有項目都已正確設定。

    1. 確認您Pods使用支援透過 EKS 網繭身分識別關聯假設 IAM 角色的 AWS SDK 版本。如需詳細資訊,請參閱 使用支援的 AWS SDK

    2. 確認部署使用服務帳戶。

      kubectl describe deployment my-app | grep "Service Account"

      範例輸出如下。

      Service Account:  my-service-account