Create Supervisor Namespaces and
infrastructure resources using kubectl
As a DevOps user, you can create a Supervisor Namespace and create infrastructure
resources within the namespace using CCI kubectl commands. These examples show how to create
a Supervisor Namespace and add a VM to the namespace.
Prerequisites
- Verify that aAutomationadministrator has set up the Cloud Consumption Interface infrastructure. See Setting up the Cloud Consumption Interface infrastructure using kubectl.
- Verify that you are member of at least one project inAutomation Service Broker.
- Verify that you are at least an organization member inAutomationwith theAutomation Service BrokerUser service role.
- Verify that you have:
- Downloaded the CCI kubectl plug-in.
- Obtained an API token for the User service role and assigned it as a variable.TOKEN='<your_API_token>'
- Used your token to log in to the CCI server.
Create a Supervisor
Namespace
This example shows how to create a
Supervisor Namespace named
ns-for-devops-example
. Using kubectl commands, you collect
information for the following resources:
- Project
- Region Binding
- Supervisor Namespace Class Binding
- Set the default context to CCI.kubectl config use-context cci
- List available projects.
The result lists the projects that you are in.kubectl get projectsNAME SHARED RESOURCES cci-document true - List the regions incci-document.
The result shows all the regions in the project.kubectl get regionbinding -n cci-documentNAME AGE us-docs-1 2d13h - List the supervisor namespace classes incci-document.
The result shows all the supervisor namespace classes in the project.kubectl get supervisornamespaceclassbinding -n cci-documentNAME AGE docs-class 2d13h - Create a YAML file for the Supervisor Namespace that you want to create. The following example creates a namespace with:
- cci-documentfor the project.
- us-docs-1for the region.
- docs-classfor the namespace 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 - With the YAML file as input, create a supervisor namespace. In this example, the YAML file is in the same directory as the kubectl application.kubectl create -f Create_Supervisor_Namespace.YAML
- Check the status of the supervisor namespace incci-document.
When the result showskubectl describe supervisornamespace ns-for-devops-example -n cci-documentStatus: TrueandType: Ready, the supervisor namespace is ready to use and appears in the UI:- ForAutomation Service Broker, go to .
- ForAutomation Assembler, go to .
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> - If you want to delete the supervisor namespace, provide the name of the namespace, the name of the project, and include the--forceflag.kubectl delete supervisornamespace ns-for-devops-example -n cci-document --force
Add a VM to the Supervisor
Namespace
This example shows how to create a VM
named
VM-for-devops-example
. Using kubectl commands, you collect
information for the following resources:
- Virtual Machine Class
- Virtual Machine Image
- Storage Class
- Log in to the CCI server again and verify that you see the newly created Supervisor Namespace in the response.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
- Set the default context so that you do not need to specify the namespace with context in every command.
The result confirms that the context has been switched and every subsequent command will be in the context ofkubectl config use-context cci:cci-document:ns-for-devops-examplecci:cci-document:ns-for-devops-example.Switched to context "cci:cci-document:ns-for-devops-example". - List available virtual machine classes.
Select one of the virtual machine classes from the result.kubectl get virtualmachineclassessNAME 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 - List available virtual machine images.
Select the image that you want to use.kubectl get virtualmachineimagesNAME 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 - To list available storage policies, use the command to get resource quotas.
The first section of the request is the storage policy.kubectl get resourcequotaNAME AGE REQUEST LIMIT ns-for-devops-example-storagequota 6m22s wcpglobal-storage-profile.storageclass.storage.k8s.io/requests.storage: 0/9223372036854775807 - Create a YAML file for the VM that you want to add to the Supervisor Namespace. The following example creates a VM with:
- ns-for-devops-examplefor the namespace.
- vmi-02549e2ab956621e9for the VM image.
- guaranteed-smallfor the VM class.
- wcpglobal-storage-profilefor the storage policy.
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 - With the YAML file as input, create a VM in the supervisor namespace. In this example, the YAML file is in the same directory as the kubectl application.kubectl create -f Create_VM.YAML
- Check the status of the VM creation inns-for-devops-example.
When the result shows threekubectl describe virtualmachine vm-for-devops-example -n ns-for-devops-exampleStatus: TrueforType: GuestCustomization,Type: VirtualMachinePrereqReady, andType: VirtualMachineTools, the VM has been successfully created in the supervisor namespace.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> - If you want to delete the VM, provide the name of the VM, the name of the namespace, and include the--forceflag.kubectl delete virtualmachine vm-for-devops-example -n ns-for-devops-example --force