Middle
¿Cómo almacenar correctamente las plantillas de Helm en GitLab?
sobes.tech AI
Respuesta de la IA
Se recomienda almacenar las plantillas de Helm en un repositorio Git separado en GitLab. Esto permite versionarlas, aplicar pipelines de CI/CD para linting y empaquetado, así como gestionar el acceso.
La estructura del repositorio puede ser así:
my-helm-charts/
├── Chart.yaml // Información meta del chart
├── values.yaml // Valores por defecto
├── templates/ // Plantillas de manifiestos de Kubernetes
│ ├── deployment.yaml
│ ├── ingress.yaml
│ └── service.yaml
└── charts/ // Charts dependientes (opcional)
└── redis/
└── ...
Para automatizar, se puede usar GitLab CI/CD. Ejemplo de .gitlab-ci.yml:
stages:
- lint
- package
- deploy # Opcional
variables:
HELM_VERSION: "3.x.x" # Indica la versión actual de Helm
HELM_REGISTRY: "my-gitlab-registry" # Nombre de tu registro en GitLab
before_script:
- curl https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz | tar xz
- mv linux-amd64/helm /usr/local/bin/helm
- helm version
lint_chart:
stage: lint
image: docker.io/alpine/helm:latest # Usa una imagen con Helm
script:
- helm lint ./my-chart-directory # Ruta al directorio de tu chart
package_chart:
stage: package
image: docker.io/alpine/helm:latest
script:
- helm package ./my-chart-directory # Crear archivo .tgz
artifacts:
paths:
- ./*.tgz # Guardar el chart empaquetado como artefacto
publish_chart:
stage: package
image: docker.io/alpine/helm:latest
script:
# Configurar el registro Helm en GitLab
- HE=helm-registry.$CI_SERVER_HOST helm registry login $CI_REGISTRY -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD
- helm push my-chart-*.tgz oci://$CI_REGISTRY/$CI_PROJECT_NAMESPACE/$HELM_REGISTRY # Push al registro OCI
variables:
# Asegúrate de que las variables CI_REGISTRY_USER y CI_REGISTRY_PASSWORD estén configuradas en GitLab CI/CD
GIT_STRATEGY: none # No clonar el repositorio de nuevo
# Ejemplo de etapa de despliegue (opcional)
# deploy_chart:
# stage: deploy
# image: alpine/helm:latest
# script:
# # Configurar dependencias (por ejemplo, kubectl, proveedores cloud)
# # helm upgrade --install my-release oci://$CI_REGISTRY/$CI_PROJECT_NAMESPACE/$HELM_REGISTRY/my-chart --version latest -n my-namespace -f values.yaml
# environment: production # O otro entorno
# when: manual # O en_branch, etc.
Para almacenar charts empaquetados (.tgz), se puede usar:
- Registro de paquetes de GitLab (charts Helm OCI): Método recomendado. Permite almacenar charts en formato OCI directamente en GitLab.
- Paquetes genéricos: Si Helm OCI no es soportado o por otras razones.
- Almacenamiento privado de archivos estáticos: Por ejemplo, almacenamiento compatible con S3 o GitLab Pages.
Al usar el Registro de paquetes de GitLab (charts Helm OCI), para agregarlo como repositorio Helm:
helm registry login registry.gitlab.com
helm repo add my-gitlab-charts oci://registry.gitlab.com/<tu-namespace>/<tu-proyecto-de-helm-charts>
Reemplaza <tu-namespace> y <tu-proyecto-de-helm-charts> por los valores correspondientes.