Implantação de Java no Kubernetes: guia básico prático

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

Introdução: Por que Kubernetes para o desenvolvedor Java?

O desenvolvimento Java moderno cada vez mais ultrapassa os limites da simples execução de arquivos JAR em um servidor. A arquitetura de microsserviços, a necessidade de escalabilidade horizontal e tolerância a falhas levam ao uso de contêineres e orquestradores. Kubernetes (K8s) tornou-se o padrão de facto para gerenciar aplicações conteinerizadas. Neste guia, vamos abordar como realizar a implantação de uma aplicação Java típica (por exemplo, em Spring Boot) em um cluster Kubernetes. Você aprenderá como empacotar a aplicação em uma imagem Docker, criar os manifestos necessários e executá-la.



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

Antes de chegar ao Kubernetes, a aplicação Java deve ser empacotada em um contêiner. Vamos considerar um exemplo simples em Spring Boot.



1.1. Exemplo de aplicação Java

Criaremos um controlador REST mínimo que retornará a versão da aplicação:

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication@RestControllerpublic class App { public static void main(String[] args) { SpringApplication.run(App.class, args); }

@GetMapping("/") public String home() { return "Java App running on Kubernetes v1.0"; }}


1.2. Criação do Dockerfile

Para aplicações Java, é ideal usar a construção em múltiplos estágios (multi-stage build) para reduzir o tamanho da imagem final:

FROM maven:3.8.6-eclipse-temurin-17 AS builderWORKDIR /appCOPY pom.xml .RUN mvn dependency:go-offline -BCOPY src ./srcRUN mvn package -DskipTests

FROM eclipse-temurin:17-jre-alpineWORKDIR /appCOPY --from=builder /app/target/*.jar app.jarEXPOSE 8080ENTRYPOINT ["java", "-jar", "app.jar"]


1.3. Criação e publicação da imagem

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

docker build -t yourusername/java-k8s-demo:1.0 .docker push yourusername/java-k8s-demo:1.0


2. Principais objetos do Kubernetes para implantação de Java

Para implantar a aplicação Java, serão necessários pelo menos dois recursos: Deployment (gerencia réplicas e atualizações) e Service (fornece acesso à rede).



2.1. Manifesto Deployment

Crie o arquivo deployment.yaml:

apiVersion: apps/v1kind: Deploymentmetadata:  name: java-app  labels:    app: java-appspec:  replicas: 2  selector:    matchLabels:      app: java-app  template:    metadata:      labels:        app: java-app    spec:      containers:      - name: java-app        image: yourusername/java-k8s-demo:1.0        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

Importante: Para Spring Boot, use o Actuator para health checks. Especifique requests e limits para que o Kubernetes distribua os recursos corretamente.



2.2. Manifesto Service

Crie o service.yaml para acesso interno aos pods:

apiVersion: v1kind: Servicemetadata:  name: java-app-servicespec:  selector:    app: java-app  ports:    - protocol: TCP      port                

Blogs

Book Recommendations