Escrito por Giovanna Gadelha e Willian de Vargas,

5 minutos de leitura

Explorando o orquestrador de containers da GCP – GKE

No terceiro artigo da série, saiba mais sobre o GKE, um serviço que proporciona um ambiente totalmente gerenciado para aplicações que utilizam containers.

Compartilhe este post:

Em nossa série de artigos sobre tecnologias de conteinerização, já falamos sobre os conceitos básicos e a importância dessas poderosas ferramentas. Além disso, demonstramos de maneira prática como fazer o deploy de uma aplicação simples utilizando orquestradores de containers. Com isso, ficou claro a necessidade de utilizar containers em um cenário de produção e, ainda, utilizar ferramentas que gerenciam esse cenário. Dessa maneira, construímos um ambiente com alto desempenho e seguro que também garante vantagens de custo e de infraestrutura. O objetivo do último artigo aqui presente, é apresentar o orquestrador de containers da Google Cloud Computing (GCP), o Google Kubernetes Engine (GKE), sem deixar de lado a prova de conceito, para aprendermos sobre essa ferramenta colocando a mão na massa.

 

O que é o GKE?

O Google Kubernetes Engine, GKE, é um serviço da Google Cloud Computing (GCP) que proporciona um ambiente totalmente gerenciado para realizar a implementação, gerenciamento e escalonamento de aplicações que utilizam contêineres. Para isso, é utilizado a infraestrutura do Google que se integra ao Kubernetes. Basicamente, o GKE reúne várias máquinas agrupadas para formação de um cluster que é fornecido pelo sistema de gerenciamento de clusters de código aberto Kubernetes. Portanto, toda a interação com o cluster criado é feita a partir dessa integração com o Kubernetes. Para entender como fazer o deploy de uma aplicação simples utilizando o ambiente GKE, iremos demonstrar em seguida uma breve descrição de cada recurso que será utilizado na parte prática do artigo.

 

+++ Google Cloud Storage (GCS)

O GCS é o serviço de armazenamento de dados da GCP. Ele funciona como um repositório de qualquer tipo, tamanho ou quantidade. Para os mais familiarizados com a AWS, o S3 é equivalente ao GCS, ou seja, os dois são para o mesmo fim.

+++ Google Container Registry (GCR)

Já o GCR é o serviço de gerenciamento de imagens Docker da GCP. Também funciona como um repositório, mas nesse caso, guardamos imagens dos nossos containers e além disso é possível gerenciar as mesmas, realizar verificações e análises e com isso construir pipelines Docker totalmente automatizados, ou também, integrar com outros serviços, como o GKE.

+++ Cluster

E, por fim, um Cluster é a base do GKE. Eles são os objetos do Kubernetes onde as aplicações em containers são executadas. Além disso, um cluster consiste em pelo menos um plano de controle e reúne várias máquinas, chamadas de nós. Esse conjunto do plano de controle e das máquinas de nó são responsáveis por executar o sistema de orquestração de cluster no Kubernetes.

 

Mão na massa

Para esta demonstração, seguiremos utilizando a nossa aplicação que realiza consultas no Twitter a cada 15 minutos em busca de tweets com a hashtag #GCP, gerando um arquivo .csv com os tweets encontrados e salvando-o em um bucket no GCS.

 

1º Preparando o ambiente

+++ Instalando o Gsutil: para informações acerca da instalação do Gsutil, clique aqui;
+++ Instalando o kubectl;
+++ Crie um novo projeto na GCP, caso ainda não tenha;
+++ Configurando o Gsutil:
a) Execute o comando a seguir para realizar login na sua conta google: gcloud init –console-only
          b) Informe o ID do projeto na linha de comando abaixo (o ID do projeto pode ser localizado na página inicial da GCP, em “Informações do projeto”). gcloud config set project ID_DO_PROJETO

 

2º Criando o Bucket no GCS

Para criar um Bucket, você deve acessar a opção “Cloud Storage” no menu lateral da GCP. Na janela para onde você foi redirecionado, clique em “Navegador” no menu lateral. Em seguida, clique em “Criar intervalo” no menu superior.

+++ Nomeie seu Bucket:
Vamos nomear este bucket como “poc_gke”

+++ Escolha onde armazenar seu bucket:
Marque a opção “Multi-region” e, em Local, selecione “us (várias regiões nos Estados Unidos)”

+++ Escolha uma classe de armazenamento padrão para seus dados:
Vamos escolher a classe “Standard”

+++ Escolha como controlar o acesso a objetos:
Selecione a opção “Detalhado”

+++ Configurações avançadas (opcional)
Não altere nada nesta parte

+++ Clique em “Criar”.

 

3º Clonando o repositório com os códigos fonte necessários

+++ Faça um clone do repositório do projeto.

+++ Leia e execute as instruções do README.md presentes no diretório “POC-GKE”

 

4º Criando uma conta de serviço e gerando o Key File

+++ Criando uma conta de serviço:

  • Para criar uma conta de serviço, você deve acessar a opção “IAM e administrador” no menu lateral da GCP. Na página para onde você foi redirecionado, clique em “Contas de Serviço” no menu lateral.
  • Em seguida, clique no botão “+ CRIAR CONTA DE SERVIÇO”.
  • Detalhes da conta de serviço:
    • Informe um nome para a conta de serviço
  • Conceda a essa conta de serviço acesso ao projeto
    • Certifique-se de adicionar o papel de Leitor a esta conta de serviço.

 

+++ Fazendo download do Key File:

  • Para fazer download do Key File da conta de serviço criada, entre na conta clicando no nome dela na lista de contas de serviço.
  • Em seguida, navegue até a aba “CHAVES”
  • Clique em “Adicionar Chave > Criar Nova Chave”
  • Selecione o tipo de chave “JSON” e clique em “Criar”
  • Um arquivo será baixado para seu computador.
  • Renomeie o arquivo para “keyfile.json” e copie-o para a mesma pasta onde o Dockerfile do nosso projeto se encontra (este passo é importante para o funcionamento da aplicação).

 

5º Gerando a imagem Docker

Devemos gerar a imagem docker a partir do nosso Dockerfile. Para isso, entre no diretório onde o arquivo se encontre e execute os comandos abaixo:

docker build -t twitter-app:latest .

export PROJECT_ID="$(gcloud config get-value project -q)"

gcloud auth configure-docker

docker tag twitter-app:latest "gcr.io/${PROJECT_ID}/twitter-app:v1"

 

6º Enviando a imagem para o repositório

Agora, devemos enviar a imagem criada para o Google Container Registry (GCR). Para isso, execute o comando a seguir:

docker push "gcr.io/${PROJECT_ID}/twitter-app:v1"

 

7º Criando o Cluster

Para criar um Cluster, você deve acessar a opção “Kubernetes Engine” no menu lateral da GCP. Na janela para onde você foi redirecionado, clique em “Clusters” no menu lateral. Em seguida, clique em “Criar”.

  • No pop-up que abrir, selecione “Configurar” na categoria “Autopilot do GKE”
  • Informe um nome para o cluster:
    • Aqui vamos utilizar o nome “twitter-app-cluster”
  • Selecione a região do cluster:
    • Vamos utilizar a região “us-east1”
  • Não altere mais nenhuma opção e clique em “Criar”

 

8º Realizando o Deploy

Após a criação do Cluster, devemos realizar o Deploy da nossa aplicação. Para isso, execute os comandos abaixo:

gcloud container clusters get-credentials twitter-app-cluster --region us-east1

kubectl create deployment twitter-app-deploy --image=gcr.io/${PROJECT_ID}/twitter-app:v1

Você pode verificar o pod em execução através do comando a seguir:

kubectl get pods

9º Verificando o resultado

Para verificar o sucesso da execução deste tutorial, você deve entrar no bucket criado no passo 02 e verificar a existência de arquivos .csv contendo os tweets capturados. Um novo arquivo a cada 15 minutos deverá ser gerado e enviado ao bucket.

10º Removendo os recursos criados

+++ Removendo o Deploy

  • Execute a linha de comando:
kubectl delete deployment twitter-app-deploy

 

+++ Deletando o Cluster

  • No menu lateral da GCP selecione “Kubernetes Engine”.
  • No menu lateral da página que você foi redirecionado, clique em “Clusters”.
  • Clique sobre o nome do seu cluster.
  • Na página para a qual você foi redirecionado, clique em “Excluir”

 

Conclusão

O Google Kubernetes Engine (GKE) nos permite gerenciar nossos clusters com aplicações sendo executadas em um container de maneira simples e rápida. Além disso, oferece ferramentas comuns na cultura DevOps, como a integração com pipelines de CI/CD, garantindo também o alto desempenho e a segurança. Sendo o último artigo da nossa série, esperamos que tenha ficado claro a importância e os conceitos de todo o universo da conteinerização e que a partir das práticas abordadas também tenha sido possível desmistificar a orquestração de containers e as tecnologias envolvidas para esse fim. Até a próxima!

Caso queira conhecer um pouco mais sobre o GKE, consulte a documentação oficial da GCP.

Compartilhe este post: