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.

  1. 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

  1. 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

  1. 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.

stages:
  - deploy

deploy:
  stage: deploy
  script:
    - kubectl apply -f fitxer.yaml
  only:
    - main

Exercicis Pràctics

Exercici 1: Crear una Imatge Docker

  1. Escriu un Dockerfile per a una aplicació simple.
  2. Construeix la imatge amb docker build.
  3. Executa un contenidor amb la imatge creada.

Exercici 2: Desplegar una Aplicació en Kubernetes

  1. Escriu un fitxer YAML per desplegar una aplicació en Kubernetes.
  2. Aplica la configuració amb kubectl apply.
  3. 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.

© Copyright 2024. Tots els drets reservats