En aquest exercici, aprendrem a configurar i executar un pipeline de CI/CD per desplegar una aplicació en un entorn de producció. Utilitzarem Jenkins com a eina principal per a la configuració del pipeline.

Objectius de l'Exercici

  1. Configurar un pipeline de CI/CD en Jenkins.
  2. Automatitzar el desplegament d'una aplicació en un entorn de producció.
  3. Integrar proves de desplegament per assegurar la qualitat del codi.
  4. Implementar estratègies de desplegament segures i eficients.

Requisits Previs

  • Coneixements bàsics de Jenkins.
  • Coneixements bàsics de Docker i Kubernetes.
  • Accés a un entorn de producció (pot ser un servidor virtual o un clúster de Kubernetes).
  • Coneixements bàsics de Git.

Passos de l'Exercici

  1. Configuració del Pipeline en Jenkins

1.1 Crear un Nou Job en Jenkins

  1. Inicia sessió a la teva instància de Jenkins.
  2. Crea un nou job seleccionant "Pipeline" com a tipus de projecte.
  3. Dona-li un nom al job, per exemple, deploy-to-production.

1.2 Definir el Pipeline

A la secció de configuració del job, defineix el pipeline utilitzant el següent script:

pipeline {
    agent any

    stages {
        stage('Checkout') {
            steps {
                git 'https://github.com/usuari/repo.git'
            }
        }
        stage('Build') {
            steps {
                sh 'docker build -t usuari/app:latest .'
            }
        }
        stage('Test') {
            steps {
                sh 'docker run usuari/app:latest ./run-tests.sh'
            }
        }
        stage('Deploy') {
            steps {
                script {
                    def server = 'produccio.server.com'
                    def user = 'deploy_user'
                    def app = 'usuari/app:latest'
                    
                    sh "ssh ${user}@${server} 'docker pull ${app} && docker stop app || true && docker rm app || true && docker run -d --name app ${app}'"
                }
            }
        }
    }
}

  1. Automatització del Desplegament

2.1 Construcció de la Imatge Docker

En l'etapa de Build, construïm la imatge Docker de l'aplicació. Assegura't que el Dockerfile estigui a l'arrel del repositori.

docker build -t usuari/app:latest .

2.2 Proves Automatitzades

Executem les proves automatitzades dins d'un contenidor Docker per assegurar-nos que la imatge és funcional.

docker run usuari/app:latest ./run-tests.sh

2.3 Desplegament a Producció

Utilitzem SSH per connectar-nos al servidor de producció i desplegar la nova imatge Docker.

ssh ${user}@${server} 'docker pull ${app} && docker stop app || true && docker rm app || true && docker run -d --name app ${app}'

  1. Estratègies de Desplegament

3.1 Desplegament Blue-Green

Una estratègia de desplegament blue-green implica tenir dos entorns d'aplicació (blue i green). Només un d'ells està actiu en producció en qualsevol moment. Quan es fa un desplegament, es desplega la nova versió en l'entorn inactiu i després es canvia el trànsit a aquest entorn.

3.2 Desplegament Canari

El desplegament canari implica desplegar la nova versió a un subconjunt de servidors o usuaris per monitoritzar el seu rendiment abans de desplegar-la completament.

  1. Monitoratge i Retroalimentació

4.1 Configuració del Monitoratge

Configura eines de monitoratge com Prometheus i Grafana per monitoritzar el rendiment de l'aplicació després del desplegament.

4.2 Retroalimentació

Implementa alertes i notificacions per rebre retroalimentació immediata en cas de problemes després del desplegament.

Exercici Pràctic

Tasca 1: Configura el Pipeline

Configura el pipeline en Jenkins seguint els passos descrits anteriorment.

Tasca 2: Executa el Pipeline

Executa el pipeline i assegura't que totes les etapes es completen correctament.

Tasca 3: Implementa una Estratègia de Desplegament

Implementa una estratègia de desplegament blue-green o canari en el teu pipeline.

Tasca 4: Configura el Monitoratge

Configura eines de monitoratge per la teva aplicació desplegada.

Solucions

Solució a la Tasca 1

pipeline {
    agent any

    stages {
        stage('Checkout') {
            steps {
                git 'https://github.com/usuari/repo.git'
            }
        }
        stage('Build') {
            steps {
                sh 'docker build -t usuari/app:latest .'
            }
        }
        stage('Test') {
            steps {
                sh 'docker run usuari/app:latest ./run-tests.sh'
            }
        }
        stage('Deploy') {
            steps {
                script {
                    def server = 'produccio.server.com'
                    def user = 'deploy_user'
                    def app = 'usuari/app:latest'
                    
                    sh "ssh ${user}@${server} 'docker pull ${app} && docker stop app || true && docker rm app || true && docker run -d --name app ${app}'"
                }
            }
        }
    }
}

Solució a la Tasca 3

Implementació d'una estratègia de desplegament blue-green:

stage('Deploy') {
    steps {
        script {
            def server = 'produccio.server.com'
            def user = 'deploy_user'
            def app = 'usuari/app:latest'
            def blue = 'app-blue'
            def green = 'app-green'
            
            sh "ssh ${user}@${server} 'docker pull ${app} && docker stop ${green} || true && docker rm ${green} || true && docker run -d --name ${green} ${app}'"
            sh "ssh ${user}@${server} 'docker stop ${blue} || true && docker rm ${blue} || true && docker rename ${green} ${blue}'"
        }
    }
}

Conclusió

En aquest exercici, hem après a configurar un pipeline de CI/CD en Jenkins per desplegar una aplicació en un entorn de producció. Hem automatitzat la construcció, les proves i el desplegament de l'aplicació, i hem implementat estratègies de desplegament segures. A més, hem configurat eines de monitoratge per assegurar-nos que l'aplicació funciona correctament després del desplegament.

© Copyright 2024. Tots els drets reservats