Implantação de Java no Kubernetes: guia básico para iniciantes

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Implantação de Java no Kubernetes: guia básico para iniciantes

\n\n

O 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\n

1. Preparação da aplicação Java e imagem Docker

\n\n

Vamos começar com uma aplicação Spring Boot simples. Crie um arquivo Dockerfile no diretório raiz do projeto:

\n\n
FROM openjdk:17-jdk-alpine\nWORKDIR /app\nCOPY target/my-app.jar app.jar\nEXPOSE 8080\nENTRYPOINT ["java", "-jar", "app.jar"]
\n\n

Construa a imagem e envie-a para um registro (por exemplo, Docker Hub):

\n\n
mvn clean package -DskipTests\ndocker build -t myregistry/my-java-app:v1 .\ndocker push myregistry/my-java-app:v1
\n\n

Certifique-se de que a imagem funciona localmente:

\n\n
docker run -p 8080:8080 myregistry/my-java-app:v1
\n\n

2. Objetos principais do Kubernetes

\n\n

Para 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
\n\n

Criação do Deployment (deployment.yaml)

\n\n
apiVersion: 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\n

Criação do Service (service.yaml)

\n\n
apiVersion: 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\n

3. Implantação no cluster Kubernetes

\n\n

Aplique os manifestos ao seu cluster (certifique-se de que o kubectl está configurado):

\n\n
kubectl apply -f deployment.yaml\nkubectl apply -f service.yaml
\n\n

Verifique o status dos pods e do serviço:

\n\n
kubectl get pods\nkubectl get svc java-app-service
\n\n

Para acesso externo (por exemplo, para testes), use port-forward:

\n\n
kubectl port-forward service/java-app-service 8080:80
\n\n

Agora a aplicação está disponível em http://localhost:8080.

\n\n

4. Escalonamento e atualização

\n\n

O Kubernetes permite escalonar a aplicação facilmente:

\n\n
kubectl scale deployment java-app-deployment --replicas=5
\n\n

Para atualizar a imagem (rolling update), altere a tag no Deployment e aplique:

\n\n
kubectl set image deployment/java-app-deployment java-app=myregistry/my-java-app:v2\nkubectl rollout status deployment/java-app-deployment
\n\n

Se necessário, reverta as alterações:

\n\n
kubectl rollout undo deployment/java-app-deployment
\n\n

Conclusão

\n\n

Examinamos o processo básico de implantação de uma aplicação Java no Kubern

Blogs

Book Recommendations