È possibile utilizzare il metodo kubectl patch per eseguire un aggiornamento sul posto di un cluster di Tanzu Kubernetes. Il metodo kubectl patch è un'alternativa all'utilizzo del comando kubectl edit per eseguire una delle operazioni di aggiornamento del cluster supportate.

Informazioni sul comando kubectl patch

Il comando kubectl patch esegue un aggiornamento sul posto di un cluster. Lo scopo di questo comando è fornire un metodo per aggiornare le versioni di Kubernetes ed è l'approccio qui documentato. Per ulteriori informazioni sul comando kubectl patch, vedere la pagina sull'aggiornamento degli oggetti API sul posto utilizzando kubectl patch nella documentazione di Kubernetes.

L'approccio qui presentato utilizza il comando read della shell UNIX per ottenere input dalla tastiera e assegnarlo a una variabile denominata $PATCH. Il comando kubectl patch richiama l'API di Kubernetes per aggiornare il manifesto del cluster. Il flag --type=merge indica che i dati contengono solo le proprietà diverse dal manifesto esistente.

Aggiornamento della versione di Kubernetes tramite il metodo patch

Il metodo più comune per attivare un aggiornamento in sequenza consiste nel modificare la versione di distribuzione di Kubernetes per il cluster utilizzando le proprietà .spec.distribution.version e .spec.distribution.fullVersion. È possibile aggiornare il suggerimento version e annullare l'impostazione o impostare su nnull fullVersion per evitare la potenziale non corrispondenza della versione durante il rilevamento.

$ 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

Applicare l'aggiornamento utilizzando il comando kubectl patch. È necessario racchiudere la variabile "$PATCH" virgolette per conservare i caratteri di nuova riga nel manifesto del cluster. Sostituire il valore TKG-CLUSTER-NAME con il nome effettivo del cluster.

kubectl patch --type=merge tanzukubernetescluster TKG-CLUSTER-NAME --patch "$PATCH"
Risultato previsto:
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched

Aggiornamento del cluster modificando VirtualMachineClass per i nodi utilizzando il metodo patch

Un altro modo per attivare un aggiornamento in sequenza di un cluster di Tanzu Kubernetes consiste nella modifica di VirtualMachineClass per i pool di nodi, ovvero modificando la proprietà .spec.topology.controlPlane.class o la proprietà .spec.topology.workers.class.

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

Applicare l'aggiornamento utilizzando il comando kubectl patch, sostituendo la variabile con il nome del cluster.

kubectl patch --type=merge tanzukubernetescluster TKG-CLUSTER-NAME --patch "$PATCH"
Risultato previsto:
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched

Aggiornamento del cluster modificando StorageClass per i nodi utilizzando il metodo patch

Un altro modo per attivare un aggiornamento in sequenza di un cluster di Tanzu Kubernetes consiste nella modifica di StorageClass per i pool di nodi, ovvero modificando la proprietà .spec.topology.controlPlane.storageClass o la proprietà .spec.topology.workers.storageClass.

$ read -r -d '' PATCH <<'EOF'
spec:
  topology:
    controlPlane:
      storageClass: gc-storage-profile
    workers:
      storageClass: gc-storage-profile
EOF
Applicare l'aggiornamento utilizzando il comando kubectl patch, sostituendo la variabile con il nome del cluster.
kubectl patch --type=merge tanzukubernetescluster TKG-CLUSTER-NAME --patch "$PATCH"
Risultato previsto:
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched