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