AWS Secrets and Configuration Provider (ASCP)
前のステップで実行したprepare-environmentスクリプトは、このラボに必要なKubernetes Secrets Store CSIドライバー用のAWS Secrets and Configuration Provider (ASCP)をすでにインストールしています。
アドオンが正しくデプロイされたことを確認しましょう。
まず、Secret Store CSIドライバーのDaemonSetとそのPodsを確認します:
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/csi-secrets-store-secrets-store-csi-driver 3 3 3 3 3 kubernetes.io/os=linux 3m57s
NAME READY STATUS RESTARTS AGE
pod/csi-secrets-store-secrets-store-csi-driver-bzddm 3/3 Running 0 3m57s
pod/csi-secrets-store-secrets-store-csi-driver-k7m6c 3/3 Running 0 3m57s
pod/csi-secrets-store-secrets-store-csi-driver-x2rs4 3/3 Running 0 3m57s
次に、AWS用のCSI Secrets StoreプロバイダードライバーのDaemonSetとそのPodsを確認します:
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/secrets-store-csi-driver-provider-aws 3 3 3 3 3 kubernetes.io/os=linux 2m3s
NAME READY STATUS RESTARTS AGE
pod/secrets-store-csi-driver-provider-aws-4jf8f 1/1 Running 0 2m2s
pod/secrets-store-csi-driver-provider-aws-djtf5 1/1 Running 0 2m2s
pod/secrets-store-csi-driver-provider-aws-dzg9r 1/1 Running 0 2m2s
CSIドライバーを介してAWS Secrets Managerに保存されているシークレットへのアクセスを提供する には、SecretProviderClassが必要です - これはAWS Secrets Managerの情報と一致するドライバー設定とパラメータを提供する名前空間付きのカスタムリソースです。
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
name: catalog-spc
namespace: catalog
spec:
provider: aws
parameters:
objects: |
- objectName: "$SECRET_NAME"
objectType: "secretsmanager"
jmesPath:
- path: username
objectAlias: username
- path: password
objectAlias: password
secretObjects:
- secretName: catalog-secret
type: Opaque
data:
- objectName: username
key: username
- objectName: password
key: password
provider: awsはAWS Secrets Store CSIドライバーを指定します
parameters.objectsはAWS secretsmanagerソースシークレット名$SECRET_NAMEを定義し、jmesPathを使用して特定のusernameとpasswordフィールドをKubernetesで消費するための名前付きエイリアスとして抽出します
secretObjectsは抽出されたusernameとpasswordフィールドをシークレットキーにマッピングする標準のOpaque Kubernetesシークレット名catalog-secretを作成します
このリソースを作成しましょう:
Secret Store CSIドライバーはKubernetesとAWS Secrets Managerなどの外部シークレットプロバイダー間の仲介者として機能します。SecretProviderClassで構成すると、Podボリュームのファイルとしてシークレットをマウントし、同期されたKubernetes Secretオブジェクトを作成でき、アプリケーションがこれらのシークレットを消費する方法に柔軟性を提供します。