機密データは Git に保存できません。これは GitOps の難しい課題となります。Git ではシークレットが必要ですが、この機密データを公開しないようにする必要があるためです。この問題に対処するには、HashiCorp Vault などのツールにシークレットを保存してから、そのデータを取得して Red Hat OpenShiftに挿入することができます。
この記事は、Argo CD Vault プラグインを使用して OpenShift GitOps をデプロイし、Hashicorp Vault インスタンスからシークレットを取得し、それらを Kubernetes リソースに挿入するためのガイドです。このガイドは、2021 年に Red Hat で公開されたこのブログ記事を基に構築されており、より先進的なカスタムプラグイン・サイドカーアプローチを使用できるように更新されています。
前提条件
この記事では、OpenShift 4.10 以上をクラスターの管理者権限で実行していることを前提とします。現在、Red Hat デモシステムによってプロビジョニングされた Red Hat OpenShift on AWS 4.13 クラスタを実行しています。
さらに、次の手順に進む前に、oc および helm バイナリーを使用してターミナル環境のクラスターにログインしていることを確認してください。次のコマンドを使用して、これらのバイナリーを確認します。
まず、前提条件を確認します。出力は次のようになります。
$ oc version && helm version
Client Version: 4.11.13
Kustomize Version: v4.5.4
Kubernetes Version: v1.27.4
version.BuildInfo{Version:"v3.10.1", GitCommit:"9f88ccb6aee40b9a0535fcc7efea6055e1ef72c9", GitTreeState:"clean", GoVersion:"go1.18.7"}1.Vault をデプロイする
この記事では、Vault を dev モードで使用していますが、これは本番環境には適していません。すでに Vault インスタンスを実行している場合は、この手順を省略できます。Hashicorp Vault のインスタンスをデプロイします。
$ helm upgrade --install vault vault \
--repo https://helm.releases.hashicorp.com \
--namespace vault \
--create-namespace \
--set "global.openshift=true" \
--set "server.dev.enabled=true" \
--set "injector.enabled=false"2.Vault を設定する
Vault インスタンスをデプロイしたら、Vault Pod に対してシェルスクリプトを実行し、適切な vault CLI を使用してデモ用にインスタンスをすばやく設定します。
設定スクリプトは Vault の Kubernetes auth method を設定し、 kv-v2 シークレットストアを有効化し、テストシークレットを作成して、そのシークレットのアクセスポリシーを作成します。
ソースのクローンを作成します。
$ git clone https://github.com/jmhbnz/openshift-gitops-vault-plugin
設定スクリプトを Vault Pod にコピーします。
$ oc --namespace vault cp 1-vault/configure-vault.sh vault-0:/tmp/configure-vault.sh
次に、 Vault Pod でスクリプトをリモートで実行します。
$ oc --namespace vault exec vault-0 -t -- sh -c 'cd /tmp && ./configure-vault.sh'
3.argocd-vault-plugin-auth を Vault に設定する
Vault をデプロイして設定したら、Kubernetes サービスアカウントを使用して Vault に対して認証を行えるよう、デプロイされる Argo CD Vault プラグインを有効にする必要があります。
ArgoCD の namespace を作成します。
$ oc new-project vplugindemo
Argo Vault プラグイン認証用のサービスアカウントを作成します。
$ oc create serviceaccount vplugin
Vault にロールを作成して、サービスアカウントをポリシーにバインドします。
$ oc --namespace vault exec vault-0 -- vault write auth/kubernetes/role/vplugin \
bound_service_account_names=vplugin \
bound_service_account_namespaces=vplugindemo \
policies=vplugin \
ttl=1h最後に、Vault 接続を設定する際に使用する Argo Vault プラグインのシークレットを作成します。
$ oc --namespace vplugindemo create \ -f 2-argocd/secret-vault-configuration.yaml
4.argocd-vault-plugin 処理を設定する
認証を設定した後は、Argo CD Vault Plugin サイドカーの使用目的を定義する必要があります。2 段階のプロセスを実行します。最初に、discovery コマンドを指定し、次に generate コマンドを指定する必要があります。こちらに記載されたサンプル (helm または kustomize ベースのアプリケーションのシナリオを含む) を参照してください。今回の例では、 アノテーションを含むファイルを検出するための最も基本的なアプローチを導入しています。この場合、argocd-vault-plugin generate を使用して、ファイルをテンプレート化します。
$ oc --namespace vplugindemo create \ -f 2-argocd/configmap-plugin.yaml
5.OpenShift GitOps をデプロイする
Vault をデプロイおよび設定し、 argocd-vault-plugin が設定されたら、OpenShift GitOps Operator をデプロイします。
$ oc --namespace openshift-operators create -f 2-argocd/subscription-gitops.yaml
Operator のインストールが正常に実行されたら、カスタムリソースを使用して Argo CD インスタンスを作成します。
$ oc --namespace vplugindemo create \ -f 2-argocd/crd-argocd.yaml
6.Argo CD アプリケーションを作成する
Argo CD が実行されたら、このベースラインのサンプルアプリケーションを作成します。これにより、デフォルトのプレースホルダー値が Vault の値に置き換えられたシークレットリソースがクラスターに作成されます。
$ oc --namespace vplugindemo create \ -f 2-argocd/application-example.yaml
キーポイント
Red Hat OpenShift GitOps とサイドカーとして実行される Argo CD Vault プラグインとともに Hashicorp Vault を使用して、Git のシークレット内のプレースホルダー値を使用することができます。これは、機密データを保護するための優れた方法です。
執筆者紹介
James Blair is a Specialist Architect at Red Hat. James is a vivid open source advocate and hands-on engineer. He has a deep technical background in automation, DevSecOps and cloud-native platform engineering across several sectors and is passionate about growing cloud-native in Aotearoa, New Zealand.
類似検索
F5 BIG-IP Virtual Edition is now validated for Red Hat OpenShift Virtualization
More than meets the eye: Behind the scenes of Red Hat Enterprise Linux 10 (Part 4)
DevSecOps decoded | Technically Speaking
Unlocking zero-trust supply chains | Technically Speaking
チャンネル別に見る
自動化
テクノロジー、チームおよび環境に関する IT 自動化の最新情報
AI (人工知能)
お客様が AI ワークロードをどこでも自由に実行することを可能にするプラットフォームについてのアップデート
オープン・ハイブリッドクラウド
ハイブリッドクラウドで柔軟に未来を築く方法をご確認ください。
セキュリティ
環境やテクノロジー全体に及ぶリスクを軽減する方法に関する最新情報
エッジコンピューティング
エッジでの運用を単純化するプラットフォームのアップデート
インフラストラクチャ
世界有数のエンタープライズ向け Linux プラットフォームの最新情報
アプリケーション
アプリケーションの最も困難な課題に対する Red Hat ソリューションの詳細
仮想化
オンプレミスまたは複数クラウドでのワークロードに対応するエンタープライズ仮想化の将来についてご覧ください