AWS Systems ManagerChange Manager 不再開放給新客戶。現有客戶可以繼續正常使用該服務。如需詳細資訊,請參閱AWS Systems ManagerChange Manager可用性變更。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS 秘密和組態提供者程式碼範例
ASCP 身分驗證與存取控制範例
範例:允許 Amazon EKS Pod 身分識別服務 (pods.eks.amazonaws.com) 擔任角色與標記工作階段的 IAM 政策:
SecretProviderClass
您可以使用 YAML 來描述要使用 ASCP 在 Amazon EKS 中掛載的參數。如需範例,請參閱 SecretProviderClass 用量。
SecretProviderClass YAML 結構
apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name:namespec: provider: aws parameters: region: failoverRegion: pathTranslation: usePodIdentity: preferredAddressType: objects:
參數欄位包含掛載請求的詳細資訊:
- region
-
(選用) 參數 AWS 區域 的 。如果不使用此欄位,ASCP 會從節點上的註釋尋找區域。此查閱會增加掛載請求的額外負荷,因此建議您為使用大量 Pod 的叢集提供區域。
如果您也指定
failoverRegion,則 ASCP 會嘗試從這兩個區域中擷取參數。如果任一區域傳回4xx錯誤 (例如身分驗證問題),則 ASCP 不會掛載任一參數。如果已成功從region擷取參數,則 ASCP 會掛載該參數值。如果未成功從region擷取參數,但已成功從failoverRegion擷取參數,則 ASCP 會掛載該參數值。 failoverRegion-
(選用) 如果您包含此欄位,則 ASCP 會嘗試從
region中定義的區域和此欄位擷取參數。如果任一區域傳回4xx錯誤 (例如身分驗證問題),則 ASCP 不會掛載任一參數。如果已成功從region擷取參數,則 ASCP 會掛載該參數值。如果未成功從region擷取參數,但已成功從failoverRegion擷取參數,則 ASCP 會掛載該參數值。如需如何使用此欄位的範例,請參閱 多區域參數容錯移轉。 - pathTranslation
-
(選用) 如果 Amazon EKS 中的檔案名稱將包含路徑分隔符號字元,例如 Linux 上的斜線 (/),則要使用的單一替代字元。ASCP 無法建立包含路徑分隔符號字元的掛載檔案。相反地,ASCP 會將路徑分隔符號字元取代為其他字元。如果不使用此欄位,則取代字元為底線 (_),例如
My/Path/Parameter掛載為My_Path_Parameter。若要避免發生字元取代的情況,請輸入字串
False。 usePodIdentity-
(選用) 決定身分驗證方法。未指定時,它預設為服務帳戶 (IRSA) 的 IAM 角色。
-
若要使用 EKS Pod 身分識別,請使用下列任何值:
"true"、"True"、"TRUE"、"t"或"T"。 -
若要明確使用 IRSA,請設定下列任何值:
"false"、"False"、"f"、"FALSE"或"F"。
-
preferredAddressType-
(選用) 指定 Pod 身分識別代理程式端點通訊的偏好 IP 位址類型。此欄位僅在使用 EKS Pod 身分識別功能時適用,並在使用服務帳戶的 IAM 角色時忽略。值不區分大小寫。有效的值如下:
-
"ipv4"、"IPv4"或"IPV4"– 強制使用 Pod 身分識別代理程式 IPv4 端點 -
"ipv6"、"IPv6"或"IPV6"– 強制使用 Pod 身分識別代理程式 IPv6 端點 -
未指定 – 使用自動端點選擇、先嘗試 IPv4 端點,並在 IPv4 失敗時退回到 IPv6 端點
-
- objects
-
包含待掛載秘密的 YAML 宣告的字串。建議使用 YAML 多行字串或分隔號 (|) 字元。
- objectName
-
必要. 指定要擷取的參數或秘密的名稱。對於 Parameter Store,這是參數的
Name,並且可以是參數的名稱或完整 ARN。對於 Secrets Manager,這是SecretId參數,並且可以是秘密的易記名稱或完整 ARN。 - objectType
-
如果未針對
objectName使用 Secrets Manager ARN,其則為必要欄位。對於 Parameter Store,請使用ssmparameter。對於 Secrets Manager,請使用secretsmanager。 - objectAlias
-
(選用) Amazon EKS Pod 中秘密的檔案名稱。如果您未指定此欄位,
objectName會顯示為檔案名稱。 - objectVersion
-
(選用) 參數的版本 ID。不建議,因為每次更新參數時都必須更新版本 ID。依預設,會使用最新版本。如果您包含
failoverRegion,則此欄位代表主要objectVersion。 - objectVersionLabel
-
(選用) 版本的別名。預設值為最新版本
AWSCURRENT。如果您包含failoverRegion,則此欄位代表主要objectVersionLabel。 - jmesPath
-
(選用) 要掛載在 Amazon EKS 中之檔案的參數金鑰映射。若要使用此欄位,您的參數值必須是 JSON 格式。
下列範例會顯示 JSON 編碼參數的樣子。
{ "username" : "myusername", "password" : "mypassword" }金鑰為
username和password。與username關聯的值是myusername,與password關聯的值是mypassword。如果使用此欄位,您必須包含
path和objectAlias。- 路徑
-
參數值 JSON 中鍵值對的索引鍵。如果欄位包含連字號,請使用單引號將其逸出,例如:
path: '"hyphenated-path"'。 - objectAlias
-
要掛載在 Amazon EKS Pod 中的檔案名稱。如果欄位包含連字號,請使用單引號將其逸出,例如:
objectAlias: '"hyphenated-alias"'。
failoverObject-
(選用) 如果您指定此欄位,則 ASCP 會嘗試擷取在主要
objectName中指定的參數和在failoverObjectobjectName子欄位中指定的參數。如果任一項傳回4xx錯誤 (例如身分驗證問題),則 ASCP 不會掛載任一參數。如果已成功從主要objectName擷取參數,則 ASCP 會掛載該參數值。如果未成功從主要objectName擷取參數,但已成功從容錯移轉objectName擷取參數,則 ASCP 會掛載該參數值。如果包含此欄位,則您必須包含欄位objectAlias。如需如何使用此欄位的範例,請參閱 容錯移轉至其他參數。當容錯移轉參數不是複本時,您通常會使用此欄位。如需如何指定複本的範例,請參閱 多區域參數容錯移轉。
- objectName
-
容錯移轉參數的名稱或完整 ARN。如果您使用 ARN,則 ARN 中的區域必須與欄位
failoverRegion相符。 - objectVersion
-
(選用) 參數的版本 ID。必須與主要
objectVersion相符。不建議,因為每次更新參數時都必須更新版本 ID。依預設,會使用最新版本。 - objectVersionLabel
-
(選用) 版本的別名。預設值為最新版本
AWSCURRENT。
建立基本 SecretProviderClass 組態,以在 Amazon EKS Pod 中掛載參數。
SecretProviderClass 用量
使用這些範例來建立不同案例的 SecretProviderClass 組態。
範例:按名稱或 ARN 掛載參數
此範例說明如何掛載三種不同類型的參數:
-
由完整 ARN 指定的參數
-
由名稱指定的參數
-
秘密的參數版本
apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name:aws-parametersspec: provider: aws parameters: objects: | - objectName: "arn:aws:ssm:us-east-2:777788889999:parameter:MyParameter2-d4e5f6" - objectName: "MyParameter3" objectType: "ssmparameter" - objectName: "MyParameter4" objectType: "ssmparameter" objectVersionLabel: "AWSCURRENT"
範例:從參數掛載鍵值對
此範例說明如何從 JSON 格式參數掛載特定的鍵值對:
apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name:aws-parametersspec: provider: aws parameters: objects: | - objectName: "arn:aws:ssm:us-east-2:777788889999:parameter:MyParameter-a1b2c3" jmesPath: - path: username objectAlias: dbusername - path: password objectAlias: dbpassword
範例:容錯移轉組態範例
這些範例顯示如何設定參數的容錯移轉。
多區域參數容錯移轉
此範例說明如何為跨多個區域複寫的參數設定自動容錯移轉:
apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name:aws-parametersspec: provider: aws parameters: region: us-east-1 failoverRegion: us-east-2 objects: | - objectName: "MyParameter"
容錯移轉至其他參數
此範例說明如何將容錯移轉設定為其他參數 (非複本):
apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aws-parameters spec: provider: aws parameters: region: us-east-1 failoverRegion: us-east-2 objects: | - objectName: "arn:aws:ssm:us-east-1:777788889999:parameter:MyParameter-a1b2c3" objectAlias: "MyMountedParameter" failoverObject: - objectName: "arn:aws:ssm:us-east-2:777788889999:parameter:MyFailoverParameter-d4e5f6"
其他資源
如需有關如何搭配 Amazon EKS 使用 ASCP 的詳細資訊,請參閱下列資源: