Linux Servidor linux Kubernetes

Utilizando kubernetes localmente com kind

Utilizando kubernetes localmente com kind

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.

Bora começar?

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)

Testando

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

Mais

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

comments powered by Disqus

Assine nossa Newsletter! 🐧

Se una com os assinantes de nossa Newsletter, sempre que tiver postagem nova você será notificado.