管理者と開発者は、CCI Kubernetes API サーバが公開しているクラウド使用量インターフェイス (CCI) の API リソースに対してアクションを実行できます。

リソースの種類に応じて、管理者と開発者は API を使用して以下のアクションを実行できます。

リソース種別 管理者アクションの動詞 開発者アクションの動詞
CloudAccount get、list
Supervisor get、patch、list
Project create、get、update、patch、delete、list get、list
ProjectRole get、list get、list
ProjectRoleBinding create、get、update、patch、delete、list get、list
Region create、get、update、patch、delete、list get、list
RegionBinding create、get、update、patch、delete、list get、list
RegionBindingConfig create、get、update、patch、delete、list
SupervisorNamespaceClass create、get、update、patch、delete、list get、list
SupervisorNamespaceClassConfig create、get、update、patch、delete、list
SupervisorNamespaceClassBinding create、get、update、patch、delete、list get、list
SupervisorNamespace create、get、delete、list create、get、delete、list
次の例は、CLI の呼び出しと応答を示しています。CLI を使用するのに必要な条件は、次のとおりです。
  • CCI kubectl プラグインをダウンロードしている。
  • API トークンを取得している。
  • CCI サーバにログインしている。
コマンド ライン インターフェイスを使用して CCI タスクを実行するための準備を参照してください。

プロジェクトおよびユーザー

プロジェクト
管理者は、プロジェクトを作成してユーザーをグループ化し、 Automation Assembler 内のクラウド テンプレートなどのコンテンツ ソースや、 Automation Service Broker 内のカタログ アイテムへのアクセスを設定します。
Project には次のプロパティがあります。
  • metadata.name プロジェクト名。
  • spec.description(オプション)説明。
  • spec.sharedResources true の場合、プロジェクトのスーパーバイザー名前空間は、プロジェクト内の他のユーザーと共有されます。false の場合、プロジェクトでは名前空間へのアクセスが管理者または名前空間を作成したユーザーに限定されます。
プロジェクトを作成する例の入力。
apiVersion: project.cci.vmware.com/v1alpha1
kind: Project
metadata:
  name: demo-project
spec:
  description: This is a demo project
  sharedResources: true
プロジェクト ロール
プロジェクト ロールに使用できるのは admin、view、または edit で、プロジェクト内のユーザーに割り当てることができます。
プロジェクト ロール 説明
admin 名前空間の変更と削除を許可します。
view 名前空間に対する読み取り専用ロール。
edit 名前空間の変更を許可します。
プロジェクト ロールは読み取り専用で、プロジェクト ロールのバインドを作成する際、使用可能なロールを提供します。

プロジェクト ロールを読み取る例の入力。

apiVersion: authorization.cci.vmware.com/v1alpha1
kind: ProjectRole
metadata:
  name: admin
spec:
  description: project administrator
プロジェクト ロールのバインド
プロジェクト ロールのバインドは、プロジェクト内のロールのメンバーシップをユーザーまたはグループに割り当てるために使用されます。
ProjectRoleBinding には次のプロパティがあります。
  • metadata.name プロジェクト ロール バインドの名前。サブジェクト タイプ(ユーザーまたはグループ)とサブジェクト名を反映した特定の形式で指定する必要があります。
    cci:<user/group>:<subject domain>:<subject name>
  • metadata.namespace プロジェクト名を表します。
  • subjects ユーザーまたはグループを表します。指定できるのは 1 つだけです。
  • roleRef ロールを記述します。
プロジェクト ロール バインドを作成する例の入力。
apiVersion: authorization.cci.vmware.com/v1alpha1
kind: ProjectRoleBinding
metadata:
  # name must match the subject kind and name
  name: cci:user:vmware.com:hello
  namespace: demo-project
subjects:
  - kind: User  # User / Group
    name: [email protected]
roleRef:
  apiGroup: authorization.cci.vmware.com
  kind: ProjectRole
  name: admin # admin / edit / view

vCenter Server およびスーパーバイザー

このカテゴリは、インフラストラクチャとその機能に関するもので、管理者専用です。

クラウド アカウント
クラウド アカウントは、vSphere+ によって自動的に作成されるか、管理者が手動で作成して vCenter を登録し、データセンターをスーパーバイザーに対して有効にします。
クラウド アカウントを作成する例の出力。
Name:         cci-ui-volume-service
Namespace:    cci-config
Labels:       <none>
Annotations:  infrastructure.cci.vmware.com/data-collection-status: FINISHED
              infrastructure.cci.vmware.com/last-data-collection-timestamp: 2022-10-24T22:06:08.603Z
API Version:  infrastructure.cci.vmware.com/v1alpha1
Kind:         CloudAccount
Metadata:
  Creation Timestamp:  2022-10-17T12:18:28Z
  UID:                 2163e7cf-f698-3f1f-afca-f3daa8c730fa
Spec:
  Address:           127.193.29.114
  Cloud Proxy Name:  2d164fed-bbf3-47cc-8e6b-5226c5277ee4
Events:              <none>
スーパーバイザー
スーパーバイザーは、 vCenter データの収集が完了した後にシステムによって作成されます。管理者は、配置のための機能ラベルを使用してスーパーバイザーを更新して、リージョンに割り当てることができます。
  • metadata.labels 管理者は、スーパーバイザー機能を表すキー/値設定を使用してラベルを定義します。ラベルは、名前空間の作成時に、機能に基づいてスーパーバイザーをフィルタリングするために使用されます。
  • spec.regionNames 管理者は、スーパーバイザーをリージョンに割り当てることができるようにリージョン名を定義します。スーパーバイザーは 1 つのリージョンにのみ割り当てることができ、デフォルトではリージョンに割り当てられません。
スーパーバイザーを更新する例の出力。
Name:         bugbash-vc:domain-c8
Namespace:    cci-config
Labels:       environment=bug-bash-9
Annotations:  infrastructure.cci.vmware.com/cloud-account-id: 33a0b2d0-91c8-4629-b04a-65448494d54e
API Version:  infrastructure.cci.vmware.com/v1alpha1
Kind:         Supervisor
Metadata:
  Creation Timestamp:  2022-09-28T04:22:38Z
  UID:                 fbd10d08-bc56-4ec2-93f8-693a7a4b2003
Spec:
  Cloud Account Name:  bugbash-vc
  Display Name:        wcp-test-dc-cluster
  External Id:         domain-c8
  Region Names:
    us-demo1
Status:
  Power State:  On
Events:         <none>

トポロジ

リージョン
管理者は、1 つ以上のスーパーバイザーをグループ化するためのメカニズムとしてリージョンを作成します。リージョンは、地理やインフラストラクチャなどのさまざまなパラメータに基づいて作成でき、複数の vCenter Server のスーパーバイザーを含めることができます。
リージョンを作成する例の入力。
apiVersion: topology.cci.vmware.com/v1alpha1
kind: Region
metadata:
  name: us-west1
spec:
  description: The us-west1 region
リージョンのバインド
管理者はリージョンのバインドを作成して、リージョンをプロジェクトに関連付けます。

プロジェクトのユーザーがスーパーバイザー名前空間に作成するには、RegionBindingRegionBindingConfig の両方が必要です。

RegionBinding には次のプロパティがあります。
  • metadata.name リージョン名。既存のリージョンと一致する必要があります。
  • metadata.namespace プロジェクト名。
リージョンのバインドを作成する例の入力。
apiVersion: topology.cci.vmware.com/v1alpha1
kind: RegionBinding
metadata:
  name: us-west1
  namespace: demo-project
リージョンのバインド構成
スーパーバイザーを配置するロジックをプロジェクトのリージョンごとに制御するには、管理者が RegionBindingConfig を定義します。 RegionBindingConfig が定義されている場合、管理者はスーパーバイザー ラベルのキーと値のペアを使用して、特定のスーパーバイザーとプロジェクトの関連付けを細かく調整できます。たとえば、管理者は key: environment の指定を使用して、 value: testing でテストするために指定するスーパーバイザーを選択できます。
RegionBindingConfig には次のプロパティがあります。
  • metadata.name リージョン名。既存のリージョンと一致する必要があります。
  • metadata.namespace プロジェクト名。
  • spec.supervisorSelector は、名前空間の作成に使用できるプロジェクト内のスーパーバイザーを選択します。正しいスーパーバイザーを選択するために、matchExpressions でスーパーバイザー ラベル キー、一致演算子、一致の値を定義します。
    spec.supervisorSelector 式の一致では、次の演算子を使用します。
    • operator: In リージョン バインドは、キー/値がスーパーバイザー ラベルのキー/値と一致するかどうかをテストします。matchExpressions は配列ですが、現在、配列の入力値は 1 つに制限されています。
    • operator: NotIn リージョン バインドは、キー/値がスーパーバイザー ラベルのキー/値と一致しないかどうかをテストします。matchExpressions は配列ですが、現在、配列の入力値は 1 つに制限されています。
    • operator: Exists リージョン バインドは、ラベル キーを含むスーパーバイザーとの一致を検索します。値は使用されません。
    • operator: DoesNotExist リージョン バインドは、ラベル キーを含まないスーパーバイザーを検索します。値は使用されません。
リージョン バインド構成を作成する例の入力。
apiVersion: topology.cci.vmware.com/v1alpha1
kind: RegionBindingConfig
metadata:
  name: us-west1
  namespace: demo-project
spec:
  supervisorSelector:
    matchExpressions:
      - key: environment
        operator: In
        values:
          - testing
      - key: storage
        operator: Exists
      - key: storage
        operator: NotIn
        values:
          - encrypted

スーパーバイザー名前空間クラス

スーパーバイザー名前空間クラス
SupervisorNamespaceClass は、名前空間テンプレートと、名前空間の作成時に設定のカスタマイズに使用できるオプションのパラメータを定義します。
デフォルトのフィールドは、ユーザーが名前空間の作成時にパラメータ値を指定しない場合に使用されるパラメータ値を指定します。たとえば、 default: false の場合、 false がパラメータ値です。
注: ユーザーがパラメータ値を指定しなくても名前空間が作成されるようにするには、すべてのパラメータにデフォルト フィールドと値が必要です。
パラメータ タイプの定義:
パラメータ タイプ プロパティ
ブール値
  • default デフォルトのブール値。
  • enum 使用できるブール値のリスト。パラメータに使用できる値は、true または false のいずれか 1 つのみです。
整数
  • minimum 最小値。
  • maximum 最大値。
  • default デフォルト値。
  • enum 使用できる整数値のリスト。
文字列
  • minLength 最小文字数。
  • maxLength 最大文字数。
  • default ユーザーが指定しない場合のデフォルトの文字列値。
  • pattern 値を検証するための正規表現パターン。
  • enum 使用できる文字列値のリスト。
スーパーバイザー名前空間クラスを作成する例の入力。
apiVersion: infrastructure.cci.vmware.com/v1alpha1
kind: SupervisorNamespaceClass
metadata:
  name: gold-with-gpu
spec:
  description: Gold with GPU enabled supervisor namespace
  parameters:
    - name: environment
      type: String
      default: testing
      enum:
        - testing
        - staging
        - production  
    - name: fastStorageClass
      type: Boolean
      default: false
    - name: podCountLimit
      type: Integer
      minimum: 100
      maximum: 1000
      default: 500
スーパーバイザー名前空間クラス構成
スーパーバイザー名前空間クラスの実装を指定するために、管理者は名前空間の設定を使用して SupervisorNamespaceClassConfig を作成します。プロジェクトがスーパーバイザー名前空間クラスにアクセスできるようにするには、 SupervisorNamespaceClassSupervisorNamespaceClassConfig の両方が必要です。
SupervisorNamespaceClassConfig には次のプロパティがあります。
  • metadata.name スーパーバイザー名前空間クラスの名前。
  • metadata.namespace プロジェクト名。
  • spec.storageClasses ストレージ クラスの名前および 上限 (MB)。
  • spec.vmClasses 仮想マシン クラスの名前。
  • spec.contentSource コンテンツ ライブラリの名前。すべて type: ContentLibrary で定義されています。
  • spec.limits 名前と値に対する制限。有効な制限値は次のとおりです。
    • config_map_count
    • cpu_limit
    • cpu_limit_default
    • cpu_request_default
    • daemon_set_count
    • deployment_count
    • job_count
    • memory_limit
    • memory_limit_default
    • memory_request_default
    • persistent_volume_claim_count
    • pod_count
    • replica_set_count
    • replication_controller_count
    • secret_count
    • service_count
    • stateful_set_count
    • storage_request_limit
  • spec.supervisorSelector 名前空間の作成に使用できるプロジェクト内のスーパーバイザー。正しいスーパーバイザーを選択するために、matchExpressions でラベル キー、一致演算子、一致のラベル値を定義します。

管理者は、ユーザーがリクエスト時に名前空間の設定をカスタマイズできるよう、名前空間の設定値を定義するときに使用できるクラス パラメータを公開します。

スーパーバイザー名前空間クラス構成を作成する例の入力。
apiVersion: infrastructure.cci.vmware.com/v1alpha1
kind: SupervisorNamespaceClassConfig
metadata:
  name: gold-with-gpu
spec:     
  storageClasses:
    - name: wcp-storage-class
      limit: "100"
    - name: "((parameters.fastStorageClass ? 'fast-storage-class' : 'standard-storage-class'))"
  vmClasses:
    - name: big-vm-class
    - name: small-vm-class
  contentSources:
    - name: global-content-library
      type: ContentLibrary
    - name: "((parameters.environment))-content-library"
      type: ContentLibrary     
  limits:
    - name: cpu_limit
      limit: "1000"
    - name: pod_count
      limit: "((parameters.podCountLimit))"
  supervisorSelector:
    matchExpressions:
      - key: gpu-enabled
        operator: In
        values:
          - true 
この例では、スーパーバイザー名前空間クラスの例に含まれるパラメータを次のように使用します。
  • ((parameters.fastStorageClass ? 'fast-storage-class' : 'standard-storage-class')) は、ストレージ クラス名を指定するための条件チェックを示します。fastStorageClass はブール型です。
    • ユーザーがパラメータ値を true と指定すると、名前は fast-storage-class になります。
    • ユーザーが値を false と指定すると、名前は standard-storage-class になります。
  • ((parameters.podCountLimit)) は、ポッド数の上限を指定する方法を示します。podCountLimit は整数型です。
    • ユーザーがスーパーバイザー名のクラスで定義されている範囲(100~1,000)内の値を指定すると、それがポッド数の上限になります。
    • ユーザーが値を指定しないと、ポッド数の上限は、スーパーバイザー名前空間クラスで定義されているデフォルト値の 500 になります。
    • ユーザーが範囲外の値を指定すると、値は無効になり、スーパーバイザー名前空間の作成は失敗します。また、ポッド数の上限が指定可能な範囲外であることを示すエラーが表示されます。
スーパーバイザー名前空間クラスのバインド
スーパーバイザー名前空間クラスのバインドを使用すると、プロジェクトでスーパーバイザー名前空間を作成するときにスーパーバイザー名前空間クラスを使用できます。
SupervisorNamespaceClassBinding には次のプロパティがあります。
  • metadata.name スーパーバイザー名前空間クラスのバインド名。
  • metadata.namespace プロジェクト名。
  • spec.overrideParameters 管理者が作成します。これらのパラメータは、スーパーバイザー名前空間の作成時にユーザーが変更できない定義済みの値です。const パラメータの値を指定します。これらのパラメータはオプションであり、定義された場合もすべてのクラス パラメータで必須ではありません。
スーパーバイザー名前空間クラスのバインドを作成する例の入力。
apiVersion: infrastructure.cci.vmware.com/v1alpha1
kind: SupervisorNamespaceClassBinding
metadata:
  name: gold-with-gpu
  namespace: demo-project
spec:
  overrideParameters:
    - name: environment
      type: string
      const: testing
supervisorNamespaceClassRef:
  apiVersion: infrastructure.cci.vmware.com/v1alpha1
  kind: SupervisorNamespaceClass
  name: gold
この例の name: environment は、スーパーバイザー名前空間クラスの environment パラメータを使用するオーバーライド パラメータです。 const: testing を指定すると、ユーザーはテスト環境でのみこのクラスを使用してスーパーバイザー名前空間を作成できます。

スーパーバイザー名前空間

スーパーバイザー名前空間
ユーザーは、あるスーパーバイザー名前空間クラスをテンプレートとして使用して、特定のリージョンにスーパーバイザー名前空間を作成できます。公開された場合、オプションのクラス パラメータを使用して名前空間の設定を定義できます。
SupervisorNamespace には次のプロパティがあります。
  • metadata.name プロジェクトおよびスーパーバイザーでの名前空間の名前。
  • metadata.namespace プロジェクト名。
  • spec.regionName リージョン名。
  • spec.className スーパーバイザー名前空間クラスの名前。
  • spec.classParameters デフォルトのパラメータ値をオーバーライドするオプションのキー/値。
  • spec.description オプションの名前空間の記述。
スーパーバイザー名前空間を作成する例の入力。
apiVersion: infrastructure.cci.vmware.com/v1alpha1
kind: SupervisorNamespace
metadata:
  name: demo-ns5
  namespace: demo-project
spec:
  description: Demonstrating supervisor namespace creation
  regionName: us-west2
  className: bronze
スーパーバイザー名前空間を作成する例の出力。
Name:         demo-1
Namespace:    sprint-demo-project
Labels:       <none>
Annotations:  infrastructure.cci.vmware.com/wcp-address: 10.161.81.40
API Version:  infrastructure.cci.vmware.com/v1alpha1
Kind:         SupervisorNamespace
Metadata:
  Creation Timestamp:  2022-09-13T01:55:57Z
  UID:                 my-example-demo-1
Spec:
  Class Name:  demo-class
  Class Parameters:
    Pods:       30
  Description:
  Region Name:  us-demo-1
Status:
  Conditions:
    Last Transition Time:  2022-09-13T01:55:58Z
    Status:                True
    Type:                  Ready
  Phase:                   Created
Events:                    <none>