Vous pouvez utiliser la méthode kubectl patch pour effectuer une mise à jour sur place d'un cluster Tanzu Kubernetes. La méthode kubectl patch constitue une alternative à l'utilisation de la commande kubectl edit pour effectuer l'une des opérations de mise à jour de cluster prises en charge.

À propos de la commande Kubectl Patch

Restriction : Ne tentez pas d'utiliser kubectl patch comme décrit dans cette rubrique pour mettre à jour une spécification de cluster afin de la rendre conforme à l'API TKGS v1alpha2. Pour ce type de mise à jour, vous devez utiliser kubectl edit. Reportez-vous à la section Mise à jour d'une version de Tanzu Kubernetes après la conversion de la spécification de cluster vers l'API TKGS v1alpha2.
La commande kubectl patch effectue une mise à jour « sur place » d'un cluster. L'objectif de cette commande est de fournir une méthode de mise à niveau des versions Kubernetes et correspond à l'approche documentée ici. Pour plus d'informations sur la commande kubectl patch, reportez-vous à la section Mettre à jour les objets API sur place à l'aide du correctif kubectl dans la documentation de Kubernetes.

L'approche illustrée ici utilise la commande shell UNIX read pour obtenir une entrée depuis le clavier et l'attribuer à une variable nommée $PATCH. La commande kubectl patch appelle l'API Kubernetes pour mettre à jour le manifeste du cluster. L'indicateur --type=merge indique que les données contiennent uniquement les propriétés qui diffèrent du manifeste existant.

Mettre à niveau la version de Kubernetes à l'aide de la méthode Patch

La méthode la plus courante pour déclencher une mise à jour continue consiste à modifier la version de distribution de Kubernetes pour le cluster, à l'aide des propriétés .spec.distribution.version et .spec.distribution.fullVersion. Vous mettez à jour la suggestion de version, et effacez ou annulez la fullVersion pour éviter une éventuelle discordance de version pendant la découverte.

$ read -r -d '' PATCH <<'EOF'
spec:
  distribution:
    fullVersion: null    # NOTE: Must set to null when updating just the version field
    version: v1.18.5
EOF

Appliquez la mise à jour à l'aide de la commande kubectl patch. Vous devez inclure les guillemets entourant la variable "$PATCH" pour conserver les caractères de saut de ligne dans le manifeste du cluster. Remplacez la valeur TKG-CLUSTER-NAME par le nom réel de votre cluster.

kubectl patch --type=merge tanzukubernetescluster TKG-CLUSTER-NAME --patch "$PATCH"
Résultat attendu :
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched

Mettre à jour le cluster en modifiant la classe VirtualMachineClass pour les nœuds à l'aide de la méthode Patch

Une autre méthode pour déclencher une mise à jour continue d'un cluster Tanzu Kubernetes consiste à modifier la VirtualMachineClass des pools de nœuds, c'est-à-dire à modifier la propriété .spec.topology.controlPlane.class ou la propriété .spec.topology.workers.class.

read -r -d '' PATCH <<'EOF'
spec:
  topology:
    controlPlane:
      class: best-effort-xlarge
    workers:
      class: best-effort-xlarge
EOF

Appliquez la mise à jour à l'aide de la commande kubectl patch, en remplaçant la variable par le nom du cluster.

kubectl patch --type=merge tanzukubernetescluster TKG-CLUSTER-NAME --patch "$PATCH"
Résultat attendu :
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched

Mettre à jour le cluster en modifiant la classe StorageClass pour les nœuds à l'aide de la méthode Patch

Une autre méthode pour déclencher une mise à jour continue d'un cluster Tanzu Kubernetes consiste à modifier la StorageClass des pools de nœuds, c'est-à-dire à modifier la propriété .spec.topology.controlPlane.storageClass ou la propriété .spec.topology.workers.storageClass.

$ read -r -d '' PATCH <<'EOF'
spec:
  topology:
    controlPlane:
      storageClass: gc-storage-profile
    workers:
      storageClass: gc-storage-profile
EOF
Appliquez la mise à jour à l'aide de la commande kubectl patch, en remplaçant la variable par le nom du cluster.
kubectl patch --type=merge tanzukubernetescluster TKG-CLUSTER-NAME --patch "$PATCH"
Résultat attendu :
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched