
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Create a Kubernetes cluster and launch Nginx container
/ 25
Create Monolith pods and service
/ 25
Allow traffic to the monolith service on the exposed nodeport
/ 5
Adding Labels to Pods
/ 20
Creating Deployments (Auth, Hello and Frontend)
/ 25
O Kubernetes é um projeto de código aberto (disponível em kubernetes.io) que pode ser executado em diversos ambientes, de laptops a clusters com vários nós de alta disponibilidade, de nuvens públicas a implantações locais e de máquinas virtuais a bare metal.
Neste laboratório, será usado um ambiente gerenciado, como o Kubernetes Engine, para você se concentrar mais em testar o Kubernetes e não ter que configurar a infraestrutura. O Kubernetes Engine é um ambiente gerenciado para implantação de aplicativos conteinerizados. Ele inclui as mais recentes inovações em produtividade para desenvolvedores, eficiência de recursos, operações automatizadas e a flexibilidade do código aberto para acelerar seu tempo de lançamento.
Neste laboratório, você vai aprender a:
kubectl
;Leia estas instruções. Os laboratórios são cronometrados e não podem ser pausados. O timer é iniciado quando você clica em Começar o laboratório e mostra por quanto tempo os recursos do Google Cloud vão ficar disponíveis.
Este laboratório prático permite que você realize as atividades em um ambiente real de nuvem, não em uma simulação ou demonstração. Você vai receber novas credenciais temporárias para fazer login e acessar o Google Cloud durante o laboratório.
Confira os requisitos para concluir o laboratório:
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:
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.
Se necessário, copie o Nome de usuário abaixo e cole na caixa de diálogo Fazer login.
Você também encontra o Nome de usuário no painel Detalhes do laboratório.
Clique em Seguinte.
Copie a Senha abaixo e cole na caixa de diálogo de boas-vindas.
Você também encontra a Senha no painel Detalhes do laboratório.
Clique em Seguinte.
Acesse as próximas páginas:
Depois de alguns instantes, o console do Google Cloud será aberto nesta guia.
O Cloud Shell é uma máquina virtual com várias 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.
Depois de se conectar, vai notar que sua conta já está autenticada, e que o projeto está configurado com seu PROJECT_ID. A saída contém uma linha que declara o projeto PROJECT_ID para esta sessão:
gcloud
é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.
Clique em Autorizar.
A saída será parecida com esta:
Saída:
Saída:
Exemplo de saída:
gcloud
, acesse o guia com informações gerais sobre a gcloud CLI no Google Cloud.
gcloud container clusters get-credentials io
para fazer a autenticação novamente.
O exemplo tem o seguinte layout:
Agora que você tem o código, é hora de começar a usar o Kubernetes.
A maneira mais fácil de começar a usar o Kubernetes é com o comando kubectl create
.
O Kubernetes vai criar uma implantação. Há mais informações sobre implantações mais adiante. Por enquanto, tudo o que você necessita saber é que as implantações mantêm os pods funcionando mesmo quando há falha nos nós em que eles são executados.
No Kubernetes, todos os contêineres são executados em um pod.
kubectl get pods
para acessar o contêiner nginx em execução:kubectl expose
:O que aconteceu? O Kubernetes criará, em segundo plano, um balanceador de carga externo com um endereço IP público anexado a ele. Qualquer cliente que alcançar esse endereço IP público será encaminhado para os pods que estão por trás do serviço. Nesse caso, seria o pod do nginx.
kubectl get services
:ExternalIP
do seu serviço seja preenchido. Isso é normal. Basta executar novamente o comando kubectl get services
em intervalos de alguns segundos até o campo ser preenchido.
Pronto! O Kubernetes oferece suporte para um fluxo de trabalho fácil e pronto para uso com os comandos kubectl
run e expose.
Clique em Verificar meu progresso abaixo para conferir seu andamento no laboratório. Depois de criar um cluster do Kubernetes e implantar um contêiner Nginx, você vai poder conferir uma pontuação de avaliação.
Depois desse tour rápido pelo Kubernetes, é hora de você conhecer melhor cada um dos componentes e abstrações.
A parte essencial do Kubernetes está no Pod.
Os pods representam e retêm uma coleção de um ou mais contêineres. Geralmente, quando há vários contêineres com forte dependência uns dos outros, você os empacota dentro de um único pod.
Neste exemplo, há um pod com os contêineres monolítico e nginx.
Os pods têm também Volumes. Volumes são discos de dados que duram o tempo que durarem os pods e podem ser usados pelos contêineres desses pods. Os pods fornecem um namespace compartilhado do conteúdo deles, ou seja, os dois contêineres dentro do nosso pod de exemplo podem se comunicar entre si e também compartilham os volumes anexados.
Os pods compartilham também um namespace de rede. Isso significa que há um endereço IP por pod.
A seguir, saiba mais sobre pods.
Os pods podem ser criados com arquivos de configuração de pods. Reserve um momento para conhecer o arquivo de configuração do pod monolítico.
A resposta mostra o arquivo de configuração aberto:
Há algumas coisas para serem observadas aqui. Você vai notar que:
kubectl
:kubectl get pods
para listar todos os pods em execução no namespace padrão:kubectl describe
para receber mais informações sobre o pod do monolítico:Você vai observar várias informações sobre o pod do monolítico, incluindo o endereço IP do pod e o log de eventos. Essas informações serão úteis na solução de problemas.
O Kubernetes facilita a criação de pods, basta descrevê-los nos arquivos de configuração, além de simplificar a visualização das informações sobre eles quando estão em execução. Agora, você vai conseguir criar todos os pods necessários para a implantação.
Por padrão, os pods recebem um endereço IP privado e não podem ser acessados fora do cluster. Use o comando kubectl port-forward
para associar uma porta local a uma porta dentro do pod do monolítico.
Abra um segundo terminal do Cloud Shell. Agora você tem dois terminais, um para executar o comando kubectl port-forward
e o outro para emitir comandos curl
.
No 2º terminal, execute este comando para configurar o encaminhamento de portas:
curl
:Sim. Você receberá um simpático "hello" do seu contêiner.
curl
para observar o que acontece quando você alcança um endpoint seguro:Ops.
password
para entrar.A entrada fez com que o token JWT fosse impresso.
Digite novamente a senha supersecreta password
quando for solicitado.
Use este comando para copiar e usar o token de acesso ao endpoint seguro com curl
:
Nesse momento, você vai receber uma resposta do nosso aplicativo informando que está tudo certo novamente.
kubectl logs
para acessar os registros do pod do monolith
:-f
para receber um stream dos registros adicionados em tempo real:curl
no 1º terminal para interagir com o monolítico, vai observar a atualização dos registros no 3º terminal:kubectl exec
para executar um shell interativo dentro do pod do monolítico. Isso pode ser útil para solucionar problemas de dentro de um contêiner:ping
:Como você pode observar, a interação com os pods é tão fácil quanto usar o comando kubectl
. Seja para acessar remotamente um contêiner ou para receber um shell de login, o Kubernetes fornece tudo o que você precisa para iniciar e seguir em frente.
Os pods não foram criados para serem persistentes. Eles podem ser interrompidos ou iniciados por muitas razões, por exemplo, falha nas verificações de integridade ou de prontidão, o que gera um problema:
O que acontece quando você quer se comunicar com um conjunto de pods? Quando eles forem reiniciados, é possível que tenham endereço IP diferente.
É aqui que entram os Serviços. Eles fornecem endpoints estáveis para pods.
Os serviços aplicam rótulos para determinar os pods em que eles operam. Se os pods tiverem os rótulos corretos, serão automaticamente selecionados e expostos por nossos serviços.
O nível de acesso de um serviço a um conjunto de pods depende do tipo de serviço. Atualmente, existem três tipos:
ClusterIP
(interno) é o tipo padrão, significa que esse serviço só é visível dentro do cluster.NodePort
concede a cada nó do cluster um IP externamente acessível.LoadBalancer
adiciona um balanceador de carga do provedor de nuvem que encaminha o tráfego do serviço para os nós dentro dele.Agora, você vai aprender a:
Antes de criar serviços, crie um pod seguro que possa lidar com o tráfego HTTPS.
~/orchestrate-with-kubernetes/kubernetes
:Agora que você tem um pod seguro, é hora de expor o pod secure-monolith externamente. Para isso, crie um serviço do Kubernetes.
(Resposta):
* Há um seletor que é usado para localizar e expor automaticamente todos os pods com os rótulos "app: monolith" e "secure: enabled".
Agora é preciso expor o nodeport porque é assim que vamos encaminhar o tráfego externo da porta 31000 para o nginx, na porta 443.
kubectl create
para criar o serviço do monolítico do arquivo de configuração de serviço do monolítico:(Resposta):
Clique em Verificar meu progresso abaixo para conferir seu andamento no laboratório. Se o serviço e os pods monolíticos tiverem sido criados corretamente, você terá uma pontuação de avaliação.
Você está usando uma porta para expor o serviço. Isso significa que poderá haver colisões de porta se outro app tentar se vincular à porta 31000 em um de seus servidores.
Normalmente, o Kubernetes lidaria com essa atribuição de porta. Neste laboratório, você escolheu uma porta para facilitar a configuração das verificações de integridade mais tarde.
gcloud compute firewall-rules
para permitir tráfego para o serviço do monolítico no nodeport exposto:Clique em Verificar meu progresso abaixo para conferir seu andamento no laboratório. Se a regra do firewall para permitir tráfego TCP na porta 31000 tiver sido criada corretamente, você terá uma pontuação de avaliação.
Agora que está tudo configurado, você pode acessar o serviço secure-monolith de fora do cluster sem usar o encaminhamento de portas.
curl
:Ops. O tempo limite esgotou. O que deu errado?
Observação: é hora de fazer um teste rápido de conhecimento.
Use os seguintes comandos para responder as perguntas abaixo:kubectl get services monolith
kubectl describe services monolith
Perguntas:
Dica: isso está relacionado a rótulos. Você vai corrigir o problema na próxima seção.
Atualmente, o serviço do monolítico não tem endpoints. Uma maneira de resolver um problema como este é usar o comando kubectl get pods
com uma consulta de rótulo.
Observe que essa consulta de rótulo não imprime nenhum resultado. Parece que é preciso adicionar o rótulo "secure=enabled" a eles.
kubectl label
para adicionar ao pod do secure-monolith o rótulo secure=enabled
que falta. Depois, verifique se os rótulos foram atualizados.Agora você tem um!
Pimba! Deu tudo certo.
Clique em Verificar meu progresso abaixo para conferir seu andamento no laboratório. Se o rótulo tiver sido adicionado aos pods monolíticos corretamente, você terá uma pontuação de avaliação.
O objetivo deste laboratório é preparar você para escalonar e gerenciar contêineres na produção. É aqui que entram as Implantações. As implantações são uma maneira declarativa de garantir que o número de pods em execução seja igual ao número desejado de pods especificado pelo usuário.
O principal benefício das implantações é a abstração dos detalhes de nível inferior do gerenciamento de pods. As implantações usam conjuntos de réplicas ReplicaSet em segundo plano para gerenciar o início e a interrupção dos pods. Se for necessário atualizar ou escalonar os pods, a implantação cuidará disso. A implantação também trata do reinício dos pods, caso eles parem por algum motivo.
Observe um exemplo rápido:
Os pods estão vinculados ao ciclo de vida do nó no qual foram criados. No exemplo acima, o Node3 parou, e também um pod com ele. Em vez de criar manualmente um novo pod e encontrar um nó para ele, sua implantação criou um novo pod e o iniciou no Node2.
Isso é bem legal!
É hora de combinar tudo o que você aprendeu sobre pods e serviços para dividir o aplicativo monolítico em serviços menores usando as implantações.
Vamos dividir o app monolítico em três partes separadas:
Tudo pronto para criar implantações, uma para cada serviço. Depois, você vai definir serviços internos para as implantações de Auth e hello e um serviço externo para a implantação de front-end. Depois de finalizado, será possível interagir com os microsserviços, como faz com o monolítico. Mas agora, cada parte pode ser escalonada e implantada de maneira independente.
(Resposta)
A implantação está criando uma réplica, e você está usando a versão 2.0.0 do contêiner Auth.
Quando você executa o comando kubectl create
para criar a implantação de Auth, ele cria um pod de acordo com os dados contidos no manifesto de implantação. Isso significa que é possível escalonar o número de pods mudando o número especificado no campo "Replicas".
kubectl create
para criar o serviço Auth:EXTERNAL-IP
for pendente.Você vai receber uma saudação "hello" como resposta.
Clique em Verificar meu progresso abaixo para conferir seu andamento no laboratório. Se as implantações Auth, hello e front-end tiverem sido criadas corretamente, você terá uma pontuação de avaliação.
Parabéns! Você desenvolveu um aplicativo de diversos serviços usando o Kubernetes. Use o conhecimento que você adquiriu aqui para implantar aplicativos complexos no Kubernetes utilizando uma coleção de implantações e serviços.
Esses treinamentos ajudam você a aproveitar as tecnologias do Google Cloud ao máximo. Nossas aulas incluem habilidades técnicas e práticas recomendadas para ajudar você a alcançar rapidamente o nível esperado e continuar sua jornada de aprendizado. Oferecemos treinamentos que vão do nível básico ao avançado, com opções de aulas virtuais, sob demanda e por meio de transmissões ao vivo para que você possa encaixá-las na correria do seu dia a dia. As certificações validam sua experiência e comprovam suas habilidades com as tecnologias do Google Cloud.
Manual atualizado em 29 de abril de 2024
Laboratório testado em 29 de abril de 2024
Copyright 2025 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.
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