Desplegar con Helmfile
Objetivos
El objetivo principal de este tutorial es mostrar cómo desplegar aplicaciones en nuestro PaaS OpenShift utilizando Helmfile para orquestar múltiples charts de Helm juntos.
Exponer el servicio de front-end a través de HTTP/HTTPS.
Limitaciones conocidas
El contexto de esta demostración es el siguiente:
- Respeta las restricciones de OpenShift (SCC restricted-V2).
- Despliegue únicamente de contenedores sin privilegios (UID > 30000).
- Ningún uso de CRD personalizados.
- Sin acceso al rol de plataforma como cluster-admin.
- Ningún despliegue a nivel de clúster (instalación cluster-wide).
- Ninguna creación de namespaces mediante Helmfile (para evitar conflictos de permisos).
Puntos fuertes
- Demostración del despliegue de un front-end (Nginx) y un back-end (PostgreSQL) utilizando Helmfile.
Versiones de software
- OpenShift CLI: 4.17.6
- Helm: v3.16.3
- Helmfile: v0.169.2
- OpenShift: v4.15
- PostgreSQL: v17.2.0-debian-12-r5
- Nginx: v1.27.3
Prerrequisitos
Antes de comenzar esta demostración, asegúrate de tener las siguientes herramientas y recursos:
-
Herramientas CLI
- OpenShift CLI (
oc): Documentación - Helm: Documentación
- Helmfile: Documentación
- OpenShift CLI (
-
Entorno OpenShift
- Un clúster funcional de OpenShift gestionado por Cloud Temple.
-
Accesos y permisos
- Rol de cliente admin para crear proyectos y desplegar recursos.
Plan de demostración
Resumen de pasos
- Preparar el entorno y las herramientas.
- Desplegar aplicaciones utilizando Helmfile:
- nginx: Un servidor web simple.
- PostgreSQL: Un servidor de bases de datos.
- Verificar el despliegue:
- Confirmar que las configuraciones rootless se han aplicado.
- Probar la funcionalidad de las aplicaciones.
- Explorar casos de uso avanzados y extensiones.
Archivos necesarios
Para empezar, necesitarás nuestro Repositorio de demostración
- Descárgalo aquí en el directorio
/examples/deploy-through-helmfile/.
Encontrarás tres archivos:
Helmfile.yaml: Manifiesto de despliegue que permite a Helmfile definir y orquestar el despliegue de charts de Helm.nginx-values.yaml: Especifica la configuración y el comportamiento de Nginx.postgres-values.yaml: Especifica la configuración y el comportamiento de PostgreSQL.
Helmfile.yaml
El archivo principal de configuración de Helmfile.
Define los repositorios, los charts de Helm y los valores personalizados para cada aplicación.
Análisis línea por línea
helmDefaults
helmDefaults:
createNamespace: false
- Descripción: Define el comportamiento por defecto de los comandos de Helm ejecutados a través de Helmfile.
- Detalle:
createNamespace: false: Evita que Helm intente crear namespaces durante el despliegue.
- Impacto:
- Asegura que el namespace debe existir antes de lanzar el despliegue de los charts.
- Reduce los errores en entornos con permisos limitados.
repositories
repositories:
- name: bitnami
url: https://charts.bitnami.com/bitnami
- Descripción: Define los repositorios de Helm que contienen los charts necesarios.
- Detalle:
name: Alias del repositorio de Helm.url: URL del repositorio Bitnami, que contiene charts comúnmente usados, compatibles con OpenShift.
releases
- name: nginx
namespace: poc-helmfile
chart: bitnami/nginx
values:
- nginx-values.yaml
- Descripción: Define una aplicación de Helm llamada nginx.
- Detalle:
name: Nombre del release de Helm.namespace: Namespace de Kubernetes en el que se desplegará esta aplicación.chart: Chart de Helm utilizado, aquíbitnami/nginx, recuperado desde el repositorio de Bitnami.values: Archivo YAML que contiene configuraciones específicas para el despliegue, aquínginx-values.yaml.
nginx-values.yaml
Archivo de configuración para el despliegue de Nginx.
postgres-values.yaml
Proporciona la configuración para el despliegue de PostgreSQL.
Proceso de despliegue
1. Instalar los prerrequisitos
Asegúrate de que todas las herramientas mencionadas en la sección sobre versiones de software están instaladas.
Sigue las siguientes guías si es necesario:
2. Conexión al clúster de OpenShift
Autentícate con tu clúster de OpenShift con el siguiente comando:
oc login --server=https://api.openshift.example.com:6443 --web
Atención:
Modifica--server=urlcon la URL de tu instancia de PaaS de Cloud Temple.
3. Crear un namespace dedicado
Este namespace aislará los recursos de demostración:
oc new-project poc-helmfile
4. Desplegar las aplicaciones con Helmfile
Utiliza el siguiente comando:
helmfile sync
5. Verificación del despliegue
- Verifica los pods:
oc get pods -n poc-helmfile
6. Probar los servicios
Expón los servicios desplegados para probar su accesibilidad y correcto funcionamiento.
1. Creación de rutas
Expón el servicio Nginx configurando rutas HTTP o HTTPS:
- Para HTTPS:
oc create route edge nginx-tls --service=nginx -n poc-helmfile --port=8080
- Para HTTP:
oc create route edge nginx --service=nginx -n poc-helmfile --port=8080
2. Añadir una etiqueta para exposición pública
Añade una etiqueta específica al enrutador para que tu servicio sea accesible públicamente:
- Para la ruta HTTPS:
oc label route nginx-tls ct-router-type=public -n poc-helmfile
- Para la ruta HTTP:
oc label route nginx ct-router-type=public -n poc-helmfile
Estos pasos garantizan que tus rutas sean expuestas correctamente.
7. Verificar las rutas y acceder a las aplicaciones
1. Lista de rutas disponibles
Verifica que las rutas han sido creadas correctamente:
oc get routes -n poc-helmfile
Ejemplo de salida:
| Nombre | Host/Port | Servicio | Puerto | Resolución TLS | Etiqueta |
|---|---|---|---|---|---|
| nginx | nginx-poc-helmfile.apps-ocpnumber-cluster.paas.cloud-temple.com | nginx | 8080 | Ninguno | ct-router-type=public |
| nginx-tls | nginx-tls-poc-helmfile.apps-ocpnumber-cluster.paas.cloud-temple.com | nginx | 8080 | Edge (TLS) | ct-router-type=public |
2. Acceder a las aplicaciones
Utiliza las URLs listadas en la columna "Host/Port" para acceder a las aplicaciones. Aquí hay un ejemplo:
- Para HTTP:
http://nginx-poc-helmfile.apps-ocp{number}-{cluster}.paas.cloud-temple.com - Para HTTPS:
https://nginx-tls-poc-helmfile.apps-ocp{number}-{cluster}.paas.cloud-temple.com
Deberías ver una respuesta del servidor web desde el front-end Nginx desplegado.
Criterios de validación
Para garantizar el éxito de esta demostración, verifica los siguientes elementos:
- Ambas aplicaciones se están ejecutando sin errores.
- Los pods usan UID > 30000, conforme a las restricciones de contenedores rootless.
- Ningún CRD personalizado ha sido desplegado.
- Los servicios desplegados son accesibles a través de sus rutas definidas (verifica Nginx en HTTP y HTTPS).
Conclusión
Ahora tienes un ejemplo completo de cómo desplegar aplicaciones de front-end y back-end en OpenShift utilizando Helmfile. Este método ofrece una gestión modular y robusta de entornos complejos.
Ahora dominas el despliegue a través de Helmfile en OpenShift en un entorno gestionado por Cloud Temple. 🚀