Les administrateurs et les développeurs peuvent agir sur les ressources d'API de l'interface de consommation de cloud (CCI) exposées par le serveur d'API Kubernetes de CCI.

En fonction du type de ressource, les administrateurs et les développeurs peuvent utiliser l'API pour effectuer les actions suivantes.

Type de ressource Verbes d'action d'administrateur Verbes d'action du développeur
CloudAccount obtenir, répertorier
Supervisor obtenir, corriger, répertorier
Project créer, obtenir, mettre à jour, corriger, supprimer, répertorier obtenir, répertorier
ProjectRole obtenir, répertorier obtenir, répertorier
ProjectRoleBinding créer, obtenir, mettre à jour, corriger, supprimer, répertorier obtenir, répertorier
Region créer, obtenir, mettre à jour, corriger, supprimer, répertorier obtenir, répertorier
RegionBinding créer, obtenir, mettre à jour, corriger, supprimer, répertorier obtenir, répertorier
RegionBindingConfig créer, obtenir, mettre à jour, corriger, supprimer, répertorier
SupervisorNamespaceClass créer, obtenir, mettre à jour, corriger, supprimer, répertorier obtenir, répertorier
SupervisorNamespaceClassConfig créer, obtenir, mettre à jour, corriger, supprimer, répertorier
SupervisorNamespaceClassBinding créer, obtenir, mettre à jour, corriger, supprimer, répertorier obtenir, répertorier
SupervisorNamespace créer, obtenir, supprimer, répertorier créer, obtenir, supprimer, répertorier
Les exemples suivants montrent l'appel et les réponses de la CLI. L'utilisation de la CLI nécessite d'avoir effectué les actions suivantes :
  • Téléchargement du plug-in CCI kubectl.
  • Obtention d'un jeton d'API.
  • Connecté au serveur CCI.
Reportez-vous à la section Préparation de l'utilisation de l'interface de ligne de commande pour effectuer des tâches CCI

Projets et utilisateurs

Projet
Les administrateurs créent des projets pour regrouper les utilisateurs et définir l'accès aux sources de contenu, telles que les modèles de cloud dans Automation Assembler ou aux éléments du catalogue dans Automation Service Broker.
Project comprend les propriétés suivantes :
  • metadata.name Nom du projet.
  • spec.description Description facultative.
  • spec.sharedResources Si la valeur est true, le projet partage les espaces de noms de superviseur avec d'autres utilisateurs du projet. Si la valeur est false, le projet limite l'accès à l'espace de noms aux administrateurs ou à l'utilisateur ayant créé l'espace de noms.
Exemple d'entrée de création de projet.
apiVersion: project.cci.vmware.com/v1alpha1
kind: Project
metadata:
  name: demo-project
spec:
  description: This is a demo project
  sharedResources: true
Rôle de projet
Le rôle de projet reflète les rôles disponibles d'administration, d'affichage ou de modification pouvant être attribués à un utilisateur dans un projet.
Rôle de projet Description
admin Permet la modification et la suppression de l'espace de noms.
vue Rôle en lecture seule sur l'espace de noms.
modifier Permet de modifier l'espace de noms.
Les rôles de projet sont en lecture seule et fournissent des rôles disponibles lors de la création de la liaison de rôle de projet.

Exemple d'entrée de lecture du rôle de projet.

apiVersion: authorization.cci.vmware.com/v1alpha1
kind: ProjectRole
metadata:
  name: admin
spec:
  description: project administrator
Liaison de rôle de projet
La liaison de rôle de projet est utilisée pour attribuer à un utilisateur ou à un groupe un rôle dans un projet.
ProjectRoleBinding comprend les propriétés suivantes :
  • metadata.name Nom de la liaison de rôle de projet et nécessite un format spécifique pour refléter le type d'objet (utilisateur ou groupe) et le nom de l'objet :
    cci:<user/group>:<subject domain>:<subject name>
  • metadata.namespace Décrit le nom du projet.
  • subjects Décrit l'utilisateur ou le groupe. Une seule entrée est autorisée.
  • roleRef Décrit le rôle.
Exemple d'entrée de création d'une liaison de rôle de projet.
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

Instances de vCenter et superviseurs

Cette catégorie traite de l'infrastructure et ses fonctions sont destinées uniquement aux administrateurs.

Compte de cloud
Les comptes de cloud sont créés automatiquement par vSphere+ ou manuellement par un administrateur pour enregistrer une instance de vCenter et activer des centres de données avec des superviseurs.
Exemple de sortie de création d'un compte de 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>
Superviseur
Un superviseur est créé par le système une fois la collecte de données vCenter terminée. L'administrateur peut mettre à jour le superviseur avec des étiquettes de capacité pour le placement et l'attribuer à une région.
  • metadata.labels Les administrateurs définissent des étiquettes avec des paramètres clé-valeur qui reflètent les capacités du superviseur. Les étiquettes sont utilisées pour filtrer les superviseurs en fonction des capacités lors de la création d'un espace de noms.
  • spec.regionNames Les administrateurs définissent des noms de région afin qu'un superviseur puisse être attribué à une région. Un superviseur ne peut être attribué qu'à une seule région et n'est pas attribué à une région par défaut.
Exemple de sortie de la mise à jour du superviseur.
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

Région
Un administrateur crée des régions en tant que mécanisme de regroupement pour un ou plusieurs superviseurs. Les régions peuvent être basées sur divers paramètres tels que la géographie ou l'infrastructure, et elles peuvent inclure des superviseurs de plusieurs instances de vCenter.
Exemple d'entrée de création d'une région.
apiVersion: topology.cci.vmware.com/v1alpha1
kind: Region
metadata:
  name: us-west1
spec:
  description: The us-west1 region
Liaison de région
Un administrateur crée des liaisons de région pour associer des régions à des projets.

Pour qu'un utilisateur d'un projet crée dans des espaces de noms de superviseur, RegionBinding et RegionBindingConfig doivent exister.

RegionBinding comprend les propriétés suivantes :
  • metadata.name Nom de la région et doit correspondre à une région existante.
  • metadata.namespace Nom du projet.
Exemple d'entrée de création d'une liaison de région.
apiVersion: topology.cci.vmware.com/v1alpha1
kind: RegionBinding
metadata:
  name: us-west1
  namespace: demo-project
Configuration de liaison de région
Pour contrôler la logique de positionnement du superviseur par région dans un projet, un administrateur définit RegionBindingConfig. Lorsque RegionBindingConfig est défini, un administrateur peut utiliser des paires clé-valeur d'étiquette de superviseur pour affiner l'association de superviseurs spécifiques à des projets. Par exemple, un administrateur peut utiliser une spécification key: environment pour sélectionner un superviseur spécifié à des fins de test avec value: testing.
RegionBindingConfig comprend les propriétés suivantes :
  • metadata.name Nom de la région et doit correspondre à une région existante.
  • metadata.namespace Nom du projet.
  • spec.supervisorSelector sélectionne les superviseurs du projet disponibles pour la création d'un espace de noms. Pour sélectionner le superviseur approprié, matchExpressions définit la clé d'étiquette de superviseur, l'opérateur correspondant et la valeur de la correspondance.
    La correspondance d'expression spec.supervisorSelector utilise les opérateurs suivants :
    • operator: In La liaison de région teste si la clé-valeur correspond à la clé-valeur de l'étiquette de superviseur. matchExpressions est un tableau, mais le tableau est actuellement limité à une valeur d'entrée unique.
    • operator: NotIn La liaison de région teste si la clé-valeur ne correspond pas à la clé-valeur de l'étiquette de superviseur. matchExpressions est un tableau, mais le tableau est actuellement limité à une valeur d'entrée unique.
    • operator: Exists La liaison de région recherche une correspondance avec un superviseur qui contient la clé d'étiquette. Les valeurs ne sont pas utilisées.
    • operator: DoesNotExist La liaison de région recherche un superviseur qui ne contient pas la clé d'étiquette. Les valeurs ne sont pas utilisées.
Exemple d'entrée de création d'une configuration de liaison de région.
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

Classes des espaces de noms du superviseur

Classe de l'espace de noms de superviseur
SupervisorNamespaceClass définit le modèle d'espace de noms et les paramètres facultatifs qui peuvent être utilisés pour personnaliser les paramètres d'espace de noms lors de la création.
Le champ par défaut spécifie la valeur du paramètre qui est utilisée si un utilisateur ne fournit pas la valeur du paramètre lors de la création de l'espace de noms. Par exemple, si default: false, false correspond à la valeur du paramètre.
Note : Pour vous assurer qu'un utilisateur peut créer un espace de noms avec des valeurs de paramètre partielles ou nulles, chaque paramètre doit inclure un champ et une valeur par défaut.
Définitions des types de paramètres :
Type de paramètre. Propriétés
Valeur booléenne
  • default Valeur booléenne par défaut.
  • enum Liste des valeurs booléennes autorisées. Peut être utilisé pour qu'un paramètre n'ait qu'une seule valeur, true ou false.
Entier
  • minimum Valeur entière minimale.
  • maximum Valeur entière maximale.
  • default Valeur entière par défaut.
  • enum Liste des valeurs entières autorisées.
Chaîne
  • minLength Longueur de chaîne minimale.
  • maxLength Longueur de chaîne maximale.
  • default Valeur de chaîne par défaut si elle n'est pas fournie par l'utilisateur.
  • pattern Modèle regex à comparer à la valeur.
  • enum Liste des valeurs de chaîne autorisées.
Exemple d'entrée de création d'une classe d'espace de noms de superviseur.
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
Configuration de la classe d'espace de noms de superviseur
Pour spécifier l'implémentation des classes d'espace de noms de superviseur, un administrateur crée une SupervisorNamespaceClassConfig avec des paramètres d'espace de noms. Pour qu'un projet ait accès à la classe d'espace de noms de superviseur, SupervisorNamespaceClass et SupervisorNamespaceClassConfig doivent tous deux exister.
SupervisorNamespaceClassConfig comprend les propriétés suivantes :
  • metadata.name Nom de classe de l'espace de noms de superviseur.
  • metadata.namespace Nom du projet.
  • spec.storageClasses Noms et limites de classe de stockage en mégaoctets.
  • spec.vmClasses Nom des classes de machine virtuelle.
  • spec.contentSource Noms de bibliothèque de contenu qui sont tous définis avec type: ContentLibrary.
  • spec.limits Noms et valeurs des limites. Les valeurs de limite valides sont les suivantes :
    • 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 Superviseurs du projet disponibles pour la création d'un espace de noms. Pour sélectionner le superviseur approprié, matchExpressions définit la clé d'étiquette, l'opérateur correspondant et la valeur d'étiquette pour la correspondance.

Un administrateur expose des paramètres de classe qui peuvent être consommés lors de la définition des valeurs des paramètres d'espace de noms afin que les utilisateurs puissent personnaliser les paramètres d'espace de noms pendant la demande.

Exemple d'entrée de création d'une configuration de classe d'espace de noms de superviseur.
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 
Cet exemple utilise les paramètres de l'exemple de classe d'espace de noms de superviseur comme suit :
  • ((parameters.fastStorageClass ? 'fast-storage-class' : 'standard-storage-class')) affiche une vérification conditionnelle pour spécifier un nom de classe de stockage. fastStorageClass est un type booléen.
    • Si l'utilisateur définit la valeur du paramètre sur true, le nom est fast-storage-class.
    • Si l'utilisateur définit la valeur sur false, le nom est standard-storage-class.
  • ((parameters.podCountLimit)) indique comment spécifier une valeur pour la limite du nombre d'espaces. podCountLimit est un type entier.
    • Si l'utilisateur spécifie une valeur comprise entre la valeur minimale 100 et la valeur maximale 1 000, telles que définies dans la classe d'espace de noms de superviseur, il s'agit de la valeur de la limite du nombre d'espaces.
    • Si l'utilisateur ne spécifie aucune valeur, la limite du nombre d'espaces est la valeur par défaut de 500, telle que définie dans la classe d'espace de noms de superviseur.
    • Si l'utilisateur spécifie une valeur en dehors des valeurs minimale et maximale, la valeur n'est pas valide et la création de l'espace de noms de superviseur échoue avec une erreur indiquant que la limite du nombre d'espaces se situe en dehors de la plage de valeurs autorisées.
Liaison de classe d'espace de noms de superviseur
La liaison de classe d'espace de noms de superviseur permet d'utiliser des classes d'espace de noms de superviseur lors de la création d'un espace de noms de superviseur dans un projet.
SupervisorNamespaceClassBinding comprend les propriétés suivantes :
  • Nom de la liaison de classe de l'espace de noms de superviseur metadata.name.
  • metadata.namespace Nom du projet.
  • spec.overrideParameters Créés par l'administrateur ; ces paramètres définissent des valeurs qui ne peuvent pas être modifiées par un utilisateur lors de la création de l'espace de noms de superviseur. const spécifie la valeur du paramètre. Ces paramètres sont facultatifs et, s'ils sont définis, ne sont pas requis pour tous les paramètres de classe.
Exemple d'entrée de création d'une liaison de classe d'espace de noms de superviseur.
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
Dans cet exemple, name: environment est un paramètre de remplacement utilisant le paramètre environment de la classe d'espace de noms de superviseur. En spécifiant const: testing, l'utilisateur peut uniquement créer un espace de noms de superviseur à l'aide de cette classe dans un environnement de test.

Espaces de noms de superviseur

Espace de noms de superviseur
Les utilisateurs peuvent créer des espaces de noms de superviseur dans une région spécifique à l'aide d'une classe d'espace de noms de superviseur comme modèle. S'ils sont exposés, des paramètres de classe facultatifs peuvent être utilisés pour définir les paramètres d'espace de noms.
SupervisorNamespace comprend les propriétés suivantes :
  • metadata.name Nom de l'espace de noms dans le projet et sur le superviseur.
  • metadata.namespace Nom du projet.
  • spec.regionName Nom de la région.
  • spec.className Nom de classe de l'espace de noms de superviseur.
  • spec.classParameters Valeur-clé facultative pour remplacer les valeurs des paramètres par défaut.
  • spec.description Description facultative de l'espace de noms.
Exemple d'entrée de création d'un espace de noms de superviseur.
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
Exemple de sortie de création d'un espace de noms de superviseur.
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>