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 pedir as autorizações necessárias e preparar o seu ambiente.

Peça funções de IAM

Tem de ter funções específicas para receber as autorizações necessárias para atualizar cargas de trabalho sem estado. As funções necessárias dependem de estar a trabalhar num cluster partilhado ao nível da organização ou num cluster padrão ao nível do projeto. Para mais informações, consulte Configurações do cluster do Kubernetes.

Funções de cluster partilhadas

Para criar, eliminar, editar ou ver cargas de trabalho num cluster partilhado, peça ao administrador do IAM do projeto que lhe conceda a função Namespace Admin (namespace-admin). Esta função está associada ao espaço de nomes do seu projeto.

Funções de cluster padrão

Para criar, eliminar, editar ou ver cargas de trabalho num cluster padrão, peça ao administrador de IAM do projeto que lhe conceda a função Cluster Developer (cluster-developer). Esta função está associada ao espaço de nomes do seu projeto.

Prepare o seu ambiente

Para executar comandos num cluster do Kubernetes através da API, 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.

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

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 denominado nginx para usar a versão 1.9.1, execute o seguinte:

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 se torna 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?