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 |
- Descargó el complemento kubectl de CCI.
- Obtenido un token de API.
- Iniciado sesión en el servidor 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.nameNombre del proyecto.-
spec.descriptionDescripción opcional. -
spec.sharedResourcesSi 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.
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.
Las funciones del proyecto son de solo lectura y proporcionan funciones disponibles al crear el enlace de funciones del 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. 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.nameNombre 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.namespaceDescribe el nombre del proyecto.-
subjectsDescribe el usuario o grupo. Solo se permite una entrada. -
roleRefDescribe la función.
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.labelsLos 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.regionNamesLos 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.
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.nameNombre de región; debe coincidir con una región existente.metadata.namespaceNombre 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: environmentpara seleccionar un supervisor especificado a fin de realizar pruebas convalue: testing.RegionBindingConfig incluye las siguientes propiedades:Entrada de ejemplo de creación de configuración de enlace de regiones.metadata.nameNombre de región; debe coincidir con una región existente.metadata.namespaceNombre del proyecto.spec.supervisorSelectorselecciona los supervisores del proyecto que están disponibles para crear un espacio de nombres. Para seleccionar el supervisor correcto,matchExpressionsdefine la clave de etiqueta de supervisor, el operador coincidente y el valor de la coincidencia.La coincidencia de expresionesspec.supervisorSelectorutiliza los siguientes operadores:operator: InLas pruebas de enlace de regiones para ver si el par clave-valor coincide con el par clave-valor de etiqueta de supervisor.matchExpressionses una matriz, pero actualmente está limitada a un valor de entrada único.operator: NotInLas pruebas de enlace de regiones para ver si el par clave-valor no coincide con el par clave-valor de etiqueta de supervisor.matchExpressionses una matriz, pero actualmente está limitada a un valor de entrada único.operator: ExistsEl enlace de regiones busca una coincidencia con un supervisor que contiene la clave de etiqueta. Los valores no se utilizan.operator: DoesNotExistEl enlace de regiones busca un supervisor que no contiene la clave de etiqueta. Los valores no se utilizan.
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, siDefiniciones de tipo de parámetro:
default: false,falsees 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.
Entrada de ejemplo de creación de clases de espacio de nombres de supervisor.Tipo de parámetro Propiedades Booleano defaultValor booleano predeterminado.enumLista de valores booleanos permitidos. Se puede utilizar para que un parámetro tenga un solo valor:trueofalse.
Entero minimumValor entero mínimo.maximumValor entero máximo.defaultValor entero predeterminado.enumLista de valores enteros permitidos.
String minLengthLongitud mínima de cadena.maxLengthLongitud máxima de cadena.defaultValor de cadena predeterminado si el usuario no lo proporciona.patternPatrón de expresión regular para validarlo con el valor.enumLista de valores de cadena 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 - 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.nameNombre de clase del espacio de nombres de supervisor.metadata.namespaceNombre del proyecto.spec.storageClassesNombres de clases de almacenamiento y límites en megabytes.spec.vmClassesNombres de las clases de máquinas virtuales.spec.contentSourceNombres de las bibliotecas de contenido definidos contype: ContentLibrary.spec.limitsNombres y valores de límites. Los valores límite válidos incluyen:config_map_countcpu_limitcpu_limit_defaultcpu_request_defaultdaemon_set_countdeployment_countjob_countmemory_limitmemory_limit_defaultmemory_request_defaultpersistent_volume_claim_countpod_countreplica_set_countreplication_controller_countsecret_countservice_countstateful_set_countstorage_request_limit
spec.supervisorSelectorSupervisores del proyecto que están disponibles para crear un espacio de nombres. Para seleccionar el supervisor correcto,matchExpressionsdefine 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: - trueEn 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.fastStorageClasses 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.
- Si el usuario especifica el valor del parámetro como true, el nombre es
((parameters.podCountLimit))muestra cómo especificar un valor para el límite de recuento de pods.podCountLimites 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.nameNombre del enlace de clase de espacio de nombres de supervisor.metadata.namespaceNombre del proyecto.spec.overrideParametersEstos parámetros que crea el administrador son valores definidos que un usuario no puede cambiar al crear el espacio de nombres de supervisor.constespecifica 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.En este ejemplo,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: goldname: environmentes un parámetro de reemplazo que utiliza el parámetroenvironmentde la clase de espacio de nombres de supervisor. Al especificarconst: 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:Entrada de ejemplo de creación de espacio de nombres de supervisor.
metadata.nameNombre del espacio de nombres en el proyecto y en el supervisor.metadata.namespaceNombre del proyecto.spec.regionNameNombre de la región.spec.classNameNombre de clase del espacio de nombres de supervisor.spec.classParametersPar valor-clave opcional para reemplazar los valores de parámetro predeterminados.spec.descriptionDescripción opcional del espacio de nombres.
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>