Você pode usar o método kubectl patch para realizar uma atualização "in-loco" de um cluster Tanzu Kubernetes. O método kubectl patch é uma alternativa ao uso do comando kubectl edit para realizar uma das operações de atualização de cluster com suporte.

Sobre o comando de patch do Kubectl

O comando kubectl patch executa uma atualização "no local" de um cluster. O objetivo deste comando é fornecer um método para atualizar versões do Kubernetes e é a abordagem documentada aqui. Para obter mais informações sobre o comando kubectl patch, consulte Update API Objects in Place Using kubectl patch na documentação do Kubernetes.

A abordagem demonstrada aqui usa o comando shell do UNIX read para obter a entrada do teclado e atribuí-la a uma variável chamada $PATCH. O comando kubectl patch invoca a API do Kubernetes para atualizar o manifesto do cluster. O sinalizador --type=merge indica que os dados contêm apenas as propriedades que são diferentes do manifesto existente.

Atualizar a versão do Kubernetes usando o método de patch

O método mais comum para acionar uma atualização contínua é alterando a versão de distribuição do Kubernetes para o cluster, usando as propriedades .spec.distribution.version e .spec.distribution.fullVersion. Você atualiza a dica version e cancela a definição ou anula o fullVersion para evitar uma possível incompatibilidade de versão durante a descoberta.

$ 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

Aplique a atualização usando o comando kubectl patch. Você deve incluir as aspas em torno da variável "$PATCH" para preservar os caracteres de nova linha no manifesto do cluster. Substitua o valor TKG-CLUSTER-NAME pelo nome real do seu cluster.

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

Atualização pelo cluster, alterando o VirtualMachineClass para os nós usando o método de patch

Outra maneira de acionar uma atualização contínua de um cluster do Tanzu Kubernetes é alterando o VirtualMachineClass para os pools de nós, ou seja, alterando a propriedade .spec.topology.controlPlane.class ou a propriedade .spec.topology.workers.class.

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

Aplique a atualização usando o comando kubectl patch, substituindo a variável pelo nome do cluster.

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

Atualizar o cluster alterando o StorageClass para os nós usando o método de patch

Outra maneira de acionar uma atualização contínua de um cluster do Tanzu Kubernetes é alterando o StorageClass para os pools de nós, ou seja, alterando a propriedade .spec.topology.controlPlane.storageClass ou a propriedade .spec.topology.workers.storageClass.

$ read -r -d '' PATCH <<'EOF'
spec:
  topology:
    controlPlane:
      storageClass: gc-storage-profile
    workers:
      storageClass: gc-storage-profile
EOF
Aplique a atualização usando o comando kubectl patch, substituindo a variável pelo nome do cluster.
kubectl patch --type=merge tanzukubernetescluster TKG-CLUSTER-NAME --patch "$PATCH"
Resultado esperado:
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched