E aí, dev! Se você chegou até aqui, provavelmente já leu o artigo Kubernetes sem Enrolação onde falamos o que é o tal do Kubernetes. Agora é hora de sair do blabla e ir pro terminal. Bora subir um cluster local com K3d e rodar uma aplicação Spring Boot e ver tudo funcionando!
K3d é tipo aquele amigo gente boa: roda o Kubernetes de forma simples e local, usando Docker. Só instalar e sair usando.
🛠️ Instalando o K3d
# Instale o K3d # Linux curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash
Crie um cluster:
k3d cluster create mycluster
Temos que garantir que estamos no contexto Kubernetes correto
kubectl config get-contexts
Observe que tem um * em nosso cluter k3d-mycluster

Caso não esteja com o cluster marcado como cluster corrente, ou seja em utilização, execute o comando abaixo
kubectl config use-context k3d-mycluster
🌱 Criando sua app Spring Boot
Pode ser qualquer API, mas vamos criar uma bem simples que expõe um endpoint tipo /test
ou uma das aplicações que publicamos no canal Borapraticar.
Você pode gerar no Spring Initializr com a dependência Web ou pode gerar o projeto aqui 👉 test
Agora vamos criar a classe TestController
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/test") public class TestController { @GetMapping public String test() { return "Test successful!"; } }
📸 Imagem da aplicação Spring Boot em Container
Para gerarmos a imagem nada de Dockerfile, adicione o plugin no arquivo pom.xml:
<plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-maven-plugin</artifactId> <version>3.4.0</version> <configuration> <from> <image>eclipse-temurin:21-jdk</image> </from> </configuration> </plugin>
No terminal vamos gerar a imagem da aplicação
./mvnw compile jib:dockerBuild -Dimage=minha-app:latest
Estamos quase lá, agora vamos enviar a imagem para o Docker local
k3d image import minha-app:latest -c mycluster
📄 Manifesto da aplicação
Crie o deployment.yaml
:
apiVersion: apps/v1 kind: Deployment metadata: name: minha-app spec: replicas: 1 selector: matchLabels: app: minha-app template: metadata: labels: app: minha-app spec: containers: - name: minha-app image: minha-app:latest imagePullPolicy: Never ports: - containerPort: 8080 --- apiVersion: v1 kind: Service metadata: name: minha-app spec: selector: app: minha-app ports: - port: 8080 targetPort: 8080 nodePort: 30001 type: NodePort
🚀 Bora para o deploy
kubectl apply -f deployment.yaml
💡 Dica importante: se você não especificar o namespace com a flag -n
, o kubectl
assume automaticamente o namespace padrão, que é o default
. Então, se seus recursos estiverem em outro namespace, lembre-se de sempre usar -n meu-namespace
nos comandos.
Show de bola, agora é só criar uma rota para se comunicar com o pod que fizemos o deploy
kubectl port-forward svc/minha-app 8090:8080 &
Se a aplicação ficar disponível aqui: 👉 localhost:8090/test 👈
🎉🎊 Podemos comemorar 🎉🎊
Caso não funcione que é muito provável rsrsr. Não fique triste, pois nem sempre funciona de primeira vou deixar alguns comandos para investigação do erro:
#Listar os pods kubectl get pods #Analisar o pod kubectl describe pod minha-app-XXXXXXXXXXX #Analisar log da aplicação kubectl logs minha-app-XXXXXXXXXX #Listar as redes criadas kubectl get svc
🧹 Limpando a casa: como deletar um cluster K3d
Criou o cluster, testou sua aplicação, deu tudo certo ou deu ruim e agora quer começar do zero? Sem problemas! Deletar um cluster no K3d é bem simples.
Se você quiser apagar um cluster específico, use:
k3d cluster delete mycluster
Substitua mycluster
pelo nome do seu cluster, claro.
Agora, se você já está com a casa cheia de clusters de testes espalhados, e quer mandar todos pro espaço de uma vez só:
k3d cluster delete --all
E pronto, tudo limpo como se nada tivesse acontecido. ✨
Conclusão
Viu como dá pra brincar de Kubernetes localmente? Claro que no mundo real tem mais coisa (monitoramento, segurança, escalabilidade…), mas isso aqui já te coloca no jogo.
Quer ver tudo isso na prática em vídeo? Recomendo fortemente o canal BoraPraticar no YouTube — o conteúdo é direto ao ponto e perfeito pra quem quer aprender sem enrolação.
🔥 Enquanto está fresco, BoraPraticar os próximos passos
1 thought on “Kubernetes: Mão na massa com K3d e Spring Boot”