En aquest tema, aprendrem a desplegar una aplicació web en un clúster de Kubernetes. Aquest procés inclou la creació de recursos bàsics com Pods, Services i Ingress, així com la configuració de l'emmagatzematge i la gestió de la configuració necessària per a l'aplicació.
Objectius d'Aprenentatge
- Entendre com crear i desplegar un Pod en Kubernetes.
- Configurar un Service per exposar l'aplicació.
- Utilitzar Ingress per gestionar l'accés extern a l'aplicació.
- Configurar l'emmagatzematge persistent per a l'aplicació.
- Gestionar la configuració de l'aplicació mitjançant ConfigMaps i Secrets.
- Creació del Pod
Definició del Pod
Un Pod és la unitat bàsica de desplegament en Kubernetes. Conté un o més contenidors que comparteixen el mateix espai de xarxa i emmagatzematge.
apiVersion: v1
kind: Pod
metadata:
name: web-app
labels:
app: web-app
spec:
containers:
- name: web-app
image: nginx:latest
ports:
- containerPort: 80Explicació del Codi
apiVersion: La versió de l'API de Kubernetes que estem utilitzant.kind: El tipus de recurs que estem creant, en aquest cas, un Pod.metadata: Informació sobre el Pod, incloent el nom i les etiquetes.spec: L'especificació del Pod, que inclou els contenidors que conté.containers: Una llista de contenidors dins del Pod.name: El nom del contenidor.image: La imatge del contenidor que s'utilitzarà.ports: Els ports que el contenidor exposarà.
Comandes per Crear el Pod
- Creació del Service
Un Service en Kubernetes exposa un conjunt de Pods com un servei de xarxa.
Definició del Service
apiVersion: v1
kind: Service
metadata:
name: web-app-service
spec:
selector:
app: web-app
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancerExplicació del Codi
selector: Selecciona els Pods que coincideixen amb les etiquetes especificades.ports: Defineix els ports que el servei exposarà.type: El tipus de servei, en aquest cas,LoadBalancerper exposar l'aplicació a Internet.
Comandes per Crear el Service
- Configuració d'Ingress
Ingress gestiona l'accés extern als serveis dins del clúster.
Definició d'Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-app-ingress
spec:
rules:
- host: webapp.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web-app-service
port:
number: 80Explicació del Codi
rules: Defineix les regles per a l'accés extern.host: El domini que gestionarà l'Ingress.paths: Defineix els camins i els serveis de backend que gestionaran les sol·licituds.
Comandes per Crear l'Ingress
- Configuració de l'Emmagatzematge Persistent
Definició del PersistentVolume (PV)
apiVersion: v1
kind: PersistentVolume
metadata:
name: web-app-pv
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"Definició del PersistentVolumeClaim (PVC)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: web-app-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1GiExplicació del Codi
PersistentVolume: Defineix un volum físic en el clúster.PersistentVolumeClaim: Sol·licita un volum persistent per a un Pod.
Comandes per Crear el PV i PVC
- Gestió de la Configuració
Definició del ConfigMap
apiVersion: v1 kind: ConfigMap metadata: name: web-app-config data: APP_ENV: "production" APP_DEBUG: "false"
Definició del Secret
apiVersion: v1 kind: Secret metadata: name: web-app-secret type: Opaque data: DB_PASSWORD: cGFzc3dvcmQ=
Explicació del Codi
ConfigMap: Emmagatzema dades de configuració no sensibles.Secret: Emmagatzema dades sensibles, com contrasenyes.
Comandes per Crear el ConfigMap i Secret
Exercici Pràctic
Desplegar una Aplicació Web Completa
- Crea els fitxers YAML per al Pod, Service, Ingress, PersistentVolume, PersistentVolumeClaim, ConfigMap i Secret.
- Aplica cada fitxer utilitzant
kubectl apply -f <fitxer>.yaml. - Verifica que l'aplicació està funcionant accedint al domini configurat en l'Ingress.
Solució
kubectl apply -f pod.yaml kubectl apply -f service.yaml kubectl apply -f ingress.yaml kubectl apply -f pv.yaml kubectl apply -f pvc.yaml kubectl apply -f configmap.yaml kubectl apply -f secret.yaml
Resum
En aquest tema, hem après a desplegar una aplicació web en Kubernetes utilitzant recursos bàsics com Pods, Services i Ingress. També hem configurat l'emmagatzematge persistent i gestionat la configuració de l'aplicació mitjançant ConfigMaps i Secrets. Aquestes habilitats són fonamentals per gestionar aplicacions en un entorn de producció amb Kubernetes.
Curs de Kubernetes
Mòdul 1: Introducció a Kubernetes
- Què és Kubernetes?
- Arquitectura de Kubernetes
- Conceptes i Terminologia Clau
- Configuració d'un Clúster de Kubernetes
- CLI de Kubernetes (kubectl)
Mòdul 2: Components Bàsics de Kubernetes
Mòdul 3: Gestió de Configuració i Secrets
Mòdul 4: Xarxes en Kubernetes
Mòdul 5: Emmagatzematge en Kubernetes
Mòdul 6: Conceptes Avançats de Kubernetes
Mòdul 7: Monitorització i Registre
- Monitorització amb Prometheus
- Registre amb Elasticsearch, Fluentd i Kibana (EFK)
- Controls de Salut i Probes
- Servidor de Mètriques
Mòdul 8: Seguretat en Kubernetes
- Control d'Accés Basat en Rols (RBAC)
- Polítiques de Seguretat de Pods
- Seguretat de Xarxa
- Seguretat d'Imatges
Mòdul 9: Escalabilitat i Rendiment
- Autoscalat Horitzontal de Pods
- Autoscalat Vertical de Pods
- Autoscalat de Clúster
- Optimització del Rendiment
Mòdul 10: Ecosistema i Eines de Kubernetes
Mòdul 11: Estudis de Cas i Aplicacions del Món Real
- Desplegament d'una Aplicació Web
- CI/CD amb Kubernetes
- Execució d'Aplicacions Stateful
- Gestió Multi-Clúster
