En tant qu'utilisateur DevOps, vous pouvez créer un espace de noms de superviseur et créer des ressources d'infrastructure dans l'espace de noms à l'aide des commandes kubectl de la CCI. Ces exemples montrent comment créer un espace de noms de superviseur et ajouter une machine virtuelle à l'espace de noms.

Conditions préalables

  • Vérifiez qu'un administrateur Automation a configuré l'interface de consommation de cloud. Reportez-vous à la section Configuration de l'infrastructure CCI à l'aide de kubectl.
  • Vérifiez que vous êtes membre d'au moins un projet dans Automation Service Broker.
  • Vérifiez que vous êtes au moins membre de l'organisation dans Automation avec le rôle de service Utilisateur pour Automation Service Broker.
  • Vérifiez que vous disposez de éléments suivants :
    • Téléchargement du plug-in CCI kubectl.
    • Un jeton d'API a été obtenu pour le rôle de service Utilisateur et a été attribué en tant que variable.
      TOKEN='<your_API_token>'
    • Utilisez votre jeton pour vous connecter au serveur CCI.
    Reportez-vous à la section Préparation de l'utilisation de l'interface de ligne de commande pour effectuer des tâches CCI.

Créer un espace de noms de superviseur

Cet exemple montre comment créer un espace de noms de superviseur nommé ns-for-devops-example.

À l'aide des commandes kubectl, vous collectez des informations pour les ressources suivantes :
  • Projet
  • Liaison de région
  • Liaison de classe d'espace de noms de superviseur
Ajoutez ensuite les métadonnées et les spécifications à un fichier YAML pour créer l'espace de noms de superviseur.
  1. Définissez le contexte par défaut sur CCI.
    kubectl config use-context cci
  2. Répertoriez les projets disponibles.
    kubectl get projects
    Le résultat répertorie les projets dans lesquels vous vous trouvez.
    NAME          SHARED RESOURCES
    cci-document   true
  3. Répertoriez les régions dans cci-document.
    kubectl get regionbinding -n cci-document
    Le résultat affiche toutes les régions du projet.
    NAME        AGE
    us-docs-1   2d13h
  4. Répertoriez les classes d'espace de noms de superviseur dans cci-document.
    kubectl get supervisornamespaceclassbinding -n cci-document
    Le résultat affiche toutes les classes d'espace de noms du superviseur dans le projet.
    NAME         AGE
    docs-class   2d13h
  5. Créez un fichier YAML pour l'espace de noms de superviseur que vous souhaitez créer. L'exemple suivant crée un espace de noms avec :
    • cci-document pour le projet.
    • us-docs-1 pour la région.
    • docs-class pour la classe d'espace de noms.
    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. Avec le fichier YAML comme entrée, créez un espace de noms de superviseur. Dans cet exemple, le fichier YAML se trouve dans le même répertoire que l'application kubectl.
    kubectl create -f Create_Supervisor_Namespace.YAML
  7. Vérifiez l'état de l'espace de noms de superviseur dans cci-document.
    kubectl describe supervisornamespace ns-for-devops-example -n cci-document
    Lorsque le résultat affiche Status: True et Type: Ready, l'espace de noms de superviseur est prêt à être utilisé et s'affiche dans l'interface utilisateur.
    • Pour Automation Service Broker, accédez à Consommer > Espace de noms de superviseur.
    • Pour Automation Assembler, accédez à Infrastructure > Ressources > Superviseurs.
    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 vous souhaitez supprimer l'espace de noms de superviseur, fournissez le nom de l'espace de noms, le nom du projet et incluez l'indicateur --force.
    kubectl delete supervisornamespace ns-for-devops-example -n cci-document --force

Ajouter une machine virtuelle à l'espace de noms de superviseur

Cet exemple montre comment créer une machine virtuelle nommée VM-for-devops-example.

À l'aide des commandes kubectl, vous collectez des informations pour les ressources suivantes :
  • Classe de machine virtuelle
  • Image de machine virtuelle
  • Classe de stockage
Ensuite, vous ajoutez des spécifications de ressource à un fichier YAML pour créer la machine virtuelle.
  1. Reconnectez-vous au serveur CCI et vérifiez que vous voyez l'espace de noms de superviseur récemment créé dans la réponse.
    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. Définissez le contexte par défaut afin d'éviter de spécifier l'espace de noms avec le contexte dans chaque commande.
    kubectl config use-context cci:cci-document:ns-for-devops-example
    Le résultat confirme que le contexte a été basculé et que toutes les commandes suivantes seront dans le contexte de cci:cci-document:ns-for-devops-example.
    Switched to context "cci:cci-document:ns-for-devops-example".
  3. Répertoriez les classes de machine virtuelle disponibles.
    kubectl get virtualmachineclassess
    Sélectionnez l'une des classes de machine virtuelle dans le résultat.
    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. Répertorier les images de machine virtuelle disponibles.
    kubectl get virtualmachineimages
    Sélectionnez l'image que vous souhaitez utiliser.
    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. Pour répertorier les stratégies de stockage disponibles, utilisez la commande pour obtenir des quotas de ressources.
    kubectl get resourcequota
    La première section de la demande est la stratégie de stockage.
    NAME                                 AGE     REQUEST                                                                                         LIMIT
    ns-for-devops-example-storagequota   6m22s   wcpglobal-storage-profile.storageclass.storage.k8s.io/requests.storage: 0/9223372036854775807
    
  6. Créez un fichier YAML pour la machine virtuelle que vous souhaitez ajouter à l'espace de noms de superviseur. L'exemple suivant crée une machine virtuelle avec :
    • ns-for-devops-example pour l'espace de noms.
    • vmi-02549e2ab956621e9 pour l'image de machine virtuelle.
    • guaranteed-small pour la classe de machine virtuelle.
    • wcpglobal-storage-profile pour la stratégie de stockage.
    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. Avec le fichier YAML comme entrée, créez une machine virtuelle dans l'espace de noms de superviseur. Dans cet exemple, le fichier YAML se trouve dans le même répertoire que l'application kubectl.
    kubectl create -f Create_VM.YAML
  8. Vérifiez l'état de création de la machine virtuelle dans ns-for-devops-example.
    kubectl describe virtualmachine vm-for-devops-example -n ns-for-devops-example
    Lorsque le résultat affiche trois Status: True pour Type: GuestCustomization, Type: VirtualMachinePrereqReady et Type: VirtualMachineTools , la machine virtuelle a été créée dans l'espace de noms de superviseur.
    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 vous souhaitez supprimer la machine virtuelle, fournissez le nom de la machine virtuelle, le nom de l'espace de noms et incluez l'indicateur --force.
    kubectl delete virtualmachine vm-for-devops-example -n ns-for-devops-example --force