Als DevOps-Benutzer können Sie einen Supervisor-Namespace und Infrastrukturressourcen innerhalb des Namespace mithilfe von CCI kubectl-Befehlen erstellen. Die folgenden Beispiele zeigen, wie Sie einen Supervisor-Namespace erstellen und dem Namespace eine VM hinzufügen.

Voraussetzungen

  • Stellen Sie sicher, dass ein Automation-Administrator die Cloud Consumption Interface-Infrastruktur eingerichtet hat. Weitere Informationen hierzu finden Sie unter Einrichten der CCI-Infrastruktur mithilfe von kubectl.
  • Sie müssen Mitglied mindestens eines Projekts in Automation Service Broker sein.
  • Sie müssen mindestens Organisationsmitglied in Automation mit der Automation Service Broker-Dienstrolle „Benutzer“ sein.
  • Stellen Sie sicher, dass Sie über Folgendes verfügen:
    • Das CCI kubectl-Plug-In wurde heruntergeladen.
    • Ein API-Token für die Dienstrolle „Benutzer“ wurde abgerufen und als Variable zugewiesen.
      TOKEN='<your_API_token>'
    • Sie haben Ihr Token zur Anmeldung beim CCI-Server verwendet.
    Weitere Informationen hierzu finden Sie unter Vorbereiten der Verwendung der Befehlszeilenschnittstelle zur Durchführung von CCI-Aufgaben.

Erstellen eines Supervisor-Namespace

In diesem Beispiel wird die Erstellung eines Supervisor-Namespace mit dem Namen ns-for-devops-example dargestellt.

Sie erfassen mithilfe von kubectl-Befehlen Informationen für die folgenden Ressourcen:
  • Projekt
  • Regionsbindung
  • Supervisor-Namespace-Klassenbindung
Anschließend fügen Sie die Metadaten und Spezifikationen zu einer YAML-Datei hinzu, um den Supervisor-Namespace zu erstellen.
  1. Legen Sie den Standardkontext auf CCI fest.
    kubectl config use-context cci
  2. Listen Sie die verfügbaren Projekte auf.
    kubectl get projects
    Im Ergebnis wird eine Liste der Projekte zurückgegeben, denen Sie angehören.
    NAME          SHARED RESOURCES
    cci-document   true
  3. Listen Sie die Regionen in cci-document auf.
    kubectl get regionbinding -n cci-document
    Im Ergebnis werden alle Regionen im Projekt angezeigt.
    NAME        AGE
    us-docs-1   2d13h
  4. Listen Sie die Supervisor-Namespace-Klassen in cci-document auf.
    kubectl get supervisornamespaceclassbinding -n cci-document
    Im Ergebnis werden alle Supervisor-Namespace-Klassen im Projekt angezeigt.
    NAME         AGE
    docs-class   2d13h
  5. Erstellen Sie eine YAML-Datei für den Supervisor-Namespace, den Sie erstellen möchten. Im folgenden Beispiel wird ein Namespace mit folgenden Elementen erstellt:
    • cci-document für das Projekt.
    • us-docs-1 für die Region.
    • docs-class für die Namespace-Klasse.
    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. Erstellen Sie mit der YAML-Datei als Eingabe einen Supervisor-Namespace. In diesem Beispiel befindet sich die YAML-Datei im selben Verzeichnis wie die kubectl-Anwendung.
    kubectl create -f Create_Supervisor_Namespace.YAML
  7. Prüfen Sie den Status des Supervisor-Namespace in cci-document.
    kubectl describe supervisornamespace ns-for-devops-example -n cci-document
    Wenn im Ergebnis Status: True und Type: Ready angezeigt werden, kann der Supervisor-Namespace verwendet werden und wird in der Benutzeroberfläche angezeigt:
    • Navigieren Sie für Automation Service Broker zu Verbrauchen > Supervisor-Namespace.
    • Navigieren Sie für Automation Assembler zu Infrastruktur > Ressourcen > Supervisoren.
    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. Wenn Sie den Supervisor-Namespace löschen möchten, geben Sie den Namen des Namespace und den Namen des Projekts an und schließen Sie dabei das Flag --force ein.
    kubectl delete supervisornamespace ns-for-devops-example -n cci-document --force

Hinzufügen einer VM zum Supervisor-Namespace

In diesem Beispiel wird die Erstellung einer VM mit dem Namen VM-for-devops-example dargestellt.

Sie erfassen mithilfe von kubectl-Befehlen Informationen für die folgenden Ressourcen:
  • VM-Klasse
  • VM-Image
  • Speicherklasse
Anschließend fügen Sie Ressourcenspezifikationen zu einer YAML-Datei hinzu, um die VM zu erstellen.
  1. Melden Sie sich erneut beim CCI-Server an und stellen Sie sicher, dass der neu erstellte Supervisor-Namespace in der Antwort angezeigt wird.
    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. Legen Sie den Standardkontext so fest, dass Sie den Namespace nicht in jedem Befehl mit Kontext angeben müssen.
    kubectl config use-context cci:cci-document:ns-for-devops-example
    Das Ergebnis bestätigt, dass der Kontext gewechselt wurde und jeder nachfolgende Befehl im Kontext von cci:cci-document:ns-for-devops-example ausgeführt wird.
    Switched to context "cci:cci-document:ns-for-devops-example".
  3. Listen Sie die verfügbaren VM-Klassen auf.
    kubectl get virtualmachineclassess
    Wählen Sie eine der VM-Klassen aus dem Ergebnis aus.
    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. Listen Sie die verfügbaren VM-Images auf.
    kubectl get virtualmachineimages
    Wählen Sie das Image aus, das Sie verwenden möchten.
    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. Um die verfügbaren Speicherrichtlinien aufzulisten, verwenden Sie den Befehl zum Abrufen von Ressourcenkontingenten.
    kubectl get resourcequota
    Der erste Abschnitt der Anforderung ist die Speicherrichtlinie.
    NAME                                 AGE     REQUEST                                                                                         LIMIT
    ns-for-devops-example-storagequota   6m22s   wcpglobal-storage-profile.storageclass.storage.k8s.io/requests.storage: 0/9223372036854775807
    
  6. Erstellen Sie eine YAML-Datei für die VM, die Sie dem Supervisor-Namespace hinzufügen möchten. Im folgenden Beispiel wird eine VM mit folgenden Elementen erstellt:
    • ns-for-devops-example für den Namespace.
    • vmi-02549e2ab956621e9 für das VM-Image.
    • guaranteed-small für die VM-Klasse.
    • wcpglobal-storage-profile für die Speicherrichtlinie.
    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. Erstellen Sie mit der YAML-Datei als Eingabe eine VM im Supervisor-Namespace. In diesem Beispiel befindet sich die YAML-Datei im selben Verzeichnis wie die kubectl-Anwendung.
    kubectl create -f Create_VM.YAML
  8. Prüfen Sie den Status der VM-Erstellung in ns-for-devops-example.
    kubectl describe virtualmachine vm-for-devops-example -n ns-for-devops-example
    Wenn im Ergebnis dreimal Status: True (für Type: GuestCustomization, Type: VirtualMachinePrereqReady und Type: VirtualMachineTools ) angezeigt werden, wurde die VM erfolgreich im Supervisor-Namespace erstellt.
    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. Wenn Sie die VM löschen möchten, geben Sie den Namen der VM und den Namen des Namespace an und schließen Sie dabei das Flag --force ein.
    kubectl delete virtualmachine vm-for-devops-example -n ns-for-devops-example --force