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

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



O Kubernetes (K8s) tornou-se o padrão de facto para orquestração de aplicações conteinerizadas. Se você é um desenvolvedor Java, saber como implantar suas aplicações no Kubernetes não é apenas um diferencial, mas uma necessidade na cultura DevOps moderna. Neste guia, percorreremos o caminho completo desde a criação de uma aplicação Java simples até sua implantação em um cluster Kubernetes. Você aprenderá como empacotar a aplicação em uma imagem Docker, escrever os manifestos necessários e executá-la em um ambiente semelhante ao de produção.



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



Antes de implantar a aplicação no Kubernetes, é necessário conteinerizá-la. Docker é a forma padrão de empacotar aplicações Java com suas dependências. Vamos considerar um serviço REST simples em Spring Boot.



Criaremos a classe HelloController.java:



package com.example.demo;

import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;

@RestControllerpublic class HelloController {

@GetMapping("/") public String hello() { return "Hello from Java on Kubernetes!"; }}


Agora criaremos o Dockerfile para construir a imagem. Usaremos multi-stage build para minimizar o tamanho da imagem final:



FROM maven:3.8.5-openjdk-17 AS buildWORKDIR /appCOPY pom.xml .COPY src ./srcRUN mvn clean package -DskipTests

FROM openjdk:17-jdk-slimWORKDIR /appCOPY --from=build /app/target/*.jar app.jarEXPOSE 8080ENTRYPOINT ["java", "-jar", "app.jar"]


Construa a imagem com o comando docker build -t my-java-app:latest . e execute localmente para verificar: docker run -p 8080:8080 my-java-app. Se tudo funcionar, você pode enviar a imagem para um registry (por exemplo, Docker Hub):



docker tag my-java-app:latest yourusername/my-java-app:latestdocker push yourusername/my-java-app:latest


2. Manifestos principais do Kubernetes



Para implantar no Kubernetes, serão necessários pelo menos dois recursos: Deployment (responsável pelo gerenciamento dos pods) e Service (fornece acesso à rede).



Crie o arquivo deployment.yaml:



apiVersion: apps/v1kind: Deploymentmetadata:  name: java-app-deployment  labels:    app: java-appspec:  replicas: 2  selector:    matchLabels:      app: java-app  template:    metadata:      labels:        app: java-app    spec:      containers:      - name: java-app        image: yourusername/my-java-app:latest        ports:        - containerPort: 8080        resources:          requests:            memory: "256Mi"            cpu: "250m"          limits:            memory: "512Mi"            cpu: "500m"        livenessProbe:          httpGet:            path: /actuator/health            port: 8080          initialDelaySeconds: 30          periodSeconds: 10        readinessProbe:          httpGet:            path: /actuator/health            port: 8080          initialDelaySeconds: 20          periodSeconds: 5


Agora crie o service.yaml para tornar a aplicação acessível dentro do cluster:



apiVersion: v1kind: Servicemetadata:  name: java-app-servicespec:  selector:    app: java-app  ports:    - protocol: TCP      port: 80      targetPort: 8080  type: ClusterIP


Se precisar abrir acesso externo (por exemplo, para testes), altere o tipo para LoadBalancer ou use NodePort.



3. Implantação no cluster



Certifique-se de ter acesso ao cluster Kubernetes (por exemplo, Minikube local ou serviço em nuvem). Aplique os manifestos:



kubectl apply -f deployment.yamlkubectl apply -f service.yaml

Blogs

Book Recommendations