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_>
spec: components: devEnvironments: defaultNamespace: template: <workspace_namespace_template_>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例4.3 ユーザーワークスペースプロジェクト名テンプレートの例
Expand ユーザーワークスペースプロジェクト名テンプレート 結果のプロジェクト例 <username>-devspaces
(デフォルト)user1-devspaces
<userid>-namespace
cge1egvsb2nhba-namespace-ul1411
<userid>-aka-<username>-namespace
cgezegvsb2nhba-aka-user1-namespace-6m2w2b
4.2.2. プロジェクトの事前プロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
自動プロビジョニングに依存するのではなく、ワークスペースプロジェクトを事前にプロビジョニングできます。ユーザーごとに手順を繰り返します。
手順
CheCluster
レベルでの自動 namespace プロビジョニングを無効にします。devEnvironments: defaultNamespace: autoProvision: false
devEnvironments: defaultNamespace: autoProvision: false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のラベルとアノテーションを使用して、<username> ユーザーの <project_name> プロジェクトを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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"
controller.devfile.io/watch-configmap: "false" controller.devfile.io/mount-to-devworkspace: "false"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow その他の可能なラベルとアノテーションは、ボリューム、configmap、シークレットの自動マウント を参照してください。
例4.4 ConfigMap をすべてのユーザープロジェクトに複製する
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例4.5 ConfigMap をすべてのユーザープロジェクトに複製し、パス
/home/user/.m2
によってすべてのユーザーコンテナーにsettings.xml
ファイルを自動的にマウントするCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の
Secret
を作成し、すべてのユーザープロジェクトに複製します。設定可能性を高めるために、追加のラベルとアノテーションを追加してSecret
をカスタマイズできます。デフォルトでは、Secret はユーザーのワークスペースに自動的にマウントされます。Secret をマウントしない場合は、次のラベルを明示的に追加して動作をオーバーライドします。controller.devfile.io/watch-secret: "false" controller.devfile.io/mount-to-devworkspace: "false"
controller.devfile.io/watch-secret: "false" controller.devfile.io/mount-to-devworkspace: "false"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow その他の可能なラベルとアノテーションは、ボリューム、configmap、シークレットの自動マウント を参照してください。
例4.6 すべてのユーザープロジェクトに Secret を複製する
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例4.7 Secret をすべてのユーザープロジェクトに複製し、パス
/etc/pki/ca-trust/source/anchors
によってすべてのユーザーコンテナーにtrusted-certificates.crt
ファイルを自動的にマウントするCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ワークスペースの起動時に
update-ca-trust
コマンドを実行して証明書をインポートします。これは手動で実行することも、devfile のpostStart
イベントにこのコマンドを追加することで実行することもできます。devfile でのイベントバインディングの追加 を参照してください。例4.8 Secret をすべてのユーザープロジェクトに複製し、すべてのユーザーコンテナーに環境変数として自動的にマウントする
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の
PersistentVolumeClaim
を作成して、それをすべてのユーザープロジェクトに複製します。設定可能性を高めるために、追加のラベルとアノテーションを追加して
PersistentVolumeClaim
をカスタマイズできます。その他の可能なラベルとアノテーションは、ボリューム、configmap、シークレットの自動マウント を参照してください。PersistentVolumeClaim
を変更するには、一度削除し、openshift-devspaces namespace に新しいものを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例4.9
PersistentVolumeClaim
をユーザーワークスペースにマウントするCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Kubernetes Engine を活用するために、
Template
オブジェクトを作成して、テンプレート内で定義したすべてのリソースを各ユーザープロジェクトに複製できます。Template
オブジェクトには、前述のConfigMap
、Secret
、PersistentVolumeClaim
の他に、次のものを含めることができます。-
LimitRange
-
NetworkPolicy
-
ResourceQuota
-
Role
RoleBinding
Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameters
はオプションであり、使用可能なパラメーターを定義します。現時点では、PROJECT_NAME
およびPROJECT_ADMIN_USER
のみがサポートされています。PROJECT_NAME
は OpenShift Dev Spaces namespace の名前で、PROJECT_ADMIN_USER
は namespace の OpenShift Dev Spaces ユーザーです。オブジェクトの namespace 名は、同期中にユーザーの namespace 名に置き換えられます。
例4.10 Kubernetes リソースをユーザープロジェクトに複製する
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記Template Kubernetes リソースの作成は、OpenShift でのみサポートされます。
-
関連情報
- https://access.redhat.com/documentation/ja-jp/red_hat_openshift_dev_spaces/3.20/html-single/user_guide/index#end-user-guide:mounting-configmaps
- https://access.redhat.com/documentation/ja-jp/red_hat_openshift_dev_spaces/3.20/html-single/user_guide/index#end-user-guide:mounting-secrets
- https://access.redhat.com/documentation/ja-jp/red_hat_openshift_dev_spaces/3.20/html-single/user_guide/index#end-user-guide:requesting-persistent-storage-for-workspaces
- ボリューム、configmaps、シークレットの自動マウント
-
Template
の OpenShift API リファレンス - OpenShift プロジェクト作成の設定