Gli amministratori e gli sviluppatori possono eseguire operazioni relative alle risorse dell'API CCI (Cloud Consumption Interface) esposte dal server dell'API Kubernetes di CCI.

In base al tipo di risorsa, amministratori e sviluppatori possono utilizzare l'API per eseguire le azioni seguenti.

Tipo di risorsa Verbi delle azioni dell'amministratore Verbi delle azioni dello sviluppatore
CloudAccount ottenere, elencare
Supervisor ottenere, applicare patch, elencare
Project creare, ottenere, aggiornare, applicare patch, eliminare, elencare ottenere, elencare
ProjectRole ottenere, elencare ottenere, elencare
ProjectRoleBinding creare, ottenere, aggiornare, applicare patch, eliminare, elencare ottenere, elencare
Region creare, ottenere, aggiornare, applicare patch, eliminare, elencare ottenere, elencare
RegionBinding creare, ottenere, aggiornare, applicare patch, eliminare, elencare ottenere, elencare
RegionBindingConfig creare, ottenere, aggiornare, applicare patch, eliminare, elencare
SupervisorNamespaceClass creare, ottenere, aggiornare, applicare patch, eliminare, elencare ottenere, elencare
SupervisorNamespaceClassConfig creare, ottenere, aggiornare, applicare patch, eliminare, elencare
SupervisorNamespaceClassBinding creare, ottenere, aggiornare, applicare patch, eliminare, elencare ottenere, elencare
SupervisorNamespace creare, ottenere, eliminare, elencare creare, ottenere, eliminare, elencare
Gli esempi seguenti mostrano la chiamata e le risposte della CLI. L'utilizzo della CLI richiede:
  • Scaricato il plug-in kubectl di CCI.
  • Recupero del token dell'API.
  • L'accesso al server CCI.
Vedere Preparazione all'utilizzo dell'interfaccia della riga di comando per l'esecuzione delle attività di CCI.

Progetti e utenti

Progetto
Gli amministratori creano progetti per raggruppare gli utenti e impostare l'accesso alle origini dei contenuti come i modelli cloud in Automation Assembler o agli elementi del catalogo in Automation Service Broker.
Project include le proprietà seguenti:
  • metadata.name: nome del progetto.
  • spec.description: descrizione facoltativa.
  • spec.sharedResources: se è true, il progetto condivide gli spazi dei nomi supervisore con gli altri utenti del progetto. Se è false, il progetto limita l'accesso allo spazio dei nomi agli amministratori o all'utente che ha creato lo spazio dei nomi.
Input esempio di creazione di un progetto.
apiVersion: project.cci.vmware.com/v1alpha1
kind: Project
metadata:
  name: demo-project
spec:
  description: This is a demo project
  sharedResources: true
Ruolo del progetto
Il ruolo del progetto riflette i ruoli di amministrazione, visualizzazione o modifica disponibili che possono essere assegnati a un utente in un progetto.
Ruolo del progetto Descrizione
admin Consente la modifica e l'eliminazione dello spazio dei nomi.
visualizzazione Ruolo di sola lettura nello spazio dei nomi.
modifica Consente la modifica dello spazio dei nomi.
I ruoli del progetto sono di sola lettura e forniscono ruoli disponibili quando si crea il binding del ruolo del progetto.

Input di esempio di un ruolo del progetto di lettura.

apiVersion: authorization.cci.vmware.com/v1alpha1
kind: ProjectRole
metadata:
  name: admin
spec:
  description: project administrator
Binding del ruolo del progetto
Il binding del ruolo del progetto viene utilizzato per assegnare a un utente o un gruppo l'appartenenza a un ruolo in un progetto.
ProjectRoleBinding include le proprietà seguenti:
  • metadata.name: nome del binding del ruolo del progetto che richiede un formato specifico che rifletta il tipo di oggetto (utente o gruppo) e il nome dell'oggetto:
    cci:<user/group>:<subject domain>:<subject name>
  • metadata.namespace: descrive il nome del progetto.
  • subjects: descrive l'utente o il gruppo. È consentita una sola voce.
  • roleRef: descrive il ruolo.
Input di esempio di creazione di un binding del ruolo del progetto.
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

vCenter e supervisori

Questa categoria riguarda l'infrastruttura e le sue funzioni sono solo per gli amministratori.

Account cloud
Gli account cloud vengono creati automaticamente da vSphere+ o manualmente da un amministratore per registrare un vCenter e abilitare i data center con supervisori.
Output di esempio di creazione di un account cloud.
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>
Supervisore
Il supervisore viene creato dal sistema dopo il completamento della raccolta dei dati di vCenter. L'amministratore può aggiornare il supervisore con etichette di funzionalità per il posizionamento e assegnarlo a una regione.
  • metadata.labels: gli amministratori definiscono le con impostazioni chiave-valore che riflettono le funzionalità del supervisore. Le etichette vengono utilizzate per filtrare i supervisori in base alle funzionalità durante la creazione di uno spazio dei nomi.
  • spec.regionNames: gli amministratori definiscono i nomi delle regioni in modo che sia possibile assegnare un supervisore a una regione. Un supervisore può essere assegnato solo a una singola regione e non viene assegnato a una regione per impostazione predefinita.
Output di esempio di aggiornamento del supervisore.
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

Regione
L'amministratore crea regioni come meccanismo di raggruppamento per uno o più supervisori. Le regioni possono essere basate su vari parametri, come la geografia o l'infrastruttura, e possono includere supervisori di più vCenter.
Input esempio di creazione di una regione.
apiVersion: topology.cci.vmware.com/v1alpha1
kind: Region
metadata:
  name: us-west1
spec:
  description: The us-west1 region
Binding delle regioni
Un amministratore crea binding delle regioni per associare le regioni ai progetti.

Affinché un utente di un progetto possa creare spazi dei nomi supervisore, devono esistere RegionBinding e RegionBindingConfig.

RegionBinding include le proprietà seguenti:
  • metadata.name: nome della regione che deve corrispondere a una regione esistente.
  • metadata.namespace: nome del progetto.
Input di esempio del binding di una regione.
apiVersion: topology.cci.vmware.com/v1alpha1
kind: RegionBinding
metadata:
  name: us-west1
  namespace: demo-project
Configurazione del binding di una regione
Per controllare la logica di posizionamento del supervisore in base alla regione in un progetto, un amministratore definisce RegionBindingConfig. Quando il comando RegionBindingConfig è definito, un amministratore può utilizzare le coppie chiave-valore delle etichette del supervisore per perfezionare ulteriormente l'associazione di supervisori specifici ai progetti. Un amministratore può ad esempio utilizzare una specifica key: environment per selezionare un supervisore specificato per il test con value: testing.
RegionBindingConfig include le proprietà seguenti:
  • metadata.name: nome della regione che deve corrispondere a una regione esistente.
  • metadata.namespace: nome del progetto.
  • spec.supervisorSelector seleziona nel progetto i supervisori disponibili per la creazione di uno spazio dei nomi. Per selezionare il supervisore corretto, matchExpressions definisce la chiave dell'etichetta del supervisore, l'operatore corrispondente e il valore per la corrispondenza.
    Per la corrispondenza dell'espressione spec.supervisorSelector vengono utilizzati gli operatori seguenti:
    • operator: In: il binding della regione verifica se la coppia chiave-valore corrisponde alla coppia chiave-valore dell'etichetta del supervisore. matchExpressions è un array, ma l'array è attualmente limitato al valore di una singola voce.
    • operator: NotIn: il binding della regione verifica se la coppia chiave-valore non corrisponde alla coppia chiave-valore dell'etichetta del supervisore. matchExpressions è un array, ma l'array è attualmente limitato al valore di una singola voce.
    • operator: Exists: il binding della regione cerca una corrispondenza con un supervisore che contiene la chiave dell'etichetta. I valori non vengono utilizzati.
    • operator: DoesNotExist: il binding della regione cerca un supervisore che non contiene la chiave dell'etichetta. I valori non vengono utilizzati.
Input di esempio della configurazione del binding di una regione.
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

Classi degli spazi dei nomi supervisore

Classe dello spazio dei nomi supervisore
SupervisorNamespaceClass definisce il modello dello spazio dei nomi e i parametri facoltativi che possono essere utilizzati per personalizzare le impostazioni dello spazio dei nomi durante la creazione.
Il campo predefinito specifica il valore del parametro utilizzato se un utente non fornisce il valore del parametro durante la creazione dello spazio dei nomi. Ad esempio, se default: false, false è il valore del parametro.
Nota: Per fare in modo che un utente possa creare uno spazio dei nomi specificando valori parziali o nessun valore per i parametri, ogni parametro deve includere un campo e un valore predefiniti.
Definizioni dei tipi di parametro:
Tipo di parametro Proprietà
Booleano
  • default: valore booleano predefinito.
  • enum: elenco di valori booleani consentiti. Può essere utilizzato per fare in modo che un parametro abbia un solo valore, true o false.
Intero
  • minimum: valore intero minimo.
  • maximum: valore intero massimo.
  • default: valore intero predefinito.
  • enum: elenco di valori interi consentiti.
Stringa
  • minLength: lunghezza minima della stringa.
  • maxLength: lunghezza massima della stringa.
  • default: valore predefinito della stringa se non viene specificato dall'utente.
  • pattern: modello regex da convalidare rispetto al valore.
  • enum: elenco di valori stringa consentiti.
Input di esempio di creazione di una classe dello spazio dei nomi supervisore.
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
Configurazione della classe dello spazio dei nomi supervisore
Per specificare l'implementazione delle classi degli spazi dei nomi supervisore, un amministratore crea un comando SupervisorNamespaceClassConfig con le impostazioni degli spazi dei nomi. Affinché un progetto possa accedere alla classe dello spazio dei nomi supervisore, devono esistere SupervisorNamespaceClass e SupervisorNamespaceClassConfig.
SupervisorNamespaceClassConfig include le proprietà seguenti:
  • metadata.name: nome della classe dello spazio dei nomi supervisore.
  • metadata.namespace: nome del progetto.
  • spec.storageClasses: nomi e limiti delle classi di storage in megabyte.
  • spec.vmClasses: nomi delle classi delle macchine virtuali.
  • spec.contentSource: nomi delle librerie di contenuti definiti tutti con type: ContentLibrary.
  • spec.limits: nomi e valori dei limiti. I valori di limite validi includono:
    • 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: supervisori nel progetto disponibili per la creazione di uno spazio dei nomi. Per selezionare il supervisore corretto, matchExpressions definisce la chiave dell'etichetta, l'operatore corrispondente e il valore dell'etichetta per la corrispondenza.

Un amministratore espone i parametri della classe che possono essere utilizzati durante la definizione dei valori delle impostazioni dello spazio dei nomi, in modo che gli utenti possano personalizzare le impostazioni dello spazio dei nomi durante la richiesta.

Input di esempio di creazione della configurazione della classe dello spazio dei nomi supervisore.
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 
In questo esempio vengono utilizzati i parametri dell'esempio della classe dello spazio dei nomi supervisore come indicato di seguito:
  • ((parameters.fastStorageClass ? 'fast-storage-class' : 'standard-storage-class')) mostra un controllo condizionale per specificare il nome di una classe di storage. fastStorageClass è un tipo booleano.
    • Se l'utente specifica true come valore del parametro, il nome è fast-storage-class.
    • Se l'utente specifica false come valore, il nome è standard-storage-class.
  • ((parameters.podCountLimit)) mostra come specificare un valore per il limite del numero di pod. podCountLimit è un tipo intero.
    • Se l'utente specifica un valore compreso tra il valore minimo 100 e il valore massimo 1000 come definito nella classe dello spazio dei nomi supervisore, tale valore è il valore del limite del numero di pod.
    • Se l'utente non specifica alcun valore, il limite del numero di pod è il valore predefinito 500 come definito nella classe dello spazio dei nomi supervisore.
    • Se l'utente specifica un valore esterno all'intervallo dei valori minimo e massimo, il valore non è valido, la creazione dello spazio dei nomi supervisore non riesce e viene visualizzato un messaggio di errore che indica che il limite del numero di pod non è compreso nell'intervallo dei valori consentiti.
Binding della classe spazio dei nomi supervisore
Il binding della classe dello spazio dei nomi supervisore consente l'utilizzo delle classi degli spazi dei nomi supervisore durante la creazione di uno spazio dei nomi supervisore in un progetto.
SupervisorNamespaceClassBinding include le proprietà seguenti:
  • metadata.name: nome del binding della classe dello spazio dei nomi supervisore.
  • metadata.namespace: nome del progetto.
  • spec.overrideParameters: creati dall'amministratore, questi parametri sono valori definiti che non possono essere modificati da un utente durante la creazione dello spazio dei nomi supervisore. const: specifica il valore del parametro. Questi parametri sono facoltativi e, se vengono definiti, non sono necessari per tutti i parametri della classe.
Input di esempio di creazione del binding della classe dello spazio dei nomi supervisore.
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
In questo esempio, name: environment è un parametro di sostituzione che utilizza il parametro environment della classe dello spazio dei nomi supervisore. Specificando const: testing, l'utente può creare uno spazio dei nomi supervisore che utilizza questa classe solo in un ambiente di test.

Spazi dei nomi supervisore

Spazio dei nomi supervisore
Gli utenti possono creare spazi dei nomi supervisore in una regione specifica utilizzando una classe dello spazio dei nomi supervisore come modello. Se vengono esposti, i parametri della classe facoltativi possono essere utilizzati per definire le impostazioni dello spazio dei nomi.
SupervisorNamespace include le proprietà seguenti:
  • metadata.name: nome dello spazio dei nomi nel progetto e nel supervisore.
  • metadata.namespace: nome del progetto.
  • spec.regionName: nome della regione.
  • spec.className: nome della classe dello spazio dei nomi supervisore.
  • spec.classParameters: coppia chiave-valore facoltativa per sostituire i valori predefiniti dei parametri.
  • spec.description: descrizione dello spazio dei nomi facoltativa.
Input di esempio di creazione di uno spazio dei nomi supervisore.
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
Output di esempio di creazione di uno spazio dei nomi supervisore.
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>