Un utente DevOps può creare uno spazio dei nomi supervisore e creare risorse di infrastruttura nello spazio dei nomi utilizzando i comandi kubectl di CCI. Questi esempi illustrano come creare uno spazio dei nomi supervisore e aggiungere una macchina virtuale allo spazio dei nomi.

Prerequisiti

Creazione di uno spazio dei nomi supervisore

In questo esempio, viene illustrato come creare uno spazio dei nomi supervisore denominato ns-for-devops-example.

Utilizzando i comandi kubectl, si raccolgono informazioni per le seguenti risorse:
  • Progetto
  • Binding delle regioni
  • Binding della classe spazio dei nomi supervisore
Aggiungere quindi i metadati e le specifiche a un file YAML per creare lo spazio dei nomi supervisore.
  1. Impostare il contesto predefinito su CCI.
    kubectl config use-context cci
  2. Elencare i progetti disponibili.
    kubectl get projects
    Il risultato elenca i progetti in cui ci si trova.
    NAME          SHARED RESOURCES
    cci-document   true
  3. Elencare le regioni in cci-document.
    kubectl get regionbinding -n cci-document
    Il risultato mostra tutte le regioni nel progetto.
    NAME        AGE
    us-docs-1   2d13h
  4. Elencare le classi degli spazi dei nomi supervisore in cci-document.
    kubectl get supervisornamespaceclassbinding -n cci-document
    Il risultato mostra tutte le classi di spazio dei nomi supervisore nel progetto.
    NAME         AGE
    docs-class   2d13h
  5. Creare un file YAML per lo spazio dei nomi supervisore che si desidera creare. Nell'esempio seguente viene creato uno spazio dei nomi con:
    • cci-document per il progetto.
    • us-docs-1 per la regione.
    • docs-class per la classe dello spazio dei nomi.
    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 il file YAML come input, creare uno spazio dei nomi supervisore. In questo esempio, il file YAML si trova nella stessa directory dell'applicazione kubectl.
    kubectl create -f Create_Supervisor_Namespace.YAML
  7. Controllare lo stato dello spazio dei nomi supervisore in cci-document.
    kubectl describe supervisornamespace ns-for-devops-example -n cci-document
    Quando il risultato mostra Status: True e Type: Ready, lo spazio dei nomi supervisore è pronto per l'uso e viene visualizzato nell'interfaccia utente:
    • Per Automation Service Broker, passare a Utilizzo > Spazio dei nomi supervisore.
    • Per Automation Assembler, passare a Infrastruttura > Risorse > Supervisore.
    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. Se si desidera eliminare lo spazio dei nomi supervisore, specificare il nome dello spazio dei nomi, il nome del progetto e includere il flag -force.
    kubectl delete supervisornamespace ns-for-devops-example -n cci-document --force

Aggiunta di una macchina virtuale allo spazio dei nomi supervisore

In questo esempio, viene illustrato come creare una macchina virtuale denominata VM-for-devps-example.

Utilizzando i comandi kubectl, si raccolgono informazioni per le seguenti risorse:
  • Classe di macchine virtuali
  • Immagine di macchina virtuale
  • Classe di storage
Aggiungere quindi le specifiche delle risorse a un file YAML per creare la macchina virtuale.
  1. Accedere nuovamente al server CCI e verificare che nella risposta sia presente lo spazio dei nomi supervisore appena creato.
    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. Impostare il contesto predefinito in modo che non sia necessario specificare lo spazio dei nomi con contesto in ogni comando.
    kubectl config use-context cci:cci-document:ns-for-devops-example
    Il risultato conferma che il contesto è stato commutato e che ogni comando successivo sarà nel contesto di cci:cci-document:ns-for-devops-example.
    Switched to context "cci:cci-document:ns-for-devops-example".
  3. Elencare le classi di macchine virtuali disponibili.
    kubectl get virtualmachineclassess
    Selezionare una delle classi di macchine virtuali dal risultato.
    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. Elenco delle immagini delle macchine virtuali disponibili.
    kubectl get virtualmachineimages
    Selezionare l'immagine che si desidera utilizzare.
    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. Per elencare i criteri di storage disponibili, utilizzare il comando per ottenere le quote delle risorse.
    kubectl get resourcequota
    La prima sezione della richiesta è il criterio di storage.
    NAME                                 AGE     REQUEST                                                                                         LIMIT
    ns-for-devops-example-storagequota   6m22s   wcpglobal-storage-profile.storageclass.storage.k8s.io/requests.storage: 0/9223372036854775807
    
  6. Creare un file YAML per la macchina virtuale che si desidera aggiungere allo spazio dei nomi supervisore. Nell'esempio seguente viene creata una macchina virtuale con:
    • ns-for-devops-example per lo spazio dei nomi.
    • vmi-02549e2ab956621e9 per l'immagine della macchina virtuale.
    • guaranteed-small per la classe di macchine virtuali.
    • wcpglobal-storage-profile per il criterio di storage.
    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 il file YAML come input, creare una macchina virtuale nello spazio dei nomi supervisore. In questo esempio, il file YAML si trova nella stessa directory dell'applicazione kubectl.
    kubectl create -f Create_VM.YAML
  8. Controllare lo stato della creazione della macchina virtuale in ns-for-devops-example.
    kubectl describe virtualmachine vm-for-devops-example -n ns-for-devops-example
    Quando il risultato mostra tre Status: True per Type: GuestCustomization, Type: VirtualMachinePrereqReady e Type: VirtualMachineTools , la macchina virtuale è stata creata correttamente nello spazio dei nomi supervisore.
    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. Se si desidera eliminare la macchina virtuale, specificare il nome della macchina virtuale, il nome dello spazio dei nomi e includere il flag -force.
    kubectl delete virtualmachine vm-for-devops-example -n ns-for-devops-example --force