Saltar al contenido principal

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 :

  1. Herramientas CLI

  2. Entorno OpenShift

    • Un clúster OpenShift funcional gestionado por Cloud Temple.
  3. Acceso y permisos

    • Rol de cliente administrador para crear proyectos y desplegar recursos.

Plan de demostración

Resumen de los pasos

  1. Preparar el entorno y las herramientas.
  2. Desplegar aplicaciones con Helmfile:
    • nginx: Un servidor web simple.
    • PostgreSQL: Un servidor de base de datos.
  3. Verificar el despliegue:
    • Confirmar que las configuraciones rootless están aplicadas.
    • Probar la funcionalidad de las aplicaciones.
  4. 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 caso bitnami/nginx, obtenido desde el repositorio Bitnami.
    • values : Archivo YAML que contiene configuraciones específicas para el despliegue, en este caso 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ú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=url con 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:

NombreHost/PortServicioPuertoResolución TLSEtiqueta
nginxnginx-poc-helmfile.apps-ocpnumber-cluster.paas.cloud-temple.comnginx8080Ningunoct-router-type=public
nginx-tlsnginx-tls-poc-helmfile.apps-ocpnumber-cluster.paas.cloud-temple.comnginx8080Edge (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:

  1. Las dos aplicaciones se ejecutan sin errores.
  2. Los pods utilizan UID > 30000, de acuerdo con las restricciones de los contenedores rootless.
  3. No se ha desplegado ningún CRD personalizado.
  4. 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. 🚀