Como usuário de DevOps, você pode criar um Namespace de Supervisor e criar recursos de infraestrutura dentro desse namespace usando comandos da CCI para kubectl. Estes exemplos mostram como criar um Namespace de Supervisor e adicionar uma VM a esse namespace.
Pré-requisitos
- Verifique se um administrador do Automation configurou a infraestrutura da Cloud Consumption Interface. Consulte Configurar a infraestrutura da Cloud Consumption Interface usando o kubectl.
- Verifique se você é membro de pelo menos um projeto no Automation Service Broker.
- Verifique se você é pelo menos um membro da organização no Automation com a Função de serviço de usuário do Automation Service Broker.
- Verifique se você:
- Baixou o plug-in da CCI para kubectl.
- Obteve um token de API para a Função de serviço de usuário e o atribuiu como uma variável.
TOKEN='<your_API_token>'
- Usou seu token para fazer login no servidor da CCI.
Criar um namespace de Supervisor
Este exemplo mostra como criar um Namespace de Supervisor chamado ns-for-devops-example.
Usando comandos do kubectl, você coleta informações para os seguintes recursos:
- Projeto
- Vinculação de Região
- Vinculação de Classe de Namespace de Supervisor
- Defina o contexto padrão como CCI.
kubectl config use-context cci
- Liste os projetos disponíveis.
kubectl get projects
O resultado lista os projetos em que você está.NAME SHARED RESOURCES cci-document true
- Liste as regiões em cci-document.
kubectl get regionbinding -n cci-document
O resultado mostra todas as regiões do projeto.NAME AGE us-docs-1 2d13h
- Liste as classes de namespace de supervisor em cci-document.
kubectl get supervisornamespaceclassbinding -n cci-document
O resultado mostra todas as classes de namespace de supervisor no projeto.NAME AGE docs-class 2d13h
- Crie um arquivo YAML para o Namespace de Supervisor que você deseja criar. O exemplo a seguir cria um namespace com:
- cci-document para o projeto.
- us-docs-1 para a região.
- docs-class para a classe de namespace.
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
- Com o arquivo YAML como entrada, crie um namespace de supervisor. Neste exemplo, o arquivo YAML está no mesmo diretório que o aplicativo kubectl.
kubectl create -f Create_Supervisor_Namespace.YAML
- Verifique o status do namespace do supervisor em cci-document.
kubectl describe supervisornamespace ns-for-devops-example -n cci-document
Quando o resultado mostrarStatus: True
eType: Ready
, significa que o namespace de supervisor está pronto para uso e visível na UI:- Para o Automation Service Broker, acesse .
- Para o Automation Assembler, acesse .
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>
- Se quiser excluir o namespace de supervisor, forneça o nome do namespace, o nome do projeto e inclua o sinalizador --force.
kubectl delete supervisornamespace ns-for-devops-example -n cci-document --force
Adicionar uma VM ao Namespace de Supervisor
Este exemplo mostra como criar uma VM chamada VM-for-devops-example.
Usando comandos do kubectl, você coleta informações para os seguintes recursos:
- Classe de Máquina Virtual
- Imagem de máquina virtual
- Classe de armazenamento
- Faça login novamente no servidor da CCI e verifique se você vê o Namespace de Supervisor recém-criado na resposta.
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
- Defina o contexto padrão para que você não precise especificar o namespace com contexto em cada comando.
kubectl config use-context cci:cci-document:ns-for-devops-example
O resultado confirma que o contexto foi alterado e cada comando subsequente estará no contexto decci:cci-document:ns-for-devops-example
.Switched to context "cci:cci-document:ns-for-devops-example".
- Liste classes de máquinas virtuais disponíveis.
kubectl get virtualmachineclassess
Selecione uma das classes de máquina virtual do resultado.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
- Liste imagens de máquinas virtuais disponíveis.
kubectl get virtualmachineimages
Selecione a imagem que você deseja usar.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
- Para listar políticas de armazenamento disponíveis, use o comando para obter cotas de recursos.
kubectl get resourcequota
A primeira seção da solicitação é a política de armazenamento.NAME AGE REQUEST LIMIT ns-for-devops-example-storagequota 6m22s wcpglobal-storage-profile.storageclass.storage.k8s.io/requests.storage: 0/9223372036854775807
- Crie um arquivo YAML para a VM que você deseja adicionar ao Namespace de Supervisor. O exemplo a seguir cria uma VM com:
- ns-for-devops-example para o namespace.
- vmi-02549e2ab956621e9 para a imagem da VM.
- guaranteed-small para a classe de VM.
- wcpglobal-storage-profile para a política de armazenamento.
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
- Com o arquivo YAML como entrada, crie uma VM no namespace de supervisor. Neste exemplo, o arquivo YAML está no mesmo diretório que o aplicativo kubectl.
kubectl create -f Create_VM.YAML
- Verifique o status da criação da VM em ns-for-devops-example.
kubectl describe virtualmachine vm-for-devops-example -n ns-for-devops-example
Quando o resultado mostrar trêsStatus: True
paraType: GuestCustomization
,Type: VirtualMachinePrereqReady
eType: VirtualMachineTools
, significa que a VM foi criada com sucesso no namespace 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>
- Se quiser excluir a VM, forneça o nome da VM, o nome do namespace e inclua o sinalizador --force.
kubectl delete virtualmachine vm-for-devops-example -n ns-for-devops-example --force