管理者と開発者は、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 サーバにログインしている。
プロジェクトおよびユーザー
- プロジェクト
-
管理者は、プロジェクトを作成してユーザーをグループ化し、
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
- リージョンのバインド
-
管理者はリージョンのバインドを作成して、リージョンをプロジェクトに関連付けます。
プロジェクトのユーザーがスーパーバイザー名前空間に作成するには、RegionBinding と RegionBindingConfig の両方が必要です。
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 を作成します。プロジェクトがスーパーバイザー名前空間クラスにアクセスできるようにするには、
SupervisorNamespaceClass と
SupervisorNamespaceClassConfig の両方が必要です。
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
になります。
- ユーザーがパラメータ値を true と指定すると、名前は
((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>