Como administrador de nuvem do VMware Aria Automation, você pode usar uma interface de linha de comando para habilitar o acesso à Interface de Consumo de Nuvem (CCI) e configurar construções de governança. A interface de linha de comando usa a ferramenta de linha de comando Kubernetes, ou kubectl.

Para obter uma lista completa de ações que você pode executar usando a CLI, consulte Referência da API Kubernetes para a Cloud Consumption Interface.

Pré-requisitos

  • Verifique se um Cluster de Supervisor está habilitado em uma instância do vCenter e registrado no VMware Aria Automation.
  • Verifique se você é pelo menos um membro da organização no VMware Aria Automation com a função de serviço Administrador para o Automation Assembler ou o Automation Service Broker.
  • Verifique se você:
    • Baixou o plug-in da CCI para kubectl.
    • Obteve um token de API para o usuário administrador ou definiu uma variável para armazenar sua senha de usuário.
    • Usou seu token com a opção -t ou usou suas credenciais de administrador com a opção -u para fazer login no servidor CCI e alterou o contexto padrão para CCI.
  • Verifique se você adicionou uma conta de nuvem do vCenter no Automation Assembler.

Para obter mais informações sobre qualquer um desses pré-requisitos, consulte Instalação e configuração da Cloud Consumption Interface

Etapa 1: criar um projeto e vinculações de função de projeto

Para agrupar usuários do Automation e definir o acesso a recursos de infraestrutura, você cria um projeto e vinculações de funções de projeto.

Observação: Para criar vinculações de projeto e funções de projeto usando a UI, consulte Como adicionar um projeto para minha equipe de desenvolvimento do Automation Assembler..
  1. Criar um projeto.
    kubectl create -f project.yaml
    Exemplo de arquivo project.yaml.
    apiVersion: project.cci.vmware.com/v1alpha1
    kind: Project
    metadata:
      name: <project_name>
    spec:
      description: <description_of_project>
      sharedResources: true
    
  2. Crie uma vinculação de função de projeto para atribuir funções a usuários ou grupos dentro de um projeto criado.
    kubectl create -f projectrolebinding.yaml
    O exemplo de arquivo projectrolebinding.yaml a seguir adiciona um usuário com a função de projeto administrador. Os valores da função do projeto são: admin, view ou edit.
    apiVersion: authorization.cci.vmware.com/v1alpha1
    kind: ProjectRoleBinding
    metadata:
      name: cci:user:vmware.com:<user_alias>
      namespace: <project_name>
    roleRef:
      apiGroup: authorization.cci.vmware.com
      kind: ProjectRole
      name: admin
    subjects:
    - kind: User
      name: <[email protected]>

Etapa 2: criar uma região

Crie uma região para poder atribuir supervisores a ela.

kubectl create -f region.yaml
Exemplo de arquivo region.yaml.
apiVersion: topology.cci.vmware.com/v1alpha1
kind: Region
metadata:
  name: <region_name>
spec:
  description: <description_of_region>

Etapa 3: associar um Supervisor a uma região

Para associar um Supervisor a uma região, encontre o Supervisor que você deseja atualizar e adicione a região e os rótulos que serão usados para o posicionamento do namespace.

  1. Para encontrar o Supervisor que você deseja atualizar, liste os supervisores. Os recursos do supervisor ficarão visíveis depois que o vCenter fizer a coleta dos dados.
    kubectl -n cci-config get supervisors
    O seguinte é um exemplo de resultado.
    NAME                             AGE
    demo-self-service:domain-c50     75d
    adminannie-vcenter:domain-c8     5d18h
    scale-test-vc-01:domain-c8       56d
  2. Atualizar o Supervisor denominado adminannie-vcenter:domain-c8.
    kubectl -n cci-config edit supervisor adminannie-vc:domain-c8
    O exemplo a seguir inclui pares de chave-valor metadata.labels e regiões spec.regionNames. Os rótulos ambiente: teste e fipsMode: strict podem ser usados para ajudar nas decisões de posicionamento de supervisores.
    apiVersion: infrastructure.cci.vmware.com/v1alpha1
    kind: Supervisor
    metadata:
      labels:
        environment: testing
        fipsMode: strict
      name: adminannie-vc:domain-c8
      namespace: cci-config
      uid: ccd3d154-6404-47b7-8786-bb2d49ad9f5d
    spec:
      cloudAccountName: adminannie-vc
      externalId: domain-c8
      externalName: wcp-test-dc-cluster
      regionNames:
        - <region_name>
Para visualizar uma lista de regiões de Supervisor na UI do Automation Assembler ou Automation Service Broker, acesse:
  • Infraestrutura > Configurar > Regiões de Supervisores
  • Ou clique na guia Regiões de Supervisores de um projeto localizado em Infraestrutura > Administração > Projetos
Consulte Visualizar construções de administrador.

Etapa 4: criar uma vinculação de região e uma configuração de vinculação de região

Crie uma vinculação de região e uma configuração de vinculação de região para que os usuários em um projeto possam criar Namespaces de Supervisor nos Supervisores de uma região.

  1. Crie uma vinculação de região.
    kubectl create -f regionbinding.yaml
    Exemplo de arquivo regionbinding.yaml.
    apiVersion: topology.cci.vmware.com/v1alpha1
    kind: RegionBinding
    metadata:
      name: <region_name>
      namespace: <project_name>

    Como uma vinculação de região não inclui configurações de posicionamento de Supervisor, você também deve criar uma Configuração de Vinculação de Região.

  2. Crie uma Configuração de Vinculação de Região para cada vinculação de região criada. Você pode incluir expressões de correspondência que são usadas para filtragem adicional de Supervisores. Rótulos de Supervisor são usados para permitir o posicionamento de Namespaces de Supervisor em um subconjunto dos Supervisores em uma região.
    kubectl create -f regionbindingconfig.yaml
    No exemplo de arquivo regionbindingconfig.yaml a seguir, quaisquer supervisores que correspondam ao rótulo de ambiente de teste podem hospedar os Namespaces de Supervisor criados naquele projeto e região.
    apiVersion: topology.cci.vmware.com/v1alpha1
    kind: RegionBindingConfig
    metadata:
      name: <region_name>
      namespace: <project_name>
    spec:
      supervisorSelector:
        matchExpressions:
          - key: environment
            operator: In
            values:
              - testing

Etapa 5: criar uma Classe de Namespace de Supervisor e adicionar uma configuração de Classe de Namespace de Supervisor

Para definir modelos de namespace com parâmetros opcionais que podem ser usados para personalizar as configurações de namespace durante a criação, crie uma Classe de Namespace de Supervisor. Em seguida, você pode criar uma Configuração de Classe de Namespace de Supervisor com expressões de correspondência que são usadas para filtragem adicional de supervisores usados para posicionamento de Namespaces de Supervisor.

  1. Crie uma Classe de Namespace de Supervisor.
    kubectl create -f supervisornamespaceclass.yaml
    No exemplo de arquivo supervisornamespaceclass.yaml a seguir, a entrada opcional em parameters reflete os parâmetros da Classe de Namespace que os usuários fornecem ao criar o namespace. Todas as entradas devem ter valores padrão. Os valores são usados para personalizar as classes de armazenamento, limites e restrições adicionais.
    apiVersion: infrastructure.cci.vmware.com/v1alpha1
    kind: SupervisorNamespaceClass
    metadata:
      name: <class_name>
    spec:
      description: supervisor namespace class
      parameters:
        - name: podCountLimit
          type: Integer
          minimum: 100
          maximum: 1000
          default: 500

    A Classe de Namespace de Supervisor não contém uma configuração de posicionamento de Supervisor e, portanto, você também deve criar uma Configuração de Classe de Namespace de Supervisor.

  2. Crie uma Configuração de Classe de Namespace de Supervisor.
    kubectl create -f supervisornamespaceclassconfig.yaml
    O YAML é definido com todas as configurações de namespace de supervisor que você deseja que sejam herdadas pelo namespace de supervisor e pode incluir:
    • Bibliotecas de conteúdo que contêm as imagens usadas pelo VM Service ao provisionar máquinas virtuais.
    • Classes de Máquina Virtual, como Tamanhos de camisetas.
    • Limites de Recursos impostos por CPU, Memória e Armazenamento.
    • Classes de Armazenamento a serem usadas.
    • SupervisorSelector para decidir qual supervisor usar para criação de namespace de supervisor.
    No exemplo de arquivo supervisornamespaceclassconfig.yaml a seguir, supervisorSelector é usado para corresponder rótulos de supervisor.
    apiVersion: infrastructure.cci.vmware.com/v1alpha1
    kind: SupervisorNamespaceClassConfig
    metadata:
      name: <class_name>
    spec:
      storageClasses:
        - name: management-storage-policy-thin
      vmClasses:
        - name: big-vm-class
        - name: small-vm-class
      contentSources:
        - name: global-content-library
          type: ContentLibrary
      # Below limits are an EXAMPLE! Setting them may cause unexpected behavior in your namespace
      # Either set reasonable limits, or remove the below section to get unlimited resources
      limits:
        - name: pod_count
          limit: "((parameters.podCountLimit))"
      supervisorSelector:
        matchExpressions:
          - key: environment
            operator: In
            values:
              - testing
    

Etapa 6: associar uma Classe de Namespace a um projeto

Para permitir a criação de um Namespace de Supervisor usando a Classe de Namespace de Supervisor em um projeto, crie uma Vinculação de Classe de Namespace de Supervisor.

kubectl create -f supervisornamespaceclassbinding.yaml
Exemplo de arquivo supervisornamespaceclassbinding.yaml.
  • namespace especifica o nome do projeto que você deseja associar à Classe de Namespace de Supervisor.
  • overrideParameters são opcionais. Eles são usados para forçar um valor de parâmetro, ignorando os valores de parâmetro fornecidos pelo usuário quando o Namespace de Supervisor é criado. Os tipos válidos são Inteiro, String ou Boolean.
apiVersion: infrastructure.cci.vmware.com/v1alpha1
kind: SupervisorNamespaceClassBinding
metadata:
  name: <class_name>
  namespace: <project_name>
spec:
  overrideParameters:
    - name: podCountLimit
      type: Integer
      const: 1000