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
- 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"]
- 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
- 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
- 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
- Aplicar els fitxers de configuració
# Aplicar el Deployment kubectl apply -f deployment.yaml # Aplicar el Service kubectl apply -f service.yaml
- 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
- Què és Spring Boot?
- Configuració del teu entorn de desenvolupament
- Creant la teva primera aplicació Spring Boot
- Entenent l'estructura del projecte Spring Boot
Mòdul 2: Conceptes bàsics de Spring Boot
- Anotacions de Spring Boot
- Injecció de dependències a Spring Boot
- Configuració de Spring Boot
- Propietats de Spring Boot
Mòdul 3: Construint serveis web RESTful
- Introducció als serveis web RESTful
- Creant controladors REST
- Gestionant mètodes HTTP
- Gestió d'excepcions en REST
Mòdul 4: Accés a dades amb Spring Boot
- Introducció a Spring Data JPA
- Configuració de fonts de dades
- Creant entitats JPA
- Utilitzant repositoris de Spring Data
- Mètodes de consulta a Spring Data JPA
Mòdul 5: Seguretat a Spring Boot
- Introducció a Spring Security
- Configuració de Spring Security
- Autenticació i autorització d'usuaris
- Implementant autenticació JWT
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ó
- Optimització del rendiment
- Monitorització amb Spring Boot Actuator
- Utilitzant Prometheus i Grafana
- Gestió de registres i logs