Carregando...
Nenhum resultado encontrado.

    03

    Google Cloud Storage and Containers for Azure Professionals

    Get access to 700+ labs and courses

    Como criar implantações do Google Kubernetes Engine (Azure)

    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.
    Get access to 700+ labs and courses

    Como profissional de engenharia da nuvem, você precisa gerenciar um aplicativo essencial que adiciona recursos com frequência. É necessário lançar novos recursos e atualizações minimizando o impacto no usuário e o tempo de inatividade do aplicativo, que é conteinerizado e implantado no Kubernetes. Às vezes, é preciso escalonar verticalmente em resposta a mudanças na demanda dos usuários. Você também quer controlar o tráfego da Internet para o aplicativo. À medida que você mantém e atualiza o app, começa a pensar no seguinte:

    • Como criar um manifesto de implantação para o cluster?
    • Como escalonar manualmente o número de pods na implantação?
    • Como criar um serviço que controle o tráfego de entrada no aplicativo?
    • Como lançar atualizações com o mínimo de interrupção para os usuários?
    • Como executar implantações canário para testar novos recursos antes de um lançamento completo?

    Como profissional de nuvem que tem familiaridade com o Serviço do Azure Kubernetes (AKS, na sigla em inglês), você provavelmente já usou arquivos de manifesto YAML para executar implantações do Kubernetes no AKS. É provável que também já tenha usado pipelines de DevOps para disponibilizar códigos e contêineres de aplicativos aos clusters do Kubernetes.

    Para escalonar o número de pods em resposta à demanda, é possível alterar manualmente o arquivo de manifesto ou usar comandos kubectl. Para controlar o tráfego de entrada do aplicativo, você precisa criar e executar o plano de implantação do balanceador de carga no pipeline de DevOps. Quando você precisar atualizar a imagem do contêiner, execute o pipeline de DevOps para disponibilizar a imagem e use comandos kubectl para acionar um lançamento de implantação.

    Para executar uma atualização canário, você precisa instalar o Prometheus, configurar o pipeline, adicionar o arquivo de manifesto e executar o pipeline de implantação.

    Pensando nisso, agora você vai aprender a criar manifestos de implantação para o Google Kubernetes Engine (GKE) com o objetivo de criar, escalonar e atualizar implantações.

    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ê 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
    • Disparar o aumento e a diminuição manual dos pods nas implantações
    • Disparar 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.

    1. Faça login no Qwiklabs em uma janela anônima.

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

    3. Quando tudo estiver pronto, clique em Começar o laboratório.

    4. Anote as credenciais (Nome de usuário e Senha). É com elas que você vai fazer login no Console do Google Cloud.

    5. Clique em Abrir Console do Google.

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

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

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

    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:

    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.

    Conecte-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_zone={{{project_0.default_zone|Zone}}} export my_cluster=standard-cluster-1
    1. Configure o preenchimento com tabulação da kubectl no Cloud Shell:
    source <(kubectl completion bash)
    1. No Cloud Shell, use o seguinte comando para configurar o acesso da ferramenta de linha de comando kubectl ao seu cluster:
    gcloud container clusters get-credentials $my_cluster --zone $my_zone
    1. No Cloud Shell, digite o comando a seguir para clonar o repositório no Cloud Shell do laboratório:
    git clone https://github.com/GoogleCloudPlatform/training-data-analyst
    1. Crie um link flexível como atalho para o diretório de trabalho:
    ln -s ~/training-data-analyst/courses/ak8s/v1.1 ~/ak8s
    1. 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:

    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.7.9 ports: - containerPort: 80
    1. Para implantar seu manifesto, execute o seguinte comando:
    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 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 a escala de um pod específico para o número de instâncias desejado. Para desativá-los, 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

    1. Alterne para a guia do console do Google Cloud.
    2. No 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 de cima, clique em AÇÕES > Escala > Editar réplicas.
    5. 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

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

    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.9.1 --record

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

    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. Atualize 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 kubectl set image deployment.v1.apps/nginx-deployment nginx=nginx:1.9.1 --record=true

    Dispare 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 kubectl set image deployment.v1.apps/nginx-deployment nginx=nginx:1.9.1 --record=true 3
    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.7.9.

    Saída:

    deployments "nginx-deployment" with revision #3 Pod Template: Labels: app=nginx pod-template-hash=3123191453 Containers: nginx: Image: nginx:1.7.9 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.

    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.

    apiVersion: v1 kind: Service metadata: name: nginx spec: type: LoadBalancer selector: app: nginx ports: - protocol: TCP port: 60000 targetPort: 80
    • 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

    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 CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE nginx 10.X.X.X X.X.X.X 60000/TCP run=nginx 1m
    1. 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:

    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.9.1 spec: containers: - name: nginx image: nginx:1.9.1 ports: - containerPort: 80

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

    Exemplo:

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

    Resumo

    Neste laboratório, você descobriu como o GKE usa o arquivo de manifesto para implantar, escalonar e executar uma atualização canário no seu aplicativo. Aqui estão algumas das principais semelhanças e diferenças entre o GKE e o AKS.

    Semelhanças:

    O GKE e o AKS são serviços gerenciados do Kubernetes que permitem aos desenvolvedores implantar, gerenciar e escalonar aplicativos conteinerizados.

    • A estrutura básica e a sintaxe dos arquivos YAML para as implantações do Kubernetes são as mesmas para o GKE e o AKS.
    • O AKS e o GKE usam comandos kubectl.

    Diferenças:

    • No GKE, é possível especificar os atributos dos clusters, pods e do gerenciamento sem precisar criar um pipeline de DevOps como você faria para implantações do AKS. Isso ocorre porque o GKE tem a infraestrutura de back-end necessária para executar as tarefas de provisionamento usando o arquivo de manifesto.

    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.

    Anterior Seguinte

    Before you begin

    1. Labs create a Google Cloud project and resources for a fixed time
    2. Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
    3. On the top left of your screen, click Start lab to begin

    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

    One lab at a time

    Confirm to end all existing labs and start this one

    Use private browsing to run the lab

    Use an Incognito or private browser window to run this lab. This prevents any conflicts between your personal account and the Student account, which may cause extra charges incurred to your personal account.
    Visualizar