Implantação de Java no Kubernetes: guia básico para iniciantes
\n\nO desenvolvimento moderno em Java é impensável sem conteinerização e orquestração. O Kubernetes (K8s) tornou-se o padrão de facto para gerenciar aplicações conteinerizadas. Neste guia, vamos analisar passo a passo o processo de implantação de uma aplicação Java simples em um cluster Kubernetes. Você aprenderá como empacotar o código em uma imagem Docker, criar os manifestos necessários e executar a aplicação em um ambiente semelhante ao de produção.
\n\n1. Preparação da aplicação Java e imagem Docker
\n\nVamos começar com uma aplicação Spring Boot simples. Crie um arquivo Dockerfile no diretório raiz do projeto:
FROM openjdk:17-jdk-alpine\nWORKDIR /app\nCOPY target/my-app.jar app.jar\nEXPOSE 8080\nENTRYPOINT ["java", "-jar", "app.jar"]\n\nConstrua a imagem e envie-a para um registro (por exemplo, Docker Hub):
\n\nmvn clean package -DskipTests\ndocker build -t myregistry/my-java-app:v1 .\ndocker push myregistry/my-java-app:v1\n\nCertifique-se de que a imagem funciona localmente:
\n\ndocker run -p 8080:8080 myregistry/my-java-app:v1\n\n2. Objetos principais do Kubernetes
\n\nPara implantar uma aplicação Java, precisaremos de três recursos principais:
\n\n- \n
- Deployment — gerencia réplicas e atualizações \n
- Service — fornece acesso de rede aos pods \n
- Ingress — (opcional) roteamento de tráfego externo \n
Criação do Deployment (deployment.yaml)
\n\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: java-app-deployment\nspec:\n replicas: 3\n selector:\n matchLabels:\n app: java-app\n template:\n metadata:\n labels:\n app: java-app\n spec:\n containers:\n - name: java-app\n image: myregistry/my-java-app:v1\n ports:\n - containerPort: 8080\n resources:\n requests:\n memory: "256Mi"\n cpu: "250m"\n limits:\n memory: "512Mi"\n cpu: "500m"\n livenessProbe:\n httpGet:\n path: /actuator/health\n port: 8080\n initialDelaySeconds: 30\n periodSeconds: 10\n readinessProbe:\n httpGet:\n path: /actuator/health\n port: 8080\n initialDelaySeconds: 20\n periodSeconds: 5\n\nCriação do Service (service.yaml)
\n\napiVersion: v1\nkind: Service\nmetadata:\n name: java-app-service\nspec:\n selector:\n app: java-app\n ports:\n - protocol: TCP\n port: 80\n targetPort: 8080\n type: ClusterIP\n\n3. Implantação no cluster Kubernetes
\n\nAplique os manifestos ao seu cluster (certifique-se de que o kubectl está configurado):
kubectl apply -f deployment.yaml\nkubectl apply -f service.yaml\n\nVerifique o status dos pods e do serviço:
\n\nkubectl get pods\nkubectl get svc java-app-service\n\nPara acesso externo (por exemplo, para testes), use port-forward:
\n\nkubectl port-forward service/java-app-service 8080:80\n\nAgora a aplicação está disponível em http://localhost:8080.
4. Escalonamento e atualização
\n\nO Kubernetes permite escalonar a aplicação facilmente:
\n\nkubectl scale deployment java-app-deployment --replicas=5\n\nPara atualizar a imagem (rolling update), altere a tag no Deployment e aplique:
\n\nkubectl set image deployment/java-app-deployment java-app=myregistry/my-java-app:v2\nkubectl rollout status deployment/java-app-deployment\n\nSe necessário, reverta as alterações:
\n\nkubectl rollout undo deployment/java-app-deployment\n\nConclusão
\n\nExaminamos o processo básico de implantação de uma aplicação Java no Kubern