Você pode adicionar elementos da Cloud Consumption Interface (CCI) para usar o serviço CCI em um modelo do VMware Aria Automation para que seus usuários possam solicitar cargas de trabalho baseadas em Kubernetes usando o serviço de Máquina Virtual e o Tanzu Kubernetes Grid Service dentro de um namespace de supervisor.
Para ver os elementos da CCI, expanda a seção Cloud Consumption Interface dentro da biblioteca de recursos no seu modelo de nuvem ou digite cci no campo Pesquisar Tipos de Recurso.
Recurso de Namespace de Supervisor
|
Crie um novo Namespace de Supervisor, que forneça um espaço de trabalho baseado no Kubernetes com limites de recursos, acesso de usuários e serviços de Supervisor disponíveis, para que os usuários possam provisionar recursos de VM e do TKG com base nas necessidades do aplicativo. |
Recurso de supervisor
|
Crie qualquer recurso de Supervisor Kubernetes compatível dentro de um Namespace de Supervisor, como virtualmachines , virtualmachineservices , tanzukubernetesclusters , persistentvolumeclaims , secrets e assim por diante, dependendo do manifesto Kubernetes passado para o recurso de Supervisor que está sendo configurado. |
Recurso do TKG
|
Crie qualquer recurso do Kubernetes compatível dentro de um cluster TKG. |
CCI.Supervisor.Namespace
Solte diretamente na tela.CCI.Supervisor.Resource
Solte em um recurso de Namespace de Supervisor ou diretamente na tela.CCI.TKG.Resource
Solte em outro Recurso do TKG, em um Recurso de Supervisor ou diretamente na tela. Os recursos da CCI estão limitados a cinco níveis de aninhamento.
Na visualização de tela abaixo, você vê um recurso do TKG sendo arrastado para um recurso de supervisor chamado cciTKGCluster. Um namespace de supervisor que contém um recurso de supervisor com um recurso do TKG mostra três níveis de aninhamento.
Os exemplos a seguir mostram como os recursos da CCI, como cciNamespace e cciTKGCluster, aparecem no código YAML do seu modelo de nuvem. Cada exemplo é recortado para mostrar apenas as linhas importantes.
Exemplo de Recurso de Namespace de Supervisor
CCI.Supervisor.Namespace representa o espaço de trabalho baseado no Supervisor Kubernetes em que os recursos de Supervisor IaaS do vSphere gerenciados pelo usuário para o aplicativo são criados.
Este exemplo define um recurso de namespace de supervisor da CCI denominado cciNamespace para provisionar um Namespace de Supervisor denominado demo.
name
no código YAML.
formatVersion: 1 inputs: {} resources: cciNamespace: type: CCI.Supervisor.Namespace properties: name: demo className: default regionName: dev-us-west
Exemplo de Recurso de Supervisor
Você usa CCI.Supervisor.Resource para passar o manifesto Kubernetes para objetos do Kubernetes com suporte para execução em um contexto de namespace de supervisor.
- Para provisionar o recurso de supervisor dentro de um namespace de supervisor específico, configure a propriedade de contexto do recurso de supervisor mapeando-a para o ID do namespace de supervisor usando uma expressão de vinculação de modelo, por exemplo: context: ${resource.cciNamespace.id}.
- Para especificar os objetos a serem provisionados, configure a propriedade manifest do Recurso de Supervisor passando o manifesto Kubernetes para o objeto Kubernetes que você está criando.
formatVersion: 1 inputs: {} resources: cciTKGCluster: type: CCI.Supervisor.Resource properties: context: ${resource.cciNamespace.id} manifest: apiVersion: cluster.x-k8s.io/v1beta1 kind: Cluster metadata: name: ${input.tkg_Name} labels: tkg-cluster-selector: ${input.tkg_Name} spec: clusterNetwork: cni: name: antrea pods: cidrBlocks: - 192.168.156.0/20 services: cidrBlocks: - 10.96.0.0/12 serviceDomain: cluster.local topology: class: tanzukubernetescluster version: v1.24.9---vmware.1-tkg.4 variables: - name: storageClasses value: - tmm-kubernetes-storage-policy - name: defaultStorageClass value: tmm-kubernetes-storage-policy - name: vmClass value: ${input.controlPlaneVmClassName} - name: storageClass value: tmm-kubernetes-storage-policy controlPlane: replicas: ${input.controlPlaneCount} metadata: annotations: run.tanzu.vmware.com/resolve-os-image: os-name=photon workers: machineDeployments: - class: node-pool name: ${input.tkg_Name}-nodepool replicas: ${input.workerCount} metadata: annotations: run.tanzu.vmware.com/resolve-os-image: os-name=photon variables: overrides: - name: vmClass value: ${input.workerVmClassName}
formatVersion: 1 inputs: {} resources: vm: type: CCI.Supervisor.Resource properties: context: ${resource.cciNamespace.id} manifest: apiVersion: vmoperator.vmware.com/v1alpha1 kind: VirtualMachine metadata: finalizers: - virtualmachine.vmoperator.vmware.com generation: 1 labels: vm-selector: vm-2rfx name: vm-2rfx spec: className: best-effort-xsmall imageName: vmi-c3d184be88e1af1cd networkInterfaces: - networkType: nsx-t powerOffMode: hard powerState: poweredOn restartMode: hard storageClass: vsan-default-storage-policy suspendMode: hard wait: conditions: - type: VirtualMachinePrereqReady status: "False" reason: VirtualMachineImageNotReady indicatesFailure: true
Na tela, o namespace de supervisor cciNamespace contém dois recursos de supervisor: cciTKGCluster e vm.
Exemplo de recurso do TKG
- Para vincular um recurso TKG a um cluster TKG, você mapeia o ID de recurso do cluster TKG do supervisor com a propriedade context, por exemplo: context: ${resource.cciTKGCluster.id}.
- Se você estiver criando um namespace dentro de um recurso do TKG chamado cciTKGNamespace, por exemplo, você pode vincular esse recurso do TKG ao namespace inserindo o nome desse recurso na propriedade de contexto ou context: ${resource.cciTKGNamespace.id}.
- O manifesto Kubernetes que é passado nas propriedades do recurso especifica o tipo de objeto Kubernetes a ser provisionado.
... tkgSecret: type: CCI.TKG.Resource properties: context: ${resource.cciTKGCluster.id} manifest: apiVersion: v1 kind: Secret metadata: name: nvaie-apikey type: Opaque data: username: KM9hdCCodG9rZW4= password: ${base64_encode(input.password)} ...
Na tela, o recurso TKG tkgSecret aparece aninhado dentro do recurso TKG cciTKGCluster.
Adicionar uma propriedade de espera
- Espera de campo: lista de campos onde cada campo pode ser configurado com um caminho de propriedade e um valor. O valor deve ser correspondido antes que o recurso seja considerado concluído.
- Condição de espera: lista de condições que indicam sucesso ou falha na criação de recursos.
... wait: conditions: - type: VirtualMachinePrereqReady status: "False" reason: VirtualMachineImageNotReady indicatesFailure: true ...
Para adicionar parâmetros opcionais usando a UI, clique na lâmpada ao lado do nome do recurso no painel Código.