helmfile en producción: diff a tres bandas, 'already set in map', OCI 403, dependencias duplicadas y adoptar recursos que ya estaban desplegados

Tres variables (HELM_DIFF_THREE_WAY_MERGE, HELM_DIFF_NORMALIZE_MANIFESTS, HELMFILE_GOCCY_GOYAML), dos flags (–skip-diff-on-install, -l name=) y una regla: fija helm, helmfile y helm-diff en CI. Adoptar recursos existentes = etiqueta managed-by=Helm más anotaciones meta.helm.sh/release-name y release-namespace.

26 de septiembre de 2026 · 4 min

Quitar Rancher de un clúster: cattle-system en Terminating, clústeres que no se dejan borrar, el webhook que bloquea todo y recuperar el admin

Para borrar todo: job rancher-cleanup y su verify. Para cirugía: quitar finalizers de metadata (patch) y no forzar spec.finalizers del namespace sin mirar antes qué recursos quedan; patch de finalizers en clusters.provisioning y clusters.management; exportar y borrar los webhooks rancher.cattle.io hasta que el pod vuelva; reset-password dentro del pod de Rancher.

26 de septiembre de 2026 · 4 min

Vault Agent Injector en GKE privado: el sidecar no aparece y el pod tarda 30 s (el control plane no llega al webhook en el 8080)

gcloud compute firewall-rules create … –source-ranges= –target-tags= –rules=tcp:8080. Valida borrando un pod y buscando ‘handler: Request received: Method=POST URL=/mutate’ en el injector. Aplica a cualquier webhook que no escuche en 443 o 10250.

26 de septiembre de 2026 · 4 min

cert-manager: el reto HTTP-01 devuelve 308 (falta ingressClassName en el solver) y otros fallos del self-check

ingressClassName: nginx dentro de solvers.http01.ingress y borra el Challenge atascado. Si el self-check no llega a la IP pública desde dentro del clúster, es NAT reflection o split DNS, no cert-manager.

25 de septiembre de 2026 · 4 min

k3s: recuperar un clúster HA con etcd embebido que perdió el quórum (--cluster-reset)

En el servidor que sobrevive: systemctl stop k3s; k3s server –cluster-reset; systemctl start k3s. En los demás: stop, rm -rf /var/lib/rancher/k3s/server/db, start apuntando al reseteado. Nunca en dos nodos.

25 de septiembre de 2026 · 4 min

k3s: usar imágenes sin registry (docker save → k3s ctr images import) y limpiar las que sobran

docker save -o app.tar app:v1; k3s ctr images import app.tar en cada nodo; imagePullPolicy: Never. Para varios nodos, /var/lib/rancher/k3s/agent/images/ o –embedded-registry. Limpieza: k3s crictl rmi –prune.

25 de septiembre de 2026 · 3 min

Mover los datos de k3s a otro disco

El disco del sistema se llena. Paras k3s, mueves los directorios, dejas un symlink y vuelves a arrancar.

20 de agosto de 2026 · 2 min