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"
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"
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
kubectl patch
, substituindo a variável pelo nome do cluster.
kubectl patch --type=merge tanzukubernetescluster TKG-CLUSTER-NAME --patch "$PATCH"
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched