L'API Cluster v1beta1 vous permet de provisionner un cluster en fonction d'une définition ClusterClass par défaut.
API ClusterClass v1beta1
L'API de cluster Kubernetes est une suite d'outils qui fournit le provisionnement, la mise à niveau et l'exploitation déclaratifs des clusters Kubernetes. ClusterClass est une évolution de l'API du cluster qui vous permet de définir des modèles pour la gestion du cycle de vie des ensembles de clusters. TKG 2 sur le Superviseur prend en charge la classe ClusterClass à l'aide de l'API v1beta1.
TKG 2 sur le Superviseur est fourni avec une définition de ClusterClass par défaut nommée tanzukubernetescluster
. La classe ClusterClass tanzukubernetescluster
fournit le modèle de création de clusters TKG 2 sur le Superviseur à l'aide de l'API v1beta. La ClusterClass tanzukubernetescluster
par défaut est disponible dans tous les espaces de noms d'utilisateur. Pour créer un cluster basé sur cette classe ClusterClass, référencez-le dans la spécification du cluster. Reportez-vous aux exemples v1beta pour obtenir des instructions.
ClusterClass tanzubernerescluster par défaut
tanzukubernetescluster
par défaut est immuable. Elle est fournie ici comme référence.
apiVersion: cluster.x-k8s.io/v1beta1 kind: ClusterClass metadata: name: tanzukubernetescluster annotations: run.tanzu.vmware.com/resolve-tkr: "" spec: controlPlane: metadata: annotations: run.tanzu.vmware.com/resolve-os-image: os-name=photon ref: apiVersion: controlplane.cluster.x-k8s.io/v1beta1 kind: KubeadmControlPlaneTemplate name: "tkc-control-plane" machineInfrastructure: ref: kind: VSphereMachineTemplate apiVersion: vmware.infrastructure.cluster.x-k8s.io/v1beta1 name: "tkc-control-plane" machineHealthCheck: maxUnhealthy: 100% nodeStartupTimeout: 2h0m0s unhealthyConditions: - status: Unknown timeout: 5m0s type: Ready - status: "False" timeout: 12m0s type: Ready infrastructure: ref: apiVersion: vmware.infrastructure.cluster.x-k8s.io/v1beta1 kind: VSphereClusterTemplate name: "tkc-infrastructure" workers: machineDeployments: - class: node-pool template: metadata: annotations: run.tanzu.vmware.com/resolve-os-image: os-name=photon bootstrap: ref: kind: KubeadmConfigTemplate apiVersion: bootstrap.cluster.x-k8s.io/v1beta1 name: "tkc-md" infrastructure: ref: kind: VSphereMachineTemplate apiVersion: vmware.infrastructure.cluster.x-k8s.io/v1beta1 name: "tkc-md" machineHealthCheck: maxUnhealthy: 100% nodeStartupTimeout: 2h0m0s unhealthyConditions: - status: Unknown timeout: 5m0s type: Ready - status: "False" timeout: 12m0s type: Ready variables: - name: TKR_DATA required: false schema: openAPIV3Schema: type: object additionalProperties: type: object properties: kubernetesSpec: type: object properties: version: type: string imageRepository: type: string etcd: type: object properties: imageTag: type: string coredns: type: object properties: imageTag: type: string osImageRef: type: object properties: name: type: string labels: type: object additionalProperties: type: string - name: vmClass required: true schema: openAPIV3Schema: type: string - name: storageClass required: true schema: openAPIV3Schema: type: string - name: storageClasses required: false schema: openAPIV3Schema: type: array items: type: string - name: defaultStorageClass required: false schema: openAPIV3Schema: type: string - name: extensionCert required: false schema: openAPIV3Schema: type: object properties: contentSecret: type: object properties: name: type: string key: type: string - name: clusterEncryptionConfigYaml required: false schema: openAPIV3Schema: type: string - name: defaultRegistrySecret required: false schema: openAPIV3Schema: type: object properties: namespace: type: string name: type: string data: type: string - name: ntp required: false schema: openAPIV3Schema: type: string - name: user required: false schema: openAPIV3Schema: type: object properties: passwordSecret: type: object properties: name: type: string key: type: string sshAuthorizedKey: type: string - name: nodePoolTaints required: false schema: openAPIV3Schema: type: array items: type: object properties: key: type: string value: type: string effect: type: string timeAdded: type: integer - name: nodePoolLabels required: false schema: openAPIV3Schema: type: array items: type: object properties: key: type: string value: type: string - name: proxy required: false schema: openAPIV3Schema: type: object properties: httpProxy: type: string httpsProxy: type: string noProxy: type: array items: type: string - name: trust required: false schema: openAPIV3Schema: type: object properties: additionalTrustedCAs: type: array items: type: object properties: name: type: string - name: controlPlaneVolumes required: false schema: openAPIV3Schema: type: array items: type: object properties: storageClass: type: string mountPath: type: string name: type: string capacity: type: object properties: storage: type: string - name: nodePoolVolumes required: false schema: openAPIV3Schema: type: array items: type: object properties: storageClass: type: string mountPath: type: string name: type: string capacity: type: object properties: storage: type: string
Variables ClusterClass pour personnaliser un cluster
Vous personnalisez un cluster en fonction de la classe de cluster ClusterClass tanzukubernetescluster
à l'aide de variables. Les variables sont définies à l'aide de paires nom-valeurs. La syntaxe doit être conforme au openAPIV3Schema.
- Classe de VM
- Classe de stockage
- Proxy
- Certificats TLS
- Clés SSH
Le tableau suivant répertorie toutes les variables disponibles avec la ClusterClass tanzukubernetescluster
par défaut.
clusterEncryptionConfigYaml
Utilisez la variable clusterEncryptionConfigYaml
pour configurer le chiffrement du cluster.
- clusterEncryptionConfigYaml
- Chaîne qui est un fichier YAML fournissant des détails de configuration de chiffrement.
controlPlaneVolumes
controlPlaneVolumes
pour configurer des volumes persistants pour les nœuds de plan de contrôle.
- controlPlaneVolumes
-
Groupe facultatif d'objets, chacun d'eux incluant
name
,storageClass
etmountPath
, chacun d'eux étant des chaînes, ainsi qu'un objetcapacity
facultatif qui inclut une chaînestorage
.... variables: #controlPlaneVolumes is an optional set of PVCs to create and #attach to each node; use for high-churn components like etcd - name: controlPlaneVolumes value: | #name of the PVC to be used as the suffix (node.name) - name: etcd #mountPath is the directory where the volume device is mounted #takes the form /dir/path mountPath: /var/lib/etcd #storageClass is the storage class to use for the PVC storageClass: tkg2-storage-profile #capacity is the PVC storage capacity capacity: #storage sets the capacity for the disk volume #if not specified defaults to storageClass capacity storage: 4Gi
defaultRegistrySecret
Utilisez la variable defaultRegistrySecret
pour configurer un registre de conteneur par défaut pour le cluster.
- defaultRegistrySecret
- Objet qui inclut une clé publique, un nom de certificat et un espace de noms pour un registre de conteneur par défaut.
defaultStorageClass
Utilisez la variable defaultStorageClass
pour configurer une classe de stockage par défaut pour le cluster.
- defaultStorageClass
-
Chaîne qui identifie la classe de stockage à utiliser comme classe de stockage par défaut, souvent requise par certaines applications telles que les graphiques Helm et les modules Tanzu.
... variables: - name: defaultStorageClass value: tkg2-storage-profile
extensionCert
Utilisez la variable extensionCert
pour configurer un certificat TLS.
- extensionCert
-
Objet contenant un objet
contentSecret
contenant des chaînesname
etkey
.contentSecret
fait référence à un objet secret Kubernetes créé pour un certificat TLS.... variables: #extensionCert specifies the cert and key for Extensions Controller #self-signed issuer and certificates must be created in advance - name: extensionCert value: contentSecret: #name specifies the name of secret name: string #key specifies the content of tls\.crt in the secret's data map key: string
nodePoolLabels
Utilisez la variable nodePoolLabels
pour configurer des étiquettes pour les nœuds worker.
- nodePoolLabels
- Groupe d'un ou de plusieurs objets, chaque objet contenant une paire clé/valeur, ces deux éléments étant des chaînes.
nodePoolTaints
Utilisez la variable nodePoolTaints
pour appliquer des rejets aux nœuds worker.
- nodePoolTaints
- Groupe d'objets, chaque objet contient un taint qui s'applique aux nœuds worker.
nodePoolVolumes
Utilisez la variable nodePoolVolumes
pour spécifier des volumes persistants pour les nœuds de cluster.
- nodePoolVolumes
-
Groupe facultatif d'objets, chacun d'eux incluant
name
,storageClass
etmountPath
, chacun d'eux étant des chaînes, ainsi qu'un objetcapacity
facultatif qui inclut une chaînestorage
.... variables: #nodePoolVolumes is an optional set of PVCs to create and #attach to each node; use for high-churn components like containerd - name: nodePoolVolumes value: | #name of the PVC to be used as the suffix (node.name) - name: etcd #mountPath is the directory where the volume device is mounted #takes the form /dir/path mountPath: /var/lib/containerd #storageClass is the storage class to use for the PVC storageClass: tkg2-storage-profile #capacity is the PVC storage capacity capacity: #storage sets the capacity for the disk volume #if not specified defaults to storageClass capacity storage: 4Gi
ntp
Utilisez la variable ntp
pour configurer un serveur NTP pour le cluster.
- ntp
- Chaîne qui est le nom de domaine complet ou l'adresse IP d'un serveur NTP.
proxy
Utilisez la variable proxy
pour configurer un serveur proxy pour le cluster.
- proxy
- Objet avec des paramètres faisant référence à un serveur proxy pour les connexions de cluster sortantes.
storageClass
Utilisez la variable storageClass
pour configurer une classe de stockage pour le cluster.
- storageClass
-
Chaîne qui est le nom d'un profil de stockage vSphere attribué à l'
Espace de noms vSphere dans lequel le cluster TKG est provisionné.
... variables: - name: storageClass value: tkg2-storage-profile
storageClasses
Utilisez la variable storageClasses
pour configurer un tableau de classes de stockage pour le cluster.
- storageClasses
-
Groupe d'une ou de plusieurs chaînes, chaque chaîne étant le nom d'un profil de stockage vSphere attribué à l'
Espace de noms vSphere dans lequel le cluster TKG est provisionné.
... variables: - name: storageClasses value: [tkg2-storage-profile, tkg2-storage-profile-latebinding]
TKR_DATA
Utilisez la variable TKR_DATA
pour spécifier les informations TKR.
- TKR_DATA
- Objet que vous utilisez pour spécifier la version de TKR et d'autres informations.
trust
Utilisez la variable trust
pour spécifier un ou plusieurs certificats d'autorité de certification approuvés pour le cluster.
- trust
- Objet permettant d'ajouter des certificats TLS au cluster : autorités de certification supplémentaires ou certificats de fin.
utilisateur
Utilisez la variable user
pour spécifier les informations d'identification de l'utilisateur du cluster.
- utilisateur
- Objet qui inclut un objet passwordSecret avec des chaînes de nom et de clé et une chaîne sshAuthorizedKey. Vous pouvez utiliser cette variable pour ajouter la clé SSH d'un utilisateur aux nœuds de cluster pour l'accès SSH distant.
vmClass
Utilisez la variable vmClass
pour configurer la classe de machine virtuelle pour les nœuds du cluster.
- vmClass
- Chaîne requise qui se mappe au nom d'une classe de machine virtuelle liée à l' Espace de noms vSphere dans lequel le cluster TKG est provisionné.