協助改善此頁面
想要為此使用者指南做出貢獻? 捲動至此頁面底部,然後在 上選取編輯此頁面 GitHub。您的貢獻將幫助我們的使用者指南更適合所有人。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定服務帳戶的 AWS Security Token Service 端點
如果您使用的是 Kubernetes 服務帳戶服務帳戶的 IAM 角色,然後,如果您的叢集和平台版本與下表中列出的版本相同或更新,則可以設定服務帳戶使用的 AWS Security Token Service 端點類型。如果您的 Kubernetes 或 平台版本早於資料表中列出的版本,則您的服務帳戶只能使用全域端點。
Kubernetes version | 平台版本 | 預設端點類型 |
---|---|---|
1.31 |
eks.1 |
區域性 |
1.30 |
eks.2 |
區域性 |
1.29 |
eks.1 |
區域性 |
1.28 |
eks.1 |
區域性 |
1.27 |
eks.1 |
區域性 |
1.26 |
eks.1 |
區域性 |
1.25 |
eks.1 |
區域性 |
1.24 |
eks.2 |
區域性 |
1.23 |
eks.1 |
區域性 |
AWS 建議使用區域 AWS STS 端點,而不是全域端點。這樣可以減少延遲、提供內建備援,並增加工作階段字符的有效性。 AWS Security Token Service 必須在 中處於作用中狀態 AWS 區域 ,其中 Pod 正在執行。此外, AWS 區域 如果 中的服務發生故障,您的應用程式必須具有不同的內建備援 AWS 區域。如需詳細資訊,請參閱 IAM 使用者指南中的AWS STS 管理 AWS 區域。
必要條件
-
現有的叢集。如果您沒有,則可以使用其中一個 開始使用 Amazon EKS 指南來建立一個。
-
叢集的現有IAMOIDC提供者。如需詳細資訊,請參閱建立 IAM OIDC 叢集的提供者。
-
現有 Kubernetes 設定為與 Amazon EKS IAM for Service 帳戶功能搭配使用的服務帳戶。
若要設定 使用的端點類型 Kubernetes 服務帳戶
下列範例皆使用 aws-node
Kubernetes Amazon VPCCNI外掛程式 所使用的服務帳戶。您可以使用
自己的服務帳戶取代 ,Pods、命名空間和其他資源。example values
-
選取 Pod 使用您要變更端點的服務帳戶。判斷 AWS 區域 Pod 會在 中執行。
以 取代 Pod 名稱,並aws-node-6mfgv
使用您的 Pod的命名空間。kube-system
kubectl describe pod
aws-node-6mfgv
-nkube-system
|grep Node:範例輸出如下。
ip-192-168-79-166.us-west-2/192.168.79.166
在先前的輸出中,Pod 正在 us-west-2 AWS 區域中的節點上執行。
-
決定 的端點類型 Pod's 服務帳戶正在使用。
kubectl describe pod
aws-node-6mfgv
-nkube-system
|grep AWS_STS_REGIONAL_ENDPOINTS範例輸出如下。
AWS_STS_REGIONAL_ENDPOINTS:
regional
如果目前端點是全域範圍,則輸出中會傳回
global
。如果未傳回任何輸出,則預設端點類型正在使用中且未被覆寫。 -
如果您的叢集或平台版本與表中列出的版本相同或更高,則可以使用以下命令之一,將服務帳戶使用的端點類型從預設類型變更為其他類型。將
取代為您服務帳戶的名稱,以及將aws-node
取代為服務帳戶的命名空間。kube-system
-
如果您的預設或目前端點類型是全域範圍,且您想將其範圍變更為區域:
kubectl annotate serviceaccount -n
kube-system
aws-node
eks.amazonaws.com/sts-regional-endpoints=true如果您使用 服務帳戶的 IAM 角色 在 中執行的應用程式URLs中產生預先簽署的 S3 Pods' 容器,URL區域端點的 格式類似於下列範例:
https://bucket.s3.us-west-2.amazonaws.com/path?...&X-Amz-Credential=
your-access-key-id
/date
/us-west-2/s3/aws4_request&... -
如果您的預設或目前端點類型是區域範圍,且您想將其範圍變更為全域:
kubectl annotate serviceaccount -n
kube-system
aws-node
eks.amazonaws.com/sts-regional-endpoints=false如果您的應用程式明確地向 AWS STS 全域端點提出請求,而且您不會覆寫在 Amazon EKS叢集中使用區域端點的預設行為,則請求將會失敗並顯示錯誤。如需詳細資訊,請參閱Pod 容器會接收到下列錯誤:An error occurred (SignatureDoesNotMatch) when calling the GetCallerIdentity operation: Credential should be scoped to a valid region。
如果您使用 在 中執行的應用程式URLs中服務帳戶的 IAM 角色產生預先簽署的 S3 Pods' 容器,URL全域端點的 格式類似於下列範例:
https://bucket.s3.amazonaws.com/path?...&X-Amz-Credential=
your-access-key-id
/date
/us-west-2/s3/aws4_request&...
如果您的自動化預期預先簽署的 URL會以特定格式呈現,或者如果使用預先簽署的應用程式或下游相依性對 AWS 區域 目標URLs具有預期,則進行必要的變更,以使用適當的 AWS STS 端點。
-
-
刪除並重新建立任何現有的 Pods 與服務帳戶相關聯的 ,以套用憑證環境變數。靜音 Web 掛鉤不適用於 Pods 已在執行。您可以使用
的資訊取代-l k8s-app=aws-node
Pods
、 和 Pods 您為 設定註釋。kube-system
kubectl delete
Pods
-nkube-system
-l
k8s-app=aws-node
-
確認所有 Pods 已重新啟動。
kubectl get
Pods
-nkube-system
-l k8s-app=aws-node
-
檢視其中一個 的環境變數 Pods。 確認該
AWS_STS_REGIONAL_ENDPOINTS
值是您在上一個步驟中將其設定為 的值。kubectl describe pod
aws-node-kzbtr
-nkube-system
|grep AWS_STS_REGIONAL_ENDPOINTS範例輸出如下。
AWS_STS_REGIONAL_ENDPOINTS=
regional