Atualize cargas de trabalho sem estado

Este documento explica como atualizar cargas de trabalho sem estado existentes em execução num cluster do Kubernetes isolado do ar do Google Distributed Cloud (GDC). À medida que a sua aplicação evolui com base na utilização de recursos e nas otimizações de configuração, tem de atualizar a especificação do pod subjacente no cluster do Kubernetes para refletir essas alterações da carga de trabalho.

Este documento destina-se a programadores no grupo de operadores de aplicações, que são responsáveis por atualizar as cargas de trabalho das aplicações para a respetiva organização. Para mais informações, consulte a documentação sobre públicos-alvo para GDC com isolamento de ar.

Antes de começar

Para concluir as tarefas neste documento, tem de ter os seguintes recursos e funções:

  • Para executar comandos num cluster do Kubernetes, certifique-se de que tem os seguintes recursos:

    • Localize o nome do cluster do Kubernetes ou pergunte a um membro do grupo de administradores da plataforma qual é o nome do cluster.

    • Inicie sessão e gere o ficheiro kubeconfig para o cluster do Kubernetes, se não tiver um.

    • Use o caminho kubeconfig do cluster Kubernetes para substituir KUBERNETES_CLUSTER_KUBECONFIG nestas instruções.

  • Para receber as autorizações necessárias para atualizar cargas de trabalho sem estado num cluster partilhado, peça ao administrador da IAM da organização que lhe conceda a função de administrador do espaço de nomes (namespace-admin) no espaço de nomes do seu projeto.

  • Para receber as autorizações necessárias para atualizar cargas de trabalho sem estado num cluster padrão, peça ao administrador de IAM da organização para lhe conceder a função de programador de clusters (cluster-developer) num cluster padrão.

Atualize a implementação

Para atualizar um objeto Deployment, execute:

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    apply -f DEPLOYMENT_FILE

Substitua o seguinte:

  • KUBERNETES_CLUSTER_KUBECONFIG: o ficheiro kubeconfig para o cluster que executa a implementação.

  • NAMESPACE: o espaço de nomes. Para clusters partilhados, tem de ser um espaço de nomes do projeto. Para clusters padrão, pode ser qualquer espaço de nomes.

  • DEPLOYMENT_FILE: o nome do ficheiro de manifesto a atualizar.Deployment

O comando kubectl apply aplica um ficheiro de manifesto a um recurso. Se o recurso especificado não existir, é criado pelo comando.

Também existem várias outras formas de atualizar os recursos na sua implementação.

Atualize uma imagem de contentor

Para alterar a imagem de um objeto Deployment, execute o seguinte comando:

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    set image deployment DEPLOYMENT_NAME \
    IMAGE=IMAGE:TAG

Substitua o seguinte:

  • KUBERNETES_CLUSTER_KUBECONFIG: o ficheiro kubeconfig para o cluster que executa a implementação.

  • NAMESPACE: o espaço de nomes. Para clusters partilhados, tem de ser um espaço de nomes do projeto. Para clusters padrão, pode ser qualquer espaço de nomes.

  • DEPLOYMENT_NAME: o nome do objeto Deployment que contém a imagem.

  • IMAGE: o nome da imagem do contentor.

  • TAG: a etiqueta a atualizar para a imagem do contentor.

A atualização da imagem de uma implementação é útil para alterar campos de seletores ou recursos, como pedidos ou limites.

Por exemplo, para atualizar um objeto Deployment com o nome nginx para usar a versão 1.9.1, execute:

kubectl --kubeconfig /tmp/kubeconfig.yaml -n my-namespace \
    set image deployment nginx nginx=nginx:1.9.1

Reverta uma atualização

Se quiser reverter uma atualização, por exemplo, quando a implementação fica instável, use a CLI kubectl. O histórico de implementação de um objeto Deployment é preservado no sistema para que possa reverter a qualquer momento.

Para reverter uma atualização em curso ou concluída para a revisão anterior, execute:

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \
    -n NAMESPACE \
    rollout undo deployment DEPLOYMENT_NAME

Substitua o seguinte:

  • KUBERNETES_CLUSTER_KUBECONFIG: o ficheiro kubeconfig para o cluster que executa a implementação.

  • NAMESPACE: o espaço de nomes. Para clusters partilhados, tem de ser um espaço de nomes do projeto. Para clusters padrão, pode ser qualquer espaço de nomes.

  • DEPLOYMENT_NAME: o nome do objeto Deployment para reverter.

Para reverter para uma revisão específica, execute o seguinte comando:

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \
    -n NAMESPACE \
    rollout undo deployment DEPLOYMENT_NAME \
    --to-revision=REVISION_NUMBER

Substitua o seguinte:

  • KUBERNETES_CLUSTER_KUBECONFIG: o ficheiro kubeconfig para o cluster que executa a implementação.

  • NAMESPACE: o espaço de nomes. Para clusters partilhados, tem de ser um espaço de nomes do projeto. Para clusters padrão, pode ser qualquer espaço de nomes.

  • DEPLOYMENT_NAME: o nome do objeto Deployment para reverter.

  • REVISION_NUMBER: o número inteiro que define a revisão para a qual reverter, como 3.

O que se segue?