Introducció
En aquest tema, explorarem dues eines fonamentals per a la implementació de CI/CD: Docker i Kubernetes. Docker permet la creació i gestió de contenidors, mentre que Kubernetes facilita l'orquestració i gestió d'aquests contenidors en entorns de producció.
Objectius
- Entendre els conceptes bàsics de Docker i Kubernetes.
- Aprendre a crear i gestionar contenidors amb Docker.
- Comprendre com Kubernetes pot orquestrar contenidors en un entorn de producció.
- Integrar Docker i Kubernetes en pipelines de CI/CD.
- Conceptes Bàsics de Docker
Què és Docker?
Docker és una plataforma que permet empaquetar una aplicació i les seves dependències en un contenidor, assegurant que l'aplicació s'executi de manera consistent en qualsevol entorn.
Components Clau de Docker
- Docker Engine: El motor que permet la creació i execució de contenidors.
- Docker Images: Plantilles llegibles per màquines que contenen tot el necessari per executar una aplicació.
- Docker Containers: Instàncies executables de les imatges Docker.
- Docker Hub: Un registre públic per compartir imatges Docker.
Exemple de Dockerfile
Un Dockerfile és un fitxer de text amb instruccions per crear una imatge Docker.
# Utilitza una imatge base oficial de Node.js FROM node:14 # Estableix el directori de treball dins del contenidor WORKDIR /app # Copia el package.json i el package-lock.json COPY package*.json ./ # Instal·la les dependències RUN npm install # Copia el codi de l'aplicació COPY . . # Exposa el port que l'aplicació utilitzarà EXPOSE 3000 # Comanda per executar l'aplicació CMD ["node", "app.js"]
Comandes Bàsiques de Docker
- Construir una imatge:
docker build -t nom-imatge .
- Executar un contenidor:
docker run -p 3000:3000 nom-imatge
- Llistar contenidors:
docker ps
- Aturar un contenidor:
docker stop id-contenidor
- Conceptes Bàsics de Kubernetes
Què és Kubernetes?
Kubernetes és una plataforma d'orquestració de contenidors que automatitza el desplegament, l'escalabilitat i la gestió d'aplicacions contenidoritzades.
Components Clau de Kubernetes
- Pods: La unitat bàsica de desplegament en Kubernetes, que pot contenir un o més contenidors.
- Nodes: Màquines físiques o virtuals que executen pods.
- Clusters: Conjunt de nodes gestionats per Kubernetes.
- Services: Defineixen com accedir als pods.
- Deployments: Gestionen la creació i actualització de pods.
Exemple de Fitxer de Desplegament
Un fitxer YAML per desplegar una aplicació en Kubernetes.
apiVersion: apps/v1 kind: Deployment metadata: name: exemple-deploy spec: replicas: 3 selector: matchLabels: app: exemple template: metadata: labels: app: exemple spec: containers: - name: exemple image: nom-imatge:latest ports: - containerPort: 3000 --- apiVersion: v1 kind: Service metadata: name: exemple-service spec: type: LoadBalancer selector: app: exemple ports: - protocol: TCP port: 80 targetPort: 3000
Comandes Bàsiques de Kubernetes
- Aplicar una configuració:
kubectl apply -f fitxer.yaml
- Llistar pods:
kubectl get pods
- Llistar serveis:
kubectl get services
- Destruir un desplegament:
kubectl delete deployment nom-deploy
- Integració de Docker i Kubernetes en CI/CD
Creació d'Imatges Docker en Pipelines de CI/CD
Un exemple de pipeline de CI/CD que construeix una imatge Docker i la puja a Docker Hub.
stages: - build - push build: stage: build script: - docker build -t nom-usuari/nom-imatge:$CI_COMMIT_SHA . only: - main push: stage: push script: - echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin - docker push nom-usuari/nom-imatge:$CI_COMMIT_SHA only: - main
Desplegament Automàtic amb Kubernetes
Un exemple de pipeline que desplega una aplicació en un clúster de Kubernetes.
Exercicis Pràctics
Exercici 1: Crear una Imatge Docker
- Escriu un Dockerfile per a una aplicació simple.
- Construeix la imatge amb
docker build
. - Executa un contenidor amb la imatge creada.
Exercici 2: Desplegar una Aplicació en Kubernetes
- Escriu un fitxer YAML per desplegar una aplicació en Kubernetes.
- Aplica la configuració amb
kubectl apply
. - Verifica que els pods i serveis estan funcionant correctament.
Resum
En aquest tema, hem après els conceptes bàsics de Docker i Kubernetes, com crear i gestionar contenidors, i com orquestrar-los en un entorn de producció. També hem vist com integrar aquestes eines en pipelines de CI/CD per automatitzar la construcció, proves i desplegament d'aplicacions.
Curs de CI/CD: Integració i Desplegament Continu
Mòdul 1: Introducció a CI/CD
Mòdul 2: Integració Contínua (CI)
- Introducció a la Integració Contínua
- Configuració d'un Entorn de CI
- Automatització de la Construcció
- Proves Automatitzades
- Integració amb Control de Versions
Mòdul 3: Desplegament Continu (CD)
- Introducció al Desplegament Continu
- Automatització del Desplegament
- Estratègies de Desplegament
- Monitoratge i Retroalimentació
Mòdul 4: Pràctiques Avançades de CI/CD
Mòdul 5: Implementació de CI/CD en Projectes Reals
Mòdul 6: Eines i Tecnologies
Mòdul 7: Exercicis Pràctics
- Exercici 1: Configuració d'un Pipeline Bàsic
- Exercici 2: Integració de Proves Automatitzades
- Exercici 3: Desplegament en un Entorn de Producció
- Exercici 4: Monitoratge i Retroalimentació