BLOG

Kubernetes para iniciantes — 1 Primeiros passos


Um breve resumo sobre orquestração de contêineres utilizando K8 😀

Bom, não me atrevo a dizer que entender o processo de orquestração é simples e fico com a melhor definição que vi pela internet: É uma ferramenta produzida por um engenheiro para um engenheiro. Levando isso em consideração, tentarei expor de forma simples e objetiva todo o processo para construção de um cluster local para testes e para habituarmos com o fluxo de criação de um ambiente em K8S.

Como pré requisito, peço para que vocês já tenham alguns conceitos sólidos na cabeça, como:

Caso você não conheça nenhum desses pontos e tem interesse em se aprofundar em cada detalhe, façam a Kube.Academy que é grátis!

Para esse artigo, levarei como base o repositório que disponibilizei com todos arquivos que iremos citar aqui no artigo.

GitHub – toolbox-devops/k8-beginner: Kubernetes’ para iniciantes
Kubernetes’ para iniciantes. Contribute to toolbox-devops/k8-beginner development by creating an account on GitHub.github.com


Kind

https://kind.sigs.k8s.io/

Kind é uma ferramenta para gerenciar os “nós” de contêineres e foi criada com a intenção de rodar Kubernetes de forma local.

Nesse momento, ele será necessário para a criação do nosso Cluster que gerenciará nossos Nodes.

Para criar nosso primeiro Cluster com node de test, utilizem o comando abaixo para criar e validar a criação do nosso cluster

Com nosso Cluster em mãos, iremos para o próximo passo que é a criação de nossos Pods dentro do Cluster.

Kubernetes

Para criar os primeiros Pods, usaremos o arquivo deployment.yaml para construir os ambientes

Essa estrutura de arquivo praticamente nos orienta em quantidades de réplicas, qual imagem usaremos, o padrão do nome dos nossos Pods e principalmente a marcação de labels, que torna mais fácil o gerenciamento e aplicação de regras na nossa orquestração.

Para esse exemplo, usarei a imagem que retratei nesse artigo.

Agora, colocamos nossos Pods no ar, e como vemos, todos começaram com o nome app, conforme tínhamos deixado no deployment.yaml

Agora, iremos aplicar nossa camada de Service para os Pods, onde será responsável por habilitar a comunicação entre os mesmos. No documento, estamos pedindo para pegar todos os Pods que contém a label node-beginner e habilitamos a regra para liberar a porta 3000 via protocolo TCP.

Agora, vamos fazer o teste de comunicação entre o Pod com o IP da camada service

E também entre os próprios Pods do nosso Cluster

Agora que aprendemos como subir nossos Pods na “unha”, iremos utilizar mais uma ferramenta para nos auxiliar nesse processo, para isso, execute os seguintes comandos o diretório onde estão os arquivos deployment.yaml e service.yaml.kubectl delete -f .\deployment.yaml
kubectl delete -f .\service.yaml

Podemos fazer esse processo de várias formas, mas neste artigo apresentarei a ferramenta Kustomize para simplificar alguns processos. Não fiquem bravos comigo, primeiros temos que aprender o caminho das pedras mesmo!

Kustomize

https://kustomize.io/

É uma ferramenta que tem o intuito de nos auxiliar na criação de templates dos arquivos deployments.yaml e service.yaml, assim você consegue customizar de forma fácil e rápida seus arquivos de configurações para cada tipo de ambiente, bora dar uma olhada !

Dentro de nossa pasta base, encontraremos nossos mesmos arquivos utilizados no tópico passado e um arquivo chamado kustomization.yaml, praticamente, configuramos que iremos customizar os arquivos deployment e service e também que adicionaremos o nome test- na frente de qualquer recurso criado, para ver isso na pratica, podemos executar o seguinte comando dentro da pasta k8-kustomization/base

Serviços criados com o prefixo TEST- !

Agora faremos uma customização para um ambiente produtivo, para isso, dentro da pasta overlays/production temos nosso arquivo kustomization.yaml e que contém as seguintes novidades:

  • Criamos o prefixo prod- para todos os recursos
  • Estamos utilizando como base para nossos recursos todos os arquivos que estão na pasta base
  • Estamos criando uma label tier com o valor prod para todos os recursos
  • Por último e mais importante, estamos adicionando na marcação patches, o arquivo replica_count.yaml que conterá a substituição dos documentos deployment e service

Por ultimo, o arquivo replica_count.yaml, substituirá o arquivo do tipo Deployment, que contém algum deployment com a label name com o valor app, e trocará o que houver dentro de spec, que seja replicas para o valor 5 ( ou seja, o valor original 2 será substituído por 5 ). Esse tipo de mudança não se limita só para Deployment, podemos utilizar também para os Service do Cluster.

Para validar nosso novo manifesto, podemos executar o seguinte comando

Neste primeiro passo

Aprendemos até agora alguns conceitos básicos da prática de Kubernetes, ferramentas essenciais e o fluxo inicial para a criação dos Pods e Services. Para o artigo não ficar muito extenso, terminei a primeira parte aqui e prosseguirei no próximo artigo com empacotamento do nosso ambiente.


Tem interesse em aprender mais sobre? Entre em contato conosco ❤️!

Toolbox Devops Consultoria

Toolbox Devops Consultoria

Simplicando seu dia-a-dia na cloud

Esta gostando do conteúdo ? Compartilhe!