3.9.2. シークレットを環境変数としてワークスペースコンテナーにマウント
以下のセクションでは、ユーザーのプロジェクトから環境変数または変数として CodeReady Workspaces の単一ワークスペースまたは複数ワークスペースコンテナーに OpenShift シークレットをマウントする方法を説明します。
前提条件
- Red Hat CodeReady Workspaces の稼働中のインスタンス。Red Hat CodeReady Workspaces のインスタンスをインストールするには、「 Installing CodeReady Workspaces on OpenShift Container Platform 」を参照してください。
手順
CodeReady Workspaces ワークスペースが作成される k8s プロジェクトで新しい OpenShift シークレットを作成します。
-
作成するシークレットのラベルは、CodeReady Workspaces の
che.workspace.provision.secret.labelsプロパティーで設定されたラベルのセットと一致する必要があります。デフォルトでは、これは 2 つのラベルのセットです。 -
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/env-name: FOO_ENV che.eclipse.org/mount-as: env labels: ... data: mykey: myvalueこれにより、
FOO_ENVという名前の環境変数と、値 myvalue がmavenという名前のコンテナーにプロビジョニングされます。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/env-name: FOO_ENV che.eclipse.org/mount-as: env labels: ... data: mykey: myvalueこれにより、
FOO_ENVという名前の環境変数と、すべてのワークスペースコンテナーに myvalueがプロビジョニングされる値が作成されます。シークレットが複数のデータアイテムを提供する場合は、以下のように各データキーに環境変数名を指定する必要があります。
apiVersion: v1 kind: Secret metadata: name: mvn-settings-secret annotations: che.eclipse.org/automount-workspace-secret: true che.eclipse.org/mount-as: env che.eclipse.org/mykey_env-name: FOO_ENV che.eclipse.org/otherkey_env-name: OTHER_ENV labels: ... data: mykey: myvalue otherkey: othervalueこれにより、
FOO_ENV、、および値 myvalue およびその他の値を持つ 2 つの環境変数がOTHER_ENV、すべてのワークプシーコンテナーにプロビジョニングされます。注記Kubernetes シークレットのアノテーション名の最大長は 63 文字です。ここでは、9 文字は
/で終わる接頭辞に予約されます。これは、シークレットに使用できるキーの最大長の制限として機能します。
-
作成するシークレットのラベルは、CodeReady Workspaces の