Acesse mais de 700 laboratórios e cursos

Como criar implantações no Google Kubernetes Engine

Laboratório 1 hora universal_currency_alt 5 créditos show_chart Introdutório
info Este laboratório pode incorporar ferramentas de IA para ajudar no seu aprendizado.
Acesse mais de 700 laboratórios e cursos

Visão geral

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 sem custo financeiro.

  1. Clique no botão Começar o laboratório. Se for preciso pagar, você verá um pop-up para selecionar a forma de pagamento. No painel Detalhes do laboratório à esquerda, você vai encontrar o seguinte:

    • O botão Abrir console do Google Cloud
    • O tempo restante
    • As credenciais temporárias que você vai usar neste laboratório
    • Outras informações, se forem necessárias
  2. Se você estiver usando o navegador Chrome, clique em Abrir console do Google Cloud ou clique com o botão direito do mouse e selecione Abrir link em uma janela anônima.

    O laboratório ativa os recursos e depois abre a página Fazer login em outra guia.

    Dica: coloque as guias em janelas separadas lado a lado.

    Observação: se aparecer a caixa de diálogo Escolher uma conta, clique em Usar outra conta.
  3. Se necessário, copie o Nome de usuário abaixo e cole na caixa de diálogo Fazer login.

    {{{user_0.username | "Nome de usuário"}}}

    Você também encontra o Nome de usuário no painel Detalhes do laboratório.

  4. Clique em Seguinte.

  5. Copie a Senha abaixo e cole na caixa de diálogo de boas-vindas.

    {{{user_0.password | "Senha"}}}

    Você também encontra a Senha no painel Detalhes do laboratório.

  6. Clique em Seguinte.

    Importante: você precisa usar as credenciais fornecidas no laboratório, e não as da sua conta do Google Cloud. Observação: se você usar sua própria conta do Google Cloud neste laboratório, é possível que receba cobranças adicionais.
  7. Acesse as próximas páginas:

    • Aceite os Termos e Condições.
    • Não adicione opções de recuperação nem autenticação de dois fatores (porque essa é uma conta temporária).
    • Não se inscreva em testes gratuitos.

Depois de alguns instantes, o console do Google Cloud será aberto nesta guia.

Observação: para acessar uma lista de produtos e serviços do Google Cloud, clique no Menu de navegação no canto superior esquerdo ou digite o nome do serviço ou produto no campo Pesquisar. Ícone do menu de navegaçã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.

  1. No console do Cloud, clique no botão "Abrir o Cloud Shell" na barra de ferramentas superior direita.

    Ícone do Cloud Shell em destaque

  2. 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:

ID do projeto em destaque no terminal do Cloud Shell

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:
gcloud auth list

Saída:

Credentialed accounts: - @.com (active)

Exemplo de saída:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Para listar o ID do projeto, use este comando:
gcloud config list project

Saída:

[core] project =

Exemplo de saída:

[core] project = qwiklabs-gcp-44776a13dea667a6 Observação: a documentação completa da gcloud está disponível no guia com informações gerais sobre a gcloud CLI .

Tarefa 1: criar manifestos de implantação e implantar no cluster

Nesta tarefa, você criará um manifesto de implantação para um pod dentro do cluster.

Conectar-se ao cluster do GKE do laboratório

  1. No Cloud Shell, digite o comando a seguir para definir a variável de ambiente da zona e o nome do cluster:
export my_region={{{ project_0.default_region | REGION }}} export my_cluster=dev-cluster
  1. Configure o preenchimento com tabulação da kubectl no Cloud Shell:
source <(kubectl completion bash)
  1. No Cloud Shell, use o comando a seguir para configurar o acesso da ferramenta de linha de comando kubectl ao cluster:
gcloud container clusters get-credentials $my_cluster --region $my_region

Criar um manifesto de implantação

Você vai criar uma implantação usando um exemplo de manifesto 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.

  1. Crie e abra um arquivo chamado nginx-deployment.yaml com nano usando o seguinte comando:
nano nginx-deployment.yaml
  1. Quando o nano estiver aberto, cole isso no arquivo nginx-deployment.yaml:
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.27.0 ports: - containerPort: 80
  1. Pressione Ctrl+O e, em seguida, pressione Enter para salvar o arquivo editado.

  2. Pressione Ctrl+X para sair do editor de texto nano.

  3. Para implantar o manifesto, execute o comando abaixo:

kubectl apply -f ./nginx-deployment.yaml
  1. 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
  1. Aguarde alguns minutos 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. Criar e implantar 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, reduza a escala a zero.

Nesta tarefa, você aumenta e reduz os pods no console do Google Cloud e no Cloud Shell.

Aumentar e reduzir os pods no console

  1. Alterne para a guia do console do Google Cloud.
  2. No Menu de navegação (Ícone do menu de navegação), selecione Kubernetes Engine > Cargas de trabalho.
  3. Clique em nginx-deployment (sua implantação) para abrir a página Detalhes da implantação.
  4. Na parte superior, clique em Ações > Escalonar > Editar réplicas.
  5. Digite 1 e clique em Escalonar.

Essa ação reduz a escala vertical do seu cluster. O status do pod deverá ser atualizado em Pods gerenciados. Talvez seja necessário clicar em Atualizar.

Aumentar e reduzir os pods no Shell

  1. Volte para a guia Cloud Shell no navegador.
  2. 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
  1. Para reverter o pod até três réplicas, execute o seguinte comando:
kubectl scale --replicas=3 deployment nginx-deployment
  1. 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: acionar o lançamento e a reversão de uma implantação

O lançamento de uma implantação é acionado 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 acionam um lançamento.

Nesta tarefa, você vai acionar o lançamento e depois a reversão de uma implantação.

Acionar o lançamento de uma implantação

  1. 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.28.0

Isso atualiza a imagem do contêiner na implantação para nginx v1.28.0.

  1. Para anotar detalhes sobre a mudança no lançamento, execute este comando:
kubectl annotate deployment nginx-deployment kubernetes.io/change-cause="version change to 1.28.0" --overwrite=true
  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
  1. 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. Atualizar a versão do nginx na implantação

  1. 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.

Saída:

deployments "nginx-deployment" REVISION CHANGE-CAUSE 1 2 version change to 1.28.0

Acionar a reversão de uma implantação

Para reverter o lançamento de um objeto, use o comando kubectl rollout undo.

  1. Para reverter à versão anterior da implantação nginx, execute o seguinte comando:
kubectl rollout undo deployments nginx-deployment
  1. Confira o histórico atualizado 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.

Saída:

deployments "nginx-deployment" REVISION CHANGE-CAUSE 2 version change to 1.28.0 3 Observação: a atualização mais recente fica em branco em CHANGE-CAUSE porque não usamos o comando kubectl annotate.
  1. Confira os detalhes da revisão de implantação mais recente:
kubectl rollout history deployment/nginx-deployment --revision=3

A saída será semelhante ao exemplo. Talvez sua saída não seja exatamente igual, mas ela mostrará que a revisão atual foi revertida para nginx:1.27.0.

Saída:

deployments "nginx-deployment" with revision #3 Pod Template: Labels: app=nginx pod-template-hash=3123191453 Containers: nginx: Image: nginx:1.27.0 Port: 80/TCP Host Port: 0/TCP Environment: Mounts: Volumes:

Tarefa 4: definir o tipo de serviço no manifesto

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.

Definir 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.

  1. Crie e abra um arquivo chamado service-nginx.yaml com nano usando o seguinte comando:
nano service-nginx.yaml
  1. Quando o nano estiver aberto, cole o seguinte no arquivo service-nginx.yaml:
apiVersion: v1 kind: Service metadata: name: nginx spec: type: LoadBalancer selector: app: nginx ports: - protocol: TCP port: 60000 targetPort: 80
  1. Pressione Ctrl+O e, em seguida, pressione Enter para salvar o arquivo editado.

  2. Pressione Ctrl+X para sair do editor de texto nano.

  3. No Cloud Shell, para implantar seu manifesto, execute o comando abaixo:

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

  1. 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 Type CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx LoadBalancer 10.X.X.X X.X.X.X 60000:31798/TCP 1m
  1. Quando o IP externo aparecer, abra http://[EXTERNAL_IP]:60000/ em uma nova guia do navegador para ver qual servidor está sendo disponibilizado usando o balanceamento de carga de 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. Implantar 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.

Nesta tarefa, você vai criar uma implantação canário para implantar um único pod executando uma versão mais recente do nginx do que sua implantação principal.

  1. Crie e abra um arquivo chamado nginx-canary.yaml com nano usando o seguinte comando:
nano nginx-canary.yaml
  1. Quando o nano estiver aberto, cole o seguinte no arquivo nginx-canary.yaml:
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-canary labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx track: canary Version: 1.28.0 spec: containers: - name: nginx image: nginx:1.28.0 ports: - containerPort: 80
  1. Pressione Ctrl+O e, em seguida, pressione Enter para salvar o arquivo editado.

  2. Pressione Ctrl+X para sair do editor de texto nano.

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.

  1. Crie a implantação canário com base no arquivo de configuração:
kubectl apply -f ./nginx-canary.yaml
  1. Após a conclusão da implantação, verifique se as implantações nginx e nginx-canary estão presentes:
kubectl get deployments
  1. 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.
  2. Volte para o Cloud Shell e reduza a escala vertical da implantação primária para 0 réplica:
kubectl scale --replicas=0 deployment nginx-deployment
  1. Verifique se agora a única réplica em execução é a implantação canário:
kubectl get deployments
  1. 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. Criar 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 entre 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.

Exemplo:

apiVersion: v1 kind: Service metadata: name: nginx spec: type: LoadBalancer sessionAffinity: ClientIP selector: app: nginx ports: - protocol: TCP port: 60000 targetPort: 80

Finalize o laboratório

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.

Antes de começar

  1. Os laboratórios criam um projeto e recursos do Google Cloud por um período fixo
  2. 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.
  3. No canto superior esquerdo da tela, clique em Começar o laboratório

Usar a navegação anônima

  1. Copie o nome de usuário e a senha fornecidos para o laboratório
  2. Clique em Abrir console no modo anônimo

Fazer login no console

  1. Faça login usando suas credenciais do laboratório. Usar outras credenciais pode causar erros ou gerar cobranças.
  2. Aceite os termos e pule a página de recursos de recuperação
  3. 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.