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 ユーザーワークスペースプロジェクト名テンプレートの例

    ユーザーワークスペースプロジェクト名テンプレート結果のプロジェクト例

    <username>-devspaces (デフォルト)

    user1-devspaces

    <userid>-namespace

    cge1egvsb2nhba-namespace-ul1411

    <userid>-aka-<username>-namespace

    cgezegvsb2nhba-aka-user1-namespace-6m2w2b

4.2.2. プロジェクトの事前プロビジョニング

自動プロビジョニングに依存するのではなく、ワークスペースプロジェクトを事前にプロビジョニングできます。ユーザーごとに手順を繰り返します。

手順

  1. CheCluster レベルでの自動 namespace プロビジョニングを無効にします。

    devEnvironments:
      defaultNamespace:
        autoProvision: false
  2. 次のラベルとアノテーションを使用して、<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 を使用して ConfigMapsSecretsPersistentVolumeClaim、およびその他の Kubernetes オブジェクトを openshift-devspaces namespace から多数のユーザー固有の namespace にレプリケートするプロセスを説明します。OpenShift Dev Spaces は、共有認証情報、設定ファイル、証明書などの重要な設定データのユーザー namespace への同期を自動化します。

openshift-devspaces namespace の Kubernetes リソースに変更を加えると、OpenShift Dev Spaces はすべてのユーザー namespace にわたって変更を直ちに複製します。逆に、Kubernetes リソースがユーザー namespace で変更されると、OpenShift Dev Spaces は変更を直ちに元に戻します。

手順

  1. 以下の ConfigMap を作成して、すべてのユーザー namespace に複製します。設定可能性を高めるために、追加のラベルとアノテーションを追加して ConfigMap をカスタマイズできます。その他の可能なラベルとアノテーションは、ボリューム、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
    data:
      ...

    例4.4 ユーザーワークスペースに 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>
  2. 以下の Secret を作成して、それをすべてのユーザー namespace に複製します。設定可能性を高めるために、追加のラベルとアノテーションを追加して Secret をカスタマイズできます。その他の可能なラベルとアノテーションは、ボリューム、configmap、シークレットの自動マウント を参照してください。

    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
    data:
      ...

    例4.5 ユーザーワークスペースに証明書をマウントする

    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.6 環境変数をユーザーワークスペースにマウントする

    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
  3. 以下の PersistentVolumeClaim を作成して、それをすべてのユーザー namespace に複製します。

    設定可能性を高めるために、追加のラベルとアノテーションを追加して 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.7 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: Filesystem
  4. OpenShift Kubernetes Engine を利用するには、Template オブジェクトを作成して、各ユーザー namespace 間でテンプレート内に定義されたすべてのリソースをレプリケートできます。

    前述の ConfigMapSecret、および PersistentVolumeClaim とは別に、Template オブジェクトには以下を含むことができます。

    • LimitRange
    • NetworkPolicy
    • ResourceQuota
    • Role
    • RoleBinding

      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:
        ...
      parameters:
      - name: PROJECT_NAME
      - name: PROJECT_ADMIN_USER

      parameters はオプションであり、使用可能なパラメーターを定義します。現時点では、PROJECT_NAME および PROJECT_ADMIN_USER のみがサポートされています。PROJECT_NAME は OpenShift Dev Spaces namespace の名前で、PROJECT_ADMIN_USER は namespace の OpenShift Dev Spaces ユーザーです。

      オブジェクトの namespace 名は、同期中にユーザーの namespace 名に置き換えられます。

      例4.8 Kubernetes リソースをユーザー namespace にレプリケートします。

      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 でのみサポートされます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.