Tema:
Despliegue de aplicaciones utilizando helm
Desarrollo del tema.
Introducción a Helm
¿Qué es Helm?
Helm es un gestor de paquetes para Kubernetes, similar a apt o yum, pero orientado a aplicaciones en Kubernetes.
Permite empaquetar, versionar, instalar y actualizar aplicaciones de manera sencilla, evitando mantener múltiples manifiestos YAML repetidos.
En resumen: Helm simplifica el despliegue y la gestión de aplicaciones en Kubernetes.
Conceptos principales
Chart
- Es el paquete básico de Helm.
- Contiene todos los recursos para desplegar una aplicación (Deployments, Services, ConfigMaps, etc.).
- Estructura típica de un chart:
Release
- Una instancia de un chart ejecutándose en un cluster.
- Ejemplo: un chart de
mysqlpuede desplegar: mysql-deven el namespacedev.mysql-proden el namespaceprod.
Repository
- Lugar donde se almacenan y comparten charts.
- Existen repositorios públicos (ArtifactHub, Bitnami) o privados (por ejemplo Harbor
Ventajas frente a YAML tradicional
YAML tradicional (kubectl apply) |
Helm (helm install) |
|---|---|
| Archivos repetidos por entorno | Un chart parametrizable |
| Difícil de mantener/versionar | Versionamiento y releases |
| Sin rollback nativo | Rollback integrado |
| Cada equipo escribe sus manifiestos | Charts reutilizables y compartidos |
Laboratorio: Despliegue de manifiestos YAML
Descripción
La presente guía aborda la creacion de aplicaciones de kubernetes mediante plantillas de helm.
Objetivos
- Realizar la configuración de recursos de kubernetes por medio de una plantilla de helm
- Desplegar los recursos a través de comandos
Antes de comenzar
- Contar con el acceso al ambiente del laboratorio
Conexion a ambiente de kubernetes
-
Ingresar al servidor de laboratorio con la llave proporcionada.
export LAB=X ssh student@lab-${LAB}-aio -
Cambiar al usuario root
sudo -i -
Proporcione accesos administrativos al cluster de Kubernetes
export KUBECONFIG=/etc/rancher/rke2/rke2.yamlexport PATH=$PATH:/var/lib/rancher/rke2/bin
Inicio de laboratorio
-
Crear un nuevo namespace llamado myapp
kubectl create ns myapp -
Crear una nueva carpeta llamada helm y acceder a ella.
mkdir helm ; cd helm -
Dentro de esta carpeta vamos a crear una nueva plantilla de helm.
helm create myapp -
Se creara una carpeta nueva llamda myapp que contiene todo lo necesario para poder desplegar nuestro aplicativo usando helm.
-
Vamos a editar el archivo llamado values.yaml dentro de la carpeta de myapp, primeramente vamos a editar la parte de image de la siguiente manera.
Recordar cambiar la direccion de harbor por la que tiene en su ambiente.image: repository: harbor.34-83-59-151.nip.io/api-test/api-test # This sets the pull policy for images. pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. tag: "1.0" -
Luego vamos a agregar la parte de imagePullSecrets
imagePullSecrets: - name: regcred -
Luego la parte de Service.
service: type: ClusterIP port: 8080 -
Finalmente el Ingress
De igual manera recuerde cambiar el host por el wildcard de su ambiente.ingress: enabled: true className: "" annotations: {} # kubernetes.io/ingress.class: nginx # kubernetes.io/tls-acme: "true" hosts: - host: myapp.34-83-59-151.nip.io paths: - path: / pathType: ImplementationSpecific -
Vamos a validar como quedan los manifiestos de kubernetes.
helm template myapp ./myapp -
Finalmente instalamos nuestro aplicativo con el siguiente comando.
helm install myapp ./myapp -n myapp -
Verificamos
kubectl get pods -n myapp kubectl get svc -n myapp -
Finalmente vamos a actualizar la imagen de nuestro aplicativo con el siguiente comando.
helm upgrade myapp ./myapp --set image.tag=1.1 -n myapp