AWS Secrets and Configuration Provider (ASCP)
このワークショップでは、AWS Secrets and Configuration Provider (ASCP) を EKS クラスターに事前設定しています。
アドオンが正しくデプロイされたことを検証しましょう。
まず、Secret Store CSI driver の DaemonSet とその Pod を確認します:
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
次に、CSI Secrets Store Provider for AWS driver の DaemonSet とその Pod を確認します:
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
CSI driver を介して AWS Secrets Manager に保存されたシークレットへのアクセスを提供するには、SecretProviderClass が必要です。これは、AWS Secrets Manager の情報と一致するドライバー設定とパラメータを提供する namespace スコープの Custom Resource Definition (CRD) です。
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
usePodIdentity: "true"
secretObjects:
- secretName: catalog-secret
type: Opaque
data:
- objectName: username
key: username
- objectName: password
key: password
provider: aws は AWS Secrets Store CSI driver を指定します
parameters.objects は、$SECRET_NAME という名前の AWS secretsmanager ソースシークレットを定義し、jmesPath を使用して特定の username と password フィールドを抽出し、Kubernetes で使用するための名前付きエイリアスに変換します
secretObjects は、抽出された username と password フィールドをシークレットキーにマッピングする catalog-secret という名前の標準 Opaque Kubernetes Secret を作成します
このリソースを作成しましょう:
Secret Store CSI Driver は、Kubernetes と AWS Secrets Manager などの外部シークレットプロバイダーの間の仲介役として機能します。SecretProviderClass で設定すると、シークレットを Pod ボリュームのファイルとしてマウントし、同期された Kubernetes Secret オブジェクトを作成することができ、アプリケーションがこれらのシークレットを使用する方法に柔軟性を提供します。