Uso Conjunto de Kustomize y Helm en Kubernetes
En Kubernetes, tanto Helm como Kustomize son herramientas poderosas que facilitan la gestión de despliegues y configuraciones. Aunque ambas herramientas se suelen utilizar de forma independiente, también es posible aprovechar las capacidades de personalización de Kustomize junto con la funcionalidad de empaquetado y despliegue de Helm. En este artículo, vamos a explorar cómo utilizar estas dos herramientas juntas para gestionar configuraciones complejas de Kubernetes de manera efectiva.
¿Por qué usar Kustomize y Helm juntos?
Helm es excelente para la gestión de charts y el despliegue de aplicaciones empaquetadas. Sin embargo, cuando necesitamos personalizar estos charts para diferentes entornos o aplicar configuraciones específicas a nuestros manifiestos sin modificar los charts originales, Kustomize es la herramienta ideal. Kustomize nos permite superponer configuraciones adicionales o modificar los manifiestos generados por Helm, lo que proporciona un enfoque más declarativo para las personalizaciones.
En resumen, puedes usar Helm para instalar una aplicación y luego Kustomize para modificar los recursos generados, como personalizar configuraciones para distintos entornos (desarrollo, staging, producción) sin tocar el chart de Helm directamente.
Paso a paso: Uso conjunto de Kustomize y Helm
Vamos a seguir un ejemplo práctico en el que:
- Usaremos Helm para desplegar una aplicación básica (por ejemplo, NGINX).
- Luego, aplicaremos Kustomize para modificar la configuración de los recursos generados por Helm, como ajustar los recursos solicitados o personalizar las etiquetas.
Paso 1: Desplegar la aplicación con Helm
Primero, vamos a instalar una aplicación sencilla como NGINX utilizando Helm. Usaremos el chart de NGINX del repositorio de Helm.
Añadir el repositorio de Helm si no lo tienes ya añadido:
helm repo add bitnami https://charts.bitnami.com/bitnami helm repo update
Instalar el chart de NGINX:
helm install my-nginx bitnami/nginx
Esto creará varios recursos de Kubernetes, como un Deployment, un Service, y posiblemente ConfigMaps y Secrets, dependiendo del chart.
Paso 2: Exportar los manifiestos generados por Helm
Para usar Kustomize sobre los recursos generados por Helm, primero necesitamos exportar esos recursos como manifiestos YAML.
Guardar los manifiestos generados por Helm en un archivo YAML:
helm template my-nginx bitnami/nginx > base-nginx.yaml
Esto generará un archivo
base-nginx.yaml
con todos los recursos que se desplegarían mediante el chart de Helm. En este punto, tenemos los manifiestos básicos listos para usar con Kustomize.
Paso 3: Configurar Kustomize para personalizar los recursos
Ahora que tenemos los manifiestos exportados, podemos usar Kustomize para aplicar personalizaciones adicionales sin modificar el archivo base. Crearemos una estructura de Kustomize que nos permitirá superponer configuraciones específicas.
Crear la estructura de directorios para Kustomize:
mkdir -p kustomize/base mkdir -p kustomize/overlays/production
Mover el archivo generado por Helm al directorio
base
:mv base-nginx.yaml kustomize/base/deployment.yaml
Crear un archivo
kustomization.yaml
en el directoriobase
para que Kustomize reconozca los recursos base:# kustomize/base/kustomization.yaml resources: - deployment.yaml
Crear un
kustomization.yaml
para el entorno de producción en el directoriooverlays/production
:# kustomize/overlays/production/kustomization.yaml resources: - ../../base patchesStrategicMerge: - replica-patch.yaml - label-patch.yaml
Crear el parche
replica-patch.yaml
para escalar el número de réplicas en producción:# kustomize/overlays/production/replica-patch.yaml apiVersion: apps/v1 kind: Deployment metadata: name: my-nginx spec: replicas: 5 # Escalar a 5 réplicas en producción
Crear el parche
label-patch.yaml
para agregar etiquetas específicas del entorno:# kustomize/overlays/production/label-patch.yaml apiVersion: apps/v1 kind: Deployment metadata: name: my-nginx labels: environment: production
Paso 4: Aplicar las personalizaciones con Kustomize
Una vez configurados los parches, podemos usar Kustomize para aplicar las personalizaciones sobre los recursos generados por Helm.
Aplicar los manifiestos personalizados en el clúster:
kubectl apply -k kustomize/overlays/production
Este comando aplicará los recursos modificados en el entorno de producción, con el número de réplicas escalado y las etiquetas personalizadas agregadas.
Beneficios del uso combinado de Helm y Kustomize
- Separación de responsabilidades: Puedes usar Helm para gestionar la instalación y actualización de aplicaciones empaquetadas, mientras que Kustomize te permite personalizar fácilmente los manifiestos sin tocar los archivos originales generados por Helm.
- Facilidad para diferentes entornos: Con Kustomize, puedes gestionar personalizaciones específicas para diferentes entornos (desarrollo, staging, producción) utilizando las mismas bases generadas por Helm.
- Modificaciones sin modificar los charts: Puedes aplicar ajustes específicos sin la necesidad de modificar los charts de Helm, lo que facilita las actualizaciones futuras.
Comentarios
Publicar un comentario