Instalar Helm en Kali Linux
Instalar Helm en Kali Linux
Instalar Helm en Kali Linux es un proceso bastante directo, ya que Kali está basada en Debian. Helm es esencial para gestionar aplicaciones en Kubernetes mediante "Charts" (paquetes preconfigurados).
Aquí tienes los pasos para dejarlo funcionando en un abrir y cerrar de ojos:
1. Instalación mediante Script Oficial (Recomendado)
Es la forma más rápida y segura de obtener la última versión estable.
Abre tu terminal y descarga el script:
Bashcurl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3Dale permisos de ejecución:
Bashchmod 700 get_helm.shEjecuta el script:
Bash./get_helm.sh
2. Instalación vía Repositorio APT
Si prefieres gestionar Helm como cualquier otro paquete de tu sistema para recibir actualizaciones con apt upgrade, sigue estos pasos:
Añade la llave GPG:
Bashcurl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/nullInstala el soporte para HTTPS (si no lo tienes):
Bashsudo apt-get install apt-transport-https --yesAñade el repositorio:
Bashecho "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.listActualiza e instala:
Bashsudo apt-get update sudo apt-get install helm
3. Verificación
Para confirmar que todo está en orden, simplemente ejecuta:
helm version
Conceptos clave de la arquitectura de Helm:
Para entender cómo interactúa Helm con tu cluster de Kubernetes, es útil visualizar su funcionamiento:
Helm Client: Vive en tu Kali Linux y envía las instrucciones.
Charts: Son los paquetes (archivos YAML) que definen tus recursos de Kubernetes.
Releases: Es la instancia específica de un Chart ejecutándose en tu cluster.
Primeros pasos (Configuración)
Una vez instalado, lo primero que querrás hacer es añadir un repositorio de confianza (como el de Bitnami) para empezar a desplegar apps:
# Añadir repositorio
helm repo add bitnami https://charts.bitnami.com/bitnami
# Actualizar repositorios
helm repo update
# Buscar un paquete (ejemplo: nginx)
helm search repo nginx
Nota: Recuerda que para que Helm funcione, ya debes tener configurado el acceso a un cluster (un archivo
~/.kube/configválido), ya sea un cluster remoto o uno local como Minikube o Kind.
Vamos a desplegar un servidor web Nginx utilizando Helm. Es la "prueba de fuego" perfecta para verificar que tu configuración de Kali y el acceso a tu cluster de Kubernetes son correctos.
Asumiré que ya tienes un cluster funcionando (como Minikube, Kind o un cluster remoto) y que tu contexto de kubectl está activo.
Paso 1: Añadir el repositorio de Bitnami
Bitnami mantiene los Charts más estables y fáciles de usar. Si no lo hiciste antes, añádelo ahora:
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
Paso 2: Desplegar Nginx
Vamos a crear un "Release" (una instancia de la aplicación) llamado mi-servidor:
helm install mi-servidor bitnami/nginx
¿Qué acaba de pasar?
Helm ha tomado el Chart de Nginx, ha generado todos los archivos YAML necesarios (Deployment, Service, etc.) y los ha enviado a Kubernetes por ti.
Paso 3: Verificar el despliegue
Puedes ver el estado de tu aplicación con estos comandos:
Desde Helm:
helm list(verás el nombremi-servidor).Desde Kubernetes:
kubectl get pods(verás un pod de Nginx arrancando).
Paso 4: Acceder a la aplicación
Por defecto, Nginx se despliega como un servicio tipo LoadBalancer. Si estás en un entorno local (como Minikube), necesitarás crear un túnel o usar un Port-Forward para verlo en tu navegador de Kali:
Ejecuta el reenvío de puertos:
Bashkubectl port-forward svc/mi-servidor-nginx 8080:80Abre tu navegador y visita:
http://localhost:8080. ¡Deberías ver la página de bienvenida de Nginx!
Comandos Útiles de Gestión
Si quieres modificar o borrar tu aplicación más adelante, guarda estos comandos en tu "navaja suiza":
| Acción | Comando |
| Ver valores configurables | helm show values bitnami/nginx |
| Actualizar la app | helm upgrade mi-servidor bitnami/nginx |
| Desinstalar todo | helm uninstall mi-servidor |
Un pequeño "Tip" de Kali
Como estás en Kali, es muy probable que quieras auditar la seguridad de lo que despliegas. Una herramienta genial para usar junto a Helm es Kube-hunter o Kube-bench.
Personalizar un Chart de Helm es donde realmente empieza el control total. En Kubernetes, no solemos editar los YAML a mano uno por uno; en su lugar, le decimos a Helm qué valores queremos cambiar.
Hay dos formas principales de hacerlo en Kali Linux: mediante la línea de comandos (para cambios rápidos) o mediante un archivo de configuración (para despliegues serios).
1. El método rápido: Usando --set
Ideal si solo quieres cambiar una o dos cosas sobre la marcha. Por ejemplo, vamos a desplegar Nginx con 3 réplicas (copias del servidor) en lugar de una:
helm install mi-web bitnami/nginx --set replicaCount=3
Si luego quieres verificar que se crearon las 3, ejecuta:
kubectl get pods
2. El método profesional: Archivo values.yaml
Este es el estándar en entornos reales. Primero, extraemos la configuración por defecto del Chart para ver qué podemos tocar:
Exporta los valores a un archivo:
Bashhelm show values bitnami/nginx > mis-valores.yamlEdita el archivo con
nanoomousepad(el editor de Kali):Bashnano mis-valores.yamlBusca secciones como
replicaCount,service.type(puedes cambiarlo deLoadBalanceraNodePort) oresources.Aplica el despliegue usando tu archivo:
Bashhelm install mi-web-pro bitnami/nginx -f mis-valores.yaml
3. Ejemplo práctico: Cambiar el puerto y las réplicas
Imagina que quieres que tu Nginx use el puerto 8080 internamente y tenga 2 réplicas. Crea un archivo pequeño llamado custom.yaml:
replicaCount: 2
service:
ports:
http: 8080
Y luego instálalo así:
helm install nginx-personalizado bitnami/nginx -f custom.yaml
¿Por qué esto es importante en Kali?
Como usuario de Kali, esto te permite inyectar configuraciones de seguridad específicas. Por ejemplo, podrías usar un archivo values.yaml para:
Desactivar el acceso
rooten los contenedores.Limitar los recursos (CPU/RAM) para evitar ataques de denegación de servicio local.
Añadir anotaciones para herramientas de monitoreo de red.
Pro-Tip: El comando "Simulacro"
Antes de romper nada, usa --dry-run --debug. Esto te muestra cómo quedarían los archivos YAML finales sin instalarlos realmente:
helm install prueba bitnami/nginx --set replicaCount=5 --dry-run --debug Actualizar una aplicación con Helm es una de sus funciones más potentes, ya que te permite aplicar cambios (como subir de versión una imagen o cambiar la configuración) sin interrumpir el servicio por completo. Kubernetes se encarga de hacer un "Rolling Update" (actualización progresiva).
Aquí tienes cómo hacerlo paso a paso en tu terminal de Kali:
1. El comando helm upgrade
Imagina que ya tienes instalado mi-web con 1 réplica y ahora decides que necesitas 3. No necesitas borrar nada, solo ejecuta:
helm upgrade mi-web bitnami/nginx --set replicaCount=3
Helm comparará la configuración actual con la nueva y solo aplicará los cambios necesarios.
2. Actualizar usando un archivo de valores
Si prefieres mantener orden, lo ideal es modificar tu archivo values.yaml (por ejemplo, cambiando la versión de la imagen o los límites de memoria) y luego lanzar:
helm upgrade mi-web bitnami/nginx -f mis-valores.yaml
3. El "Salvavidas": helm rollback
¿Qué pasa si la actualización sale mal? ¿Si la nueva configuración hace que la app falle? Kali es para experimentar, pero en Kubernetes queremos estabilidad.
Helm guarda un historial de cada cambio que haces.
Ver el historial de cambios:
Bashhelm history mi-webVerás una lista con números de revisión (1, 2, 3...).
Volver a una versión anterior:
Si la revisión 2 falló y quieres volver a la 1:
Bashhelm rollback mi-web 1¡Listo! Kubernetes revertirá los cambios automáticamente al estado anterior.
4. Diferencias antes de aplicar (Helm Diff)
Como usuario de Kali, probablemente te guste saber exactamente qué está cambiando en el sistema. Hay un plugin muy popular llamado helm-diff que te muestra las diferencias antes de aplicar el upgrade.
Instalar el plugin:
helm plugin install https://github.com/databus23/helm-diff
Ver qué va a cambiar:
helm diff upgrade mi-web bitnami/nginx --set replicaCount=5
Te mostrará en color rojo lo que se borra y en verde lo que se añade, igual que un git diff.
Resumen de comandos de mantenimiento
| Comando | Función |
helm list | Ver qué aplicaciones tienes instaladas. |
helm status mi-web | Ver notas y estado actual de una app. |
helm get values mi-web | Ver qué configuraciones personalizadas tiene la app ahora mismo. |
helm uninstall mi-web | Borrar la aplicación y todos sus recursos de K8s. |
Como estás utilizando Kali Linux, la seguridad no es un extra, es la prioridad. Los Charts de Helm pueden ser vectores de ataque si contienen imágenes vulnerables, configuraciones con privilegios excesivos o dependencias maliciosas.
Aquí tienes cómo auditar y asegurar tus despliegues como un profesional del Pentesting en Kubernetes.
1. Escaneo de Vulnerabilidades con Trivy
Trivy es la herramienta estándar de oro para escanear archivos de configuración e imágenes. En Kali, puedes usarla para auditar un Chart antes de instalarlo.
Instala Trivy:
Bashsudo apt install trivyEscanea un Chart local o remoto:
Bashtrivy config bitnami/nginxTrivy buscará configuraciones inseguras (como contenedores corriendo como
rooto falta de límites de CPU).
2. Auditoría de Manifiestos con Kube-linter
Antes de que Helm envíe el YAML al cluster, puedes pasarlo por un "linter" que verifique las mejores prácticas de seguridad.
Genera el YAML final (sin instalarlo):
Bashhelm template mi-seguridad bitnami/nginx > test.yamlAnaliza el archivo:
Existen herramientas como
checkovokube-linterque analizan este archivo en busca de fallos (ej. montar el sistema de archivos como lectura/escritura en lugar de solo lectura).
3. Seguridad en el values.yaml: El "Security Context"
Cuando personalices un Chart, siempre busca la sección de securityContext. Un Chart seguro debería verse así en tu archivo de valores:
containerSecurityContext:
runAsUser: 1001 # No correr como root (UID 0)
runAsNonRoot: true # Forzar usuario no-root
readOnlyRootFilesystem: true # Evita que un atacante descargue scripts en el contenedor
allowPrivilegeEscalation: false # Evita ataques de elevación de privilegios
4. Firmas Digitales (Helm Provenance)
¿Cómo sabes que el Chart que descargaste de internet no fue modificado por un tercero? Helm utiliza archivos .prov (provenance) y llaves GPG para verificar la integridad.
Verificar un Chart al descargar:
Bashhelm install mi-app bitnami/nginx --verify --keyring ~/.gnupg/pubring.gpgSi el Chart ha sido alterado, Helm se negará a instalarlo.
5. Control de RBAC (Role-Based Access Control)
Muchos Charts intentan crear sus propios Roles y ServiceAccounts. En Kali, debes ser escéptico:
Revisa los permisos: Usa
helm templatey busca tipos de recursoClusterRole.Principio de menor privilegio: Si un Chart pide permisos de
cluster-admin(el Dios de Kubernetes) y solo es para un servidor web, algo anda mal.
Herramienta recomendada: Kube-score
Es excelente para darte una puntuación de seguridad.
helm template mi-app bitnami/nginx | kube-score score -
Te dará consejos críticos como: "El contenedor no tiene límites de memoria configurados (riesgo de DoS)".