3.3. サーバーコンポーネントの設定

3.3.1. シークレットまたは ConfigMap をファイルまたは環境変数として OpenShift Dev Spaces コンテナーにマウントする

シークレットは、以下のような機密データを格納する OpenShift オブジェクトです。

  • ユーザー名
  • パスワード
  • 認証トークン

(暗号化された形式)。

ユーザーは、機密データまたは OpenShift Dev Spaces で管理されるコンテナーの設定が含まれる ConfigMap を以下のようにマウントできます。

  • ファイル
  • 環境変数

マウントプロセスでは、標準の OpenShift マウントメカニズムを使用しますが、追加のアノテーションとラベル付けが必要です。

3.3.1.1. シークレットまたは ConfigMap を OpenShift Dev Spaces コンテナーにファイルとしてマウントする

前提条件

  • Red Hat OpenShift Dev Spaces の実行中のインスタンス

手順

  1. OpenShift Dev Spaces がデプロイされている OpenShift プロジェクトに新しい OpenShift シークレットまたは ConfigMap を作成します。作成される予定のオブジェクトのラベルは、ラベルのセットと一致する必要があります。

    • app.kubernetes.io/part-of: che.eclipse.org
    • app.kubernetes.io/component: <DEPLOYMENT_NAME>-<OBJECT_KIND>
    • <DEPLOYMENT_NAME> には、以下のデプロイメントのいずれかを使用します。

      • postgres
      • keycloak
      • devfile-registry
      • plugin-registry
      • devspaces

        および

    • <jasper_KIND> は以下のいずれかになります。

      • secret

        または

      • configmap

例3.4 以下に例を示します。

apiVersion: v1
kind: Secret
metadata:
  name: custom-settings
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: devspaces-secret
...

または

apiVersion: v1
kind: ConfigMap
metadata:
  name: custom-settings
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: devspaces-configmap
...

アノテーションは、指定されるオブジェクトがファイルとしてマウントされていることを示す必要があります。

  1. アノテーション値を設定します。

    • che.eclipse.org/mount-as: file - オブジェクトをファイルとしてマウントするように指定します。
    • che.eclipse.org/mount-path: <TARGET_PATH> - 必要なマウントパスを指定します。

例3.5 以下に例を示します。

apiVersion: v1
kind: Secret
metadata:
  name: custom-data
  annotations:
    che.eclipse.org/mount-as: file
    che.eclipse.org/mount-path: /data
  labels:
...

または

apiVersion: v1
kind: ConfigMap
metadata:
  name: custom-data
  annotations:
    che.eclipse.org/mount-as: file
    che.eclipse.org/mount-path: /data
  labels:
...

OpenShift オブジェクトには複数の項目が含まれる可能性があり、その名前はコンテナーにマウントされる必要なファイル名と一致する必要があります。

例3.6 以下に例を示します。

apiVersion: v1
kind: Secret
metadata:
  name: custom-data
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: devspaces-secret
  annotations:
    che.eclipse.org/mount-as: file
    che.eclipse.org/mount-path: /data
data:
  ca.crt: <base64 encoded data content here>

または

apiVersion: v1
kind: ConfigMap
metadata:
  name: custom-data
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: devspaces-configmap
  annotations:
    che.eclipse.org/mount-as: file
    che.eclipse.org/mount-path: /data
data:
  ca.crt: <data content here>

これにより、ca.crt という名前のファイルが OpenShift Dev Spaces コンテナーの /data パスにマウントされます。

重要

OpenShift Dev Spaces コンテナーに変更を加えるには、オブジェクトを完全に再作成します。

3.3.1.2. シークレットまたは ConfigMap を環境変数として OpenShift Dev Spaces コンテナーにマウントする

前提条件

  • Red Hat OpenShift Dev Spaces の実行中のインスタンス

手順

  1. OpenShift Dev Spaces がデプロイされている OpenShift プロジェクトに新しい OpenShift シークレットまたは ConfigMap を作成します。作成される予定のオブジェクトのラベルは、ラベルのセットと一致する必要があります。

    • app.kubernetes.io/part-of: che.eclipse.org
    • app.kubernetes.io/component: <DEPLOYMENT_NAME>-<OBJECT_KIND>
    • <DEPLOYMENT_NAME> には、以下のデプロイメントのいずれかを使用します。

      • postgres
      • keycloak
      • devfile-registry
      • plugin-registry
      • devspaces

        および

    • <jasper_KIND> は以下のいずれかになります。

      • secret

        または

      • configmap

例3.7 以下に例を示します。

apiVersion: v1
kind: Secret
metadata:
  name: custom-settings
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: devspaces-secret
...

または

apiVersion: v1
kind: ConfigMap
metadata:
  name: custom-settings
  labels:
    app.kubernetes.io/part-of: che.eclipse.org
    app.kubernetes.io/component: devspaces-configmap
...

アノテーションは、指定されるオブジェクトが環境変数としてマウントされていることを示す必要があります。

  1. アノテーション値を設定します。

    • che.eclipse.org/mount-as: env -: オブジェクトを環境変数としてマウントするように指定します。
    • che.eclipse.org/env-name: <FOOO_ENV>: オブジェクトキー値のマウントに必要な環境変数名を指定します。

例3.8 以下に例を示します。

apiVersion: v1
kind: Secret
metadata:
  name: custom-settings
  annotations:
    che.eclipse.org/env-name: FOO_ENV
    che.eclipse.org/mount-as: env
  labels:
   ...
data:
  mykey: myvalue

または

apiVersion: v1
kind: ConfigMap
metadata:
  name: custom-settings
  annotations:
    che.eclipse.org/env-name: FOO_ENV
    che.eclipse.org/mount-as: env
  labels:
   ...
data:
  mykey: myvalue

これにより、2 つの環境変数が

  • FOO_ENV
  • myvalue

OpenShift Dev Spaces コンテナーにプロビジョニングされている。

オブジェクトに複数のデータ項目がある場合、環境変数の名前は以下のようにそれぞれのデータキーについて指定される必要があります。

例3.9 以下に例を示します。

apiVersion: v1
kind: Secret
metadata:
  name: custom-settings
  annotations:
    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: __<base64 encoded data content here>__
  otherkey: __<base64 encoded data content here>__

または

apiVersion: v1
kind: ConfigMap
metadata:
  name: custom-settings
  annotations:
    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: __<data content here>__
  otherkey: __<data content here>__

これにより、2 つの環境変数が

  • FOO_ENV
  • OTHER_ENV

OpenShift Dev Spaces コンテナーにプロビジョニングされている。

注記

OpenShift シークレットのアノテーション名の最大長さは 63 文字です。ここで、9 文字は、/ で終わるプレフィックス用に予約されます。これは、オブジェクトに使用できるキーの最大長さの制限として機能します。

重要

OpenShift Dev Spaces コンテナーに変更を加えるには、オブジェクトを完全に再作成します。