Los administradores y los desarrolladores pueden realizar acciones en los recursos de la API de la interfaz de consumo de nube (CCI) que expone el servidor de la API de Kubernetes de CCI.

Según el tipo de recurso, los administradores y los desarrolladores pueden utilizar la API para realizar las siguientes acciones.

Tipo de recurso Verbos de acción para administradores Verbos de acción para desarrolladores
CloudAccount get, list
Supervisor get, patch, list
Project create, get, update, patch, delete, list get, list
ProjectRole get, list get, list
ProjectRoleBinding create, get, update, patch, delete, list get, list
Region create, get, update, patch, delete, list get, list
RegionBinding create, get, update, patch, delete, list get, list
RegionBindingConfig create, get, update, patch, delete, list
SupervisorNamespaceClass create, get, update, patch, delete, list get, list
SupervisorNamespaceClassConfig create, get, update, patch, delete, list
SupervisorNamespaceClassBinding create, get, update, patch, delete, list get, list
SupervisorNamespace create, get, delete, list create, get, delete, list
Los siguientes ejemplos muestran la llamada y las respuestas de la CLI. Para usar la CLI, es necesario que haya hecho lo siguiente:
  • Descargó el complemento kubectl de CCI.
  • Obtenido un token de API.
  • Iniciado sesión en el servidor de CCI.
Consulte Preparar el uso de la interfaz de línea de comandos para realizar tareas de CCI.

Proyectos y usuarios

Proyecto
Los administradores crean proyectos para agrupar usuarios y establecer el acceso a los orígenes de contenido, como plantillas de nube en Automation Assembler o a elementos del catálogo en Automation Service Broker.
Project incluye las siguientes propiedades:
  • metadata.name Nombre del proyecto.
  • spec.description Descripción opcional.
  • spec.sharedResources Si el valor es true, el proyecto comparte los espacios de nombres de supervisor con otros usuarios del proyecto. Si el valor es false, el proyecto limita el acceso al espacio de nombres a los administradores o al usuario que creó el espacio de nombres.
Cree una entrada de ejemplo de proyecto.
apiVersion: project.cci.vmware.com/v1alpha1
kind: Project
metadata:
  name: demo-project
spec:
  description: This is a demo project
  sharedResources: true
Función del proyecto
La función de proyecto refleja las funciones disponibles de administrador, vista o edición que se pueden asignar a un usuario en un proyecto.
Función del proyecto Descripción
admin Permite modificar y eliminar el espacio de nombres.
ver Una función de solo lectura en el espacio de nombres.
editar Permite modificar el espacio de nombres.
Las funciones del proyecto son de solo lectura y proporcionan funciones disponibles al crear el enlace de funciones del proyecto.

Entrada de ejemplo de lectura de la función del proyecto.

apiVersion: authorization.cci.vmware.com/v1alpha1
kind: ProjectRole
metadata:
  name: admin
spec:
  description: project administrator
Enlace de funciones del proyecto
El enlace de funciones del proyecto se utiliza para asignar a un usuario o grupo una función en un proyecto.
ProjectRoleBinding incluye las siguientes propiedades:
  • metadata.name Nombre del enlace de funciones del proyecto; requiere un formato específico para reflejar el tipo de asunto (usuario o grupo) y el nombre del asunto:
    cci:<user/group>:<subject domain>:<subject name>
  • metadata.namespace Describe el nombre del proyecto.
  • subjects Describe el usuario o grupo. Solo se permite una entrada.
  • roleRef Describe la función.
Entrada de ejemplo de creación de enlace de funciones del proyecto.
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

Instancias de vCenter y supervisores

Esta categoría se ocupa de la infraestructura, y sus funciones son solo para administradores.

Cuenta de nube
vSphere+ crea las cuentas de nube de forma automática o un administrador lo hace manualmente para registrar una instancia de vCenter y habilitar centros de datos con supervisores.
Resultado de ejemplo de creación de cuenta de nube.
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
El sistema crea un supervisor después de que se complete la recopilación de datos de vCenter. El administrador puede actualizar el supervisor con etiquetas de capacidad para la colocación y asignarlo a una región.
  • metadata.labels Los administradores definen etiquetas con una configuración de clave-valor que refleja las capacidades del supervisor. Las etiquetas se utilizan para filtrar supervisores según las capacidades cuando se crea un espacio de nombres.
  • spec.regionNames Los administradores definen los nombres de las regiones para que se pueda asignar un supervisor a una región. Un supervisor solo se puede asignar a una única región, y no se lo asigna a una región de forma predeterminada.
Actualice el resultado de ejemplo de supervisor.
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>

Topología

Región
Un administrador crea regiones como un mecanismo de agrupamiento para uno o varios supervisores. Las regiones pueden basarse en diversos parámetros como la geografía o la infraestructura y pueden incluir supervisores de varias instancias de vCenter.
Entrada de ejemplo de creación de región.
apiVersion: topology.cci.vmware.com/v1alpha1
kind: Region
metadata:
  name: us-west1
spec:
  description: The us-west1 region
Enlace de regiones
Un administrador crea enlaces de regiones para asociar regiones con proyectos.

Para que un usuario de un proyecto cree en espacios de nombres de supervisor, deben existir tanto RegionBinding como RegionBindingConfig.

RegionBinding incluye las siguientes propiedades:
  • metadata.name Nombre de región; debe coincidir con una región existente.
  • metadata.namespace Nombre del proyecto.
Entrada de ejemplo de creación de enlace de regiones.
apiVersion: topology.cci.vmware.com/v1alpha1
kind: RegionBinding
metadata:
  name: us-west1
  namespace: demo-project
Configuración de enlace de regiones
Para controlar la lógica de colocación de supervisores por región en un proyecto, un administrador define RegionBindingConfig. Con RegionBindingConfig definido, un administrador puede utilizar pares clave-valor de etiqueta de supervisor para refinar aún más la asociación de supervisores específicos con proyectos. Por ejemplo, un administrador puede utilizar una especificación de key: environment para seleccionar un supervisor especificado a fin de realizar pruebas con value: testing.
RegionBindingConfig incluye las siguientes propiedades:
  • metadata.name Nombre de región; debe coincidir con una región existente.
  • metadata.namespace Nombre del proyecto.
  • spec.supervisorSelector selecciona los supervisores del proyecto que están disponibles para crear un espacio de nombres. Para seleccionar el supervisor correcto, matchExpressions define la clave de etiqueta de supervisor, el operador coincidente y el valor de la coincidencia.
    La coincidencia de expresiones spec.supervisorSelector utiliza los siguientes operadores:
    • operator: In Las pruebas de enlace de regiones para ver si el par clave-valor coincide con el par clave-valor de etiqueta de supervisor. matchExpressions es una matriz, pero actualmente está limitada a un valor de entrada único.
    • operator: NotIn Las pruebas de enlace de regiones para ver si el par clave-valor no coincide con el par clave-valor de etiqueta de supervisor. matchExpressions es una matriz, pero actualmente está limitada a un valor de entrada único.
    • operator: Exists El enlace de regiones busca una coincidencia con un supervisor que contiene la clave de etiqueta. Los valores no se utilizan.
    • operator: DoesNotExist El enlace de regiones busca un supervisor que no contiene la clave de etiqueta. Los valores no se utilizan.
Entrada de ejemplo de creación de configuración de enlace de regiones.
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

Clases de espacio de nombres de supervisor

Clase de espacio de nombres de supervisor
SupervisorNamespaceClass define la plantilla de espacio de nombres y los parámetros opcionales que se pueden utilizar para personalizar la configuración del espacio de nombres durante la creación.
El campo predeterminado especifica el valor del parámetro que se utiliza si un usuario no proporciona el valor del parámetro en la creación del espacio de nombres. Por ejemplo, si default: false, false es el valor del parámetro.
Nota: Para garantizar que un usuario pueda crear un espacio de nombres con valores de parámetro parciales o sin valores de parámetro, cada parámetro debe incluir un campo y un valor predeterminados.
Definiciones de tipo de parámetro:
Tipo de parámetro Propiedades
Booleano
  • default Valor booleano predeterminado.
  • enum Lista de valores booleanos permitidos. Se puede utilizar para que un parámetro tenga un solo valor: true o false.
Entero
  • minimum Valor entero mínimo.
  • maximum Valor entero máximo.
  • default Valor entero predeterminado.
  • enum Lista de valores enteros permitidos.
String
  • minLength Longitud mínima de cadena.
  • maxLength Longitud máxima de cadena.
  • default Valor de cadena predeterminado si el usuario no lo proporciona.
  • pattern Patrón de expresión regular para validarlo con el valor.
  • enum Lista de valores de cadena permitidos.
Entrada de ejemplo de creación de clases de espacio de nombres de supervisor.
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
Configuración de clase de espacio de nombres de supervisor
Para especificar la implementación de clases de espacio de nombres de supervisor, un administrador crea un SupervisorNamespaceClassConfig con la configuración del espacio de nombres. Para que un proyecto tenga acceso a la clase de espacio de nombres de supervisor, deben existir tanto SupervisorNamespaceClass como SupervisorNamespaceClassConfig.
SupervisorNamespaceClassConfig incluye las siguientes propiedades:
  • metadata.name Nombre de clase del espacio de nombres de supervisor.
  • metadata.namespace Nombre del proyecto.
  • spec.storageClasses Nombres de clases de almacenamiento y límites en megabytes.
  • spec.vmClasses Nombres de las clases de máquinas virtuales.
  • spec.contentSource Nombres de las bibliotecas de contenido definidos con type: ContentLibrary.
  • spec.limits Nombres y valores de límites. Los valores límite válidos incluyen:
    • 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 del proyecto que están disponibles para crear un espacio de nombres. Para seleccionar el supervisor correcto, matchExpressions define la clave de etiqueta, el operador coincidente y el valor de etiqueta para la coincidencia.

Un administrador expone los parámetros de clase que se pueden consumir al definir los valores de configuración del espacio de nombres para que los usuarios puedan personalizar la configuración del espacio de nombres durante el tiempo de solicitud.

Entrada de ejemplo de creación de configuración de clase de espacio de nombres 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 
En este ejemplo, se utilizan parámetros del ejemplo de clase de espacio de nombres de supervisor de la siguiente manera:
  • ((parameters.fastStorageClass ? 'fast-storage-class' : 'standard-storage-class')) muestra una comprobación condicional para especificar un nombre de clase de almacenamiento. fastStorageClass es un tipo booleano.
    • Si el usuario especifica el valor del parámetro como true, el nombre es fast-storage-class.
    • Si el usuario especifica el valor como false, el nombre es standard-storage-class.
  • ((parameters.podCountLimit)) muestra cómo especificar un valor para el límite de recuento de pods. podCountLimit es un tipo de número entero.
    • Si el usuario especifica un valor que se encuentra dentro del rango de valores mínimos y máximos de 100 a 1000 como se define en la clase de espacio de nombres de supervisor, ese es el valor para el límite de recuento de pods.
    • Si el usuario no especifica ningún valor, el límite de recuento de pods es el valor predeterminado de 500, como se define en la clase de espacio de nombres de supervisor.
    • Si el usuario especifica un valor fuera del rango de valores mínimos y máximos, el valor no es válido y se producirá un error en la creación del espacio de nombres de supervisor que muestre que el límite de recuento de pods está fuera del rango de valores permitidos.
Enlace de clase de espacio de nombres de supervisor
El enlace de clases de espacio de nombres de supervisor permite el uso de clases de espacio de nombres de supervisor al crear un espacio de nombres de supervisor en un proyecto.
SupervisorNamespaceClassBinding incluye las siguientes propiedades:
  • metadata.name Nombre del enlace de clase de espacio de nombres de supervisor.
  • metadata.namespace Nombre del proyecto.
  • spec.overrideParameters Estos parámetros que crea el administrador son valores definidos que un usuario no puede cambiar al crear el espacio de nombres de supervisor. const especifica el valor del parámetro. Estos parámetros son opcionales y, si se definen, no son obligatorios para todos los parámetros de clase.
Entrada de ejemplo de creación de enlace de clase de espacio de nombres de supervisor.
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
En este ejemplo, name: environment es un parámetro de reemplazo que utiliza el parámetro environment de la clase de espacio de nombres de supervisor. Al especificar const: testing, el usuario solo puede crear un espacio de nombres de supervisor mediante esta clase en un entorno de prueba.

Espacios de nombres de supervisor

Espacio de nombres de supervisor
Los usuarios pueden crear espacios de nombres de supervisor en una región específica mediante una clase de espacio de nombres de supervisor como plantilla. Si se exponen, se pueden utilizar parámetros de clase opcionales para definir la configuración del espacio de nombres.
SupervisorNamespace incluye las siguientes propiedades:
  • metadata.name Nombre del espacio de nombres en el proyecto y en el supervisor.
  • metadata.namespace Nombre del proyecto.
  • spec.regionName Nombre de la región.
  • spec.className Nombre de clase del espacio de nombres de supervisor.
  • spec.classParameters Par valor-clave opcional para reemplazar los valores de parámetro predeterminados.
  • spec.description Descripción opcional del espacio de nombres.
Entrada de ejemplo de creación de espacio de nombres de supervisor.
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
Resultado de ejemplo de creación de espacio de nombres 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>