Porque utilizar kind para implantar seu cluster local de Kubernetes

Neste artigo você vai ver:

Temos várias ferramentas que podem rodar o Kubernetes, entre elas o kind, que tem caído nas graças da comunidade nos últimos tempos. Um dos motivos para isso se deve pela fácil instalação e gerenciamento via Docker.

Neste post, vamos entender mais sobre o kind e como ele pode ajudar no seu dia a dia. Esperamos que seja útil para a sua experiência como dev, SRE, data engineer ou apenas se tem curiosidade sobre o assunto. ;P

Mas o que é o kind?

kind é uma ferramenta para executar clusters Kubernetes locais usando “nós” de contêiner do Docker. Foi projetada principalmente para testar o próprio Kubernetes, mas pode ser usada para desenvolvimento local ou CI.

Conheça mais sobre essa poderosa ferramenta em seu site oficial. A seguir vamos ver o que torna a kind tão diferenciada.

Design Simples

Imagem representativa do kind em sua arquitetura que utiliza como base cli kind acessando gerenciador docker que cria um container com outro docker interno gerenciando as APIs do Kubernetes e pods de usuários.

Por ser baseado no gerenciamento de containers Docker, a arquitetura leva em si o princípio de que cada nó de trabalho do cluster gera um container. Da mesma forma, dentro de cada nó as pods de trabalho do Kubernetes são também como containers docker. 

Importante! Recentemente houve uma alteração na utilização do dockershim dentro do cluster Kubernetes. Mas você não precisa se preocupar, isso não afeta as configurações do Kubernetes (pelo menos até a data deste post)

Ambiente replicável semelhante à cloud pública

O que torna o ambiente gerenciado pelo kind mais parecido com a cloud pública atual, dentre várias semelhanças, podemos destacar a exposição de loadbalancers para a máquina local através de definição prévia. Como vemos no exemplo abaixo:

kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/master/manifests/namespace.yaml
kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)"
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/master/manifests/metallb.yaml
kubectl apply -f https://kind.sigs.k8s.io/examples/loadbalancer/metallb-configmap.yaml
sudo ip route add 172.19.0.0/16 via $(docker inspect -f '{{range .NetworkSettings.Networks}}{{.Gateway}}{{end}}' kind-control-plane)

Tais comandos operam as seguintes funções:

  • Criação de namespace para gerenciamento da função loadbalancer do cluster kubernetes;
  • Criação do provedor de ips para os services;
  • Criação de config maps para provisionamento do pool de conexão para os serviços;
  • Adição de rota das faixas de ip informadas pelo config map.

Com estas configurações é possível realizar o deploy de um service, obter o seu ip e conectar no mesmo através da rota recentemente criada.

De fato, com as razões aqui exemplificadas, fica fácil compreender como esta ferramenta é simples para a utilização do cluster Kubernetes local através de containers Docker, simulando assim o ambiente real.

Como instalar o kind

A instalação segue dois simples requisitos que podem ser encontrados nos seguintes links. Instale o Docker e o Kubernetes se ainda não os tiver em sua máquina:

Sobre os requisitos técnicos da máquina para instalar temos a seguinte recomendação:

  • Requisitos mínimos: 6GB ram / Cpu 4 core
  • Requisitos recomendado: 8GB ram / Cpu 4 core

Assim que os requisitos estiverem atendidos, é possível instalar o kind através dos comandos a seguir:

sudo curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-linux-amd64
sudo chmod +x ./kind
sudo mv ./kind /usr/bin/kind

Obs.: Caso você deseje utilizar a ferramenta no seu usuário local sem pedir acesso root a todo instante, pode liberar acesso ao Docker com o seguinte comando: 

sudo chown $(whoami) /var/run/docker.sock

Utiliza outra distro? Então acesse o site do kind para fazer a instalação.

Pronto, seguindo esses passos a kind estará instalada e pronta para uso. Além disso, é possível acessar os comandos disponíveis, incluindo a criação de um cluster pelo comando a seguir:

kind create cluster

Obs.: Espere alguns instantes até realizar o download da imagem Docker e assim iniciar os testes.

Backup/Restore

Como o kind utiliza o container Docker é ainda possível realizar o export do container como imagem default e reutilizar sempre que desejar.

 docker import kind-control-plane > kind-backup.tar
 docker export kind-backup.tar kind-backup:latest
 docker run image ls | grep –i kind-backup 

E pronto, você tem um backup em mãos do seu container para exportar para aquele seu amigo que precisar =)

Extra

Você sabia que também pode importar as suas imagens docker para o contexto do kind? Basta usar o comando: 

kind load docker-image nome-da-sua-imagem-docker:latest

kind: mais praticidade para o seu dia a dia

Espero que tenha ficado claro as vantagens de usar o kind para gerenciar seu cluster local de Kubernetes e como é simples começar com essa poderosa ferramenta que ganha cada vez mais espaço na comunidade.

Quer conhecer mais sobre Kubernetes e Docker? Então não vá embora porque o Central de Conteúdo da Zup tem conteúdos interessantes sobre esse e vários assuntos.

E não estamos falando apenas de artigos. Ouça que bacana esse podcast sobre as vantagens da utilização de Containers, curva de aprendizado, como automatizar processos e como orquestrar toda essa estrutura dentro do Kubernetes.

Ficou com alguma dúvida sobre o kind? Prefere usar outra ferramenta no dia a dia? Conta para a gente nos comentários!

Até a próxima =D

Capa do artigo sobre a ferramenta kind, usada para criar clusters locais no kubernetes. Na imagem se vê o teclado de um notebook em uma mesa de madeira e uma xícara de café ao lado.
Foto de Everton F Segur
Analista de TI – Pleno
Sou um entusiasta na área de tecnologia com algumas experiências desde infra até dev. Trabalho desenvolvendo aplicações em microsserviços: Spring/Micronaut, Kafka, SQL, Kubernetes.

Artigos relacionados

Este site utiliza cookies para proporcionar uma experiência de navegação melhor. Consulte nossa Política de Privacidade.