En aquest tema, aprendrem com desplegar una aplicació Spring Boot a Kubernetes. Kubernetes és una plataforma de codi obert per a l'automatització del desplegament, l'escalat i la gestió d'aplicacions en contenidors. És una eina poderosa que permet gestionar aplicacions de manera eficient en entorns de producció.

Objectius del tema

  • Entendre els conceptes bàsics de Kubernetes.
  • Preparar una aplicació Spring Boot per al desplegament en Kubernetes.
  • Crear i configurar els recursos necessaris a Kubernetes.
  • Desplegar i gestionar l'aplicació a Kubernetes.

Conceptes bàsics de Kubernetes

Components clau de Kubernetes

  • Pod: La unitat bàsica de desplegament a Kubernetes. Un Pod pot contenir un o més contenidors.
  • Node: Una màquina (física o virtual) que executa Pods.
  • Cluster: Un conjunt de Nodes gestionats per Kubernetes.
  • Deployment: Un objecte que defineix l'estat desitjat per a un conjunt de Pods.
  • Service: Un objecte que exposa un conjunt de Pods com un servei de xarxa.

Arquitectura de Kubernetes

Kubernetes segueix una arquitectura de màster-esclau:

  • Màster: Gestiona l'estat del clúster, incloent-hi la programació de Pods, la gestió de l'estat desitjat i la configuració de la xarxa.
  • Nodes: Executen els Pods i informen l'estat al màster.

Preparant l'aplicació Spring Boot

  1. Crear una imatge Docker

Per desplegar una aplicació Spring Boot a Kubernetes, primer necessitem empaquetar-la en una imatge Docker.

Dockerfile:

# Utilitza una imatge base de JDK
FROM openjdk:11-jre-slim

# Estableix el directori de treball
WORKDIR /app

# Copia l'arxiu JAR de l'aplicació
COPY target/my-spring-boot-app.jar /app/my-spring-boot-app.jar

# Exposa el port que utilitza l'aplicació
EXPOSE 8080

# Comanda per executar l'aplicació
ENTRYPOINT ["java", "-jar", "my-spring-boot-app.jar"]

  1. Construir i pujar la imatge Docker

# Construir la imatge Docker
docker build -t my-spring-boot-app:latest .

# Pujar la imatge a un registre Docker (Docker Hub, per exemple)
docker tag my-spring-boot-app:latest <your-dockerhub-username>/my-spring-boot-app:latest
docker push <your-dockerhub-username>/my-spring-boot-app:latest

Creant i configurant recursos a Kubernetes

  1. Fitxer de Deployment

Un Deployment defineix l'estat desitjat per a un conjunt de Pods.

deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-spring-boot-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-spring-boot-app
  template:
    metadata:
      labels:
        app: my-spring-boot-app
    spec:
      containers:
      - name: my-spring-boot-app
        image: <your-dockerhub-username>/my-spring-boot-app:latest
        ports:
        - containerPort: 8080

  1. Fitxer de Service

Un Service exposa l'aplicació a la xarxa.

service.yaml:

apiVersion: v1
kind: Service
metadata:
  name: my-spring-boot-app-service
spec:
  type: LoadBalancer
  selector:
    app: my-spring-boot-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Desplegant l'aplicació a Kubernetes

  1. Aplicar els fitxers de configuració

# Aplicar el Deployment
kubectl apply -f deployment.yaml

# Aplicar el Service
kubectl apply -f service.yaml

  1. Verificar l'estat del Deployment i el Service

# Verificar els Pods
kubectl get pods

# Verificar el Deployment
kubectl get deployments

# Verificar el Service
kubectl get services

Resum

En aquest tema, hem après com desplegar una aplicació Spring Boot a Kubernetes. Hem cobert els conceptes bàsics de Kubernetes, com preparar una aplicació Spring Boot per al desplegament, i com crear i configurar els recursos necessaris a Kubernetes. Finalment, hem desplegat i verificat l'aplicació a Kubernetes. Amb aquests coneixements, estàs preparat per gestionar aplicacions en contenidors en entorns de producció utilitzant Kubernetes.

Curs de Spring Boot

Mòdul 1: Introducció a Spring Boot

Mòdul 2: Conceptes bàsics de Spring Boot

Mòdul 3: Construint serveis web RESTful

Mòdul 4: Accés a dades amb Spring Boot

Mòdul 5: Seguretat a Spring Boot

Mòdul 6: Proves a Spring Boot

Mòdul 7: Funcions avançades de Spring Boot

Mòdul 8: Desplegant aplicacions Spring Boot

Mòdul 9: Rendiment i monitorització

Mòdul 10: Millors pràctiques i consells

© Copyright 2024. Tots els drets reservats