vSphere 管理者は、スーパーバイザー名前空間の作成、名前空間に対する CPU、メモリ、ストレージの制限の設定、権限の割り当て、およびクラスタの名前空間サービスのテンプレートとしての有効化を行うことができます。したがって、DevOps エンジニアはセルフ サービス方式でスーパーバイザー名前空間を作成し、その中にワークロードをデプロイすることができます。

セルフサービス名前空間の作成と構成のワークフロー

vSphere 管理者は、スーパーバイザー名前空間の作成、名前空間に対する CPU、メモリ、ストレージの制限の設定、権限の割り当て、およびクラスタの名前空間サービスのテンプレートとしてのプロビジョニングと有効化を行うことができます。
図 1. セルフサービス名前空間テンプレートのプロビジョニングのワークフロー
""
DevOps エンジニアは、セルフ サービス方式でスーパーバイザー名前空間を作成し、その中にワークロードをデプロイすることができます。また、他の DevOps エンジニアと名前空間を共有したり、不要になった名前空間を削除したりできます。名前空間を他の DevOps エンジニアと共有するには、vSphere 管理者にお問い合わせください。
図 2. セルフサービス名前空間の作成のワークフロー
""

セルフサービス名前空間テンプレートの作成と構成

vSphere 管理者は、スーパーバイザー名前空間をセルフサービス名前空間テンプレートとして作成および構成することができます。DevOps エンジニアは、kubectl コマンド ラインを使用してスーパーバイザー名前空間を作成および削除できます。

前提条件

vSphere IaaS control plane でクラスタを設定します。

手順

  1. vSphere Client で、スーパーバイザー に移動します。
  2. [構成] タブをクリックし、[スーパーバイザー] の下で [全般] を選択します。
  3. [名前空間サービス] を選択します。
  4. [ステータス] スイッチを切り替えて、この機能を有効にします。
    [名前空間テンプレートの作成] 画面が表示されます。
  5. [構成] ペインで、名前空間のリソースを構成します。
    オプション 説明
    CPU 名前空間に予約する CPU リソースの量。
    メモリ 名前空間に予約するメモリの量。
    ストレージ 名前空間に予約するストレージ容量の合計。
    ストレージ ポリシー パーシステント ストレージを必要とするワークロードで使用するストレージ ポリシー。
    ネットワーク [ネットワーク] ドロップダウン メニューから、名前空間のネットワークを選択します。
    仮想マシン クラス スタンドアローン仮想マシンをデプロイするための仮想マシン クラス。
    コンテンツ ライブラリ 仮想マシンのデプロイに使用する仮想マシン イメージを含むコンテンツ ライブラリ。
  6. [次へ] をクリックします。
  7. [権限] ペインで DevOps エンジニアとグループを追加して、テンプレートを使用して名前空間を作成できるようにします。
    ID ソースとユーザーまたはグループを選択し、 [次へ] をクリックします。
  8. [確認] ペインに、構成するプロパティが表示されます。
    プロパティを確認して、 [完了] をクリックします。

結果

名前空間テンプレートが構成され、アクティブな状態になっています。vSphere 管理者としてテンプレートを編集できます。DevOps エンジニアは、テンプレートを使用して名前空間を作成できます。

セルフサービス名前空間の無効化

vSphere 管理者は、クラスタのセルフサービス名前空間を無効にできます。

セルフサービス名前空間テンプレートを無効にすると、DevOps エンジニアはテンプレートを使用してクラスタに新しい名前空間を作成できなくなります。自分が作成した名前空間を削除することはできます。

手順

  1. vSphere Client で、スーパーバイザー に移動します。
  2. [構成] タブをクリックし、[スーパーバイザー] の下で [全般] を選択します。
  3. [名前空間サービス] ペインで、[ステータス] スイッチを切り替えてテンプレートを無効にします。
  4. テンプレートを再度有効にするには、[ステータス] スイッチを切り替えます。
    別のセルフサービス名前空間を作成するか、既存の名前空間を使用することができます。

セルフサービス名前空間の作成

DevOps エンジニアはセルフサービス名前空間を作成し、その中でワークロードを実行することができます。名前空間を作成した後で、他の DevOps エンジニアと共有したり、不要になった場合に削除したりできます。

前提条件

  • vSphere 管理者がクラスタにセルフサービス名前空間テンプレートを作成し、有効にしたことを確認します。セルフサービス名前空間テンプレートの作成と構成を参照してください。
  • セルフサービス名前空間テンプレートの権限リストに、自分が個別に、またはグループのメンバーとして追加されていることを確認します。
  • スーパーバイザー 制御プレーンの IP アドレスを取得します。

手順

  1. kubectl 向けの vSphere プラグイン を使用して、スーパーバイザー での認証を行います。vCenter Single Sign-On ユーザーとしてスーパーバイザーに接続を参照してください。
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
  2. コンテキストを スーパーバイザー に切り替えます。
    kubectl config use-context SUPERVISOR-CLUSTER-IP
  3. クラスタにセルフサービス名前空間を作成します。
    kubectl create namespace NAMESPACE NAME
    kubectl create namespace test-ns
    注: vSphere IaaS control plane を有効にし、クラスタをアップグレードすると、DevOps エンジニアは所有者権限を使用できるようになります。クラスタではなく vCenter Server のみをアップグレードした場合、Devops エンジニアに付与されるのは名前空間に対する編集権限のみです。
    作成した名前空間がクラスタに表示されます。名前空間を他の DevOps エンジニアと共有するには、vSphere 管理者にお問い合わせください。

注釈とラベルを含むセルフサービス名前空間の作成

DevOps エンジニアは、kubectl コマンド ラインを使用して、注釈とラベルを含むセルフサービス名前空間を作成できます。

DevOps エンジニアは、ユーザー定義の注釈とラベルを含む YAML マニフェストを使用できます。

手順

  1. スーパーバイザー にログインします。
    kubectl vsphere login --server IP-ADDRESS-SUPERVISOR-CLUSTER --vsphere-username VCENTER-SSO-USERNAME
  2. 注釈とラベルを含む名前空間 YAML マニフェスト ファイルを作成します。
    kubectl create -f ns-create.yaml
    たとえば、次の ns-create.yaml ファイルを作成します。
    apiVersion: v1
    kind: Namespace
    metadata:
      name: test-ns-yaml
      labels:
        my-label: "my-label-val-yaml"
      annotations:
        my-ann-yaml: "my-ann-val-yaml"
  3. YAML マニフェストを適用します。
    kubectl create -f ns-create.yaml

    または

    kubectl apply -f ns-create.yaml
  4. 名前空間を指定した describe コマンドを実行し、変更を確認します。
    root@localhost [ /tmp ]# kubectl describe ns test-ns-yaml
    Name:         test-ns-yaml
    Labels:       my-label=my-label-val-yaml
                  vSphereClusterID=domain-c50
    Annotations:  my-ann-yaml: my-ann-val-yaml
                  vmware-system-namespace-owner-count: 1
                  vmware-system-resource-pool: resgroup-171
                  vmware-system-resource-pool-cpu-limit: 0.4770
                  vmware-system-resource-pool-memory-limit: 2000Mi
                  vmware-system-self-service-namespace: true
                  vmware-system-vm-folder: group-v172
    Status:       Active
     
    Resource Quotas
     Name:             test-ns-yaml
     Resource          Used  Hard
     --------          ---   ---
     requests.storage  0     5000Mi
     
     Name:                                                                           test-ns-yaml-storagequota
     Resource                                                                        Used  Hard
     --------                                                                        ---   ---
     namespace-service-storage-profile.storageclass.storage.k8s.io/requests.storage  0     9223372036854775807
     
    No LimitRange resource.

kubectl annotate および kubectl label を使用したセルフサービス名前空間の更新

DevOps エンジニアは、kubectl annotate コマンドと kubectl label コマンドを使用して、セルフサービス名前空間の注釈とラベルを更新または削除できます。

前提条件

更新する名前空間に対する所有者権限があることを確認します。

手順

  1. スーパーバイザー にログインします。
    kubectl vsphere login --server IP-ADDRESS-SUPERVISOR-CLUSTER --vsphere-username VCENTER-SSO-USERNAME
  2. 更新する名前空間を定義します。
    root@localhost [ /tmp ]# kubectl describe ns testns
    Name:         testns
    Labels:       my-label=test-label-2
                  vSphereClusterID=domain-c50
    Annotations:  my-ann: test-ann-2
                  vmware-system-namespace-owner-count: 2
                  vmware-system-resource-pool: resgroup-153
                  vmware-system-resource-pool-cpu-limit: 0.4770
                  vmware-system-resource-pool-memory-limit: 2000Mi
                  vmware-system-self-service-namespace: true
                  vmware-system-vm-folder: group-v154
    Status:       Active
     
     
    Resource Quotas
     Name:             testns
     Resource          Used  Hard
     --------          ---   ---
     requests.storage  0     5000Mi
     
     
     Name:                                                                           testns-storagequota
     Resource                                                                        Used  Hard
     --------                                                                        ---   ---
     namespace-service-storage-profile.storageclass.storage.k8s.io/requests.storage  0     9223372036854775807
  3. kubectl annotate コマンドを使用して注釈を更新します。
    たとえば、 kubectl annotate --overwrite ns testns my-ann="test-ann-3"
    注釈を削除するには、 kubectl annotate --overwrite ns testns my-ann- コマンドを実行します。
  4. kubectl label コマンドを使用してラベルを更新します。
    たとえば、 kubectl label --overwrite ns testns my-label="test-label-3"
    ラベルを削除するには、 kubectl label --overwrite ns testns my-label- コマンドを実行します。
  5. 更新を表示する名前空間を定義します。
    root@localhost [ /tmp ]# kubectl describe ns testns
    Name:         testns
    Labels:       my-label=test-label-3
                  vSphereClusterID=domain-c50
    Annotations:  my-ann: test-ann-3
                  vmware-system-namespace-owner-count: 2
                  vmware-system-resource-pool: resgroup-153
                  vmware-system-resource-pool-cpu-limit: 0.4770
                  vmware-system-resource-pool-memory-limit: 2000Mi
                  vmware-system-self-service-namespace: true
                  vmware-system-vm-folder: group-v154
    Status:       Active
     
     
    Resource Quotas
     Name:             testns
     Resource          Used  Hard
     --------          ---   ---
     requests.storage  0     5000Mi
     
     
     Name:                                                                           testns-storagequota
     Resource                                                                        Used  Hard
     --------                                                                        ---   ---
     namespace-service-storage-profile.storageclass.storage.k8s.io/requests.storage  0     9223372036854775807
     
     
    No LimitRange resource.

kubectl edit を使用したセルフサービス名前空間の更新

DevOps エンジニアは、kubectl edit コマンドを使用してセルフサービス名前空間を更新できます。

前提条件

更新する名前空間に対する所有者権限があることを確認します。

手順

  1. スーパーバイザー にログインします。
    kubectl vsphere login --server IP-ADDRESS-SUPERVISOR-CLUSTER --vsphere-username VCENTER-SSO-USERNAME
  2. 更新する名前空間を定義します。
    kubectl describe ns testns-1
    Name:         testns
    Labels:       vSphereClusterID=domain-c50
    Annotations:  my-ann: test-ann-2
                  vmware-system-namespace-owner-count: 2
                  vmware-system-resource-pool: resgroup-153
                  vmware-system-resource-pool-cpu-limit: 0.4770
                  vmware-system-resource-pool-memory-limit: 2000Mi
                  vmware-system-self-service-namespace: true
                  vmware-system-vm-folder: group-v154
    Status:       Active
     
     
    Resource Quotas
     Name:             testns-1
     Resource          Used  Hard
     --------          ---   ---
     requests.storage  0     5000Mi
     
     
     Name:                                                                           testns-1-storagequota
     Resource                                                                        Used  Hard
     --------                                                                        ---   ---
     namespace-service-storage-profile.storageclass.storage.k8s.io/requests.storage  0     9223372036854775807
  3. kubectl edit コマンドを使用して名前空間を編集します。
    たとえば、 kubectl edit ns testns-1
    kubectl edit コマンドを実行すると、KUBE_EDITOR または EDITOR の環境変数によって定義されたテキスト エディタ内に名前空間のマニフェストが開きます。
  4. ラベルを更新します。
    たとえば、 my-label=test-label
  5. 注釈を更新します。
    たとえば、 my-ann: test-ann
  6. 更新を表示する名前空間を定義します。
    root@localhost [ /tmp ]# kubectl describe ns testns-1
    Name:         testns-1
    Labels:       my-label=test-label
                  vSphereClusterID=domain-c50
    Annotations:  my-ann: test-ann
                  vmware-system-namespace-owner-count: 1
                  vmware-system-resource-pool: resgroup-173
                  vmware-system-resource-pool-cpu-limit: 0.4770
                  vmware-system-resource-pool-memory-limit: 2000Mi
                  vmware-system-self-service-namespace: true
                  vmware-system-vm-folder: group-v174
    Status:       Active
     
     
    Resource Quotas
     Name:             testns-1
     Resource          Used  Hard
     --------          ---   ---
     requests.storage  0     5000Mi
     
     
     Name:                                                                           testns-1-storagequota
     Resource                                                                        Used  Hard
     --------                                                                        ---   ---
     namespace-service-storage-profile.storageclass.storage.k8s.io/requests.storage  0     9223372036854775807
     
     
    No LimitRange resource.
    

セルフサービス名前空間の削除

DevOps エンジニアは、自分が作成したセルフサービス名前空間を削除できます。

前提条件

kubectl 向けの vSphere プラグイン を使用して、セルフサービス名前空間が作成されていることを確認します。

手順

  1. kubectl 向けの vSphere プラグイン を使用して、スーパーバイザー での認証を行います。vCenter Single Sign-On ユーザーとしてスーパーバイザーに接続を参照してください。
  2. クラスタからセルフサービス名前空間を削除します。
    kubectl delete namespace NAMESPACE NAME
    例:
    kubectl delete namespace test-ns