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: 3000Comandes 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:
- mainDesplegament 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ó
