Atualizar cargas de trabalho sem estado

Este documento explica como atualizar cargas de trabalho sem estado em execução em um cluster do Kubernetes do Google Distributed Cloud (GDC) com isolamento físico. À medida que o aplicativo evolui com base no uso de recursos e nas otimizações de configuração, é necessário atualizar a especificação do pod subjacente no cluster do Kubernetes para refletir essas mudanças na carga de trabalho.

Este documento é destinado a desenvolvedores do grupo de operadores de aplicativos, responsáveis por atualizar as cargas de trabalho de aplicativos da organização. Para mais informações, consulte Públicos-alvo da documentação do GDC com isolamento físico.

Antes de começar

Para concluir as tarefas neste documento, peça as permissões necessárias e prepare o ambiente.

Solicitar papéis do IAM

Você precisa de papéis específicos para receber as permissões necessárias para atualizar cargas de trabalho sem estado. Os papéis necessários dependem de você estar trabalhando em um cluster compartilhado com escopo da organização ou em um cluster padrão com escopo do projeto. Para mais informações, consulte Configurações de cluster do Kubernetes.

Papéis de cluster compartilhado

Para criar, excluir, editar ou visualizar cargas de trabalho em um cluster compartilhado, peça ao administrador do IAM do projeto para conceder a você o papel de administrador do namespace (namespace-admin). Esse papel está vinculado ao namespace do projeto.

Papéis de cluster padrão

Para criar, excluir, editar ou visualizar cargas de trabalho em um cluster padrão, peça ao administrador do IAM do projeto para conceder a você o papel de desenvolvedor de cluster (cluster-developer). Esse papel está vinculado ao namespace do projeto.

Preparar o ambiente

Para executar comandos em um cluster do Kubernetes usando a API, verifique se você tem os seguintes recursos:

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

  • Faça login e gere o arquivo kubeconfig do cluster do Kubernetes.

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

Atualizar a implantação

Para atualizar um objeto Deployment, execute:

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

Substitua:

  • KUBERNETES_CLUSTER_KUBECONFIG: o arquivo kubeconfig do cluster que executa a implantação.

  • NAMESPACE: o namespace. Para clusters compartilhados, precisa ser um namespace do projeto. Para clusters padrão, pode ser qualquer namespace.

  • DEPLOYMENT_FILE: o nome do arquivo de manifesto Deployment a ser atualizado.

O comando kubectl apply aplica um arquivo de manifesto a um recurso. Se o recurso especificado não existir, ele será criado pelo comando.

Há também várias outras maneiras de atualizar recursos na implantação.

Atualizar uma imagem do contêiner

Para mudar a imagem de um objeto Deployment, execute:

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

Substitua:

  • KUBERNETES_CLUSTER_KUBECONFIG: o arquivo kubeconfig do cluster que executa a implantação.

  • NAMESPACE: o namespace. Para clusters compartilhados, precisa ser um namespace do projeto. Para clusters padrão, pode ser qualquer namespace.

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

  • IMAGE: o nome da imagem do contêiner.

  • TAG: a tag a ser atualizada para a imagem do contêiner.

A atualização da imagem de uma implantação é útil para mudar campos ou recursos do seletor, como solicitações ou limites.

Por exemplo, para atualizar um objeto Deployment chamado 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

Reverter uma atualização

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

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

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

Substitua:

  • KUBERNETES_CLUSTER_KUBECONFIG: o arquivo kubeconfig do cluster que executa a implantação.

  • NAMESPACE: o namespace. Para clusters compartilhados, precisa ser um namespace do projeto. Para clusters padrão, pode ser qualquer namespace.

  • DEPLOYMENT_NAME: o nome do objeto Deployment a ser revertido.

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

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

Substitua:

  • KUBERNETES_CLUSTER_KUBECONFIG: o arquivo kubeconfig do cluster que executa a implantação.

  • NAMESPACE: o namespace. Para clusters compartilhados, precisa ser um namespace do projeto. Para clusters padrão, pode ser qualquer namespace.

  • DEPLOYMENT_NAME: o nome do objeto Deployment a ser revertido.

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

A seguir