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.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.
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. 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.
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.
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 convalue: testing
.RegionBindingConfig incluye las siguientes propiedades:Entrada de ejemplo de creación de configuración de enlace de regiones.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 expresionesspec.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.
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
,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.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
ofalse
.
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.
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 contype: 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
.
- 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.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.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: gold
name: environment
es un parámetro de reemplazo que utiliza el parámetroenvironment
de 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.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.
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>