Guía Paso a Paso para Integrar un Clúster de Kubernetes con GitLab para Despliegues Automáticos con Helm

Artículos Guías Manuales Sistemas Linux Windows Binario 0

Guía paso a paso para enganchar un clúster de Kubernetes a un repositorio de GitLab para despliegues automatizados con Helm:

Paso 1: Preparar el clúster de Kubernetes

Antes de integrar GitLab con Kubernetes, asegúrate de que tu clúster de Kubernetes esté funcionando y accesible.

  1. Instala y configura kubectl: Si no lo tienes instalado, sigue la guía oficial de Kubernetes para instalar kubectl.
  2. Configura el acceso a tu clúster: Usa el archivo de configuración de Kubernetes (kubeconfig) para autenticarte en el clúster. Ejemplo de configuración:

    export KUBECONFIG=~/.kube/config
  3. Verifica la conexión:

    kubectl get nodes

    Deberías ver una lista de nodos de tu clúster.

Paso 2: Configurar GitLab CI/CD

  1. Crear un proyecto en GitLab:
    • Accede a tu cuenta de GitLab y crea un nuevo proyecto.
    • Clona el repositorio en tu máquina local o configura un repositorio existente en GitLab.
  2. Agregar el archivo .gitlab-ci.yml: En el repositorio de GitLab, crea un archivo .gitlab-ci.yml en la raíz. Este archivo define el pipeline de CI/CD.

    Aquí hay un ejemplo básico de .gitlab-ci.yml para desplegar en Kubernetes usando Helm:

    stages:
    - deploy

    variables:
    KUBERNETES_SERVER: "https://your-k8s-api-server"
    KUBERNETES_NAMESPACE: "default"
    HELM_RELEASE_NAME: "my-release"
    HELM_CHART_PATH: "./chart" # Ruta al chart de Helm

    before_script:
    - apt-get update -qq && apt-get install -y curl
    - curl https://get.helm.sh/helm-v3.9.1-linux-amd64.tar.gz -o helm.tar.gz
    - tar -zxvf helm.tar.gz
    - mv linux-amd64/helm /usr/local/bin/helm

    deploy:
    stage: deploy
    script:
    - echo $KUBE_CONFIG | base64 -d > /root/.kube/config
    - helm upgrade --install $HELM_RELEASE_NAME $HELM_CHART_PATH --namespace $KUBERNETES_NAMESPACE --create-namespace

    only:
    - main # Solo se desplegará en la rama main

Paso 3: Configurar los secretos de Kubernetes en GitLab

Para que GitLab pueda acceder a tu clúster de Kubernetes, debes configurar el acceso mediante un Kubeconfig codificado en base64.

  1. Obtener el archivo kubeconfig de Kubernetes: En tu entorno de Kubernetes, obtén el archivo kubeconfig usando:

    kubectl config view --raw > kubeconfig
  2. Codificar el archivo kubeconfig en base64: Codifica el archivo kubeconfig:

    cat kubeconfig | base64
  3. Agregar el secreto en GitLab:
    • Entra al proyecto de GitLab y ve a Settings > CI / CD.
    • En la sección "Variables", agrega una nueva variable:
      • Key: KUBE_CONFIG
      • Value: el valor codificado en base64 de tu archivo kubeconfig.

Paso 4: Instalar y configurar Helm

  1. Instalar Helm en tu máquina local: Si aún no tienes Helm instalado, puedes seguir las instrucciones aquí.
  2. Configurar el repositorio de Helm: Si usas charts desde un repositorio, añade el repositorio de Helm:

    helm repo add my-repo https://charts.example.com
    helm repo update

Paso 5: Desplegar usando GitLab CI/CD

  1. Haz un commit y push de tu archivo .gitlab-ci.yml: Asegúrate de que el archivo .gitlab-ci.yml esté en la rama correcta (por ejemplo, main) y haz commit:

    git add .gitlab-ci.yml
    git commit -m "Add GitLab CI/CD pipeline for Kubernetes deployment"
    git push origin main
  2. Verificar el pipeline: Después de hacer el push, GitLab comenzará a ejecutar el pipeline automáticamente. Ve a la página de CI/CD en GitLab y revisa el progreso del pipeline.
  3. Desplegar con Helm: Si todo está configurado correctamente, el pipeline ejecutará Helm en tu clúster de Kubernetes, desplegando tu aplicación automáticamente.

Paso 6: Monitoreo y mantenimiento

  • Verifica el estado del despliegue: Puedes usar kubectl para verificar que la aplicación está desplegada correctamente:

    kubectl get pods --namespace=default
  • Realiza cambios y actualiza: Cada vez que actualices tu código en GitLab y hagas push, el pipeline de CI/CD se ejecutará nuevamente, asegurando que siempre tengas la versión más reciente de la aplicación desplegada.

Conclusión

Este proceso configura una integración continua con GitLab y Helm para desplegar aplicaciones automáticamente en un clúster de Kubernetes. Puedes personalizar aún más el pipeline según las necesidades específicas de tu proyecto.