3.4. ワークスペースのグローバル設定
このセクションでは、管理者がワークスペースをグローバルに設定する方法について説明します。
3.4.1. ユーザーが保持できるワークスペースの数を制限する
デフォルトでは、ユーザーはダッシュボードに無制限の数のワークスペースを保持できますが、この数を制限してクラスターの需要を減らすことができます。
この設定は、CheCluster
カスタムリソースの一部です。
spec: components: cheServer: extraProperties: CHE_LIMITS_USER_WORKSPACES_COUNT: "<kept_workspaces_limit>" 1
- 1
- ユーザーごとのワークスペースの最大数を設定します。デフォルト値
-1
では、ユーザーは無制限の数のワークスペースを保持できます。ユーザーごとのワークスペースの最大数を設定するには、正の整数を使用します。
手順
OpenShift Dev Spaces namespace の名前を取得します。デフォルトは
openshift-devspaces
です。$ oc get checluster --all-namespaces \ -o=jsonpath="{.items[*].metadata.namespace}"
CHE_LIMITS_USER_WORKSPACES_COUNT
を設定します。$ oc patch checluster/devspaces -n openshift-devspaces \1 --type='merge' -p \ '{"spec":{"components":{"cheServer":{"extraProperties":{"CHE_LIMITS_USER_WORKSPACES_COUNT": "<kept_workspaces_limit>"}}}}}' 2
3.4.2. ユーザーが複数のワークスペースを同時に実行できるようにする
デフォルトでは、ユーザーは一度に 1 つのワークスペースしか実行できません。ユーザーが複数のワークスペースを同時に実行できるようにすることができます。
デフォルトのストレージ方法を使用している際、マルチノードクラスター内のノード全体に Pod が分散されている場合は、ワークスペースを同時に実行すると問題が発生する可能性があります。ユーザーごとの common
ストレージストラテジーから per-workspace
ストレージストラテジーに切り替えるか、ephemeral
ストレージタイプを使用すると、これらの問題を回避または解決できます。
この設定は、CheCluster
カスタムリソースの一部です。
spec: components: devWorkspace: runningLimit: "<running_workspaces_limit>" 1
- 1
- ユーザーごとに同時に実行されるワークスペースの最大数を設定します。デフォルト値は
1
です。
手順
OpenShift Dev Spaces namespace の名前を取得します。デフォルトは
openshift-devspaces
です。$ oc get checluster --all-namespaces \ -o=jsonpath="{.items[*].metadata.namespace}"
runningLimit
を設定します。$ oc patch checluster/devspaces -n openshift-devspaces \1 --type='merge' -p \ '{"spec":{"components":{"devWorkspace":{"runningLimit": "<running_workspaces_limit>"}}}}' 2
3.4.3. 自己署名証明書を使用した Git
自己署名証明書を使用する Git プロバイダーでの操作をサポートするように OpenShift Dev Spaces を設定できます。
前提条件
-
OpenShift クラスターへの管理権限を持つアクティブな
oc
セッション。Getting started with the OpenShift CLI を参照してください。 - Git バージョン 2 以降
手順
Git サーバーの詳細情報を使用して新規の configMap を作成します。
$ oc create configmap che-git-self-signed-cert \ --from-file=ca.crt=<path_to_certificate> \ 1 --from-literal=githost=<host:port> -n openshift-devspaces 2
注記-
githost
を指定しないと、指定された証明書がすべての HTTPS リポジトリーに使用されます。 -
証明書ファイルは、通常、以下のような Base64 ASCII ファイルとして保存されます。
.pem
,.crt
,.ca-bundle
.また、これらはバイナリーデータとしてエンコードすることもできます (例:.cer
)。証明書ファイルを保持するすべてのSecrets
は、バイナリーデータ証明書ではなく、Base64 ASCII 証明書を使用する必要があります。
-
必要なラベルを ConfigMap に追加します。
$ oc label configmap che-git-self-signed-cert \ app.kubernetes.io/part-of=che.eclipse.org -n openshift-devspaces
Git リポジトリーに自己署名証明書を使用するように OpenShift Dev Spaces オペランドを設定します。「CLI を使用して CheCluster カスタムリソースの設定」を参照してください。
spec: devEnvironments: trustedCerts: gitTrustedCertsConfigMapName: che-git-self-signed-cert
検証手順
新規ワークスペースを作成および開始します。ワークスペースによって使用されるすべてのコンテナーは、自己署名証明書のあるファイルを含む特殊なボリュームをマウントします。コンテナーの
/etc/gitconfig
ファイルには、Git サーバーホスト (その URL) とhttp
セクションの証明書へのパスについての情報が含まれます (git-config に関する Git ドキュメントを参照してください)。例3.11
/etc/gitconfig
ファイルの内容[http "https://10.33.177.118:3000"] sslCAInfo = /etc/config/che-git-tls-creds/certificate
3.4.4. ワークスペース nodeSelector の設定
このセクションでは、OpenShift Dev Spaces ワークスペースの Pod に nodeSelector
を設定する方法を説明します。
手順
OpenShift Dev Spaces は、CHE_WORKSPACE_POD_NODE__SELECTOR
環境変数を使用して nodeSelector
を設定します。この変数には、nodeSelector ルールを形成するためにコンマ区切りの key=value
ペアのセットが含まれるか、またはこれを無効にする NULL
が含まれる場合があります。
CHE_WORKSPACE_POD_NODE__SELECTOR=disktype=ssd,cpu=xlarge,[key=value]
nodeSelector
は、OpenShift Dev Spaces のインストール時に設定する必要があります。これにより、既存のワークスペース PVC および Pod が異なるゾーンにスケジュールされることによってボリュームのアフィニティーの競合が生じ、既存のワークスペースが実行できなくなることを防ぐことができます。
大規模なマルチゾーンクラスターの異なるゾーンに Pod および PVC がスケジュールされないようにするには、PVC の作成プロセスを調整する追加の StorageClass
オブジェクトを作成します (allowedTopologies
フィールドに注目してください)。
新規に作成された StorageClass
の名前を、CHE_INFRA_KUBERNETES_PVC_STORAGE__CLASS__NAME
環境変数で OpenShift Dev Spaces に指定します。この変数のデフォルトの空の値の場合、OpenShift Dev Spaces に対し、クラスターのデフォルト StorageClass
を使用するように指示します。
3.4.5. VSX レジストリー URL を開く
拡張機能を検索してインストールするために、Visual Studio Code エディターは組み込みの Open VSX レジストリーインスタンスを使用します。組み込みのレジストリーインスタンスではなく、別の Open VSX レジストリーインスタンスを使用するように OpenShift Dev Spaces を設定することもできます。
手順
CheCluster カスタムリソースの
spec.components.pluginRegistry.openVSXURL
フィールドに Open VSX レジストリーインスタンスの URL を設定します。spec: components: # [...] pluginRegistry: openVSXRegistryURL: <your_open_vsx_registy> # [...]