Despliega charts de Helm con HelmRelease
Instala y actualiza charts de Helm desde repositorios de Helm y registros OCI, con rollback automático.
Flux despliega charts de Helm a través de su propio helm-controller. Declaras un source que contiene el chart y un HelmRelease que dice qué chart, qué versión y qué valores. El controlador entonces ejecuta por ti la instalación y la actualización de Helm, según un calendario, con todo el ciclo de vida del release gestionado de forma declarativa. Esta guía usa el chart público podinfo como ejemplo.
Declara el source del chart
Un HelmRepository le dice a source-controller dónde viven los charts. apps/podinfo/helmrepository.yaml:
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: podinfo
namespace: podinfo
spec:
interval: 1h
url: https://stefanprodan.github.io/podinfo
Por sí solo esto solo lista qué charts están disponibles. Todavía no se instala nada. El source puede vivir en el namespace de la aplicación o en flux-system, y cualquiera de los dos está bien.
Declara el release
apps/podinfo/helmrelease.yaml:
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: podinfo
namespace: podinfo
spec:
interval: 10m
chart:
spec:
chart: podinfo
version: "6.x"
sourceRef:
kind: HelmRepository
name: podinfo
interval: 1h
install:
remediation:
retries: 3
upgrade:
remediation:
retries: 3
values:
replicaCount: 2
ui:
color: "#34577c"
Las partes importantes:
chart.specnombra el chart, una versión o rango semver (6.xsigue las nuevas versiones menores y de parche) y el source del que viene.intervales con qué frecuencia Flux comprueba el release en busca de cambios y desviaciones.valueses el equivalente a unvalues.yaml, escrito en línea. Para configuraciones más grandes, carga valores desde ConfigMaps o Secrets convaluesFrom.remediationcontrola qué ocurre cuando una instalación o actualización falla. Tras los reintentos permitidos, un fallo de actualización desencadena por defecto un rollback al último release bueno.
Añade un namespace.yaml normal para podinfo en la misma carpeta y luego registra la carpeta con una Kustomization de Flux exactamente como en la guía de la primera aplicación:
flux create kustomization podinfo \
--source=GitRepository/flux-system \
--path=./apps/podinfo --prune=true --interval=10m \
--export > clusters/dev/podinfo.yaml
Haz commit y push. Una vez que la Kustomization podinfo se reconcilie, comprueba el release:
flux get helmreleases -A
kubectl get all -n podinfo
Verás el release, la versión del chart que se instaló y los Pods que creó Helm. El release de Helm también sigue siendo visible para la CLI normal de Helm (helm list -n podinfo), pero trata a Git como el lugar donde lo cambias.
Valores por entorno
Superpón configuración específica de cada entorno sobre los valores compartidos manteniendo un release base y parcheándolo por entorno con Kustomize, o usando valuesFrom:
spec:
valuesFrom:
- kind: ConfigMap
name: podinfo-values
valuesKey: values.yaml
Los valores de valuesFrom se fusionan primero, y los values en línea los sobrescriben. Cuando cambia un ConfigMap o Secret referenciado, el helm-controller recoge el cambio y actualiza el release, lo que es distinto de un ConfigMap normal que lee un Deployment. Para la configuración incrustada en el propio ConfigMap del chart, añade una anotación de checksum a la plantilla del Pod del chart para que los Pods se reinicien cuando cambie la configuración:
template:
metadata:
annotations:
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
Charts desde un registro OCI
Los charts de Helm viven cada vez más en registros OCI. Usa un HelmRepository de tipo oci:
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: podinfo-oci
namespace: podinfo
spec:
type: oci
interval: 1h
url: oci://ghcr.io/stefanprodan/charts
El HelmRelease sigue igual excepto por su sourceRef, que apunta a podinfo-oci. Para registros privados, añade secretRef con las credenciales del registro. También puedes hacer referencia a un chart a través de un source OCIRepository, lo que permite que varios releases compartan una versión de chart y se reconcilien ante cambios en el digest del artefacto.
Detección de desviaciones y actualizaciones
De fábrica, el helm-controller vuelve a aplicar un release cuando cambian su especificación o su chart. Para detectar y corregir también las ediciones manuales de los recursos que creó un release, activa la detección de desviaciones:
spec:
driftDetection:
mode: enabled
Sin ella, un kubectl edit manual de un Deployment gestionado por un chart puede persistir hasta la siguiente actualización. Combínalo con interval para que Flux compare regularmente la realidad con el release.
Revierte y soluciona problemas
flux get helmreleases -A
kubectl describe helmrelease podinfo -n podinfo
flux reconcile helmrelease podinfo -n podinfo
describe muestra la acción de Helm que falló y su error. Si una actualización falla, el controlador revierte automáticamente según tus ajustes de remediation, y el HelmRelease informa del fallo para que puedas arreglar Git. La solución duradera es siempre un commit, por ejemplo revertir una subida de versión del chart, seguido de una reconciliación.
Guías populares
-
Push vs Pull: cómo entrega Flux en Kubernetes Por qué la entrega basada en pull y dirigida por Git cambia cómo despliegas, proteges y recuperas clústeres. -
Despliega tu primera aplicación con un GitRepository y una Kustomization Apunta Flux a manifiestos en Git usando un recurso Kustomization y observa cómo se sincroniza. -
Controla el comportamiento de sincronización: intervalos, prune, corrección de desviaciones y rollback Decide cuándo Flux aplica los cambios, qué elimina, cómo pausarlo y cómo deshacer un mal despliegue. -
Automatiza las actualizaciones de imágenes con Flux Image Automation Deja que Flux detecte nuevas etiquetas de imágenes de contenedor y las confirme en Git. -
Configura multiclúster con Flux Gestiona varios clústeres desde un solo repositorio, con infraestructura compartida y diferencias por clúster. -
Flux CD vs Argo CD: cómo elegir una herramienta GitOps Compara arquitectura, interfaz, Helm, secretos, multi-tenancy y automatización de imágenes para elegir la herramienta adecuada.