セキュリティー
セキュリティー機能を使用したセキュアな通信の設定と転送中の機密データの保護
概要
第1章 Redis とのセキュアな通信の設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift GitOps で Transport Layer Security (TLS) 暗号化を使用すると、Argo CD コンポーネントと Redis キャッシュ間の通信を保護し、機密情報の可能性がある転送中のデータを保護できます。
次の設定のいずれかを使用して、Redis との通信を保護できます。
-
autotls設定を有効にして、TLS 暗号化に適切な証明書を発行します。 -
キーと証明書のペアを使用して
argocd-operator-redis-tlsシークレットを作成し、TLS 暗号化を手動で設定します。
どちらの設定も、高可用性 (HA) が有効になっているかどうかに関係なく可能です。
1.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
-
cluster-admin権限でクラスターにアクセスできる。 - OpenShift Container Platform Web コンソールにアクセスできる。
- Red Hat OpenShift GitOps Operator がクラスターにインストールされている。
1.2. autotls を有効にして Redis の TLS を設定する リンクのコピーリンクがクリップボードにコピーされました!
新規または既存の Argo CD インスタンスで autotls 設定を有効にすることで、Redis の TLS 暗号化を設定できます。この設定では、argocd-operator-redis-tls シークレットが自動的にプロビジョニングされるため、それ以上の手順は必要ありません。現時点で、OpenShift Container Platform は唯一サポートされているシークレットプロバイダーです。
デフォルトでは、autotls 設定は無効になっています。
手順
- OpenShift Container Platform Web コンソールにログインします。
autotlsを有効にして Argo CD インスタンスを作成します。- Web コンソールの Administrator パースペクティブで、左側のナビゲーションパネルを使用して、Administration → CustomResourceDefinitions に移動します。
-
argocds.argoproj.ioを検索し、ArgoCDカスタムリソース定義 (CRD) をクリックします。 - CustomResourceDefinition の詳細 ページで、Instances タブをクリックし、Create ArgoCD をクリックします。
次の例のように YAML を編集または置換します。
autotls を有効にした Argo CD CR の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントあるいは、次のコマンドを実行して、既存の Argo CD インスタンスで
autotlsに設定を有効にすることもできます。oc patch argocds.argoproj.io <instance-name> --type=merge -p '{"spec":{"redis":{"autotls":"openshift"}}}'$ oc patch argocds.argoproj.io <instance-name> --type=merge -p '{"spec":{"redis":{"autotls":"openshift"}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Create をクリックします。
Argo CD Pod が準備ができており、実行中であることを確認します。
oc get pods -n <namespace>
$ oc get pods -n <namespace>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Argo CD インスタンスが実行されている namespace (例:
openshift-gitops)を指定します。
HA を無効にした場合の出力例
NAME READY STATUS RESTARTS AGE argocd-application-controller-0 1/1 Running 0 26s argocd-redis-84b77d4f58-vp6zm 1/1 Running 0 37s argocd-repo-server-5b959b57f4-znxjq 1/1 Running 0 37s argocd-server-6b8787d686-wv9zh 1/1 Running 0 37s
NAME READY STATUS RESTARTS AGE argocd-application-controller-0 1/1 Running 0 26s argocd-redis-84b77d4f58-vp6zm 1/1 Running 0 37s argocd-repo-server-5b959b57f4-znxjq 1/1 Running 0 37s argocd-server-6b8787d686-wv9zh 1/1 Running 0 37sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記HA 対応の TLS 設定には、少なくとも 3 つのワーカーノードを備えたクラスターが必要です。HA 設定で Argo CD インスタンスを有効にしている場合は、出力が表示されるまでに数分かかることがあります。
HA を有効にした場合の出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
argocd-operator-redis-tlsシークレットが作成されていることを確認します。oc get secrets argocd-operator-redis-tls -n <namespace>
$ oc get secrets argocd-operator-redis-tls -n <namespace>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Argo CD インスタンスが実行されている namespace (例:
openshift-gitops)を指定します。
出力例
NAME TYPE DATA AGE argocd-operator-redis-tls kubernetes.io/tls 2 30s
NAME TYPE DATA AGE argocd-operator-redis-tls kubernetes.io/tls 2 30sCopy to Clipboard Copied! Toggle word wrap Toggle overflow シークレットは
kubernetes.io/tlsタイプで、サイズが2である必要があります。
1.3. autotls を無効にして Redis の TLS を設定する リンクのコピーリンクがクリップボードにコピーされました!
キーと値のペアを使用して argocd-operator-redis-tls シークレットを作成して、Redis の TLS 暗号化を手動で設定できます。さらに、シークレットにアノテーションを付けて、それが適切な Argo CD インスタンスに属していることを示す必要があります。証明書とシークレットを作成する手順は、高可用性 (HA) が有効になっているインスタンスによって異なります。
手順
- OpenShift Container Platform Web コンソールにログインします。
Argo CD インスタンスを作成します。
- Web コンソールの Administrator パースペクティブで、左側のナビゲーションパネルを使用して、Administration → CustomResourceDefinitions に移動します。
-
argocds.argoproj.ioを検索し、ArgoCDカスタムリソース定義 (CRD) をクリックします。 - CustomResourceDefinition の詳細 ページで、Instances タブをクリックし、Create ArgoCD をクリックします。
次の例のように YAML を編集または置換します。
autotls を無効にした ArgoCD CR の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Create をクリックします。
Argo CD Pod が準備ができており、実行中であることを確認します。
oc get pods -n <namespace>
$ oc get pods -n <namespace>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Argo CD インスタンスが実行されている namespace (例:
openshift-gitops)を指定します。
HA を無効にした場合の出力例
NAME READY STATUS RESTARTS AGE argocd-application-controller-0 1/1 Running 0 26s argocd-redis-84b77d4f58-vp6zm 1/1 Running 0 37s argocd-repo-server-5b959b57f4-znxjq 1/1 Running 0 37s argocd-server-6b8787d686-wv9zh 1/1 Running 0 37s
NAME READY STATUS RESTARTS AGE argocd-application-controller-0 1/1 Running 0 26s argocd-redis-84b77d4f58-vp6zm 1/1 Running 0 37s argocd-repo-server-5b959b57f4-znxjq 1/1 Running 0 37s argocd-server-6b8787d686-wv9zh 1/1 Running 0 37sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記HA 対応の TLS 設定には、少なくとも 3 つのワーカーノードを備えたクラスターが必要です。HA 設定で Argo CD インスタンスを有効にしている場合は、出力が表示されるまでに数分かかることがあります。
HA を有効にした場合の出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
HA 設定に応じて、次のいずれかのオプションを使用して、Redis サーバーの自己署名証明書を作成します。
HA が無効になっている Argo CD インスタンスの場合は、次のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Argo CD インスタンスが実行されている namespace (例:
openshift-gitops)を指定します。
出力例
Generating a RSA private key ...............++++ ............................++++ writing new private key to '/tmp/redis.key'
Generating a RSA private key ...............++++ ............................++++ writing new private key to '/tmp/redis.key'Copy to Clipboard Copied! Toggle word wrap Toggle overflow HA が有効になっている Argo CD インスタンスの場合は、以下のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Argo CD インスタンスが実行されている namespace (例:
openshift-gitops)を指定します。
出力例
Generating a RSA private key ...............++++ ............................++++ writing new private key to '/tmp/redis-ha.key'
Generating a RSA private key ...............++++ ............................++++ writing new private key to '/tmp/redis-ha.key'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のコマンドを実行して、生成された証明書とキーが
/tmpディレクトリーで利用できることを確認します。cd /tmp
$ cd /tmpCopy to Clipboard Copied! Toggle word wrap Toggle overflow ls
$ lsCopy to Clipboard Copied! Toggle word wrap Toggle overflow HA を無効にした場合の出力例
... redis.crt redis.key ...
... redis.crt redis.key ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow HA を有効にした場合の出力例
... redis-ha.crt redis-ha.key ...
... redis-ha.crt redis-ha.key ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow HA 設定に応じて、次のいずれかのオプションを使用して、
argocd-operator-redis-tlsシークレットを作成します。HA が無効になっている Argo CD インスタンスの場合は、次のコマンドを実行します。
oc create secret tls argocd-operator-redis-tls --key=/tmp/redis.key --cert=/tmp/redis.crt
$ oc create secret tls argocd-operator-redis-tls --key=/tmp/redis.key --cert=/tmp/redis.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow HA が有効になっている Argo CD インスタンスの場合は、以下のコマンドを実行します。
oc create secret tls argocd-operator-redis-tls --key=/tmp/redis-ha.key --cert=/tmp/redis-ha.crt
$ oc create secret tls argocd-operator-redis-tls --key=/tmp/redis-ha.key --cert=/tmp/redis-ha.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
secret/argocd-operator-redis-tls created
secret/argocd-operator-redis-tls createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
シークレットにアノテーションを付けて、それが Argo CD CR に属していることを示します。
oc annotate secret argocd-operator-redis-tls argocds.argoproj.io/name=<instance-name>
$ oc annotate secret argocd-operator-redis-tls argocds.argoproj.io/name=<instance-name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Argo CD インスタンスの名前を指定します (例:
argocd)。
出力例
secret/argocd-operator-redis-tls annotated
secret/argocd-operator-redis-tls annotatedCopy to Clipboard Copied! Toggle word wrap Toggle overflow Argo CD Pod が準備ができており、実行中であることを確認します。
oc get pods -n <namespace>
$ oc get pods -n <namespace>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Argo CD インスタンスが実行されている namespace (例:
openshift-gitops)を指定します。
HA を無効にした場合の出力例
NAME READY STATUS RESTARTS AGE argocd-application-controller-0 1/1 Running 0 26s argocd-redis-84b77d4f58-vp6zm 1/1 Running 0 37s argocd-repo-server-5b959b57f4-znxjq 1/1 Running 0 37s argocd-server-6b8787d686-wv9zh 1/1 Running 0 37s
NAME READY STATUS RESTARTS AGE argocd-application-controller-0 1/1 Running 0 26s argocd-redis-84b77d4f58-vp6zm 1/1 Running 0 37s argocd-repo-server-5b959b57f4-znxjq 1/1 Running 0 37s argocd-server-6b8787d686-wv9zh 1/1 Running 0 37sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記HA 設定で Argo CD インスタンスを有効にしている場合は、出力が表示されるまでに数分かかることがあります。
HA を有効にした場合の出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第2章 GitOps で Secrets Store CSI ドライバーを使用したシークレットのセキュアな管理 リンクのコピーリンクがクリップボードにコピーされました!
このガイドでは、OpenShift Container Platform 4.14 以降で Secrets Store Container Storage Interface (SSCSI) ドライバーを GitOps Operator と統合するプロセスを説明します。
2.1. GitOps で Secrets Store CSI ドライバーを使用したシークレット管理の概要 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションには、パスワードやユーザー名などの機密情報が必要なものがありますが、適切なセキュリティー対策として、これらを非表示にする必要があります。ロールベースのアクセス制御 (RBAC) がクラスターで適切に設定されていないために機密情報が公開された場合、API または etcd アクセス権を持つユーザーは誰でもシークレットを取得または変更できます。
namespace で Pod を作成する権限を持つユーザーであれば、その RBAC を使用して対象の namespace 内のシークレットを読み取ることができます。SSCSI Driver Operator を使用すると、外部シークレットストアを使用して機密情報を保存し、Pod に安全に提供できます。
OpenShift Container Platform SSCSI ドライバーを GitOps Operator と統合するプロセスは、以下の手順で設定されます。
2.1.1. 利点 リンクのコピーリンクがクリップボードにコピーされました!
SSCSI ドライバーを GitOps Operator と統合すると、次の利点があります。
- GitOps ワークフローのセキュリティーと効率を向上する
- ボリュームとしてのデプロイメント Pod へのシークレットのセキュアな接続を容易にする
- 機密情報に安全かつ効率的にアクセスできるようにする
2.1.2. シークレットストアプロバイダー リンクのコピーリンクがクリップボードにコピーされました!
次のシークレットストアプロバイダーは、Secrets Store CSI Driver Operator で使用できます。
- AWS Secrets Manager
- AWS Systems Manager パラメーターストア
- Microsoft Azure Key Vault
たとえば、SSCSI Driver Operator でシークレットストアプロバイダーとして AWS Secrets Manager を使用していることを考えてみましょう。次の例は、AWS Secrets Manager からのシークレットを使用する準備ができている GitOps リポジトリーのディレクトリー構造を示しています。
GitOps リポジトリーのディレクトリー構造の例
- 2
aws-provider.yamlファイルを保存するディレクトリー。- 3
- AWS Secrets Manager プロバイダーをインストールし、そのリソースをデプロイする設定ファイル。
- 1
- アプリケーションを作成し、AWS Secrets Manager のリソースをデプロイする設定ファイル。
- 4
- デプロイメント Pod と認証情報リクエストを保存するディレクトリー。
- 5
SecretProviderClassリソースを格納するディレクトリー。シークレットストアプロバイダーを定義します。- 6
credentialsrequest.yamlファイルを保存するフォルダー。このファイルには、シークレットをデプロイメント Pod にマウントするための認証情報要求の設定が含まれます。
2.2. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
-
cluster-admin権限でクラスターにアクセスできる。 - OpenShift Container Platform Web コンソールにアクセスできる。
-
ccoctlバイナリーを抽出して準備している。 -
jqCLI ツールがインストールされている。 - クラスターが AWS にインストールされ、AWS Security Token Service (STS) を使用している。
- 必要なシークレットを保存するように AWS Secrets Manager を設定している。
- SSCSI Driver Operator がクラスターにインストールされている。
- Red Hat OpenShift GitOps Operator がクラスターにインストールされている。
- GitOps リポジトリーでシークレットを使用する準備ができている。
- Argo CD 管理アカウントを使用して Argo CD インスタンスにログインしている。
2.3. GitOps リポジトリーへの AWS Secrets Manager リソースの保存 リンクのコピーリンクがクリップボードにコピーされました!
このガイドでは、Secrets Store Container Storage Interface (SSCSI) Driver Operator で GitOps ワークフローを使用して、AWS Secrets Manager から OpenShift Container Platform の CSI ボリュームにシークレットをマウントする方法を例とともに説明します。
AWS Secrets Manager での SSCSI Driver Operator の使用は、ホストされたコントロールプレーンクラスターではサポートされていません。
前提条件
-
cluster-admin権限でクラスターにアクセスできる。 - OpenShift Container Platform Web コンソールにアクセスできる。
-
ccoctlバイナリーを抽出して準備している。 -
jqCLI ツールがインストールされている。 - クラスターが AWS にインストールされ、AWS Security Token Service (STS) を使用している。
- 必要なシークレットを保存するように AWS Secrets Manager を設定している。
- SSCSI Driver Operator がクラスターにインストールされている。
- Red Hat OpenShift GitOps Operator がクラスターにインストールされている。
- GitOps リポジトリーでシークレットを使用する準備ができている。
- Argo CD 管理アカウントを使用して Argo CD インスタンスにログインしている。
手順
AWS Secrets Manager プロバイダーをインストールし、リソースを追加します。
GitOps リポジトリーでディレクトリーを作成し、
aws-provider.yamlファイルを次の設定に追加して、AWS Secrets Manager プロバイダーのリソースをデプロイします。重要SSCSI ドライバー用の AWS Secrets Manager プロバイダーは、アップストリームのプロバイダーです。
この設定は、OpenShift Container Platform で適切に動作するように、アップストリームの AWS ドキュメント で提供されている設定から変更されています。この設定を変更すると、機能に影響が出る場合があります。
aws-provider.yamlファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow GitOps リポジトリーに
secret-provider-app.yamlファイルを追加して、アプリケーションを作成し、AWS Secrets Manager のリソースをデプロイします。secret-provider-app.yamlファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
repoURLフィールドの値を更新して、GitOps リポジトリーを指すようにします。
リソースをデフォルトの Argo CD インスタンスと同期して、それらをクラスターにデプロイします。
アプリケーションがデプロイされている
openshift-cluster-csi-driversnamespace にラベルを追加し、openshift-gitopsnamespace の Argo CD インスタンスが管理できるようにします。oc label namespace openshift-cluster-csi-drivers argocd.argoproj.io/managed-by=openshift-gitops
$ oc label namespace openshift-cluster-csi-drivers argocd.argoproj.io/managed-by=openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow プッシュした
aws-provider.yamlファイルを含む、GitOps リポジトリー内のリソースをクラスターに適用します。出力例
application.argoproj.io/argo-app created application.argoproj.io/secret-provider-app created ...
application.argoproj.io/argo-app created application.argoproj.io/secret-provider-app created ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Argo CD UI では、csi-secrets-store-provider-aws daemonset がリソースの同期を継続していることがわかります。この問題を解決するには、AWS Secrets Manager からシークレットをマウントするように SSCSI ドライバーを設定する必要があります。
2.4. AWS Secrets Manager からシークレットをマウントする SSCSI ドライバーの設定 リンクのコピーリンクがクリップボードにコピーされました!
シークレットを安全に保存および管理するには、GitOps ワークフローを使用し、シークレットを AWS Secrets Manager から OpenShift Container Platform の CSI ボリュームにマウントするように Secrets Store Container Storage Interface (SSCSI) Driver Operator を設定します。たとえば、/environments/dev/ ディレクトリーにある dev namespace のデプロイメント Pod にシークレットをマウントする場合などです。
前提条件
- GitOps リポジトリーに AWS Secrets Manager リソースが保存されている。
手順
次のコマンドを実行して、
csi-secrets-store-provider-awsサービスアカウントへの特権アクセスを付与します。oc adm policy add-scc-to-user privileged -z csi-secrets-store-provider-aws -n openshift-cluster-csi-drivers
$ oc adm policy add-scc-to-user privileged -z csi-secrets-store-provider-aws -n openshift-cluster-csi-driversCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
clusterrole.rbac.authorization.k8s.io/system:openshift:scc:privileged added: "csi-secrets-store-provider-aws"
clusterrole.rbac.authorization.k8s.io/system:openshift:scc:privileged added: "csi-secrets-store-provider-aws"Copy to Clipboard Copied! Toggle word wrap Toggle overflow サービスアカウントに AWS シークレットオブジェクトの読み取りを許可するアクセス許可を付与します。
認証情報要求は namespace スコープであるため、GitOps リポジトリーの namespace スコープディレクトリーに
credentialsrequest-dir-awsフォルダーを作成します。たとえば、次のコマンドを実行して、/environments/dev/ディレクトリーにあるdevnamespace にcredentialsrequest-dir-awsフォルダーを作成します。mkdir credentialsrequest-dir-aws
$ mkdir credentialsrequest-dir-awsCopy to Clipboard Copied! Toggle word wrap Toggle overflow /environments/dev/credentialsrequest-dir-aws/パスに認証情報リクエスト用の次の設定を含む YAML ファイルを作成し、devnamespace のデプロイメント Pod にシークレットをマウントします。credentialsrequest.yamlファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントクラスターリージョンを見つけるには、次のコマンドを実行します。
oc get infrastructure cluster -o jsonpath='{.status.platformStatus.aws.region}'$ oc get infrastructure cluster -o jsonpath='{.status.platformStatus.aws.region}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
us-west-2
us-west-2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、OIDC プロバイダーを取得します。
oc get --raw=/.well-known/openid-configuration | jq -r '.issuer'
$ oc get --raw=/.well-known/openid-configuration | jq -r '.issuer'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
https://<oidc_provider_name>
https://<oidc_provider_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のステップで使用するために、出力から OIDC プロバイダー名
<oidc_provider_name>をコピーします。ccoctlツールを使用して、次のコマンドを実行して認証情報リクエストを処理します。ccoctl aws create-iam-roles \ --name my-role --region=<aws_region> \ --credentials-requests-dir=credentialsrequest-dir-aws \ --identity-provider-arn arn:aws:iam::<aws_account>:oidc-provider/<oidc_provider_name> --output-dir=credrequests-ccoctl-output$ ccoctl aws create-iam-roles \ --name my-role --region=<aws_region> \ --credentials-requests-dir=credentialsrequest-dir-aws \ --identity-provider-arn arn:aws:iam::<aws_account>:oidc-provider/<oidc_provider_name> --output-dir=credrequests-ccoctl-outputCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
2023/05/15 18:10:34 Role arn:aws:iam::<aws_account_id>:role/my-role-my-namespace-aws-creds created 2023/05/15 18:10:34 Saved credentials configuration to: credrequests-ccoctl-output/manifests/my-namespace-aws-creds-credentials.yaml 2023/05/15 18:10:35 Updated Role policy for Role my-role-my-namespace-aws-creds
2023/05/15 18:10:34 Role arn:aws:iam::<aws_account_id>:role/my-role-my-namespace-aws-creds created 2023/05/15 18:10:34 Saved credentials configuration to: credrequests-ccoctl-output/manifests/my-namespace-aws-creds-credentials.yaml 2023/05/15 18:10:35 Updated Role policy for Role my-role-my-namespace-aws-credsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のステップで使用するために、出力から
<aws_role_arn>をコピーします。たとえば、arn:aws:iam::<aws_account_id>:role/my-role-my-namespace-aws-credsです。AWS のロールポリシーをチェックして、ロールポリシー内の
Resourceの<aws_region>がクラスターリージョンと一致していることを確認します。ロールポリシーの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ロール ARN を持つサービスアカウントをバインドします。
oc annotate -n <namespace> sa/<app_service_account> eks.amazonaws.com/role-arn="<aws_role_arn>"
$ oc annotate -n <namespace> sa/<app_service_account> eks.amazonaws.com/role-arn="<aws_role_arn>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドの例
oc annotate -n dev sa/default eks.amazonaws.com/role-arn="<aws_role_arn>"
$ oc annotate -n dev sa/default eks.amazonaws.com/role-arn="<aws_role_arn>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
serviceaccount/default annotated
serviceaccount/default annotatedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
namespace スコープの
SecretProviderClassリソースを作成し、シークレットストアプロバイダーを定義します。たとえば、GitOps リポジトリーの/environments/dev/apps/app-taxi/services/taxi/base/configディレクトリーにSecretProviderClassリソースを作成します。ターゲットのデプロイメントが GitOps リポジトリーにあるのと同じディレクトリーに、
secret-provider-class-aws.yamlファイルを作成します。secret-provider-class-aws.yamlの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow この YAML ファイルを GitOps リポジトリーにプッシュした後、namespace スコープの
SecretProviderClassリソースが Argo CD UI のターゲットアプリケーションページに設定されていることを確認します。注記アプリケーションの Sync Policy が
Autoに設定されていない場合は、Argo CD UI で Sync をクリックして、SecretProviderClassリソースを手動で同期できます。
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 ファイル
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 更新されたリソース YAML ファイルを GitOps リポジトリーにプッシュします。
- Argo CD UI で、ターゲットアプリケーションページで REFRESH をクリックし、更新されたデプロイメントマニフェストを適用します。
- ターゲットアプリケーションページですべてのリソースが正常に同期されていることを確認します。
Pod ボリュームマウントの AWS Secrets Manager からシークレットにアクセスできることを確認します。
Pod マウント内のシークレットをリスト表示します。
oc exec <deployment_name>-<hash> -n <namespace> -- ls /mnt/secrets-store/
$ oc exec <deployment_name>-<hash> -n <namespace> -- ls /mnt/secrets-store/Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドの例
oc exec taxi-5959644f9-t847m -n dev -- ls /mnt/secrets-store/
$ oc exec taxi-5959644f9-t847m -n dev -- ls /mnt/secrets-store/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
<secret_name>
<secret_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod マウントのシークレットを表示します。
oc exec <deployment_name>-<hash> -n <namespace> -- cat /mnt/secrets-store/<secret_name>
$ oc exec <deployment_name>-<hash> -n <namespace> -- cat /mnt/secrets-store/<secret_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドの例
oc exec taxi-5959644f9-t847m -n dev -- cat /mnt/secrets-store/testSecret
$ oc exec taxi-5959644f9-t847m -n dev -- cat /mnt/secrets-store/testSecretCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
<secret_value>
<secret_value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow