フィードを購読する

機密データは 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.

Read full bio
UI_Icon-Red_Hat-Close-A-Black-RGB

チャンネル別に見る

automation icon

自動化

テクノロジー、チームおよび環境に関する IT 自動化の最新情報

AI icon

AI (人工知能)

お客様が AI ワークロードをどこでも自由に実行することを可能にするプラットフォームについてのアップデート

open hybrid cloud icon

オープン・ハイブリッドクラウド

ハイブリッドクラウドで柔軟に未来を築く方法をご確認ください。

security icon

セキュリティ

環境やテクノロジー全体に及ぶリスクを軽減する方法に関する最新情報

edge icon

エッジコンピューティング

エッジでの運用を単純化するプラットフォームのアップデート

Infrastructure icon

インフラストラクチャ

世界有数のエンタープライズ向け Linux プラットフォームの最新情報

application development icon

アプリケーション

アプリケーションの最も困難な課題に対する Red Hat ソリューションの詳細

Original series icon

オリジナル番組

エンタープライズ向けテクノロジーのメーカーやリーダーによるストーリー