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

  1. Accedeix a Jenkins: Inicia sessió al teu servidor de Jenkins.
  2. Instal·la el Plugin de Kubernetes:
    • Ves a Manage Jenkins > Manage Plugins.
    • A la pestanya Available, cerca Kubernetes i instal·la el plugin.

Configuració del Plugin de Kubernetes

  1. Configura el Plugin:

    • Ves a Manage Jenkins > Configure System.
    • Cerca la secció Cloud i fes clic a Add 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.
  2. 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.

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.

Exercici Pràctic

Objectiu

Configurar una pipeline de Jenkins que compili una aplicació Java i la desplegui en un clúster de Kubernetes.

Passos

  1. Configura el Plugin de Kubernetes a Jenkins seguint els passos anteriors.
  2. Crea un nou Job de Pipeline a Jenkins.
  3. Copia i enganxa l'exemple de pipeline proporcionat anteriorment.
  4. Modifica el codi per adaptar-lo al teu projecte i clúster de Kubernetes.
  5. 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.

© Copyright 2024. Tots els drets reservats