2.5. マウントされたシークレットを使用するための GitOps 管理リソースの設定
ボリュームマウント設定をデプロイメントに追加し、マウントされたシークレットを使用するようにコンテナー Pod を設定して、GitOps 管理リソースを設定する必要があります。
前提条件
- GitOps リポジトリーに AWS Secrets Manager リソースが保存されている。
- AWS Secrets Manager からシークレットをマウントするように Secrets Store Container Storage Interface (SSCSI) ドライバーが設定されている。
手順
GitOps 管理リソースを設定します。たとえば、
app-taxiアプリケーションのデプロイメントにボリュームのマウント設定を追加し、100-deployment.yamlファイルが/environments/dev/apps/app-taxi/services/taxi/base/config/ディレクトリーにあるとします。デプロイメント YAML ファイルにボリュームマウントを追加し、シークレットプロバイダークラスリソースおよびマウントされたシークレットを使用するようにコンテナー Pod を設定します。
サンプル YAML ファイル
apiVersion: apps/v1 kind: Deployment metadata: name: taxi namespace: dev1 spec: replicas: 1 template: metadata: # ... spec: containers: - image: nginxinc/nginx-unprivileged:latest imagePullPolicy: Always name: taxi ports: - containerPort: 8080 volumeMounts: - name: secrets-store-inline mountPath: "/mnt/secrets-store"2 readOnly: true resources: {} serviceAccountName: default volumes: - name: secrets-store-inline csi: driver: secrets-store.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: "my-aws-provider"3 status: {} # ...- 更新されたリソース YAML ファイルを GitOps リポジトリーにプッシュします。
- Argo CD UI で、ターゲットアプリケーションページで REFRESH をクリックし、更新されたデプロイメントマニフェストを適用します。
- ターゲットアプリケーションページですべてのリソースが正常に同期されていることを確認します。
Pod ボリュームマウントの AWS Secrets Manager からシークレットにアクセスできることを確認します。
Pod マウント内のシークレットをリスト表示します。
$ oc exec <deployment_name>-<hash> -n <namespace> -- ls /mnt/secrets-store/コマンドの例
$ oc exec taxi-5959644f9-t847m -n dev -- ls /mnt/secrets-store/出力例
<secret_name>Pod マウントのシークレットを表示します。
$ oc exec <deployment_name>-<hash> -n <namespace> -- cat /mnt/secrets-store/<secret_name>コマンドの例
$ oc exec taxi-5959644f9-t847m -n dev -- cat /mnt/secrets-store/testSecret出力例
<secret_value>