Introducció
Kubernetes és una plataforma d'orquestració de contenidors que automatitza el desplegament, l'escalat i la gestió d'aplicacions contenidoritzades. És una eina essencial per gestionar microserveis en entorns de producció, ja que proporciona eines per assegurar la disponibilitat, la resiliència i l'escalabilitat dels serveis.
Conceptes Clau de Kubernetes
- Clúster
Un clúster de Kubernetes està format per un conjunt de màquines (nodes) que executen aplicacions contenidoritzades. Hi ha dos tipus de nodes:
- Node Mestre: Gestiona el clúster i coordina totes les activitats, com ara l'escalat i el desplegament.
- Nodes de Treball: Executen les aplicacions contenidoritzades.
- Pod
Un Pod és la unitat bàsica de desplegament en Kubernetes. Un Pod pot contenir un o més contenidors que comparteixen el mateix espai de xarxa i emmagatzematge.
- ReplicaSet
Un ReplicaSet assegura que un nombre específic de rèpliques d'un Pod estiguin executant-se en tot moment. Si un Pod falla, el ReplicaSet crea un nou Pod per reemplaçar-lo.
- Deployment
Un Deployment proporciona actualitzacions declaratives per als Pods i els ReplicaSets. Permet desplegar noves versions de l'aplicació de manera controlada.
- Service
Un Service és una abstracció que defineix un conjunt lògic de Pods i una política per accedir-hi. Els serveis permeten la comunicació entre diferents components de l'aplicació.
- ConfigMap i Secret
- ConfigMap: Emmagatzema dades de configuració no confidencials en parelles clau-valor.
- Secret: Emmagatzema dades confidencials, com ara contrasenyes i claus d'API, de manera segura.
Desplegament d'un Microservei amb Kubernetes
Pas 1: Crear un Fitxer de Configuració de Deployment
apiVersion: apps/v1 kind: Deployment metadata: name: microservei-exemple spec: replicas: 3 selector: matchLabels: app: microservei-exemple template: metadata: labels: app: microservei-exemple spec: containers: - name: microservei-exemple image: exemple/microservei:latest ports: - containerPort: 8080
Explicació del Fitxer de Configuració
- apiVersion: La versió de l'API de Kubernetes que s'utilitza.
- kind: El tipus de recurs que es crea, en aquest cas, un Deployment.
- metadata: Informació sobre el Deployment, com ara el nom.
- spec: L'especificació del Deployment.
- replicas: El nombre de rèpliques del Pod.
- selector: Defineix com seleccionar els Pods gestionats per aquest Deployment.
- template: El model per crear els Pods.
- metadata: Etiquetes per identificar els Pods.
- spec: L'especificació dels contenidors dins del Pod.
- containers: Una llista de contenidors que s'executaran dins del Pod.
- name: El nom del contenidor.
- image: La imatge del contenidor.
- ports: Els ports exposats pel contenidor.
- containers: Una llista de contenidors que s'executaran dins del Pod.
Pas 2: Crear un Fitxer de Configuració de Service
apiVersion: v1 kind: Service metadata: name: microservei-exemple-service spec: selector: app: microservei-exemple ports: - protocol: TCP port: 80 targetPort: 8080 type: LoadBalancer
Explicació del Fitxer de Configuració
- apiVersion: La versió de l'API de Kubernetes que s'utilitza.
- kind: El tipus de recurs que es crea, en aquest cas, un Service.
- metadata: Informació sobre el Service, com ara el nom.
- spec: L'especificació del Service.
- selector: Defineix com seleccionar els Pods gestionats per aquest Service.
- ports: Els ports exposats pel Service.
- protocol: El protocol utilitzat (TCP en aquest cas).
- port: El port exposat pel Service.
- targetPort: El port al qual el Service redirigeix el tràfic dins del Pod.
- type: El tipus de Service (LoadBalancer en aquest cas).
Pas 3: Desplegar el Microservei
-
Aplicar el Deployment:
kubectl apply -f deployment.yaml
-
Aplicar el Service:
kubectl apply -f service.yaml
Verificar el Desplegament
-
Llistar els Pods:
kubectl get pods
-
Llistar els Services:
kubectl get services
Exercici Pràctic
Objectiu
Desplegar un microservei simple utilitzant Kubernetes i verificar que està funcionant correctament.
Passos
- Crear un fitxer
deployment.yaml
amb la configuració del Deployment. - Crear un fitxer
service.yaml
amb la configuració del Service. - Aplicar els fitxers de configuració utilitzant
kubectl
. - Verificar que els Pods i el Service estan funcionant correctament.
Solució
-
Fitxer
deployment.yaml
:apiVersion: apps/v1 kind: Deployment metadata: name: microservei-exemple spec: replicas: 3 selector: matchLabels: app: microservei-exemple template: metadata: labels: app: microservei-exemple spec: containers: - name: microservei-exemple image: exemple/microservei:latest ports: - containerPort: 8080
-
Fitxer
service.yaml
:apiVersion: v1 kind: Service metadata: name: microservei-exemple-service spec: selector: app: microservei-exemple ports: - protocol: TCP port: 80 targetPort: 8080 type: LoadBalancer
-
Aplicar els fitxers de configuració:
kubectl apply -f deployment.yaml kubectl apply -f service.yaml
-
Verificar el desplegament:
kubectl get pods kubectl get services
Conclusió
En aquesta secció, hem après els conceptes clau de Kubernetes i com utilitzar-los per desplegar un microservei. Hem creat fitxers de configuració per a un Deployment i un Service, i hem aplicat aquests fitxers per desplegar el microservei en un clúster de Kubernetes. Aquest coneixement és fonamental per gestionar aplicacions de microserveis en entorns de producció, assegurant la seva disponibilitat, resiliència i escalabilitat.
Curs de Microserveis
Mòdul 1: Introducció als Microserveis
- Conceptes Bàsics de Microserveis
- Avantatges i Desavantatges dels Microserveis
- Comparació amb Arquitectura Monolítica
Mòdul 2: Disseny de Microserveis
- Principis de Disseny de Microserveis
- Descomposició d'Aplicacions Monolítiques
- Definició de Bounded Contexts