Administratoren und Entwickler können Aktionen für Cloud Consumption Interface (CCI)-API-Ressourcen durchführen, die vom CCI Kubernetes API-Server verfügbar gemacht werden.

Je nach Ressourcentyp können Administratoren und Entwickler die API verwenden, um die folgenden Aktionen durchzuführen.

Ressourcentyp Verben für Administratoraktionen Verben für Entwickleraktionen
CloudAccount abrufen, auflisten
Supervisor abrufen, patchen, auflisten
Project erstellen, abrufen, aktualisieren, patchen, löschen, auflisten abrufen, auflisten
ProjectRole abrufen, auflisten abrufen, auflisten
ProjectRoleBinding erstellen, abrufen, aktualisieren, patchen, löschen, auflisten abrufen, auflisten
Region erstellen, abrufen, aktualisieren, patchen, löschen, auflisten abrufen, auflisten
RegionBinding erstellen, abrufen, aktualisieren, patchen, löschen, auflisten abrufen, auflisten
RegionBindingConfig erstellen, abrufen, aktualisieren, patchen, löschen, auflisten
SupervisorNamespaceClass erstellen, abrufen, aktualisieren, patchen, löschen, auflisten abrufen, auflisten
SupervisorNamespaceClassConfig erstellen, abrufen, aktualisieren, patchen, löschen, auflisten
SupervisorNamespaceClassBinding erstellen, abrufen, aktualisieren, patchen, löschen, auflisten abrufen, auflisten
SupervisorNamespace erstellen, abrufen, löschen, auflisten erstellen, abrufen, löschen, auflisten
Die folgenden Beispiele zeigen die CLI-Aufrufe und -Antworten. Zur Verwendung der CLI ist Folgendes erforderlich:
  • Das CCI kubectl-Plug-In wurde heruntergeladen.
  • Ein API-Token wurde abgerufen.
  • Anmeldung beim CCI-Server wurde durchgeführt.
Weitere Informationen hierzu finden Sie unter Vorbereiten der Verwendung der Befehlszeilenschnittstelle zur Durchführung von CCI-Aufgaben

Projekte und Benutzer

Projekt
Administratoren erstellen Projekte, um Benutzer zu gruppieren und den Zugriff auf Inhaltsquellen wie Cloud-Vorlagen in Automation Assembler oder auf Katalogelemente in Automation Service Broker festzulegen.
Project enthält die folgenden Eigenschaften:
  • metadata.name Projektname.
  • spec.description Optionale Beschreibung.
  • spec.sharedResources Wenn „true“ festgelegt ist, gibt das Projekt die Supervisor-Namespaces für andere Benutzer im Projekt frei. Wenn „false“ festgelegt ist, beschränkt das Projekt den Namespace-Zugriff auf Administratoren oder den Benutzer, der den Namespace erstellt hat.
Beispieleingabe für die Erstellung eines Projekts.
apiVersion: project.cci.vmware.com/v1alpha1
kind: Project
metadata:
  name: demo-project
spec:
  description: This is a demo project
  sharedResources: true
Projektrolle
Die Projektrolle spiegelt die verfügbaren Administrator-, Ansichts- oder Bearbeitungsrollen wider, die einem Benutzer in einem Projekt zugewiesen werden können.
Projektrolle Beschreibung
admin Ermöglicht das Ändern und Löschen des Namespaces.
Ansicht Eine schreibgeschützte Rolle für den Namespace.
bearbeiten Ermöglicht das Ändern des Namespaces.
Die Projektrollen sind schreibgeschützt und stellen beim Erstellen der Projektrollenbindung verfügbare Rollen bereit.

Beispieleingabe für das Lesen der Projektrolle.

apiVersion: authorization.cci.vmware.com/v1alpha1
kind: ProjectRole
metadata:
  name: admin
spec:
  description: project administrator
Projektrollenbindung
Die Projektrollenbindung wird verwendet, um einem Benutzer oder einer Gruppe eine Rolle in einem Projekt zuzuweisen.
ProjectRoleBinding enthält die folgenden Eigenschaften:
  • metadata.name Name der Projektrollenbindung. Der Subjekttyp (Benutzer oder Gruppe) und der Subjektname müssen in einem bestimmten Format angegeben werden:
    cci:<user/group>:<subject domain>:<subject name>
  • metadata.namespace beschreibt den Projektnamen.
  • subjects beschreibt den Benutzer oder die Gruppe. Es ist nur ein Eintrag zulässig.
  • roleRef Beschreibt die Rolle.
Beispieleingabe für die Erstellung der Projektrollenbindung.
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 und Supervisoren

Diese Kategorie befasst sich mit der Infrastruktur, und ihre Funktionen sind nur für Administratoren bestimmt.

Cloud-Konto
Cloud-Konten werden automatisch von vSphere+ oder manuell von einem Administrator erstellt, um ein vCenter zu registrieren und Datencenter mit Supervisoren zu aktivieren.
Beispielausgabe für die Erstellung eines Cloud-Kontos.
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
Ein Supervisor wird vom System erstellt, nachdem die vCenter-Datenerfassung abgeschlossen ist. Der Administrator kann den Supervisor mit Funktionsbezeichnungen für die Platzierung aktualisieren und ihn einer Region zuweisen.
  • metadata.labels Administratoren definieren Bezeichnungen mit Schlüsselwerteinstellungen, die die Supervisor-Funktionen widerspiegeln. Bezeichnungen werden beim Erstellen eines Namespaces verwendet, um Supervisoren nach Funktionen zu filtern.
  • spec.regionNames Administratoren definieren Regionsnamen, sodass ein Supervisor einer Region zugewiesen werden kann. Ein Supervisor kann nur einer einzelnen Region zugewiesen werden und ist standardmäßig keiner Region zugewiesen.
Beispielausgabe für die Aktualisierung des Supervisors.
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>

Topologie

Region
Ein Administrator erstellt Regionen als Gruppierungsmechanismus für einen oder mehrere Supervisoren. Regionen können auf verschiedenen Parametern wie Geografie oder Infrastruktur basieren und Supervisoren aus mehreren vCenter-Instanzen enthalten.
Beispieleingabe für die Erstellung einer Region.
apiVersion: topology.cci.vmware.com/v1alpha1
kind: Region
metadata:
  name: us-west1
spec:
  description: The us-west1 region
Regionsbindung
Ein Administrator erstellt Regionsbindungen, um Regionen mit Projekten zu verknüpfen.

Damit ein Benutzer in einem Projekt für Supervisor-Namespaces erstellen kann, müssen sowohl RegionBinding als auch RegionBindingConfig vorhanden sein.

RegionBinding enthält die folgenden Eigenschaften:
  • metadata.name Name der Region; dieser muss mit einer vorhandenen Region übereinstimmen.
  • metadata.namespace Projektname.
Beispieleingabe für die Erstellung einer Regionsbindung.
apiVersion: topology.cci.vmware.com/v1alpha1
kind: RegionBinding
metadata:
  name: us-west1
  namespace: demo-project
Regionsbindungskonfiguration
Um die Supervisor-Platzierungslogik pro Region in einem Projekt zu steuern, definiert ein Administrator RegionBindingConfig. Wenn RegionBindingConfig definiert ist, kann ein Administrator Schlüssel-Wert-Paare mit Supervisor-Bezeichnung verwenden, um die Zuordnung bestimmter Supervisoren zu Projekten weiter zu verfeinern. Ein Administrator könnte beispielsweise eine key: environment-Spezifikation verwenden, um einen Supervisor auszuwählen, der zum Testen mit value: testing angegeben wurde.
RegionBindingConfig enthält die folgenden Eigenschaften:
  • metadata.name Name der Region; dieser muss mit einer vorhandenen Region übereinstimmen.
  • metadata.namespace Projektname.
  • spec.supervisorSelector wählt die Supervisoren im Projekt aus, die zum Erstellen eines Namespaces verfügbar sind. Um den richtigen Supervisor auszuwählen, definieren matchExpressions den Supervisor-Bezeichnungsschlüssel, den übereinstimmenden Operator und den Wert für die Übereinstimmung.
    spec.supervisorSelector-Ausdrucksabgleich verwendet die folgenden Operatoren:
    • operator: In Die Regionsbindung testet, ob der Schlüsselwert mit dem Schlüsselwert für die Supervisor-Bezeichnung übereinstimmt. matchExpressions ist ein Array, aber das Array ist derzeit auf einen einzelnen Eintragswert beschränkt.
    • operator: NotIn Die Regionsbindung testet, ob der Schlüsselwert nicht mit dem Schlüsselwert für die Supervisor-Bezeichnung übereinstimmt. matchExpressions ist ein Array, aber das Array ist derzeit auf einen einzelnen Eintragswert beschränkt.
    • operator: Exists Die Regionsbindung sucht nach einer Übereinstimmung mit einem Supervisor, der den Bezeichnungsschlüssel enthält. Werte werden nicht verwendet.
    • operator: DoesNotExist Die Regionsbindung sucht nach einem Supervisor, der den Bezeichnungsschlüssel nicht enthält. Werte werden nicht verwendet.
Beispieleingabe für die Erstellung einer Regionsbindungskonfiguration.
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

Supervisor-Namespace-Klassen

Supervisor-Namespace-Klasse
SupervisorNamespaceClass legt die Namespace-Vorlage und optionale Parameter fest, die zum Anpassen der Namespace-Einstellungen während der Erstellung verwendet werden können.
Das Standardfeld gibt den Parameterwert an, der verwendet wird, wenn ein Benutzer den Parameterwert bei der Namespace-Erstellung nicht angibt. Beispiel: Wenn default: false, dann fungiert false als Parameterwert.
Hinweis: Damit ein Benutzer einen Namespace mit partiellen Parameterwerten oder ohne Parameterwerte erstellen kann, muss jeder Parameter ein Standardfeld und einen Standardwert enthalten.
Parametertypdefinitionen:
Parametertyp Eigenschaften
Boolesch
  • default Boolescher Standardwert.
  • enum Liste der zulässigen booleschen Werte. Kann verwendet werden, damit ein Parameter nur einen Wert hat (true oder false).
Ganzzahl
  • minimum Minimaler Ganzzahlwert.
  • maximum Maximaler Ganzzahlwert.
  • default Ganzzahl-Standardwert.
  • enum Liste der zulässigen Ganzzahlwerte.
Zeichenfolge
  • minLength Minimale Zeichenfolgenlänge
  • maxLength Maximale Zeichenfolgenlänge
  • default Standardzeichenfolgenwert, wenn kein Wert vom Benutzer angegeben wurde.
  • pattern Regex-Muster zur Validierung anhand des Werts.
  • enum Liste der zulässigen Zeichenfolgenwerte.
Beispieleingabe für die Erstellung einer Supervisor-Namespace-Klasse.
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
Konfiguration der Supervisor-Namespace-Klasse
Um die Implementierung von Supervisor-Namespace-Klassen anzugeben, erstellt ein Administrator eine SupervisorNamespaceClassConfig mit Namespace-Einstellungen. Damit ein Projekt über Zugriff auf die Supervisor-Namespace-Klasse verfügt, muss sowohl SupervisorNamespaceClass als auch SupervisorNamespaceClassConfig vorhanden sein.
SupervisorNamespaceClassConfig enthält die folgenden Eigenschaften:
  • metadata.name Name der Supervisor-Namespace-Klasse.
  • metadata.namespace Projektname.
  • spec.storageClasses Speicherklassennamen und -grenzwerte in Megabyte.
  • spec.vmClasses Namen der VM-Klassen.
  • spec.contentSource Namen der Inhaltsbibliothek, die alle mit type: ContentLibrary definiert sind.
  • spec.limits Namen und Werte für Begrenzungen. Zu den gültigen Grenzwerten gehören:
    • 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 Supervisoren im Projekt, die zum Erstellen eines Namespaces verfügbar sind. Um den richtigen Supervisor auszuwählen, definieren matchExpressions den Supervisor-Bezeichnungsschlüssel, den übereinstimmenden Operator und den Bezeichnungswert für die Übereinstimmung.

Ein Administrator stellt Klassenparameter zur Verfügung, die beim Definieren der Namespace-Einstellungswerte verbraucht werden können, sodass Benutzer die Namespace-Einstellungen während der Anforderungszeit anpassen können.

Beispieleingabe für die Erstellung einer Supervisor-Namespace-Klassenkonfiguration.
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 diesem Beispiel werden die folgenden Parameter aus dem Supervisor-Namespace-Klassenbeispiel verwendet:
  • ((parameters.fastStorageClass ? 'fast-storage-class' : 'standard-storage-class')) zeigt eine bedingte Prüfung für die Angabe eines Speicherklassennamens an. fastStorageClass ist ein boolescher Typ.
    • Wenn der Benutzer den Parameterwert als „true“ angibt, lautet der Name fast-storage-class.
    • Wenn der Benutzer den Wert als „false“ angibt, lautet der Name standard-storage-class.
  • ((parameters.podCountLimit)) zeigt, wie Sie einen Wert für die Begrenzung der Pod-Anzahl angeben. podCountLimit ist ein Ganzzahltyp.
    • Wenn der Benutzer einen Wert angibt, der innerhalb der minimalen und maximalen Werte von 100 bis 1000 liegt, wie in der Supervisor-Namespace-Klasse definiert, ist dies der Wert für die Begrenzung der Pod-Anzahl.
    • Wenn der Benutzer keinen Wert angibt, ist der Grenzwert für die Pod-Anzahl der in der Supervisor-Namespace-Klasse definierte Standardwert von 500.
    • Wenn der Benutzer einen Wert außerhalb des zulässigen Bereichs (Mindest- bis Maximalwert) angibt, ist der Wert ungültig. Die Erstellung des Supervisor-Namespaces schlägt dann fehl, und es wird eine Fehlermeldung darüber ausgegeben, dass der Grenzwert für die Pod-Anzahl außerhalb des zulässigen Wertebereichs liegt.
Supervisor-Namespace-Klassenbindung
Die Supervisor Namespace-Klassenbindung ermöglicht die Verwendung von Supervisor Namespace-Klassen beim Erstellen eines Supervisor-Namespaces in einem Projekt.
SupervisorNamespaceClassBinding enthält die folgenden Eigenschaften:
  • metadata.name Namen der Supervisor-Namespace-Klassenbindung.
  • metadata.namespace Projektname.
  • spec.overrideParameters Diese vom Administrator erstellten Parameter sind Definitionswerte, die von einem Benutzer beim Erstellen des Supervisor-Namespaces nicht geändert werden können. const gibt den Wert für den Parameter an. Diese Parameter sind optional und nicht für alle Klassenparameter erforderlich, sofern definiert.
Beispieleingabe für die Erstellung einer Supervisor-Namespace-Klassenbindung.
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 diesem Beispiel ist name: environment ein Außerkraftsetzungsparameter, der den Parameter environment aus der Supervisor-Namespace-Klasse verwendet. Durch Angabe von const: testing kann der Benutzer nur einen Supervisor-Namespace mit dieser Klasse in einer Testumgebung erstellen.

Supervisor-Namespaces

Supervisor-Namespace
Benutzer können Supervisor-Namespaces in einer bestimmten Region mithilfe einer Supervisor-Namespace-Klasse als Vorlage erstellen. Wenn optionale Klassenparameter verfügbar gemacht werden, können diese zum Definieren der Namespace-Einstellungen verwendet werden.
SupervisorNamespace enthält die folgenden Eigenschaften:
  • metadata.name Name des Namespaces im Projekt und auf dem Supervisor.
  • metadata.namespace Projektname.
  • spec.regionName Name der Region.
  • spec.className Name der Supervisor-Namespace-Klasse.
  • spec.classParameters Optionaler Schlüsselwert zum Außerkraftsetzen der Standardparameterwerte.
  • spec.description Optionale Beschreibung des Namespace.
Beispieleingabe für die Erstellung eines Supervisor-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
Beispielausgabe für die Erstellung eines Supervisor-Namespace.
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>