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: dev 1 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>