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.
- Instala y configura
kubectl
: Si no lo tienes instalado, sigue la guía oficial de Kubernetes para instalarkubectl
. - 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
- Verifica la conexión:
kubectl get nodes
Deberías ver una lista de nodos de tu clúster.
Paso 2: Configurar GitLab CI/CD
- 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.
- 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.
- Obtener el archivo
kubeconfig
de Kubernetes: En tu entorno de Kubernetes, obtén el archivokubeconfig
usando:kubectl config view --raw > kubeconfig
- Codificar el archivo
kubeconfig
en base64: Codifica el archivokubeconfig
:cat kubeconfig | base64
- 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
.
- Key:
- Entra al proyecto de GitLab y ve a
Paso 4: Instalar y configurar Helm
- Instalar Helm en tu máquina local: Si aún no tienes Helm instalado, puedes seguir las instrucciones aquí.
- 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
- 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
- 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.
- 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.