Como usuario de desarrollo y operaciones, puede crear un espacio de nombres de supervisor y crear recursos de infraestructura dentro de ese espacio de nombres mediante comandos kubectl de CCI. Estos ejemplos muestran cómo crear un espacio de nombres de supervisor y agregar una máquina virtual al espacio de nombres.

Requisitos previos

Crear un espacio de nombres de supervisor

En este ejemplo se muestra cómo crear un espacio de nombres de supervisor denominado ns-for-devops-example.

Mediante los comandos kubectl, puede recopilar información para los siguientes recursos:
  • Proyecto
  • Enlace de regiones
  • Enlace de clase de espacio de nombres de supervisor
A continuación, agregue los metadatos y las especificaciones a un archivo YAML para crear el espacio de nombres de supervisor.
  1. Establezca el contexto predeterminado para CCI.
    kubectl config use-context cci
  2. Enumere los paquetes disponibles.
    kubectl get projects
    El resultado muestra los proyectos en los que se encuentra.
    NAME          SHARED RESOURCES
    cci-document   true
  3. Enumere las regiones existentes en cci-document.
    kubectl get regionbinding -n cci-document
    El resultado muestra todas las regiones del proyecto.
    NAME        AGE
    us-docs-1   2d13h
  4. Enumere las clases de espacio de nombres de supervisor existentes en cci-document.
    kubectl get supervisornamespaceclassbinding -n cci-document
    El resultado muestra todas las clases de espacio de nombres de supervisor en el proyecto.
    NAME         AGE
    docs-class   2d13h
  5. Cree un archivo YAML para el espacio de nombres de supervisor que desea crear. En el siguiente ejemplo se crea un espacio de nombres con:
    • cci-document para el proyecto.
    • us-docs-1 para la región.
    • docs-class para la clase de espacio de nombres.
    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
  6. Con el archivo YAML como entrada, cree un espacio de nombres de supervisor. En este ejemplo, el archivo YAML se encuentra en el mismo directorio que la aplicación kubectl.
    kubectl create -f Create_Supervisor_Namespace.YAML
  7. Compruebe el estado del espacio de nombres de supervisor en cci-document.
    kubectl describe supervisornamespace ns-for-devops-example -n cci-document
    Cuando el resultado muestra Status: True y Type: Ready, el espacio de nombres de supervisor está listo para usarse y se muestra en la interfaz de usuario:
    • Para Automation Service Broker, vaya a Consumir > Espacio de nombres de supervisor.
    • Para Automation Assembler, vaya a Infraestructura > Recursos > Supervisores.
    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>
  8. Si desea eliminar el espacio de nombres de supervisor, proporcione el nombre del espacio de nombres, el nombre del proyecto e incluya la marca --force.
    kubectl delete supervisornamespace ns-for-devops-example -n cci-document --force

Agregar una máquina virtual al espacio de nombres de supervisor

En este ejemplo se muestra cómo crear una máquina virtual con el nombre VM-for-devops-example.

Mediante los comandos kubectl, puede recopilar información para los siguientes recursos:
  • Clase de máquina virtual
  • Imagen de máquina virtual
  • Clase de almacenamiento
A continuación, agregue especificaciones de recursos a un archivo YAML para crear la máquina virtual.
  1. Vuelva a iniciar sesión en el servidor CCI y compruebe que puede ver el espacio de nombres de supervisor recién creado en la respuesta.
    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
  2. Establezca el contexto predeterminado para que no sea necesario especificar el espacio de nombres con contexto en cada comando.
    kubectl config use-context cci:cci-document:ns-for-devops-example
    El resultado confirma que se cambió el contexto y que cada comando subsiguiente estará en el contexto de cci:cci-document:ns-for-devops-example.
    Switched to context "cci:cci-document:ns-for-devops-example".
  3. Enumere las clases de máquina virtual disponibles.
    kubectl get virtualmachineclassess
    En el resultado seleccione una de las clases de máquinas virtuales.
    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
  4. Enumere las imágenes de máquina virtual disponibles.
    kubectl get virtualmachineimages
    Seleccione las imágenes que desea utilizar.
    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
    
  5. Para enumerar las directivas de almacenamiento disponibles, utilice el comando para obtener cuotas de recursos.
    kubectl get resourcequota
    La primera sección de la solicitud es la directiva de almacenamiento.
    NAME                                 AGE     REQUEST                                                                                         LIMIT
    ns-for-devops-example-storagequota   6m22s   wcpglobal-storage-profile.storageclass.storage.k8s.io/requests.storage: 0/9223372036854775807
    
  6. Cree un archivo YAML para la máquina virtual que desea agregar al espacio de nombres de supervisor. En el siguiente ejemplo se crea una máquina virtual con:
    • ns-for-devops-example para el espacio de nombres.
    • vmi-02549e2ab956621e9 para la imagen de máquina virtual.
    • guaranteed-small para la clase de máquina virtual.
    • wcpglobal-storage-profile para la directiva de almacenamiento.
    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
  7. Con el archivo YAML como entrada, cree una máquina virtual en el espacio de nombres de supervisor. En este ejemplo, el archivo YAML se encuentra en el mismo directorio que la aplicación kubectl.
    kubectl create -f Create_VM.YAML
  8. Compruebe el estado de creación de la máquina virtual en ns-for-devops-example.
    kubectl describe virtualmachine vm-for-devops-example -n ns-for-devops-example
    Cuando el resultado muestra tres Status: True para Type: GuestCustomization, Type: VirtualMachinePrereqReady y Type: VirtualMachineTools , la máquina virtual se creó correctamente en el espacio de nombres de supervisor.
    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>
  9. Si desea eliminar la máquina virtual, proporcione el nombre de la máquina virtual, el nombre del espacio de nombres e incluya la marca --force.
    kubectl delete virtualmachine vm-for-devops-example -n ns-for-devops-example --force