Après la conversion automatique d'une spécification de cluster Tanzu Kubernetes au format d'API v1alpha2, pour effectuer une mise à jour continue du cluster Tanzu Kubernetes, généralement effectuée en modifiant la version de Tanzu Kubernetes, vous devrez peut-être effectuer un prétraitement de la spécification de cluster pour éviter les erreurs.

Conversion automatique des spécifications du cluster

Pour mettre à jour votre environnement vSphere with Tanzu vers l'API Service Tanzu Kubernetes Grid v1alpha2, vous mettez à jour le Cluster superviseur où le service s'exécute.

Une fois que le Service Tanzu Kubernetes Grid exécute l'API v1alpha2, le système convertit automatiquement toutes les spécifications de cluster Tanzu Kubernetes existantes du format v1alpha1 au format v1alpha2. Pendant le processus de conversion automatique, le système crée et remplit les champs attendus pour chaque manifeste de cluster. Obsolescences et ajouts d'API répertorie les champs de spécification de cluster nouveaux et obsolètes dans l'API v1alpha2.

Pour mettre à jour la version Tanzu Kubernetes d'un cluster dont le manifeste a été converti automatiquement au format v1alpha2, vous devez effectuer un pré-traitement manuel afin d'éviter les erreurs. Exemples de mise à jour de cluster répertorie différentes options.

Obsolescences et ajouts d'API

Le tableau répertorie les paramètres de spécification de cluster qui sont obsolètes dans l'API v1alpha2 et remplacés par de nouveaux paramètres.
Paramètres obsolètes Nouveaux paramètres Commentaires

spec.distribution.version

spec.distribution.fullVersion

spec.topology.controlPlane.tkr.refernece.name

spec.topology.nodePools[*].tkr.reference.name

Doit utiliser le format TKR NAME. Reportez-vous aux exemples.

spec.topology.workers

spec.topology.nodePools[*]

Dans un cluster converti, le bloc spec.topology.workers devient spec.topology.nodePools[0].

La première entrée de la liste nodePools est name: workers.

spec.topology.controlPlane.count

spec.topology.workers.count

spec.topology.controlPlane.replicas

spec.topology.nodePools[*].replicas

count a été remplacé par replicas

spec.topology.controlPlane.class

spec.topology.workers.class

spec.topology.controlPlane.vmClass

spec.topology.nodePools[*].vmClass

class a été remplacé par vmClass

S.O.

spec.topology.nodePools[*].labels

Valeurs clé-paire facultatives pour organiser et classer les objets ; les étiquettes sont propagées aux nœuds créés

S.O.

spec.topology.nodePools[*].taints

Marques facultatives avec lesquelles enregistrer les nœuds ; les marques définies par l'utilisateur sont propagées aux nœuds créés

Le format NOM TKR est requis

Outre les champs spec.distribution.version obsolètes, le format de DISTRIBUTION permettant de spécifier la version Tanzu Kubernetes n'est pas pris en charge. Cela signifie que vous ne pouvez pas utiliser les formats de chaîne suivants pour référencer la version cible : 1.21.2+vmware.1-tkg.1.ee25d55, 1.21.2 et 1.21.

Lors du référencement de la version Tanzu Kubernetes dans une spécification de cluster d'API v1alpha2, vous devez utiliser le format NOM TKR, pas le format de DISTRIBUTION obsolète. Bien que le format obsolète s'affiche dans la colonne MISES À JOUR DISPONIBLES, le seul format pris en charge est celui répertorié dans la colonne NOM TKR.
kubectl get tanzukubernetescluster
NAMESPACE        NAME            CONTROL PLANE   WORKER   TKR NAME                             AGE    READY   TKR COMPATIBLE   UPDATES AVAILABLE
tkgs-cluster-1   test-cluster    3               3        v1.21.2---vmware.1-tkg.1.ee25d55     38h    True    True             [1.21.2+vmware.1-tkg.1.ee25d55]

Utiliser kubectl edit pour mettre à jour une spécification de cluster

Si vous devez apporter des modifications à une spécification de cluster afin qu'elle soit conforme à l'API TKGS v1alpha2, utilisez la méthode kubectl edit. N'utilisez pas la méthode kubectl patch pour ce type de mise à jour. Reportez-vous à la section Méthodes de modification du manifeste du cluster. Pour configurer kubectl avec un éditeur, reportez-vous à la section Spécifier un éditeur de texte par défaut pour Kubectl.

Exemples de mise à jour de cluster

Étant donné que la modification de spec.distribution.version est le moyen le plus courant de déclencher une mise à jour continue du cluster (reportez-vous à Mettre à jour les clusters Tanzu Kubernetes), et que ce champ est obsolète dans l'API v1alpha2, il convient de prendre en compte certains éléments et des recommandations de pré-traitement à suivre pour éviter d'éventuels problèmes de mise à niveau du cluster.

Les exemples suivants montrent comment mettre à jour la version d'un cluster Tanzu Kubernetes provisionné à l'aide de l'API v1alpha1 vers un système qui exécute l'API v1alpha2.

Exemple 1 de mise à niveau du cluster : utiliser une référence NOM TKR unique dans le plan de contrôle

L'approche recommandée consiste à supprimer tous les blocs nodePools[*].tkr.reference.name de la spécification convertie et à mettre à jour le controlPlane.tkr.reference.name avec le NOM TKR de la version cible. Dans ce cas, la même version Tanzu Kubernetes est propagée à tous les nœuds nodePools[*].

À l'avenir, les versions Tanzu Kubernetes peuvent être différentes entre les controlPlane et les nodePools[*]. Actuellement, toutefois, toutes les versions d'un cluster doivent correspondre afin qu'il suffise de placer une seule référence NOM TKR dans controlPlane.

Par exemple :
apiVersion: run.tanzu.vmware.com/v1alpha2
kind: TanzuKubernetesCluster
metadata:
  name: tkgs-cluster-update-example1
  namespace: tkgs-cluster-ns
spec:
  settings:
    network:
      cni:
        name: antrea
      pods:
        cidrBlocks:
        - 192.0.2.0/16
      serviceDomain: cluster.local
      services:
        cidrBlocks:
        - 198.51.100.0/12
  topology:
    controlPlane:
      replicas: 3
      storageClass: vwt-storage-policy
      tkr:
        reference:
          name: v1.21.2---vmware.1-tkg.1.ee25d55
      vmClass: best-effort-medium
    nodePools:
    - name: workers
      replicas: 3
      storageClass: vwt-storage-policy
      vmClass: best-effort-medium

Exemple 2 de mise à niveau de cluster : utiliser une référence TKR NAME pour chaque pool de nœuds

Le second exemple consiste à placer le NOM TKR dans le bloc tkr.reference.name pour les topologies controlPlane et nodePools[*].

Cette approche a l'avantage d'être prête pour les versions ultérieures lorsque la version Tanzu Kubernetes peut être différente entre les pools de nœuds. Actuellement, elles doivent correspondre.

Par exemple :
apiVersion: run.tanzu.vmware.com/v1alpha2
kind: TanzuKubernetesCluster
metadata:
  name: tkgs-cluster-update-example2
  namespace: tkgs-cluster-ns
spec:
  settings:
    network:
      cni:
        name: antrea
      pods:
        cidrBlocks:
        - 192.0.2.0/16
      serviceDomain: cluster.local
      services:
        cidrBlocks:
        - 198.51.100.0/12
  topology:
    controlPlane:
      replicas: 3
      storageClass: vwt-storage-policy
      vmClass: best-effort-medium
      tkr:
        reference:
          name: v1.21.2---vmware.1-tkg.1.ee25d55
    nodePools:
    - name: workers
      replicas: 3
      storageClass: vwt-storage-policy
      vmClass: best-effort-medium
      tkr:
        reference:
          name: v1.21.2---vmware.1-tkg.1.ee25d55

Exemple 3 de mise à niveau de cluster : utiliser les champs de distribution obsolètes

La dernière option consiste à utiliser les champs obsolètes spec.distribution.fullVersion et spec.distribution.version, puis à supprimer manuellement tous les blocs tkr.reference.name. Vous devez inclure les deux champs, avec l'un utilisant le format NOM TKR et l'autre annulé. Les raccourcis de version tels que v1.21.2 et v1.21 ne sont pas pris en charge.
Note : Pour la version Tanzu Kubernetes sous Ubuntu, l'utilisation de spec.distribution.version n'est pas prise en charge.
L'exemple suivant utilise le fullVersion avec le NOM TKR et une valeur null (vide) dans le champ version. Toutes les entrées tkr.reference.name sont supprimées.
apiVersion: run.tanzu.vmware.com/v1alpha2
kind: TanzuKubernetesCluster
metadata:
  name: tkgs-cluster-update-example3a
  namespace: tkgs-cluster-ns
spec:
  distribution:
    fullVersion: v1.21.2---vmware.1-tkg.1.ee25d55
    version: ""
  settings:
    network:
      cni:
        name: antrea
      pods:
        cidrBlocks:
        - 192.0.2.0/16
      serviceDomain: cluster.local
      services:
        cidrBlocks:
        - 198.51.100.0/12
  topology:
    controlPlane:
      replicas: 3
      storageClass: vwt-storage-policy
      vmClass: best-effort-medium
    nodePools:
    - name: workers
      replicas: 3
      storageClass: vwt-storage-policy
      vmClass: best-effort-medium
Vous pouvez également utiliser le champ version avec le NOM TKR et une valeur null (vide) dans le champ fullVersion. Même si vous utilisez le champ version, les raccourcis de version ne sont pas pris en charge. Toutes les entrées tkr.reference.name sont supprimées.
apiVersion: run.tanzu.vmware.com/v1alpha2
kind: TanzuKubernetesCluster
metadata:
  name: tkgs-cluster-update-example3b
  namespace: tkgs-cluster-ns
spec:
  distribution:
    fullVersion: ""
    version: v1.21.2---vmware.1-tkg.1.ee25d55
  settings:
    network:
      cni:
        name: antrea
      pods:
        cidrBlocks:
        - 192.0.2.0/16
      serviceDomain: cluster.local
      services:
        cidrBlocks:
        - 198.51.100.0/12
  topology:
    controlPlane:
      replicas: 3
      storageClass: vwt-storage-policy
      vmClass: best-effort-medium
    nodePools:
    - name: workers
      replicas: 3
      storageClass: vwt-storage-policy
      vmClass: best-effort-medium