Beheerders en ontwikkelaars kunnen reageren op Cloud Consumption Interface (CCI) API-resources die de CCI Kubernetes API-server beschikbaar stelt.

Afhankelijk van het type resource kunnen beheerders en ontwikkelaars de API gebruiken om de volgende acties uit te voeren.

Soort resource Werkwoorden voor beheerdersacties Werkwoorden voor ontwikkelaarsacties
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
In de volgende voorbeelden ziet u de CLI-aanroep en -antwoorden. Voor het gebruik van de CLI moet u:
  • De CCI kubectl-invoegtoepassing is gedownload.
  • Een API-token hebben verkregen.
  • Zijn aangemeld bij de CCI-server.
Zie Het gebruik van de opdrachtregelinterface voor het uitvoeren van CCI-taken voorbereiden.

Projecten en gebruikers

Project
Beheerders maken projecten om gebruikers te groeperen en stellen toegang in tot inhoudsbronnen zoals cloudsjablonen in Automation Assembler of tot catalogusitems in Automation Service Broker.
Project bevat de volgende eigenschappen:
  • Projectnaam metadata.name.
  • Optionele beschrijving spec.description.
  • spec.sharedResources Indien waar, deelt het project de supervisornaamruimten met andere gebruikers in het project. Als dit is ingesteld op False, beperkt het project toegang tot de naamruimte tot beheerders of de gebruiker die de naamruimte heeft gemaakt.
Maak voorbeeldinvoer voor het project.
apiVersion: project.cci.vmware.com/v1alpha1
kind: Project
metadata:
  name: demo-project
spec:
  description: This is a demo project
  sharedResources: true
Projectrol
De projectrol komt overeen met een van de beschikbare rollen, beheerder, weergeven of bewerken, die aan een gebruiker in een project kunnen worden toegewezen.
Projectrol Beschrijving
beheerder Staat het wijzigen en verwijderen van de naamruimte toe.
weergeven Een alleen-lezen rol voor de naamruimte.
bewerken Staat wijziging van de naamruimte toe.
De projectrollen zijn alleen-lezen en bieden beschikbare rollen bij het maken van de projectrolbinding.

Lees voorbeeldinvoer voor projectrol.

apiVersion: authorization.cci.vmware.com/v1alpha1
kind: ProjectRole
metadata:
  name: admin
spec:
  description: project administrator
Projectrolbinding
Projectrolbinding wordt gebruikt om lidmaatschap toe te wijzen aan een gebruiker of groep in een project.
ProjectRoleBinding bevat de volgende eigenschappen:
  • metadata.name Naam van de projectrolbinding en vereist een specifieke indeling met het onderwerptype (gebruiker of groep) en de onderwerpnaam:
    cci:<user/group>:<subject domain>:<subject name>
  • metadata.namespace beschrijft de projectnaam.
  • subjects beschrijft de gebruiker of groep. Er is slechts één invoer toegestaan.
  • roleRef beschrijft de rol.
Maak voorbeeldinvoer voor projectrolbinding.
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

vCenters en supervisors

Deze categorie behandelt infrastructuur en de functies ervan zijn alleen voor beheerders.

Cloudaccount
Cloudaccounts worden automatisch door vSphere+ of handmatig door een beheerder gemaakt om een vCenter te registreren en datacenters met supervisors in te schakelen.
Maak voorbeelduitvoer voor een cloudaccount.
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
Een supervisor wordt door het systeem gemaakt nadat de vCenter-gegevensverzameling is voltooid. De beheerder kan de supervisor bijwerken met capaciteitslabels voor plaatsing en deze aan een regio toewijzen.
  • metadata.labels-beheerders definiëren labels met instellingen voor sleutelwaarden die de mogelijkheden van de supervisor weerspiegelen. Labels worden gebruikt om supervisors te filteren op basis van mogelijkheden bij het maken van een naamruimte.
  • spec.regionNames-beheerders definiëren regionamen, zodat een supervisor aan een regio kan worden toegewezen. Een supervisor kan slechts aan één regio worden toegewezen en is standaard niet toegewezen aan een regio.
Werk voorbeelduitvoer voor de supervisor bij.
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

Regio
Een beheerder maakt regio's als groeperingsmechanisme voor een of meer supervisors. Regio's kunnen worden gebaseerd op verschillende parameters zoals geografie of infrastructuur, en ze kunnen supervisors van meerdere vCenters bevatten.
Maak voorbeeldinvoer voor een regio.
apiVersion: topology.cci.vmware.com/v1alpha1
kind: Region
metadata:
  name: us-west1
spec:
  description: The us-west1 region
Regiobinding
Een beheerder maakt regiobindingen om regio's aan projecten te koppelen.

Voordat een gebruiker in een project supervisornaamruimten kan maken, moeten zowel RegionBinding als RegionBindingConfig bestaan.

RegionBinding bevat de volgende eigenschappen:
  • metadata.name Regionaam en deze moet overeenkomen met een bestaande regio.
  • Projectnaam metadata.namespace.
Maak voorbeeldinvoer voor regiobinding.
apiVersion: topology.cci.vmware.com/v1alpha1
kind: RegionBinding
metadata:
  name: us-west1
  namespace: demo-project
Configuratie van regiobinding
Om de logica voor plaatsing van supervisors per regio in een project te beheren, definieert een beheerder RegionBindingConfig. Wanneer RegionBindingConfig is gedefinieerd, kan een beheerder sleutelwaardeparen voor supervisorlabels gebruiken om de koppeling van specifieke supervisors met projecten verder te verfijnen. Een beheerder kan bijvoorbeeld de specificatie key: environment gebruiken om een supervisor te selecteren die is opgegeven voor het testen met value: testing.
RegionBindingConfig bevat de volgende eigenschappen:
  • metadata.name Regionaam en deze moet overeenkomen met een bestaande regio.
  • Projectnaam metadata.namespace.
  • spec.supervisorSelector selecteert de supervisors in het project die beschikbaar zijn voor het maken van een naamruimte. Om de juiste supervisor te selecteren, definiëren matchExpressions de labelsleutel voor de supervisor, de overeenkomende operator en de waarde voor de overeenkomst.
    Bij het matchen van expressies met spec.supervisorSelector worden de volgende operatoren gebruikt:
    • operator: In De regiobinding test of de sleutelwaarde overeenkomt met de sleutelwaarde van het supervisorlabel. De matchExpressions is een array, maar de array is momenteel beperkt tot één invoerwaarde.
    • operator: NotIn De regiobinding test of de sleutelwaarde niet overeenkomt met de sleutelwaarde van het supervisorlabel. De matchExpressions is een array, maar de array is momenteel beperkt tot één invoerwaarde.
    • operator: Exists De regiobinding zoekt naar een overeenkomst met een supervisor die de labelsleutel bevat. Waarden worden niet gebruikt.
    • operator: DoesNotExist De regiobinding zoekt naar een supervisor die de labelsleutel niet bevat. Waarden worden niet gebruikt.
Maak voorbeeldinvoer voor een configuratie van regiobinding.
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

Supervisornaamruimteklassen

Supervisornaamruimteklasse
SupervisorNamespaceClass definieert de naamruimtesjabloon en optionele parameters die kunnen worden gebruikt om de instellingen voor de naamruimte aan te passen tijdens het maken.
Het standaardveld geeft de parameterwaarde op die wordt gebruikt als een gebruiker de parameterwaarde niet opgeeft bij het maken van een naamruimte. Bijvoorbeeld: indien default: false, dan is false de parameterwaarde.
Opmerking: Om ervoor te zorgen dat een gebruiker een naamruimte met gedeeltelijke of geen parameterwaarden kan maken, moet elke parameter een standaardveld en waarde bevatten.
Definities van parametertype:
Parametertype Eigenschappen
Booleaans
  • default Standaard booleaanse waarde.
  • enum Lijst met toegestane booleaanse waarden. Kan worden gebruikt om een parameter te laten bestaan uit slechts één waarde, true of false.
Geheel getal
  • minimum Minimaal geheel getal.
  • maximum Maximaal geheel getal.
  • default Standaard geheel getal.
  • enum Lijst met toegestane gehele getallen.
Tekenreeks
  • minLength Minimale tekenreekslengte.
  • maxLength Maximale tekenreekslengte.
  • default Standaardtekenreekswaarde indien deze niet door de gebruiker is opgegeven.
  • pattern Regex-patroon om te valideren tegen een waarde.
  • enum Lijst met toegestane tekenreekswaarden.
Maak voorbeeldinvoer voor supervisornaamruimteklasse.
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
Configuratie van supervisornaamruimteklasse
Om de implementatie van supervisornaamruimteklassen op te geven, maakt een beheerder een SupervisorNamespaceClassConfig met naamruimte-instellingen. Om een project toegang te geven tot de supervisornaamruimteklasse, moeten zowel SupervisorNamespaceClass als SupervisorNamespaceClassConfig bestaan.
SupervisorNamespaceClassConfig bevat de volgende eigenschappen:
  • metadata.name Naam van supervisornaamruimteklasse.
  • Projectnaam metadata.namespace.
  • spec.storageClasses Namen en limieten voor opslagklassen in megabytes.
  • spec.vmClasses Namen van de VM-klassen.
  • spec.contentSource Namen in de inhoudsbibliotheek die allemaal zijn gedefinieerd met type: ContentLibrary.
  • spec.limits Namen en waarden van limieten. Geldige limietwaarden zijn onder meer:
    • 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 Supervisors in het project die beschikbaar zijn voor het maken van een naamruimte. Om de juiste supervisor te selecteren, definieert matchExpressions de labelsleutel, de overeenkomende operator en de labelwaarde voor de overeenkomst.

Een beheerder stelt klasseparameters beschikbaar die kunnen worden gebruikt bij het definiëren van de waarden van de naamruimte-instellingen, zodat gebruikers de naamruimte-instellingen kunnen aanpassen tijdens de aanvraag.

Maak voorbeeldinvoer voor de configuratie van de supervisornaamruimteklasse.
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 dit voorbeeld worden parameters uit het voorbeeld van de supervisornaamruimteklasse als volgt gebruikt:
  • ((parameters.fastStorageClass ? 'fast-storage-class' : 'standard-storage-class')) toont een voorwaardelijke controle om een opslagklassenaam op te geven. fastStorageClass is een Booleaans type.
    • Als de gebruiker de parameterwaarde als true opgeeft, wordt de naam fast-storage-class.
    • Als de gebruiker de waarde als false opgeeft, wordt de naam standard-storage-class.
  • ((parameters.podCountLimit)) laat zien hoe u een waarde opgeeft voor de limiet voor het aantal pods. podCountLimit is een type geheel getal.
    • Als de gebruiker een waarde opgeeft die binnen de minimum- en maximumwaarden van 100 tot 1000 valt, zoals gedefinieerd in de supervisornaamruimteklasse, is dat de waarde voor de limiet van het aantal pods.
    • Als de gebruiker geen waarde opgeeft, is de limiet van het aantal pods de standaardwaarde 500, zoals gedefinieerd in de supervisornaamruimteklasse.
    • Als de gebruiker een waarde opgeeft buiten de minimum- en maximumwaarden, is de waarde ongeldig en mislukt het maken van de supervisornaamruimte met een fout die aangeeft dat de limiet van het aantal pods buiten het bereik van toegestane waarden valt.
Klassebinding van supervisornaamruimte
De klassebinding voor supervisornaamruimte maakt het gebruik van supervisornaamruimteklassen mogelijk bij het maken van een supervisornaamruimte in een project.
SupervisorNamespaceClassBinding bevat de volgende eigenschappen:
  • metadata.name Bindingnaam voor supervisornaamruimteklasse.
  • Projectnaam metadata.namespace.
  • spec.overrideParameters Door de beheerder gemaakt. Deze parameters zijn gedefinieerde waarden die niet kunnen worden gewijzigd door een gebruiker bij het maken van de supervisornaamruimte. const geeft de waarde voor de parameter op. Deze parameters zijn optioneel en zijn niet vereist voor alle klasseparameters, indien gedefinieerd.
Maak voorbeeldinvoer voor binding van supervisornaamruimteklasse.
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 dit voorbeeld is name: environment een overschrijvingsparameter die gebruikmaakt van de parameter environment van de supervisornaamruimteklasse. Door const: testing op te geven, kan de gebruiker alleen een supervisornaamruimte maken met behulp van deze klasse in een testomgeving.

Supervisornaamruimten

Supervisornaamruimte
Gebruikers kunnen supervisornaamruimten in een specifieke regio maken met behulp van een supervisornaamruimteklasse als sjabloon. Indien beschikbaar gesteld, kunnen optionele klasseparameters worden gebruikt om de naamruimte-instellingen te definiëren.
SupervisorNamespace bevat de volgende eigenschappen:
  • metadata.name Naam van de naamruimte in het project en op de supervisor.
  • Projectnaam metadata.namespace.
  • spec.regionName Regionaam.
  • spec.className Naam van supervisornaamruimteklasse.
  • spec.classParameters Optionele sleutelwaarde om de standaardparameterwaarden te overschrijven.
  • spec.description Beschrijving van de optionele naamruimte.
Maak voorbeeldinvoer voor een supervisornaamruimte.
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
Maak voorbeelduitvoer voor een supervisornaamruimte.
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>