Neste laboratório, você conhecerá os princípios básicos de uso dos manifestos de implantação. Manifestos são arquivos que contêm as configurações necessárias para uma implantação que podem ser usados em vários pods diferentes. É fácil alterar manifestos.
Objetivos
Neste laboratório, você vai aprender a fazer o seguinte:
Criar manifestos de implantação, implantar no cluster e verificar a reprogramação do pod à medida que os nós são desativados.
Acionar o aumento e a diminuição manual dos pods nas implantações.
Acionar lançamentos (atualização gradual para a nova versão) e reversões de implantações.
Realizar uma implantação canário.
Configuração do laboratório
Acessar o laboratório
Para cada laboratório, você recebe um novo projeto do Google Cloud e um conjunto de recursos por um determinado período e sem custos financeiros.
Faça login no Qwiklabs em uma janela anônima.
Confira o tempo de acesso do laboratório (por exemplo, 1:15:00) e finalize todas as atividades nesse prazo.
Não é possível pausar o laboratório. Você pode reiniciar o desafio, mas vai precisar refazer todas as etapas.
Quando tudo estiver pronto, clique em Começar o laboratório.
Anote as credenciais (Nome de usuário e Senha). É com elas que você vai fazer login no Console do Google Cloud.
Clique em Abrir Console do Google.
Clique em Usar outra conta, depois copie e cole as credenciais deste laboratório nos locais indicados.
Se você usar outras credenciais, vai receber mensagens de erro ou cobranças.
Aceite os termos e pule a página de recursos de recuperação.
Após concluir as etapas iniciais de login, o painel do projeto será exibido.
Ative o Google Cloud Shell
O Google Cloud Shell é uma máquina virtual com ferramentas de desenvolvimento. Ele tem um diretório principal permanente de 5 GB e é executado no Google Cloud.
O Cloud Shell oferece acesso de linha de comando aos recursos do Google Cloud.
No console do Cloud, clique no botão "Abrir o Cloud Shell" na barra de ferramentas superior direita.
Clique em Continuar.
O provisionamento e a conexão do ambiente podem demorar um pouco. Quando você estiver conectado, já estará autenticado, e o projeto estará definido com seu PROJECT_ID. Exemplo:
A gcloud é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.
Para listar o nome da conta ativa, use este comando:
Mude para o diretório que contém os arquivos de exemplo deste laboratório:
cd ~/ak8s/Deployments/
Crie um manifesto de implantação
Você criará uma implantação usando um exemplo de manifesto de implantação chamado nginx-deployment.yaml. Essa implantação é configurada para executar três réplicas de pod com apenas um contêiner nginx em cada pod que recebe solicitações na porta TCP 80:
Para implantar seu manifesto, execute o seguinte comando:
kubectl apply -f ./nginx-deployment.yaml
Para ver uma lista de implantações, execute o seguinte comando:
kubectl get deployments
A saída vai ser semelhante a este exemplo.
Saída:
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 0/3 3 0 3s
Aguarde alguns segundos e repita o comando até que o número indicado de implantações atuais (CURRENT) corresponda ao número indicado de implantações desejadas (DESIRED).
A saída final será semelhante ao exemplo.
Saída:
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 3/3 3 3 42s
Clique em Verificar meu progresso para conferir o objetivo.
Crie e implante o manifesto de implantação nginx
Tarefa 2: aumentar ou diminuir manualmente o número de pods nas implantações
Às vezes, você quer desativar uma instância de pod. Outras vezes, você quer executar dez pods ao mesmo tempo. No Kubernetes, é possível ajustar o número de instâncias desejado de um pod específico. Para desativá-las, ajuste a escala para zero.
Nesta tarefa, você aumenta e reduz os pods no console do Google Cloud e no Cloud Shell.
Aumente e reduza os pods no console
Alterne para a guia do console do Google Cloud.
No Menu de navegação (), selecione Kubernetes Engine > Cargas de trabalho.
Clique em nginx-deployment (sua implantação) para abrir a página Detalhes da implantação.
Na parte de cima, clique em AÇÕES > Escala > Editar réplicas.
Digite 1 e clique em ESCALA.
Essa ação diminui seu cluster. O status do pod deverá ser atualizado em Pods gerenciados. Talvez seja necessário clicar em Atualizar.
Aumente e reduza pods no Shell
Volte para a guia Cloud Shell no navegador.
No Cloud Shell, para ver uma lista de pods nas implantações, execute o seguinte comando:
kubectl get deployments
Saída:
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 1/1 1 1 3m
Para reverter o pod até três réplicas, execute o seguinte comando:
Para ver uma lista de pods nas implantações, execute o seguinte comando:
kubectl get deployments
Saída:
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 3/3 3 3 4m
Tarefa 3: disparar o lançamento e a reversão de uma implantação
O lançamento de uma implantação é disparado se, e somente se, o modelo do pod da implantação (ou seja, .spec.template) sofrer alteração, por exemplo, se os rótulos ou as imagens do contêiner do modelo forem atualizados. Outras atualizações, como o escalonamento da implantação, não disparam um lançamento.
Nesta tarefa, você vai disparar o lançamento e depois a reversão de uma implantação.
Dispare o lançamento de uma implantação
Para atualizar a versão do nginx na implantação, execute o seguinte comando:
kubectl set image deployment.v1.apps/nginx-deployment nginx=nginx:1.9.1
Isso atualiza a imagem do contêiner na implantação para nginx v1.9.1.
Para ver o status do lançamento, execute o seguinte comando:
kubectl rollout status deployment.v1.apps/nginx-deployment
A saída será semelhante ao exemplo.
Saída:
Waiting for rollout to finish: 1 out of 3 new replicas updated...
Waiting for rollout to finish: 1 out of 3 new replicas updated...
Waiting for rollout to finish: 1 out of 3 new replicas updated...
Waiting for rollout to finish: 2 out of 3 new replicas updated...
Waiting for rollout to finish: 2 out of 3 new replicas updated...
Waiting for rollout to finish: 2 out of 3 new replicas updated...
Waiting for rollout to finish: 1 old replicas pending termination...
Waiting for rollout to finish: 1 old replicas pending termination...
deployment "nginx-deployment" successfully rolled out
Você pode conferir a alteração na lista de implantações:
kubectl get deployments
A saída será semelhante ao exemplo.
Saída:
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 3/3 3 3 6m
Clique em Verificar meu progresso para conferir o objetivo.
Atualize a versão do nginx na implantação
Confira o histórico de lançamentos da implantação:
kubectl rollout history deployment nginx-deployment
A saída será semelhante ao exemplo. Talvez sua saída não seja exatamente igual.
Nesta tarefa, você vai criar e verificar um serviço que controla o tráfego de entrada de um aplicativo. É possível configurar os serviços como os tipos ClusterIP, NodePort ou LoadBalancer. Neste laboratório, você vai configurar um LoadBalancer.
Defina os tipos de serviço no manifesto
Você recebeu um arquivo de manifesto chamado service-nginx.yaml que implanta um serviço do tipo LoadBalancer. Esse serviço está configurado para distribuir o tráfego de entrada na porta TCP 60000 para a porta 80 em qualquer contêiner que tenha o rótulo app: nginx.
No Cloud Shell, para implantar seu manifesto, execute o seguinte comando:
kubectl apply -f ./service-nginx.yaml
Esse manifesto define um serviço e o aplica aos pods que correspondem ao seletor. Nesse caso, o manifesto é aplicado ao contêiner nginx implantado na tarefa 1. Esse serviço também é aplicado a outros pods que tenham o rótulo app: nginx, incluindo qualquer um criado após o serviço.
Verifique a criação do LoadBalancer
Para ver os detalhes do serviço nginx, execute o seguinte comando:
kubectl get service nginx
A saída será semelhante ao exemplo.
Saída:
NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE
nginx 10.X.X.X X.X.X.X 60000/TCP run=nginx 1m
Quando o IP externo aparecer, abra http://[EXTERNAL_IP]:60000/ em uma nova guia do navegador para ver qual servidor está sendo usado segundo o balanceamento de carga da rede.
Observação: pode levar alguns segundos para que o campo ExternalIP do seu serviço seja preenchido. Isso é normal. Basta executar novamente o comando kubectl get services nginx até o campo ser preenchido.
Clique em Verificar meu progresso para conferir o objetivo.
Implante o arquivo de manifesto que implanta o tipo de serviço LoadBalancer
Tarefa 5: realizar uma implantação canário
Implantação canário é uma implantação separada usada para testar uma nova versão do aplicativo. Um serviço individual tem como alvo as implantações canário e normal. E é possível direcionar um subconjunto de usuários à versão canário para reduzir o risco de lançamentos.
O arquivo de manifesto nginx-canary.yaml que você recebeu implanta apenas um pod executando uma versão mais recente do nginx do que sua implantação principal. Nesta tarefa, você vai criar uma implantação canário usando esse novo arquivo de implantação:
O manifesto do serviço nginx implantado por você na tarefa anterior usa um seletor de rótulo para direcionar os pods com o rótulo app: nginx. As implantações normal e canário têm o rótulo app: nginx. As conexões de entrada serão distribuídas pelo serviço para os pods de implantação normal e canário. A implantação canário tem menos réplicas (pods) do que a implantação normal e, por isso, está disponível para menos usuários do que a implantação normal.
Crie a implantação canário com base no arquivo de configuração:
kubectl apply -f nginx-canary.yaml
Após a conclusão da implantação, verifique se as implantações nginx e nginx-canary estão presentes:
kubectl get deployments
Volte para a guia do navegador conectada ao IP do serviço externo LoadBalancer e atualize a página. Você ainda terá acesso a página padrão Welcome to nginx.
Volte para o Cloud Shell e reduza a implantação primária para 0 réplica:
Verifique se agora a única réplica em execução é a implantação canário:
kubectl get deployments
Volte para a guia do navegador conectada ao IP do serviço externo LoadBalancer e atualize a página. Você ainda verá a página padrão Welcome to nginx, que mostrará que o serviço está balanceando automaticamente o tráfego para a implantação canário.
Clique em Verificar meu progresso para conferir o objetivo.
Crie uma implantação canário
Afinidade da sessão
A configuração de serviço usada no laboratório não garante que todas as solicitações provenientes de um cliente sempre se conectarão ao mesmo pod. Cada solicitação é tratada separadamente e pode se conectar tanto à implantação nginx normal quanto à implantação nginx-canary.
Essa capacidade de alternar versões diferentes pode causar problemas se houver mudanças consideráveis de funcionalidade na versão canário. Para impedir isso, defina o campo sessionAffinity como ClientIP na especificação do serviço se você precisar da primeira solicitação de um cliente para determinar qual pod será usado para todas as conexões subsequentes.
Clique em Terminar o laboratório após a conclusão. O Google Cloud Ensina remove os recursos usados e limpa a conta por você.
Você vai poder avaliar sua experiência no laboratório. Basta selecionar o número de estrelas, digitar um comentário e clicar em Enviar.
O número de estrelas indica o seguinte:
1 estrela = muito insatisfeito
2 estrelas = insatisfeito
3 estrelas = neutro
4 estrelas = satisfeito
5 estrelas = muito satisfeito
Feche a caixa de diálogo se não quiser enviar feedback.
Para enviar seu feedback, fazer sugestões ou correções, use a guia Suporte.
Copyright 2020 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de produtos e empresas podem ser marcas registradas das respectivas empresas a que estão associados.
Os laboratórios criam um projeto e recursos do Google Cloud por um período fixo
Os laboratórios têm um limite de tempo e não têm o recurso de pausa. Se você encerrar o laboratório, vai precisar recomeçar do início.
No canto superior esquerdo da tela, clique em Começar o laboratório
Usar a navegação anônima
Copie o nome de usuário e a senha fornecidos para o laboratório
Clique em Abrir console no modo anônimo
Fazer login no console
Faça login usando suas credenciais do laboratório. Usar outras credenciais pode causar erros ou gerar cobranças.
Aceite os termos e pule a página de recursos de recuperação
Não clique em Terminar o laboratório a menos que você tenha concluído ou queira recomeçar, porque isso vai apagar seu trabalho e remover o projeto
Este conteúdo não está disponível no momento
Você vai receber uma notificação por e-mail quando ele estiver disponível
Ótimo!
Vamos entrar em contato por e-mail se ele ficar disponível
Um laboratório por vez
Confirme para encerrar todos os laboratórios atuais e iniciar este
Use a navegação anônima para executar o laboratório
Para executar este laboratório, use o modo de navegação anônima ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e a conta de estudante, o que poderia causar cobranças extras na sua conta pessoal.
Architecting with Google Kubernetes Engine: como criar implantações no Kubernetes Engine
Duração:
Configuração: 8 minutos
·
Tempo de acesso: 60 minutos
·
Tempo para conclusão: 60 minutos