Administradores e desenvolvedores podem atuar em recursos de API da Cloud Consumption Interface (CCI) expostos pelo servidor da API Kubernetes da CCI.
Dependendo do tipo de recurso, eles podem usar a API para executar as seguintes ações.
Tipo de recurso | Verbos de ação de administradores | Verbos de ação de desenvolvedores |
---|---|---|
CloudAccount | obter, listar | |
Supervisor | obter, corrigir, listar | |
Project | criar, obter, atualizar, corrigir, excluir, listar | obter, listar |
ProjectRole | obter, listar | obter, listar |
ProjectRoleBinding | criar, obter, atualizar, corrigir, excluir, listar | obter, listar |
Region | criar, obter, atualizar, corrigir, excluir, listar | obter, listar |
RegionBinding | criar, obter, atualizar, corrigir, excluir, listar | obter, listar |
RegionBindingConfig | criar, obter, atualizar, corrigir, excluir, listar | |
SupervisorNamespaceClass | criar, obter, atualizar, corrigir, excluir, listar | obter, listar |
SupervisorNamespaceClassConfig | criar, obter, atualizar, corrigir, excluir, listar | |
SupervisorNamespaceClassBinding | criar, obter, atualizar, corrigir, excluir, listar | obter, listar |
SupervisorNamespace | criar, obter, excluir, listar | criar, obter, excluir, listar |
Os exemplos a seguir mostram a chamada da CLI e suas respostas. Usar a CLI requer que você tenha feito o seguinte:
- Baixou o plug-in da CCI para kubectl.
- Obtido um token de API.
- Feito login no servidor da CCI.
Projetos e Usuários
- Projeto
-
O administrador cria projetos para agrupar usuários e definir o acesso a fontes de conteúdo, como modelos de nuvem no
Automation Assembler ou itens de catálogo no
Automation Service Broker.
Project inclui as seguintes propriedades:
metadata.name
Nome do projeto.-
spec.description
Descrição opcional. -
spec.sharedResources
Se "true", o projeto compartilha Namespaces de Supervisor com outros usuários no projeto. Se "false", o projeto limita o acesso ao namespace aos administradores ou ao usuário que criou o namespace.
apiVersion: project.cci.vmware.com/v1alpha1 kind: Project metadata: name: demo-project spec: description: This is a demo project sharedResources: true
- Função do Projeto
-
A função de projeto reflete as funções disponíveis de administrador, visualização ou edição que podem ser atribuídas a um usuário em um projeto.
Função do Projeto Descrição administrador Permite a modificação e a exclusão do namespace. visualizar Uma função somente leitura no namespace. editar Permite a modificação do namespace. Exemplo de entrada da função para ler projeto.
apiVersion: authorization.cci.vmware.com/v1alpha1 kind: ProjectRole metadata: name: admin spec: description: project administrator
- Vinculação de Função de Projeto
-
A vinculação de função de projeto é usada para atribuir a um usuário ou grupo uma função em um projeto.
ProjectRoleBinding inclui as seguintes propriedades:
metadata.name
Nome da vinculação de função de projeto e requer um formato específico para refletir o tipo de assunto (usuário ou grupo) e o nome do assunto:cci:<user/group>:<subject domain>:<subject name>
metadata.namespace
Descreve o nome do projeto.-
subjects
Descreve o usuário ou grupo. Apenas uma entrada é permitida. -
roleRef
Descreve a função.
apiVersion: authorization.cci.vmware.com/v1alpha1 kind: ProjectRoleBinding metadata: # name must match the subject kind and name name: cci:user:vmware.com:hello namespace: demo-project subjects: - kind: User # User / Group name: [email protected] roleRef: apiGroup: authorization.cci.vmware.com kind: ProjectRole name: admin # admin / edit / view
vCenters e Supervisores
Essa categoria trata de infraestrutura e suas funções são somente para administradores.
- Conta de Nuvem
-
As contas de nuvem são criadas automaticamente pelo vSphere+ ou manualmente por um administrador para registrar um
vCenter e habilitar centros de dados com Supervisores.
Exemplo de saída para criar conta de nuvem.
Name: cci-ui-volume-service Namespace: cci-config Labels: <none> Annotations: infrastructure.cci.vmware.com/data-collection-status: FINISHED infrastructure.cci.vmware.com/last-data-collection-timestamp: 2022-10-24T22:06:08.603Z API Version: infrastructure.cci.vmware.com/v1alpha1 Kind: CloudAccount Metadata: Creation Timestamp: 2022-10-17T12:18:28Z UID: 2163e7cf-f698-3f1f-afca-f3daa8c730fa Spec: Address: 127.193.29.114 Cloud Proxy Name: 2d164fed-bbf3-47cc-8e6b-5226c5277ee4 Events: <none>
- Supervisor
-
Um Supervisor é criado pelo sistema após a conclusão da coleta de dados pelo
vCenter. O administrador pode atualizar o Supervisor com rótulos de capacidade para posicionamento e atribuí-lo a uma região.
-
metadata.labels
Os administradores definem rótulos com configurações de chave/valor que refletem os recursos do Supervisor. Os rótulos são usados para filtrar Supervisores com base em recursos ao criar um namespace. spec.regionNames
Os administradores definem nomes de regiões para que um Supervisor possa ser atribuído a uma região. Um Supervisor pode ser atribuído a uma única região e não é atribuído a uma região por padrão.
Name: bugbash-vc:domain-c8 Namespace: cci-config Labels: environment=bug-bash-9 Annotations: infrastructure.cci.vmware.com/cloud-account-id: 33a0b2d0-91c8-4629-b04a-65448494d54e API Version: infrastructure.cci.vmware.com/v1alpha1 Kind: Supervisor Metadata: Creation Timestamp: 2022-09-28T04:22:38Z UID: fbd10d08-bc56-4ec2-93f8-693a7a4b2003 Spec: Cloud Account Name: bugbash-vc Display Name: wcp-test-dc-cluster External Id: domain-c8 Region Names: us-demo1 Status: Power State: On Events: <none>
-
Topologia
- Região
-
Um administrador cria regiões como um mecanismo de agrupamento para um ou mais Supervisores. Regiões podem ser baseadas em vários parâmetros, como geografia ou infraestrutura, e podem incluir Supervisores de vários vCenters.
Exemplo de entrada para criar região.
apiVersion: topology.cci.vmware.com/v1alpha1 kind: Region metadata: name: us-west1 spec: description: The us-west1 region
- Vinculação de Região
-
Um administrador cria Vinculações de Região para associar regiões a projetos.
Para um usuário em um projeto criar dois Namespaces de Supervisor, tanto RegionBinding quanto RegionBindingConfig devem existir.
RegionBinding inclui as seguintes propriedades:metadata.name
Nome da região e deve corresponder a uma região existente.metadata.namespace
Nome do projeto.
Exemplo de entrada de vinculação para criar região.apiVersion: topology.cci.vmware.com/v1alpha1 kind: RegionBinding metadata: name: us-west1 namespace: demo-project
- Configuração de Vinculação de Região
-
Para controlar a lógica de posicionamento do supervisor por região em um projeto, um administrador define
RegionBindingConfig. Com
RegionBindingConfig definido, um administrador pode usar pares de chave/valor do rótulo do Supervisor para refinar ainda mais a associação de Supervisores específicos a projetos. Por exemplo, um administrador pode usar uma especificação
key: environment
para selecionar um Supervisor especificado para testes comvalue: testing
.RegionBindingConfig inclui as seguintes propriedades:Exemplo de entrada de Configuração de Vinculação de Região.metadata.name
Nome da região e deve corresponder a uma região existente.metadata.namespace
Nome do projeto.spec.supervisorSelector
seleciona os supervisores no projeto que estão disponíveis para criar um namespace. Para selecionar o supervisor correto,matchExpressions
defina a chave do rótulo do Supervisor, o operador correspondente e o valor para a correspondência.A correspondência de expressõesspec.supervisorSelector
usa os seguintes operadores:operator: In
Os testes de vinculação de região verificam se o valor-chave corresponde ao valor-chave do rótulo do Supervisor. OmatchExpressions
é uma matriz, mas a matriz está atualmente limitada a um único valor de entrada.operator: NotIn
Os testes de vinculação de região verificam se o valor-chave não corresponde ao valor-chave do Rótulo do Supervisor. OmatchExpressions
é uma matriz, mas a matriz está atualmente limitada a um único valor de entrada.operator: Exists
A vinculação de região procura uma correspondência com um Supervisor que contém a chave de rótulo. Valores não são utilizados.operator: DoesNotExist
A vinculação de região procura um Supervisor que não contém a chave de rótulo. Valores não são utilizados.
apiVersion: topology.cci.vmware.com/v1alpha1 kind: RegionBindingConfig metadata: name: us-west1 namespace: demo-project spec: supervisorSelector: matchExpressions: - key: environment operator: In values: - testing - key: storage operator: Exists - key: storage operator: NotIn values: - encrypted
Classes de Namespace de Supervisor
- Classe de Namespace de Supervisor
-
SupervisorNamespaceClass define o modelo de namespace e parâmetros opcionais que podem ser usados para personalizar as configurações de namespace durante a criação.
O campo padrão especifica o valor do parâmetro que será usado se um usuário não fornecer o valor do parâmetro na criação do namespace. Por exemplo, seDefinições de tipos de parâmetro:
default: false
,false
será o valor do parâmetro.Observação: Para garantir que um usuário possa criar um namespace com valores de parâmetros parciais ou nenhum valor, cada parâmetro deve incluir um campo e um valor padrão.Tipo de parâmetro Propriedades Boolean default
Valor booleano padrão.enum
Lista de valores boolean permitidos. Pode ser usada para que um parâmetro tenha apenas um valor:true
oufalse
.
Inteiro minimum
Valor inteiro mínimo.maximum
Valor inteiro máximo.default
Valor inteiro padrão.enum
Lista de valores inteiros permitidos.
Cadeia de caracteres minLength
Comprimento mínimo da string.maxLength
Comprimento máximo da string.default
Valor de string padrão, se não for fornecido pelo usuário.pattern
Padrão de regex para validar em relação ao valor.enum
Lista de valores de string permitidos.
apiVersion: infrastructure.cci.vmware.com/v1alpha1 kind: SupervisorNamespaceClass metadata: name: gold-with-gpu spec: description: Gold with GPU enabled supervisor namespace parameters: - name: environment type: String default: testing enum: - testing - staging - production - name: fastStorageClass type: Boolean default: false - name: podCountLimit type: Integer minimum: 100 maximum: 1000 default: 500
- Configuração de Classe de Namespace de Supervisor
-
Para especificar a implementação de Classes de Namespace de Supervisor, um administrador cria um
SupervisorNamespaceClassConfig com configurações de namespace. Para que um projeto tenha acesso à Classe de Namespace de Supervisor, tanto
SupervisorNamespaceClass quanto
SupervisorNamespaceClassConfig devem existir.
SupervisorNamespaceClassConfig inclui as seguintes propriedades:
metadata.name
Nome da Classe do Namespace de Supervisor.metadata.namespace
Nome do projeto.spec.storageClasses
Nomes de classes de armazenamento e limites em megabytes.spec.vmClasses
Nomes das classes de VM.spec.contentSource
Nomes de bibliotecas de conteúdo que são todos definidos comtype: ContentLibrary
.spec.limits
Nomes e valores limite. Os valores limite válidos incluem:config_map_count
cpu_limit
cpu_limit_default
cpu_request_default
daemon_set_count
deployment_count
job_count
memory_limit
memory_limit_default
memory_request_default
persistent_volume_claim_count
pod_count
replica_set_count
replication_controller_count
secret_count
service_count
stateful_set_count
storage_request_limit
spec.supervisorSelector
Supervisores no projeto que estão disponíveis para criar um namespace. Para selecionar o supervisor correto,matchExpressions
defina a chave do rótulo, o operador correspondente e o valor do rótulo para a correspondência.
Um administrador expõe parâmetros de classe que podem ser consumidos ao definir os valores das configurações do namespace, para que os usuários possam personalizar as configurações do namespace durante o tempo de solicitação.
Exemplo de entrada para Criar Configuração de Classe de Namespace de Supervisor.apiVersion: infrastructure.cci.vmware.com/v1alpha1 kind: SupervisorNamespaceClassConfig metadata: name: gold-with-gpu spec: storageClasses: - name: wcp-storage-class limit: "100" - name: "((parameters.fastStorageClass ? 'fast-storage-class' : 'standard-storage-class'))" vmClasses: - name: big-vm-class - name: small-vm-class contentSources: - name: global-content-library type: ContentLibrary - name: "((parameters.environment))-content-library" type: ContentLibrary limits: - name: cpu_limit limit: "1000" - name: pod_count limit: "((parameters.podCountLimit))" supervisorSelector: matchExpressions: - key: gpu-enabled operator: In values: - true
Este exemplo usa parâmetros do exemplo de Classe de Namespace de Supervisor, da seguinte forma:((parameters.fastStorageClass ? 'fast-storage-class' : 'standard-storage-class'))
mostra uma verificação condicional para especificar um nome de classe de armazenamento.fastStorageClass
é um tipo Boolean.- Se o usuário especificar o valor do parâmetro como "true", o nome será
fast-storage-class
. - Se o usuário especificar o valor como "false", o nome será
standard-storage-class
.
- Se o usuário especificar o valor do parâmetro como "true", o nome será
((parameters.podCountLimit))
mostra como especificar um valor para o limite de contagem de pods.podCountLimit
é um tipo inteiro.- Se o usuário especificar um valor que esteja dentro dos valores mínimo e máximo de 100 a 1000, conforme definido na Classe de Namespace de Supervisor, esse será o valor para o limite de contagem de pods.
- Se o usuário não especificar um valor, o limite de contagem de pods será o valor padrão de 500, conforme definido na Classe de Namespace de Supervisor.
- Se o usuário especificar um valor fora dos valores mínimo e máximo, o valor será inválido, e a criação do Namespace de Supervisor falhará com um erro mostrando que o limite de contagem de pods está fora do intervalo de valores permitidos.
- Vinculação de Classe de Namespace de Supervisor
-
A Vinculação de Classe de Namespace de Supervisor permite o uso de Classes de Namespace de Supervisor ao criar um Namespace de Supervisor em um projeto.
SupervisorNamespaceClassBinding inclui as seguintes propriedades:
metadata.name
Nome da Vinculação de Classe de Namespace de Supervisor.metadata.namespace
Nome do projeto.spec.overrideParameters
Criados pelo administrador, esses parâmetros definem valores que não podem ser alterados por um usuário ao criar o Namespace de Supervisor.const
especifica o valor do parâmetro. Esses parâmetros são opcionais e, se definidos, não são obrigatórios para todos os parâmetros de classe.
Exemplo de entrada para Criar Vinculação Classe de Namespace de Supervisor.Neste exemplo,apiVersion: infrastructure.cci.vmware.com/v1alpha1 kind: SupervisorNamespaceClassBinding metadata: name: gold-with-gpu namespace: demo-project spec: overrideParameters: - name: environment type: string const: testing supervisorNamespaceClassRef: apiVersion: infrastructure.cci.vmware.com/v1alpha1 kind: SupervisorNamespaceClass name: gold
name: environment
é um parâmetro de substituição usando o parâmetroenvironment
da Classe de Namespace de Supervisor. Ao especificarconst: testing
, o usuário só pode criar um Namespace de Supervisor usando essa classe em um ambiente de teste.
Namespaces de Supervisor
- Namespace de Supervisor
-
Os usuários podem criar Namespaces de Supervisor em uma região específica usando uma Classe de Namespace de Supervisor como modelo. Se expostos, parâmetros de classe opcionais podem ser usados para definir as configurações do Namespace.
SupervisorNamespace inclui as seguintes propriedades:Exemplo de entrada para Criar Namespace de Supervisor.
metadata.name
Nome do namespace no projeto e no Supervisor.metadata.namespace
Nome do projeto.spec.regionName
Nome da região.spec.className
Nome da Classe do Namespace de Supervisor.spec.classParameters
Valor-chave opcional para substituir valores de parâmetros padrão.spec.description
Descrição opcional do namespace.
apiVersion: infrastructure.cci.vmware.com/v1alpha1 kind: SupervisorNamespace metadata: name: demo-ns5 namespace: demo-project spec: description: Demonstrating supervisor namespace creation regionName: us-west2 className: bronze
Exemplo de saída para Criar Namespace de Supervisor.Name: demo-1 Namespace: sprint-demo-project Labels: <none> Annotations: infrastructure.cci.vmware.com/wcp-address: 10.161.81.40 API Version: infrastructure.cci.vmware.com/v1alpha1 Kind: SupervisorNamespace Metadata: Creation Timestamp: 2022-09-13T01:55:57Z UID: my-example-demo-1 Spec: Class Name: demo-class Class Parameters: Pods: 30 Description: Region Name: us-demo-1 Status: Conditions: Last Transition Time: 2022-09-13T01:55:58Z Status: True Type: Ready Phase: Created Events: <none>