Sobes.tech
Middle

¿Cómo desplegar automáticamente un Helm Chart?

sobes.tech AI

Respuesta de la IA

Utilizar una canalización CI/CD.

Etapas típicas:

  1. Construcción (Build): Creación de la imagen de la aplicación (Docker).
  2. Pruebas (Test): Verificación de la funcionalidad y calidad del código/imagen.
  3. Empaquetado (Package): Creación o actualización del chart de Helm y su empaquetado (helm package).
  4. Publicación (Publish): Guardar el chart empaquetado en un repositorio (por ejemplo, ChartMuseum, Artifact Registry).
  5. Despliegue (Deploy): Actualización o instalación de la versión del chart de Helm en el clúster de Kubernetes (helm upgrade --install).

Herramientas:

  • Plataformas CI/CD: GitLab CI, GitHub Actions, Jenkins, CircleCI.
  • Helm: Herramienta de gestión de paquetes para Kubernetes.
  • Repositorios de charts: ChartMuseum, Nexus, Artifactory.
  • CLI de Kubernetes: kubectl.

Ejemplo de fragmento de pipeline (GitHub Actions):

name: Deploy Helm Chart

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Install Helm
        uses: azure/setup-helm@v3
        with:
          version: '3.x'

      - name: Package Helm chart
        run: helm package ./charts/my-app # Empaquetar chart

      - name: Configure Kubernetes credentials
        # Paso para configurar acceso al clúster (por ejemplo, mediante cuenta de servicio)
        run: |
          echo "${{ secrets.KUBECONFIG }}" | base64 -d > ~/.kube/config

      - name: Deploy Helm chart
        # Despliegue/actualización del release
        run: |
          helm upgrade --install \
            my-release \
            ./my-app-*.tgz \
            --namespace my-namespace \
            --values ./charts/my-app/values.yaml \
            --wait # Esperar a que el release esté listo

La automatización permite reducir operaciones manuales, aumentar la frecuencia de despliegues y garantizar la reproducibilidad del proceso. El aspecto clave es la integración con el sistema de control de versiones y la infraestructura (Kubernetes).