本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Amazon Elastic Kubernetes Service 中使用 AWS Secrets Manager 秘密
若要將來自 Secrets Manager 的密碼顯示為裝載在 Amazon EKS 網繭中的檔案,您可以使用 Kubernetes AWS 秘
如果您使用私有 Amazon EKS 叢集,請確保叢集所在的叢集具有 Secrets Manager 端點。VPC密碼存放區CSI驅動程式會使用端點對 Secrets Manager 撥打電話。如需在中建立端點的相關資訊VPC,請參閱VPC 端點。
如果您對密碼使用 Secrets Manager 自動輪替,您也可以使用 Secret Store CSI 驅動程式輪換調解器功能來確保您從 Secrets Manager 擷取最新的密碼。如需詳細資訊,請參閱自動輪換已掛載的內容和已同步的 Kubernetes 秘密
步驟 1:設定存取控制
會ASCP擷取 Amazon EKS 網繭身分並將其交換為IAM角色。您可以在該IAM角色的IAM策略中設定權限。當該IAM角色ASCP擔任時,它可以訪問您授權的密碼。除非您同時將其與IAM角色建立關聯,否則其他容器無法存取密碼。
如果來自查詢區域和與網繭相關聯之IAM角色的呼叫受 Kubernetes 限制,您可以使用helm install
變更節流配額,如步ASCP驟 2 所示。
授予您的 Amazon EKS 網繭對秘密管理器中機密的存取權
-
建立權限原則,以授
secretsmanager:GetSecretValue
與secretsmanager:DescribeSecret
網繭需要存取的密碼並獲得權限。如需政策範例,請參閱 範例:讀取和描述個別機密的權限。 -
如果您還沒有,請為叢集建立 IAM OpenID Connect (OIDC) 提供者。如需詳細資訊,請參閱 Amazon EKS 使用者指南中的為叢集建立IAMOIDC提供者。
-
為服務帳戶建立IAM角色,並將策略附加至其中。如需詳細資訊,請參閱 Amazon EKS 使用者指南中的為服務帳戶建立IAM角色。
-
如果您使用私有 Amazon EKS 叢集,請VPC確保叢集所在的叢集具有 AWS STS 端點。如需有關建立端點的資訊,請參閱《AWS Identity and Access Management 使用指南》中的「介面VPC端點」。
步驟 2:安裝和配置 ASCP
可ASCP在 secrets-store-csi-provider-aws
在安裝期間,您可以ASCP將設定為使用FIPS端點。如需端點清單,請參閱 AWS Secrets Manager 端點。
要ASCP通過使用頭盔安裝
為了確保回購指向最新的圖表,請使用
helm repo update.
-
新增密碼儲存區CSI驅動程式圖表。
helm repo add secrets-store-csi-driver https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts
-
安裝圖表。若要設定節流,請新增下列旗標:
--set-json 'k8sThrottlingParams={"qps": "
<number of queries per second>
", "burst": "<number of queries per second>
"}'helm install -n kube-system csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver
-
添加圖ASCP表。
helm repo add aws-secrets-manager https://aws.github.io/secrets-store-csi-driver-provider-aws
-
安裝圖表。若要使用FIPS端點,請新增下列旗標:
--set useFipsEndpoint=true
helm install -n kube-system secrets-provider-aws aws-secrets-manager/secrets-store-csi-driver-provider-aws
若要使用軟體庫YAML中的安裝
請使用下列指令。
helm repo add secrets-store-csi-driver https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts helm install -n kube-system csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/deployment/aws-provider-installer.yaml
步驟 3:識別要掛載的秘密
要確定將哪些密碼ASCP掛載在 Amazon EKS 作為文件系統上的文件,請創建一個SecretProviderClassYAML文件。會SecretProviderClass
列出要掛載的密碼,以及要掛載它們的檔案名稱。SecretProviderClass
必須與其參考的 Amazon EKS 網繭位於相同的命名空間中。
下列範例說明如何使用SecretProviderClass
來描述您要掛載的密碼,以及如何命名掛接在 Amazon EKS 網繭中的檔案。
範例:依名稱或掛載密碼 ARN
以下示例顯示在 SecretProviderClass
Amazon 中掛載三個文件的一個EKS:
由完整指定的密碼ARN。
依名稱指定的秘密。
秘密的特定版本。
apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aws-secrets spec: provider: aws parameters: objects: | - objectName: "arn:aws:secretsmanager:us-east-2:
111122223333
:secret:MySecret2-d4e5f6" - objectName: "MySecret3" objectType: "secretsmanager" - objectName: "MySecret4" objectType: "secretsmanager" objectVersionLabel: "AWSCURRENT"
範例:透過機密掛載金鑰/值對
以下示例顯示在 SecretProviderClass
Amazon 中掛載三個文件的一個EKS:
由完整指定的密碼ARN。
此
username
金鑰/值對來自相同的秘密。此
password
金鑰/值對來自相同的秘密。
apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aws-secrets spec: provider: aws parameters: objects: | - objectName: "arn:aws:secretsmanager:us-east-2:
111122223333
:secret:MySecret-a1b2c3" jmesPath: - path: username objectAlias: dbusername - path: password objectAlias: dbpassword
範例:定義多區域機密的容錯移轉區域
為了在連線中斷期間或災難復原組態提供可用性,ASCP支援自動容錯移轉功能,以便從次要區域擷取密碼。
下列範例顯示可擷取複寫至多個區域之機密的 SecretProviderClass
。在此範例中,ASCP會嘗試從us-east-1
和擷取密碼us-east-2
。如果任一區域傳回 4xx 錯誤 (例如驗證問題),則ASCP不會掛載任何一個機密。如果從中成功擷取密碼us-east-1
,則會ASCP裝載該密碼值。如果未從中成功擷取密碼us-east-1
,但從中成功擷取密碼us-east-2
,則會ASCP裝載該機密值。
apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aws-secrets spec: provider: aws parameters: region: us-east-1 failoverRegion: us-east-2 objects: | - objectName: "MySecret"
範例:選擇要掛載的容錯移轉機密
下列範例顯示用於指定在容錯移轉時要裝載之機密的 SecretProviderClass
。容錯移轉機密不是複本。在此範例中,會ASCP嘗試擷取由指定的兩個密碼objectName
。如果其中一個傳回 4xx 錯誤 (例如驗證問題),則ASCP不會掛載任何一個機密。如果從中成功擷取密碼us-east-1
,則會ASCP裝載該密碼值。如果未從中成功擷取密碼us-east-1
,但從中成功擷取密碼us-east-2
,則會ASCP裝載該機密值。Amazon 中掛載的文件EKS被命名為MyMountedSecret
。
apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aws-secrets spec: provider: aws parameters: region: us-east-1 failoverRegion: us-east-2 objects: | - objectName: "arn:aws:secretsmanager:us-east-1:
111122223333
:secret:MySecret-a1b2c3" objectAlias: "MyMountedSecret" failoverObject: - objectName: "arn:aws:secretsmanager:us-east-2:111122223333
:secret:MyFailoverSecret-d4e5f6"
步驟 4:將密碼掛載為 Amazon EKS 網繭中的檔案
下列指示說明如何使用範例檔案 .yaml 和 ExampleSecretProviderClassExampleDeployment.yaml 來將密碼裝載為YAML檔案。
在 Amazon 安裝秘密 EKS
-
使用
SecretProviderClass
指令將套用至網繭kubectl apply -f ExampleSecretProviderClass.yaml
。 -
使用命令部署您的網繭
kubectl apply -f ExampleDeployment.yaml
。 會ASCP掛載檔案。
疑難排解
您可以透過描述 Pod 部署來檢視大多數錯誤。
若要查看容器的錯誤訊息
-
使用下列命令取得 Pod 名稱清單。如果不使用預設命名空間,請使用
-n <NAMESPACE>
。kubectl get pods
-
若要描述 pod,請在下列命令中,
<PODID>
使用您在上一個步驟中找到之網繭的網繭識別碼。如果不使用預設命名空間,請使用-n <NAMESPACE>
。kubectl describe pod/
<PODID>
若要查看錯誤 ASCP
-
若要在提供者記錄檔中尋找更多資訊,請在下列命令中,
<PODID>
使用 csi-secrets-store-provider-aws 網繭的識別碼。kubectl -n kube-system get pods kubectl -n kube-system logs pod/
<PODID>