作为 DevOps 用户,您可以使用 CCI kubectl 命令创建主管命名空间并在命名空间中创建基础架构资源。以下示例展示了如何创建主管命名空间以及在命名空间中添加虚拟机。
必备条件
- 确认 Automation 管理员已设置 Cloud Consumption Interface 基础架构。请参见使用 kubectl 设置 CCI 基础架构。
- 确认您是 Automation Service Broker 中至少一个项目的成员。
- 确认您至少是 Automation 中的组织成员,具有 Automation Service Broker 用户服务角色。
- 验证您是否:
- 已下载 CCI kubectl 插件。
- 获取用户服务角色的 API 令牌并将其作为变量分配。
TOKEN='<your_API_token>'
- 已使用令牌登录到 CCI 服务器。
创建主管命名空间
以下示例展示了如何创建名为 ns-for-devops-example 的主管命名空间。
使用 kubectl 命令可收集以下资源的信息:
- 项目
- 区域绑定
- 主管命名空间类绑定
- 将默认上下文设置为 CCI。
kubectl config use-context cci
- 列出可用项目。
kubectl get projects
结果将列出您所在的项目。NAME SHARED RESOURCES cci-document true
- 列出 cci-document 中的区域。
kubectl get regionbinding -n cci-document
结果将显示项目中的所有区域。NAME AGE us-docs-1 2d13h
- 列出 cci-document 中的主管命名空间类。
kubectl get supervisornamespaceclassbinding -n cci-document
结果将显示项目中的所有主管命名空间类。NAME AGE docs-class 2d13h
- 为要创建的主管命名空间创建 YAML 文件。以下示例使用以下设置创建命名空间:
- 项目 cci-document。
- 区域 us-docs-1。
- 命名空间类 docs-class。
apiVersion: infrastructure.cci.vmware.com/v1alpha1 kind: SupervisorNamespace metadata: name: ns-for-devops-example namespace: cci-document spec: description: Create_Namespace_example regionName: us-docs-1 className: docs-class
- 将 YAML 文件作为输入,创建主管命名空间。在此示例中,YAML 文件与 kubectl 应用程序位于同一目录中。
kubectl create -f Create_Supervisor_Namespace.YAML
- 检查 cci-document 中主管命名空间的状态。
kubectl describe supervisornamespace ns-for-devops-example -n cci-document
结果显示Status: True
和Type: Ready
时,表示主管命名空间即可使用并显示在 UI 中。- 对于 Automation Service Broker,请转到 。
- 对于 Automation Assembler,请转到 。
Name: ns-for-devops-example Namespace: cci-document Labels: <none> Annotations: infrastructure.cci.vmware.com/wcp-address: 192.168.0.2 API Version: infrastructure.cci.vmware.com/v1alpha1 Kind: SupervisorNamespace Metadata: Creation Timestamp: 2023-07-31T17:30:49Z UID: b2f65844-d545-4a5f-976d-381e079275b1 Spec: Class Name: docs-class Class Parameters: Description: Create_Namespace_example Region Name: us-docs-1 Status: Conditions: Last Transition Time: 2023-07-31T17:30:50Z Status: True Type: Ready Phase: Created Events: <none>
- 如果要删除主管命名空间,请提供命名空间的名称和项目的名称,并包含 --force 标志。
kubectl delete supervisornamespace ns-for-devops-example -n cci-document --force
向主管命名空间添加虚拟机
以下示例展示了如何创建名为 VM-for-devops-example 的虚拟机。
使用 kubectl 命令可收集以下资源的信息:
- 虚拟机类
- 虚拟机映像
- 存储类
- 再次登录到 CCI 服务器,并确认在响应中看到了新创建的主管命名空间。
kubectl cci login --server api.mgmt.cloud.vmware.com --token $TOKEN Logging into api.mgmt.cloud.vmware.com Getting supervisor namespaces Successfully logged into api.mgmt.cloud.vmware.com Created kubeconfig contexts: cci cci:cci-document:ns-7lan cci:cci-document:ns-for-devops-example cci:supervisor:gp-namespace
- 设置默认上下文,这样就不需要在每个命令中使用 context 指定命名空间。
kubectl config use-context cci:cci-document:ns-for-devops-example
结果确认上下文已切换,并且每个后续命令都将位于cci:cci-document:ns-for-devops-example
上下文中。Switched to context "cci:cci-document:ns-for-devops-example".
- 列出可用的虚拟机类。
kubectl get virtualmachineclassess
从结果中选择一个虚拟机类。NAME CPU MEMORY AGE best-effort-2xlarge 8 64Gi 2d15h best-effort-4xlarge 16 128Gi 2d15h best-effort-8xlarge 32 128Gi 2d15h best-effort-large 4 16Gi 2d15h best-effort-medium 2 8Gi 2d15h best-effort-small 2 4Gi 2d15h best-effort-xlarge 4 32Gi 2d15h best-effort-xsmall 2 2Gi 2d15h guaranteed-2xlarge 8 64Gi 2d15h guaranteed-4xlarge 16 128Gi 2d15h guaranteed-8xlarge 32 128Gi 2d15h guaranteed-large 4 16Gi 2d15h guaranteed-medium 2 8Gi 2d15h guaranteed-small 2 4Gi 2d15h guaranteed-xlarge 4 32Gi 2d15h guaranteed-xsmall 2 2Gi 2d15h
- 列出可用的虚拟机映像。
kubectl get virtualmachineimages
选择要使用的映像。NAME PROVIDER-NAME CONTENT-LIBRARY-NAME IMAGE-NAME VERSION OS-TYPE FORMAT AGE vmi-02549e2ab956621e9 clitem-02549e2ab956621e9 cl-c7a511c539dddc1f1 groovy-20210415.1-with-ovt-11.3 ubuntu64Guest OVF 143m vmi-041ff2740d6aee34a clitem-041ff2740d6aee34a cl-c7a511c539dddc1f1 ubuntu-20-1633387172196-v1.1 ubuntu64Guest OVF 143m vmi-1cc3c618d0ead1129 clitem-1cc3c618d0ead1129 cl-c7a511c539dddc1f1 jammy-server-cloudimg-amd64 ubuntu64Guest OVF 143m
- 要列出可用的存储策略,请使用 命令获取资源配额。
kubectl get resourcequota
请求的第一部分是存储策略。NAME AGE REQUEST LIMIT ns-for-devops-example-storagequota 6m22s wcpglobal-storage-profile.storageclass.storage.k8s.io/requests.storage: 0/9223372036854775807
- 为要添加到主管命名空间的虚拟机创建 YAML 文件。以下示例使用以下设置创建虚拟机:
- 命名空间 ns-for-devops-example。
- 虚拟机映像 vmi-02549e2ab956621e9。
- 虚拟机类 guaranteed-small。
- 存储策略 wcpglobal-storage-profile。
apiVersion: vmoperator.vmware.com/v1alpha1 kind: VirtualMachine metadata: name: VM-for-devops-example namespace: ns-for-devops-example spec: imageName: vmi-02549e2ab956621e9 className: guaranteed-small storageClass: wcpglobal-storage-profile powerState: poweredOn
- 将 YAML 文件作为输入,在主管命名空间中创建虚拟机。在此示例中,YAML 文件与 kubectl 应用程序位于同一目录中。
kubectl create -f Create_VM.YAML
- 检查在 ns-for-devops-example 中创建虚拟机的状态。
kubectl describe virtualmachine vm-for-devops-example -n ns-for-devops-example
结果显示Type: GuestCustomization
、Type: VirtualMachinePrereqReady
和Type: VirtualMachineTools
这三个的状态都为Status: True
时,表示已在主管命名空间中成功创建虚拟机。Name: vm-for-devops-example Namespace: ns-for-devops-example Labels: topology.kubernetes.io/zone=domain-c50 Annotations: virtualmachine.vmoperator.vmware.com/first-boot-done: true API Version: vmoperator.vmware.com/v1alpha1 Kind: VirtualMachine Metadata: Creation Timestamp: 2023-08-15T00:30:55Z Finalizers: virtualmachine.vmoperator.vmware.com Generation: 1 Resource Version: 19196052 UID: f2460f3c-225b-460b-8d11-95a1bdaebe72 Spec: Class Name: guaranteed-small Image Name: vmi-02549e2ab956621e9 Network Interfaces: Network Type: vsphere-distributed Power Off Mode: hard Power State: poweredOn Restart Mode: hard Storage Class: wcpglobal-storage-profile Suspend Mode: hard Status: Bios UUID: 421eb2b5-04ef-f3e1-8d17-f8e73a2576b2 Change Block Tracking: false Conditions: Last Transition Time: 2023-08-15T00:32:30Z Status: True Type: GuestCustomization Last Transition Time: 2023-08-15T00:31:55Z Status: True Type: VirtualMachinePrereqReady Last Transition Time: 2023-08-15T00:32:20Z Status: True Type: VirtualMachineTools Host: 10.186.234.28 Instance UUID: 501ea6c0-c0cb-b03c-08e6-324642f923d1 Network Interfaces: Connected: true Ip Addresses: 192.168.128.11/16 fe80::250:56ff:fe9e:ff48/64 Mac Address: 00:50:56:9e:ff:48 Phase: Created Power State: poweredOn Unique ID: vm-104 Vm Ip: 192.168.128.11 Zone: domain-c50 Events: <none>
- 如果要删除虚拟机,请提供虚拟机的名称和命名空间的名称,并包含 --force 标志。
kubectl delete virtualmachine vm-for-devops-example -n ns-for-devops-example --force