Introducció
En aquest tema, explorarem com integrar Jenkins amb Kubernetes per aprofitar les capacitats d'orquestració de contenidors de Kubernetes. Aquesta integració permet desplegar aplicacions de manera eficient i escalable, aprofitant les pipelines de Jenkins per automatitzar el procés de CI/CD.
Objectius
- Entendre els conceptes bàsics de Kubernetes.
- Configurar Jenkins per treballar amb Kubernetes.
- Crear i desplegar una pipeline de Jenkins en un clúster de Kubernetes.
Conceptes Bàsics de Kubernetes
Abans de començar amb la integració, és important tenir una comprensió bàsica de Kubernetes:
- Clúster de Kubernetes: Un conjunt de màquines (nodes) que executen aplicacions contenidoritzades.
- Node: Una màquina individual dins del clúster.
- Pod: La unitat bàsica de desplegament en Kubernetes, que pot contenir un o més contenidors.
- Deployment: Una declaració de l'estat desitjat per a un conjunt de pods.
- Service: Un objecte que exposa un conjunt de pods com un servei de xarxa.
Configurant Jenkins per Treballar amb Kubernetes
Requisits Previs
- Un clúster de Kubernetes en funcionament.
- Jenkins instal·lat i configurat.
- Accés a la línia de comandes
kubectl
per interactuar amb el clúster de Kubernetes.
Instal·lació del Plugin de Kubernetes per a Jenkins
- Accedeix a Jenkins: Inicia sessió al teu servidor de Jenkins.
- Instal·la el Plugin de Kubernetes:
- Ves a
Manage Jenkins
>Manage Plugins
. - A la pestanya
Available
, cercaKubernetes
i instal·la el plugin.
- Ves a
Configuració del Plugin de Kubernetes
-
Configura el Plugin:
- Ves a
Manage Jenkins
>Configure System
. - Cerca la secció
Cloud
i fes clic aAdd a new cloud
>Kubernetes
. - Omple els camps necessaris:
- Kubernetes URL: L'URL del teu clúster de Kubernetes.
- Kubernetes Namespace: El namespace on es desplegaran els pods de Jenkins.
- Credentials: Afegeix les credencials necessàries per accedir al clúster.
- Ves a
-
Configura els Templates de Pod:
- A la secció
Pod Templates
, afegeix un nou template de pod. - Defineix les característiques del pod, com el nom, les imatges de contenidors, i els recursos necessaris.
- A la secció
Exemple de Configuració de Pod Template
apiVersion: v1 kind: Pod metadata: name: jenkins-agent spec: containers: - name: jnlp image: jenkins/inbound-agent:latest args: ['$(JENKINS_SECRET)', '$(JENKINS_NAME)'] - name: maven image: maven:3.6.3-jdk-8 command: ['cat'] tty: true
Creant una Pipeline de Jenkins per Kubernetes
Exemple de Pipeline Declarativa
pipeline { agent { kubernetes { yaml """ apiVersion: v1 kind: Pod spec: containers: - name: maven image: maven:3.6.3-jdk-8 command: - cat tty: true """ } } stages { stage('Build') { steps { container('maven') { sh 'mvn clean install' } } } stage('Deploy') { steps { container('maven') { sh 'kubectl apply -f k8s/deployment.yaml' } } } } }
Explicació del Codi
- agent: Defineix que la pipeline s'executarà en un pod de Kubernetes.
- yaml: Especifica la configuració del pod, incloent-hi els contenidors necessaris.
- stages: Defineix les etapes de la pipeline.
- Build: Utilitza el contenidor
maven
per compilar el projecte. - Deploy: Utilitza
kubectl
per desplegar l'aplicació al clúster de Kubernetes.
- Build: Utilitza el contenidor
Exercici Pràctic
Objectiu
Configurar una pipeline de Jenkins que compili una aplicació Java i la desplegui en un clúster de Kubernetes.
Passos
- Configura el Plugin de Kubernetes a Jenkins seguint els passos anteriors.
- Crea un nou Job de Pipeline a Jenkins.
- Copia i enganxa l'exemple de pipeline proporcionat anteriorment.
- Modifica el codi per adaptar-lo al teu projecte i clúster de Kubernetes.
- Executa la pipeline i verifica que l'aplicació es desplega correctament al clúster.
Solució
pipeline { agent { kubernetes { yaml """ apiVersion: v1 kind: Pod spec: containers: - name: maven image: maven:3.6.3-jdk-8 command: - cat tty: true """ } } stages { stage('Build') { steps { container('maven') { sh 'mvn clean install' } } } stage('Deploy') { steps { container('maven') { sh 'kubectl apply -f k8s/deployment.yaml' } } } } }
Conclusió
Integrar Jenkins amb Kubernetes permet aprofitar les capacitats d'orquestració de contenidors per desplegar aplicacions de manera eficient i escalable. Amb aquesta configuració, pots automatitzar completament el procés de CI/CD, des de la compilació fins al desplegament en un clúster de Kubernetes.
En el següent tema, explorarem com utilitzar Jenkins com a codi amb Jenkinsfile per gestionar les pipelines de manera més eficient i repetible.
Jenkins: De Principiant a Avançat
Mòdul 1: Introducció a Jenkins
Mòdul 2: Conceptes Bàsics de Jenkins
- Visió General del Tauler de Jenkins
- Creant i Executant Feines
- Entenent les Pipelines de Jenkins
- Utilitzant Plugins de Jenkins
Mòdul 3: Pipelines de Jenkins
- Pipeline com a Codi
- Pipelines Declaratives vs Scriptades
- Creant una Pipeline Simple
- Sintaxi de Pipeline
Mòdul 4: Pipelines Avançades de Jenkins
- Etapes i Passos de Pipeline
- Execució Paral·lela en Pipelines
- Utilitzant Variables d'Entorn
- Millors Pràctiques de Pipeline
Mòdul 5: Administració de Jenkins
- Gestionant Nodes de Jenkins
- Configurant la Seguretat
- Còpia de Seguretat i Restauració de Jenkins
- Monitorant Jenkins
Mòdul 6: Integrant Jenkins
- Integració amb Sistemes de Control de Versions
- Integració amb Eines de Compilació
- Integració amb Eines de Prova
- Integració amb Eines de Desplegament
Mòdul 7: Jenkins per a la Integració i el Lliurament Continu (CI/CD)
- Entenent CI/CD
- Configurant una Pipeline de CI
- Configurant una Pipeline de CD
- Automatitzant Desplegaments
Mòdul 8: Temes Avançats de Jenkins
- Utilitzant Jenkins amb Docker
- Jenkins i Kubernetes
- Jenkins com a Codi amb Jenkinsfile
- Escalant Jenkins