Desplegar con Helmfile
Objetivos
El objetivo principal de este tutorial es mostrar cómo desplegar aplicaciones en nuestra PaaS OpenShift utilizando Helmfile al orquestar varios Helm charts en conjunto.
Exponga el servicio 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).
- Sin uso de CRD personalizados.
- Sin acceso al rol de la plataforma como cluster-admin.
- Sin despliegue a nivel de clúster (installation cluster-wide).
- Sin creación de namespaces vía Helmfile (pour éviter des conflits de permissions).
Puntos fuertes
- Demostración del despliegue de un front-end (Nginx) y un back-end (PostgreSQL) mediante Helmfile.
Versiones del 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úrese de tener las siguientes herramientas y recursos :
-
Herramientas CLI
- OpenShift CLI (
oc) : Documentation - Helm : Documentation
- Helmfile : Documentation
- OpenShift CLI (
-
Entorno OpenShift
- Un clúster OpenShift funcional gestionado por Cloud Temple.
-
Acceso y permisos
- Rol de cliente administrador para crear proyectos y desplegar recursos.
Plan de demostración
Resumen de los pasos
- Preparar el entorno y las herramientas.
- Desplegar aplicaciones con Helmfile:
- nginx: Un servidor web simple.
- PostgreSQL: Un servidor de base de datos.
- Verificar el despliegue:
- Confirmar que las configuraciones rootless están aplicadas.
- Probar la funcionalidad de las aplicaciones.
- Explorar casos de uso avanzados y extensiones.
Archivos necesarios
Para comenzar, necesitará nuestro Repositorio de demostración
- Descárguelo aquí en el directorio
/examples/deploy-through-helmfile/.
Allí encontrará tres archivos:
Helmfile.yaml: Manifiesto de despliegue que permite a Helmfile definir y orquestar el despliegue de los 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
- Description : Define el comportamiento predeterminado de los comandos 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 iniciar el despliegue de los charts.
- Reduce los errores en los entornos con permisos limitados.
repositories
repositories:
- name: bitnami
url: https://charts.bitnami.com/bitnami
- Description : Define los repositorios Helm que contienen los charts necesarios.
- Detalle :
name: Alias del repositorio Helm.url: URL del repositorio Bitnami, que contiene charts de uso común, compatibles con OpenShift.
releases
- name: nginx
namespace: poc-helmfile
chart: bitnami/nginx
values:
- nginx-values.yaml
- Descripción : Define una aplicación Helm llamada nginx.
- Detalle :
name: Nombre de la release de Helm.namespace: Namespace de Kubernetes en el que se desplegará esta aplicación.chart: Chart de Helm utilizado, en este casobitnami/nginx, obtenido desde el repositorio Bitnami.values: Archivo YAML que contiene configuraciones específicas para el despliegue, en este casonginx-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úrese de que todas las herramientas mencionadas en la sección de software estén instaladas.
Siga las siguientes guías si es necesario:
2. Conexión al clúster de OpenShift
Autentíquese en su clúster de OpenShift con el siguiente comando:
oc login --server=https://api.openshift.example.com:6443 --web
Atención :
Modifique--server=urlcon la URL de su instancia de Cloud Temple PaaS.
3. Crear un namespace dedicado
Este namespace aislará los recursos de demostración:
oc new-project poc-helmfile
4. Desplegar las aplicaciones con Helmfile
Utilice el siguiente comando:
helmfile sync
5. Verificación del despliegue
- Verifique los pods :
oc get pods -n poc-helmfile
6. Probar los servicios
Exponer los servicios desplegados para probar su accesibilidad y correcto funcionamiento.
1. Creación de rutas
Exponga 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. Agregar una etiqueta para una exposición pública
Agregue una etiqueta específica al enrutador para que su 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 sus rutas se expongan correctamente.
7. Verificar las rutas y acceder a las aplicaciones
1. Lista de rutas disponibles
Verifique que las rutas se hayan creado 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. Acceda a las aplicaciones
Utilice las URL listadas en la columna « Host/Port » para acceder a las aplicaciones. A continuación se muestra 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ía ver una respuesta de tipo servidor web desde el front-end Nginx desplegado.
Criterios de validación
Para garantizar el éxito de esta demostración, verifique los siguientes elementos:
- Las dos aplicaciones se ejecutan sin errores.
- Los pods utilizan UID > 30000, de acuerdo con las restricciones de los contenedores rootless.
- No se ha desplegado ningún CRD personalizado.
- Los servicios desplegados son accesibles a través de sus rutas definidas (verifique Nginx en HTTP y HTTPS).
Conclusión
Ahora tiene un ejemplo completo de despliegue de aplicaciones front-end y back-end en OpenShift con Helmfile. Este método ofrece una gestión modular y robusta de entornos complejos.
Ahora domina el despliegue mediante Helmfile en OpenShift en un entorno gestionado por Cloud Temple. 🚀