Neste post quero trazer um pouco sobre a ferramenta de cluster kubernetes chamada Kind.
Em algum momento, você e eu iremos querer reproduzir o nosso ambiente cloud que utiliza kubernetes, isto é fato. Porém, como posso realizar essa tarefa de forma simples e prática e ainda utilizando um serviço que seja de fácil gerenciamento?
Apresento o Kind, este cli que abre as portas da felicidade para termos nosso próprio cluster kubernetes localmente.
Como requisito prévio, é necessário instalar o docker e o kubectl para acesso ao cluster kubernetes posteriormente.
A instalação dos serviços segue abaixo:
Após realizar a instalação, agora iremos instalar o cluster kubernetes.
sudo chown $(whoami) /var/run/docker.sock
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
A criação de um novo cluster também é rápida:
kind create cluster
Visto que temos agora o nosso cluster disponível, vamos realizar o deploy de um pod hello-world para teste.
kubectl run hello-kubernetes --rm --tty -i --restart='Never' --namespace default --image docker.io/hello-world:latest
Após realizarmos o teste e validarmos o funcionamento, vamos configurar a exposição dos próximos serviços que irão ser disponibilizados no cluster.
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
Estas configurações são responsáveis por disponibilizar sempre um ip externo acessível e uma porta respectiva quando exposto pelos serviços do kubernetes.
Agora iremos habilitar a rota de comunicação da interface de rede até serviço kubernetes, pois isto torna mais simples o acesso.
sudo ip route add 172.19.0.0/16 via $(docker inspect -f '{{range .NetworkSettings.Networks}}{{.Gateway}}{{end}}' kind-control-plane)
Agora que já temos o nosso cluster acessível, iremos realizar também o deploy de uma aplicação com serviço ingress para validação.
Criação do deployment:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/website/main/content/en/examples/service/networking/run-my-nginx.yaml
kubectl get pods -l run=my-nginx -o wide
Criação da service:
kubectl expose deployment/my-nginx --type=LoadBalancer
kubectl get svc my-nginx -o wide
Bora testar?
curl 172.19.255.200:80
Cansou? Apaga tudo:
kind delete cluster
Para realizar a importação das suas imagens docker para o kind utilize esta sintaxe:
kind load docker-image nome-da-sua-imagem-docker:versao-desejada
That’s all folks. Obrigado por ler este post e sinta-se à vontade pra compartilhar e marcar eu e o blog hehehe =P
Se una com os assinantes de nossa Newsletter, sempre que tiver postagem nova você será notificado.