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_KUBECONFIGnestas 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 objetoDeploymentque 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 objetoDeploymentpara 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 objetoDeploymentpara reverter.REVISION_NUMBER: o número inteiro que define a revisão para a qual reverter, como3.