En aquest tema, explorarem com implementar un pipeline de CI/CD (Integració Contínua i Desplegament Continu) utilitzant Kubernetes. Aprendrem a configurar eines populars com Jenkins, GitLab CI/CD i Argo CD per automatitzar el procés de construcció, prova i desplegament d'aplicacions en un clúster de Kubernetes.
Objectius del Tema
- Entendre els conceptes bàsics de CI/CD.
- Configurar Jenkins per a CI/CD amb Kubernetes.
- Utilitzar GitLab CI/CD per desplegar aplicacions en Kubernetes.
- Implementar Argo CD per a desplegaments continus.
Conceptes Bàsics de CI/CD
Integració Contínua (CI)
La integració contínua és una pràctica de desenvolupament de programari on els desenvolupadors integren el seu codi en un repositori compartit diverses vegades al dia. Cada integració és verificada per una construcció automatitzada (incloent proves) per detectar errors tan aviat com sigui possible.
Desplegament Continu (CD)
El desplegament continu és una pràctica on el codi que passa les proves automàtiques és desplegat automàticament en un entorn de producció. Això permet que les aplicacions siguin desplegades de manera ràpida i fiable.
Configuració de Jenkins per a CI/CD amb Kubernetes
Instal·lació de Jenkins
- Desplegar Jenkins en Kubernetes:
apiVersion: apps/v1 kind: Deployment metadata: name: jenkins spec: replicas: 1 selector: matchLabels: app: jenkins template: metadata: labels: app: jenkins spec: containers: - name: jenkins image: jenkins/jenkins:lts ports: - containerPort: 8080 --- apiVersion: v1 kind: Service metadata: name: jenkins spec: ports: - port: 8080 targetPort: 8080 selector: app: jenkins
- Accedir a Jenkins:
- Exposa el servei de Jenkins utilitzant
kubectl port-forward
:kubectl port-forward svc/jenkins 8080:8080
- Accedeix a Jenkins a través del navegador a
http://localhost:8080
.
- Exposa el servei de Jenkins utilitzant
Configuració del Pipeline de Jenkins
- Crear un nou pipeline:
- A la interfície de Jenkins, crea un nou element de tipus "Pipeline".
- Definir el pipeline en el fitxer
Jenkinsfile
:pipeline { agent any stages { stage('Build') { steps { sh 'echo "Building..."' sh 'mvn clean package' } } stage('Test') { steps { sh 'echo "Testing..."' sh 'mvn test' } } stage('Deploy') { steps { sh 'echo "Deploying..."' sh 'kubectl apply -f k8s/deployment.yaml' } } } }
Utilitzar GitLab CI/CD per Desplegar Aplicacions en Kubernetes
Configuració de GitLab CI/CD
-
Crear un fitxer
.gitlab-ci.yml
al repositori:stages: - build - test - deploy build: stage: build script: - echo "Building..." - mvn clean package test: stage: test script: - echo "Testing..." - mvn test deploy: stage: deploy script: - echo "Deploying..." - kubectl apply -f k8s/deployment.yaml
-
Configurar el clúster de Kubernetes a GitLab:
- A la interfície de GitLab, aneu a
Settings > CI/CD > Kubernetes
i afegiu el vostre clúster de Kubernetes.
- A la interfície de GitLab, aneu a
Implementar Argo CD per a Desplegaments Continus
Instal·lació d'Argo CD
-
Desplegar Argo CD en Kubernetes:
kubectl create namespace argocd kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
-
Accedir a la interfície d'Argo CD:
- Exposa el servei d'Argo CD utilitzant
kubectl port-forward
:kubectl port-forward svc/argocd-server -n argocd 8080:443
- Accedeix a Argo CD a través del navegador a
https://localhost:8080
.
- Exposa el servei d'Argo CD utilitzant
Configuració d'una Aplicació en Argo CD
- Crear una aplicació a Argo CD:
- A la interfície d'Argo CD, crea una nova aplicació especificant el repositori de Git i el camí del manifest de Kubernetes.
Exercicis Pràctics
Exercici 1: Configurar un Pipeline de Jenkins
- Configura un pipeline de Jenkins que construeixi, provi i desplegui una aplicació en Kubernetes.
Exercici 2: Utilitzar GitLab CI/CD
- Configura GitLab CI/CD per construir, provar i desplegar una aplicació en Kubernetes.
Exercici 3: Desplegar una Aplicació amb Argo CD
- Configura Argo CD per desplegar una aplicació des d'un repositori de Git.
Solucions als Exercicis
Solució a l'Exercici 1
- Segueix els passos descrits a la secció "Configuració del Pipeline de Jenkins".
Solució a l'Exercici 2
- Segueix els passos descrits a la secció "Configuració de GitLab CI/CD".
Solució a l'Exercici 3
- Segueix els passos descrits a la secció "Configuració d'una Aplicació en Argo CD".
Resum
En aquest tema, hem après a configurar pipelines de CI/CD utilitzant Jenkins, GitLab CI/CD i Argo CD per automatitzar el procés de construcció, prova i desplegament d'aplicacions en Kubernetes. Hem explorat els conceptes bàsics de CI/CD i hem realitzat exercicis pràctics per reforçar els coneixements adquirits.
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