4.2. プロジェクトの設定
OpenShift Dev Spaces は、ユーザーごとに、プロジェクト内のワークスペースを分離します。OpenShift Dev Spaces は、ラベルとアノテーションの存在によってユーザープロジェクトを識別します。ワークスペースを起動する際に必要なプロジェクトが存在しない場合、OpenShift Dev Spaces はテンプレート名を使用してプロジェクトを作成します。
OpenShift Dev Spaces の動作は、次の方法で変更できます。
4.2.1. プロジェクト名の設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Dev Spaces がワークスペース起動時に必要なプロジェクトを作成するために使用するプロジェクト名テンプレートを設定できます。
有効なプロジェクト名テンプレートは、次の規則に従います。
-
<username>または<userid>プレースホルダーは必須です。 -
ユーザー名と ID に無効な文字を含めることはできません。ユーザー名または ID のフォーマットが OpenShift オブジェクトの命名規則と互換性がない場合、OpenShift Dev Spaces は、互換性のない文字を
-記号に置き換えてユーザー名や ID を有効な名前に変更します。 -
OpenShift Dev Spaces は、
<userid>プレースホルダーを 14 文字の文字列と判断し、ID が衝突しないようにランダムな 6 文字の接尾辞を追加します。結果は、再利用のためにユーザー設定に保存されます。 - Kubernetes は、プロジェクト名の長さを 63 文字に制限しています。
- OpenShift は、長さをさらに 49 文字に制限しています。
手順
CheClusterカスタムリソースを設定します。「CLI を使用して CheCluster カスタムリソースの設定」 を参照してください。spec: components: devEnvironments: defaultNamespace: template: <workspace_namespace_template_>例4.3 ユーザーワークスペースプロジェクト名テンプレートの例
Expand ユーザーワークスペースプロジェクト名テンプレート 結果のプロジェクト例 <username>-devspaces(デフォルト)user1-devspaces
<userid>-namespacecge1egvsb2nhba-namespace-ul1411<userid>-aka-<username>-namespacecgezegvsb2nhba-aka-user1-namespace-6m2w2b
4.2.2. プロジェクトの事前プロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
自動プロビジョニングに依存するのではなく、ワークスペースプロジェクトを事前にプロビジョニングできます。ユーザーごとに手順を繰り返します。
手順
CheClusterレベルでの自動 namespace プロビジョニングを無効にします。devEnvironments: defaultNamespace: autoProvision: false次のラベルとアノテーションを使用して、<username> ユーザーの <project_name> プロジェクトを作成します。
kind: Namespace apiVersion: v1 metadata: name: <project_name>1 labels: app.kubernetes.io/part-of: che.eclipse.org app.kubernetes.io/component: workspaces-namespace annotations: che.eclipse.org/username: <username>- 1
- 選択したプロジェクト名を使用します。
4.2.3. ユーザー namespace の設定 リンクのコピーリンクがクリップボードにコピーされました!
この手順では、OpenShift Dev Spaces を使用して ConfigMaps、Secrets、PersistentVolumeClaim、およびその他の Kubernetes オブジェクトを openshift-devspaces namespace から多数のユーザー固有の namespace にレプリケートするプロセスを説明します。OpenShift Dev Spaces は、共有認証情報、設定ファイル、証明書などの重要な設定データのユーザー namespace への同期を自動化します。
openshift-devspaces namespace の Kubernetes リソースに変更を加えると、OpenShift Dev Spaces はすべてのユーザー namespace にわたって変更を直ちに複製します。逆に、Kubernetes リソースがユーザー namespace で変更されると、OpenShift Dev Spaces は変更を直ちに元に戻します。
手順
以下の
ConfigMapを作成して、すべてのユーザープロジェクトに複製します。設定可能性を高めるために、追加のラベルとアノテーションを追加してConfigMapをカスタマイズできます。デフォルトでは、ConfigMap はユーザーワークスペースに自動的にマウントされます。ConfigMap をマウントしない場合は、次のラベルを明示的に追加して動作をオーバーライドします。controller.devfile.io/watch-configmap: "false" controller.devfile.io/mount-to-devworkspace: "false"その他の可能なラベルとアノテーションは、ボリューム、configmap、シークレットの自動マウント を参照してください。
例4.4 ConfigMap をすべてのユーザープロジェクトに複製する
kind: ConfigMap apiVersion: v1 metadata: name: devspaces-user-configmap namespace: openshift-devspaces labels: app.kubernetes.io/part-of: che.eclipse.org app.kubernetes.io/component: workspaces-config controller.devfile.io/watch-configmap: "false" controller.devfile.io/mount-to-devworkspace: "false" data: ...例4.5 ConfigMap をすべてのユーザープロジェクトに複製し、パス
/home/user/.m2によってすべてのユーザーコンテナーにsettings.xmlファイルを自動的にマウントするkind: ConfigMap apiVersion: v1 metadata: name: devspaces-user-configmap namespace: openshift-devspaces labels: app.kubernetes.io/part-of: che.eclipse.org app.kubernetes.io/component: workspaces-config annotations: controller.devfile.io/mount-as: subpath controller.devfile.io/mount-path: /home/user/.m2 data: settings.xml: | <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>/home/user/.m2/repository</localRepository> <interactiveMode>true</interactiveMode> <offline>false</offline> </settings>以下の
Secretを作成し、すべてのユーザープロジェクトに複製します。設定可能性を高めるために、追加のラベルとアノテーションを追加してSecretをカスタマイズできます。デフォルトでは、Secret はユーザーのワークスペースに自動的にマウントされます。Secret をマウントしない場合は、次のラベルを明示的に追加して動作をオーバーライドします。controller.devfile.io/watch-secret: "false" controller.devfile.io/mount-to-devworkspace: "false"その他の可能なラベルとアノテーションは、ボリューム、configmap、シークレットの自動マウント を参照してください。
例4.6 すべてのユーザープロジェクトに Secret を複製する
kind: Secret apiVersion: v1 metadata: name: devspaces-user-secret namespace: openshift-devspaces labels: app.kubernetes.io/part-of: che.eclipse.org app.kubernetes.io/component: workspaces-config controller.devfile.io/watch-secret: "false" controller.devfile.io/mount-to-devworkspace: "false" annotations: controller.devfile.io/mount-as: env stringData: ...例4.7 Secret をすべてのユーザープロジェクトに複製し、パス
/etc/pki/ca-trust/source/anchorsによってすべてのユーザーコンテナーにtrusted-certificates.crtファイルを自動的にマウントするkind: Secret apiVersion: v1 metadata: name: devspaces-user-secret namespace: openshift-devspaces labels: app.kubernetes.io/part-of: che.eclipse.org app.kubernetes.io/component: workspaces-config annotations: controller.devfile.io/mount-as: subpath controller.devfile.io/mount-path: /etc/pki/ca-trust/source/anchors stringData: trusted-certificates.crt: | ...注記ワークスペースの起動時に
update-ca-trustコマンドを実行して証明書をインポートします。これは手動で実行することも、devfile のpostStartイベントにこのコマンドを追加することで実行することもできます。devfile でのイベントバインディングの追加 を参照してください。例4.8 Secret をすべてのユーザープロジェクトに複製し、すべてのユーザーコンテナーに環境変数として自動的にマウントする
kind: Secret apiVersion: v1 metadata: name: devspaces-user-secret namespace: openshift-devspaces labels: app.kubernetes.io/part-of: che.eclipse.org app.kubernetes.io/component: workspaces-config annotations: controller.devfile.io/mount-as: env stringData: ENV_VAR_1: value_1 ENV_VAR_2: value_2以下の
PersistentVolumeClaimを作成して、それをすべてのユーザープロジェクトに複製します。設定可能性を高めるために、追加のラベルとアノテーションを追加して
PersistentVolumeClaimをカスタマイズできます。その他の可能なラベルとアノテーションは、ボリューム、configmap、シークレットの自動マウント を参照してください。PersistentVolumeClaimを変更するには、一度削除し、openshift-devspaces namespace に新しいものを作成します。apiVersion: v1 kind: PersistentVolumeClaim metadata: name: devspaces-user-pvc namespace: openshift-devspaces labels: app.kubernetes.io/part-of: che.eclipse.org app.kubernetes.io/component: workspaces-config spec: ...例4.9
PersistentVolumeClaimをユーザーワークスペースにマウントするapiVersion: v1 kind: PersistentVolumeClaim metadata: name: devspaces-user-pvc namespace: openshift-devspaces labels: app.kubernetes.io/part-of: che.eclipse.org app.kubernetes.io/component: workspaces-config controller.devfile.io/mount-to-devworkspace: 'true' annotations: controller.devfile.io/mount-path: /home/user/data controller.devfile.io/read-only: 'true' spec: accessModes: - ReadWriteOnce resources: requests: storage: 5Gi volumeMode: FilesystemOpenShift Kubernetes Engine を活用するために、
Templateオブジェクトを作成して、テンプレート内で定義したすべてのリソースを各ユーザープロジェクトに複製できます。Templateオブジェクトには、前述のConfigMap、Secret、PersistentVolumeClaimの他に、次のものを含めることができます。-
LimitRange -
NetworkPolicy -
ResourceQuota -
Role RoleBindingapiVersion: template.openshift.io/v1 kind: Template metadata: name: devspaces-user-namespace-configurator namespace: openshift-devspaces labels: app.kubernetes.io/part-of: che.eclipse.org app.kubernetes.io/component: workspaces-config objects: ... parameters: - name: PROJECT_NAME - name: PROJECT_ADMIN_USERparametersはオプションであり、使用可能なパラメーターを定義します。現時点では、PROJECT_NAMEおよびPROJECT_ADMIN_USERのみがサポートされています。PROJECT_NAMEは OpenShift Dev Spaces namespace の名前で、PROJECT_ADMIN_USERは namespace の OpenShift Dev Spaces ユーザーです。オブジェクトの namespace 名は、同期中にユーザーの namespace 名に置き換えられます。
例4.10 Kubernetes リソースをユーザープロジェクトに複製する
apiVersion: template.openshift.io/v1 kind: Template metadata: name: devspaces-user-namespace-configurator namespace: openshift-devspaces labels: app.kubernetes.io/part-of: che.eclipse.org app.kubernetes.io/component: workspaces-config objects: - apiVersion: v1 kind: ResourceQuota metadata: name: devspaces-user-resource-quota spec: ... - apiVersion: v1 kind: LimitRange metadata: name: devspaces-user-resource-constraint spec: ... - apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: devspaces-user-roles rules: ... - apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: devspaces-user-rolebinding roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: devspaces-user-roles subjects: - kind: User apiGroup: rbac.authorization.k8s.io name: ${PROJECT_ADMIN_USER} parameters: - name: PROJECT_ADMIN_USER注記Template Kubernetes リソースの作成は、OpenShift でのみサポートされます。
-
関連情報
- https://access.redhat.com/documentation/ja-jp/red_hat_openshift_dev_spaces/3.21/html-single/user_guide/index#end-user-guide:mounting-configmaps
- https://access.redhat.com/documentation/ja-jp/red_hat_openshift_dev_spaces/3.21/html-single/user_guide/index#end-user-guide:mounting-secrets
- https://access.redhat.com/documentation/ja-jp/red_hat_openshift_dev_spaces/3.21/html-single/user_guide/index#end-user-guide:requesting-persistent-storage-for-workspaces
- ボリューム、configmaps、シークレットの自動マウント
-
Templateの OpenShift API リファレンス - OpenShift プロジェクト作成の設定