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. Service TKG prend en charge ClusterClass à l'aide de l'API v1beta1.
Service TKG est fourni avec une définition ClusterClass par défaut nommée tanzukubernetescluster
. La ClusterClass tanzukubernetescluster
fournit le modèle de création de cluster à 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
La classe ClusterClass de cluster tanzukubernetescluster
par défaut est immuable. Elle peut être mise à jour avec chaque version du service TKG.
Pour afficher la ClusterClass tanzukubernetescluster
par défaut qui est fourni avec votre instance de service TKG, procédez comme suit :
- Connectez-vous à Superviseur.
kubectl vsphere login --server=IP-or-FQDN --vsphere-username [email protected]
- Faites basculer le contexte vers l'Espace de noms vSphere où un cluster TKGS est provisionné.
kubeclt config use-context VSPEHRE-NS
- Obtenez la ClusterClass
tanzukubernetescluster
par défaut.kubectl get clusterclass tanzukubernetescluster -o yaml
- Vous pouvez également écrire la sortie de la ClusterClass par défaut dans un fichier nommé tkc-dcc.yaml.
kubectl get clusterclass tanzukubernetescluster -o yaml > tkc-dcc.yaml
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.
key-name
), d'un trait de soulignement (tel que
KEY_NAME
) ou d'un point (tel que
key.name
). Vous ne pouvez pas utiliser un espace dans un nom de clé.
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.
controlPlaneCertificateRotation
controlPlaneCertificateRotation
pour configurer le système afin qu'il effectue une rotation des certificats TLS pour les nœuds de plan de contrôle en déclenchant un déploiement de ces certificats avant leur expiration. La rotation des certificats du plan de contrôle est disponible pour tous les nœuds de plan de contrôle nouveaux et existants.
- controlPlaneCertificateRotation
-
Booléen pour activer la fonctionnalité et le nombre de jours avant l'expiration pour effectuer la rotation des certificats. Pour plus d'informations, reportez-vous à la section
Rotation automatique des certificats à l'aide du fournisseur du plan de contrôle Kubeadm.
... variables: - name: controlPlaneCertificateRotation value: activate: true daysBefore: 90
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 - name: controlPlaneVolumes value: #name of the PVC to be used as the suffix (node.name) - name: NAME #mountPath is the directory where the volume device is mounted #takes the form /dir/path mountPath: /dir/path #storageClass is the storage class to use for the PVC storageClass: tkgs-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
defaultRegistrySecret
configure le 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 le 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
kubeAPIServerFQDNs
Utilisez la variable kubeAPIServerFQDNs
pour configurer un cluster avec un nom de domaine complet.
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: tkgs-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.
podSecurityStandard
podSecurityStandard
pour configurer une sécurité de l'espace à l'échelle du cluster.
- podSecurityStandard
-
Avec TKr v1.26 et versions ultérieures, les restrictions de sécurité de l'espace (PSA) par défaut sont appliquées au niveau de l'espace de noms à l'aide d'étiquettes d'annotation. Reportez-vous à la section Configurer PSA pour TKR 1.25 et versions ultérieures.
Vous pouvez également utiliser la variable
podSecurityStandard
pour configurer PSA à l'échelle du cluster lorsque vous provisionnez ou mettez à jour un cluster v1beta1.La variable
podSecurityStandard
peut être implémentée comme suit :... variables: - name: podSecurityStandard value: deactivated: DEACTIVATED audit: AUDIT-PROFILE enforce: ENFORCE-PROFILE warn: WARN-PROFILE auditVersion: AUDIT-VERSION enforceVersion: ENFORCE-VERSION warnVersion: WARN-VERSION exemptions: namespaces: [EXEMPT-NS]
Où :- La valeur de DEACTIVATED est
false
(par défaut) pour appliquer PSA à l'échelle du cluster ettrue
dans le cas contraire. - La valeur de *-PROFILE est le profil PSA de chaque mode, qui peut être
"privileged"
,"baseline"
ou"restricted"
(par défaut). - La valeur de *-VERSION correspond à la version de Kubernetes pour chaque mode, tel que
"v1.26"
. La valeur de"latest"
est la valeur pas défaut. - La valeur de EXEMPT-NS est une liste d'espaces de noms séparés par des virgules à exclure du contrôle PSA.
Note : Les espaces de noms système sont exclus de la sécurité de l'espace, notamment kube-system, tkg-system et vmware-system-cloud-provider.Si vous n'implémentez pas la variable
podSecurityStandard
, le comportement de PSA par défaut est conservé. Si vous incluez la variablepodSecurityStandard
dans la spécification du cluster, les paramètres de la variable sont appliqués, y compris les valeurs par défaut, sauf si vous les remplacez.L'exemple suivant indique les valeurs par défaut.... variables: - name: podSecurityStandard value: enforce: "restricted" enforce-version: "latest"
L'exemple suivant fournit des journaux d'audit et des avertissements pour identifier les charges de travail qui ne suivent pas les meilleures pratiques actuelles de sécurisation renforcée de l'espace, mais qui appliquent uniquement une stratégie minimalement restrictive (« ligne de base ») qui empêche les escalades de privilèges connus.... variables: - name: podSecurityStandard value: audit: "restricted" warn: "restricted" enforce: "baseline"
L'exemple suivant applique une stratégie restreinte, sauf sur un espace de noms spécifique.... variables: - name: podSecurityStandard value: audit: "restricted" warn: "restricted" enforce: "restricted" exemptions: namesaces: ["privileged-workload-ns"]
L'exemple suivant limite l'application à une version de TKr particulière.... variables: - name: podSecurityStandard value: audit-version: "v1.26" warn-version: "v1.26" enforce-version: "v1.26"
Pour plus d'informations, reportez-vous à la section Pod Security Standards de la documentation Kubernetes.
- La valeur de DEACTIVATED est
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: tkgs-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é.