3.9. シークレットをファイルまたは環境変数としてワークスペースコンテナーにマウント
シークレットとは、ユーザー名、パスワード、認証トークン、および設定などの機密データを暗号化された形式で保存する OpenShift オブジェクトです。
ユーザーはワークスペースコンテナーに機密データが含まれるシークレットをマウントできます。これにより、新規作成されたすべてのワークスペースにシークレットから保存されたデータが自動的に適用されます。そのため、ユーザーはこれらの認証情報と設定を手動で指定する必要はありません。
以下のセクションでは、OpenShift シークレットをワークスペースコンテナーに自動的にマウントし、以下のようなコンポーネントの永続的なマウントポイントを作成する方法を説明します。
-
Maven 設定の
settings.xmlファイル - SSH 鍵のペア
- AWS 認証トークン
- Git クレデンシャルストアファイル
OpenShift シークレットは、以下のようにワークスペースコンテナーにマウントできます。
- ファイル: これにより、Maven 機能を持つ新しいワークスペースすべてに適用される Maven 設定が自動的にマウントされます。
環境変数: 自動認証に SSH キーペアと AWS 認証トークンを使用します。
注記SSH キーペアはファイルとしてマウントすることもできますが、この形式は主に Maven 設定の設定を目的としています。
マウントプロセスは標準の OpenShift マウントメカニズムを使用しますが、必要な CodeReady Workspaces ワークスペースコンテナーでシークレットを適切にバインドするために追加のアノテーションおよびラベル付けが必要になります。
3.9.1. シークレットをファイルとしてワークスペースコンテナーにマウント リンクのコピーリンクがクリップボードにコピーされました!
ファイルとしてマウントされたシークレットが v1.13 より古い OpenShift では、devfile で定義されたボリュームマウントが上書きされます。
本セクションでは、CodeReady Workspaces のシングルワークスペースまたは複数ワークスペースコンテナーで、ユーザーのプロジェクトからシークレットをファイルとしてマウントする方法を説明します。
前提条件
- Red Hat CodeReady Workspaces の稼働中のインスタンス。Red Hat CodeReady Workspaces のインスタンスをインストールするには、「 Installing CodeReady Workspaces on OpenShift Container Platform 」を参照してください。
手順
CodeReady Workspaces ワークスペースが作成される OpenShift プロジェクトで、新しい OpenShift シークレットを作成します。
-
作成するシークレットのラベルは、CodeReady Workspaces の
che.workspace.provision.secret.labelsプロパティーで設定されたラベルのセットと一致する必要があります。デフォルトのラベルは以下のとおりです。 -
app.kubernetes.io/part-of: che.eclipse.org app.kubernetes.io/component: workspace-secret:注記以下の例は、Red Hat CodeReady Workspaces バージョン 2.1 および 2.2 での
target-containerアノテーションの使用における違いを説明します。たとえば、以下のようになります。
apiVersion: v1 kind: Secret metadata: name: mvn-settings-secret labels: app.kubernetes.io/part-of: che.eclipse.org app.kubernetes.io/component: workspace-secret ...アノテーションは、指定のシークレットがファイルとしてマウントされ、マウントパスを提供することを示し、必要に応じてシークレットがマウントされるコンテナーの名前を指定する必要があります。target-container アノテーションがない場合、シークレットは CodeReady Workspaces ワークスペースのすべてのユーザーコンテナーにマウントされますが、これは CodeReady Workspaces バージョン 2.1 にのみ適用さ れます。
apiVersion: v1 kind: Secret metadata: name: mvn-settings-secret annotations: che.eclipse.org/target-container: maven che.eclipse.org/mount-path: /home/user/.m2/ che.eclipse.org/mount-as: file labels: ...CodeReady Workspaces バージョン 2.2 以降、
target-containerアノテーションは非推奨となり、ブール値でautomount-workspace-secretアノテーションが導入されました。この目的は、devfile でオーバーライドする機能を使用して、デフォルトのシークレットマウント動作を定義することです。trueを指定すると、すべてのワークスペースコンテナーへの自動マウントが有効になります。一方、falseの値は、automountWorkspaceSecrets:trueプロパティーを使用して devfile コンポーネントで明示的に要求されるまでマウントプロセスを無効にします。apiVersion: v1 kind: Secret metadata: name: mvn-settings-secret annotations: che.eclipse.org/automount-workspace-secret: true che.eclipse.org/mount-path: /home/user/.m2/ che.eclipse.org/mount-as: file labels: ...Kubernetes シークレットのデータには、コンテナーにマウントされる必要なファイル名に一致する複数の項目が含まれる場合があります。
apiVersion: v1 kind: Secret metadata: name: mvn-settings-secret labels: app.kubernetes.io/part-of: che.eclipse.org app.kubernetes.io/component: workspace-secret annotations: che.eclipse.org/automount-workspace-secret: true che.eclipse.org/mount-path: /home/user/.m2/ che.eclipse.org/mount-as: file data: settings.xml: <base64 encoded data content here>これにより、
settings.xmlという名前のファイルが、すべてのワークスペースコンテナーの/home/user/.m2/パスにマウントされます。secret-s マウントパスは、devfile を使用してワークスペースの特定コンポーネントで上書きできます。マウントパスを変更するには、追加のボリュームを devfile のコンポーネントで宣言し、名前がオーバーライドされたシークレット名と必要なマウントパスで宣言する必要があります。
apiVersion: 1.0.0 metadata: ... components: - type: dockerimage alias: maven image: maven:3.11 volumes: - name: <secret-name> containerPath: /my/new/path ...このようなオーバーライドでは、コンポーネントはエイリアスを宣言して、それらのコンテナーに属するコンテナーを区別し、それらのコンテナー専用にオーバーライドパスを適用することができることに注意してください。
-
作成するシークレットのラベルは、CodeReady Workspaces の