K3s
Kubernetes ligero ..
K3s
K3s es una distribución de Kubernetes liviana y certificada diseñada para entornos con recursos limitados, computación en el borde, dispositivos IoT y escenarios de desarrollo. Creada por Rancher Labs (ahora parte de SUSE), empaqueta todo lo necesario para ejecutar Kubernetes en un único binario de menos de 100 MB.
Esto hace que K3s sea significativamente más ligero que Kubernetes estándar mientras mantiene compatibilidad completa con las API y características de Kubernetes. Requiere memoria mínima (512 MB como mínimo) y ofrece operaciones simplificadas con dependencias reducidas.
K3s incluye componentes integrados como el controlador de ingreso Traefik, el aprovisionador de almacenamiento local y el balanceador de carga de servicios. Es perfecto para desarrollo, CI/CD, despliegues en el borde y dispositivos ARM, y aun así está listo para producción con capacidades de alta disponibilidad.

Componentes centrales de K3s
Componentes del plano de control
El plano de control incluye el API Server (punto de enlace de la API de Kubernetes para la gestión del clúster), Controller Manager (gestiona los bucles de control centrales para replicación, endpoints y namespaces) y Scheduler (asigna pods a nodos según la disponibilidad de recursos).
K3s puede usar etcd o SQLite ligero como almacén de datos para el estado del clúster, lo que lo hace más flexible que Kubernetes estándar.
Componentes de nodo
Cada nodo ejecuta el agente Kubelet que gestiona el ciclo de vida de los pods. Containerd está integrado como runtime de contenedores para ejecutar contenedores.
Kube-proxy gestiona el proxy de red y el enrutamiento de servicios en todo el clúster.
Complementos integrados
K3s incluye el controlador Ingress Traefik para enrutar tráfico HTTP/HTTPS externo a los servicios. El Local Path Provisioner habilita el aprovisionamiento dinámico de volúmenes persistentes usando almacenamiento local.
CoreDNS proporciona DNS de clúster para descubrimiento de servicios. El Service Load Balancer gestiona servicios de tipo LoadBalancer sin requerir integraciones con proveedores de nube externos.
Redes
Flannel sirve como el plugin CNI (Container Network Interface) predeterminado para la red de pods. Las Network Policies controlan el flujo de tráfico entre pods y servicios para mayor seguridad.

Pod de Pentaho Server
Ejecuta el servidor de aplicaciones Tomcat con Pentaho Server 11
Construido sobre Debian Trixie Slim con OpenJDK 21 JRE
Construcción Docker multietapa para optimizar el tamaño de la imagen
Expuesto internamente en el puerto 8080
Incluye probes de readiness y liveness para monitorización de salud
Límites de recursos configurados para estabilidad de CPU y memoria

Proporciona backend de base de datos relacional para tres bases de datos críticas:
Jackrabbit (jcr_user): Repositorio de Contenido Java que almacena todo el contenido de Pentaho (informes, paneles, orígenes de datos, transformaciones, jobs)
Quartz (pentaho_user): Programador que gestiona jobs, triggers, calendarios e historial de ejecución
Hibernate (hibuser): Configuración de seguridad, registro de auditoría, sesiones de usuario, además de dos esquemas especializados:
pentaho_dilogs: Registro de ejecución de ETL con logs de jobs, métricas de transformaciones y datos de rendimiento de pasos
pentaho_operations_mart: Data mart dimensional para análisis de la plataforma con tablas de dimensiones y de hechos
Datos persistidos mediante PersistentVolumeClaim para sobrevivir a reinicios
Inicialización automatizada mediante scripts SQL montados desde ConfigMap


Pentaho Server requiere tres bases de datos separadas, cada una con un propósito distinto:
jackrabbit
jcr_user
Repositorio de Contenido Java (JCR) - Almacena todo el contenido de Pentaho incluyendo informes, paneles, orígenes de datos, esquemas de análisis y archivos de usuario. Este es el almacenamiento principal de contenido para el repositorio de Pentaho.
quartz
pentaho_user
Scheduler Quartz - Gestiona todos los jobs programados, triggers y calendarios. Contiene tablas para definiciones de jobs (QRTZ6_JOB_DETAILS), triggers (QRTZ6_TRIGGERS), historial de ejecución y bloqueos de coordinación de clúster.
hibernate
hibuser
Repositorio Hibernate - Aloja la configuración de seguridad, registro de auditoría, datos de sesiones de usuario, y contiene dos esquemas adicionales: pentaho_dilogs (registro de ejecución de ETL) y pentaho_operations_mart (data mart de análisis).
La base de datos hibernate contiene esquemas especializados para monitoreo operativo:
pentaho_dilogs: Captura información detallada de ejecución de ETL incluyendo logs de jobs, logs de transformaciones, métricas de rendimiento de pasos y registros de errores. Esencial para depurar flujos de integración de datos y monitorear la salud de las canalizaciones.
pentaho_operations_mart: Un data mart dimensional para análisis del uso de Pentaho. Contiene tablas de dimensión (DIM_DATE, DIM_TIME, DIM_EXECUTOR) y tablas de hechos (FACT_EXECUTION, FACT_STEP_EXECUTION) para analizar la utilización de la plataforma, tendencias de rendimiento y actividad de usuarios.
Para despliegues en producción, implemente copias de seguridad regulares del volumen Docker repository-data. La base de datos jackrabbit es la más crítica ya que contiene todo el contenido de los usuarios. Considere usar pg_dump para copias lógicas o snapshots del volumen para opciones de recuperación completas.
Redes
Comunicación interna:
Ambos pods se ejecutan dentro del
pentahonamespaceLos servicios ClusterIP proporcionan nombres DNS internos estables
PostgreSQL accesible en
postgresql.pentaho.svc.cluster.local:5432Pentaho Server accesible en
pentaho-server.pentaho.svc.cluster.local:8080
Acceso externo:
El controlador Ingress Traefik enruta el tráfico externo a Pentaho Server
Enrutamiento configurable por hostname y basado en rutas
Soporte opcional para terminación TLS/SSL
Tomcat gestiona pools de conexiones definidos en context.xml. Cada pool sirve un propósito específico:
jdbc/Hibernate
repository:5432/hibernate
Seguridad, Usuarios, Roles
jdbc/Quartz
repository:5432/quartz
Programación de jobs
jdbc/jackrabbit
repository:5432/jackrabbit
Repositorio de contenido
jdbc/Audit
repository:5432/hibernate
Registro de auditoría
jdbc/live_logging_info
repository:5432/hibernate
Logs de ejecución ETL
jdbc/PDI_Operations_Mart
repository:5432/hibernate
Analítica de operaciones
Almacenamiento
PersistentVolumeClaims (PVCs):
postgres-pvc: Directorio de datos de PostgreSQL (/var/lib/postgresql/data)pentaho-pvc: Directorios de soluciones y datos de Pentaho
Clase de almacenamiento:
Usa el
local-pathaprovisionador de almacenamientoAprovisiona volúmenes en el sistema de archivos local del nodo
Creación y vinculación automática de volúmenes
ConfigMaps:
Scripts de inicialización de base de datos (5 archivos SQL)
Configuraciones de Pentaho (parámetros JVM, ajustes de Tomcat)
Secrets:
Credenciales de PostgreSQL (postgres_password, pentaho_user, pentaho_password)
Cadenas de conexión JDBC
Codificadas en Base64 por seguridad
Antes de comenzar el despliegue en K3s, asegúrese de haber completado la configuración: Contenedores de Pentaho
Siga los pasos siguientes para desplegar Pentaho Server en un K3s de nodo único con repositorio PostgreSQL 15.
Preparar el entorno
La sección "Preparar el entorno" describe los pasos de configuración inicial requeridos antes de desplegar Pentaho Server 11 en K3s:
copiar los recursos de despliegue a su directorio home,
preparar el archivo ZIP de Pentaho Server Enterprise Edition, verificando que el archivo esté en su lugar,
confirmar que K3s está correctamente instalado y en ejecución
Asegúrese de haber descargado: pentaho-server-ee-11.0.0.0-237.zip
Crear directorio y copiar los recursos.
Copie el pentaho-server-ee-11.0.0.0-237.zip al directorio /docker/stagedArtefacts.
Si ha desplegado un Pentaho Server desde un archivo de archivo, copie desde:
/opt/pentaho/software/pentaho-server-ee-version
De lo contrario descargue el paquete desde el Portal de clientes de Pentaho.
Verifique que el archivo exista.
Verifique la instalación de K3s.

Pentaho Server requiere una licencia válida. El
.envarchivo contiene un LICENSE_URL que apunta al servidor de licencias de Flexera. Asegúrese de que sus derechos de licencia estén activos antes del despliegue.
Sin una licencia válida, Pentaho Server se iniciará pero muchas funciones estarán deshabilitadas. Verifique el estado de su licencia antes de proceder con despliegues de producción.
Diferencias clave
Orquestación
Docker Compose
Kubernetes (K3s)
Configuración
.env archivo + docker-compose.yml
Manifiestos de Kubernetes (YAML)
Secrets
Secrets de Docker o Vault
Secrets de Kubernetes
Redes
red puente de Docker
Red del clúster K3s + Ingress Traefik
Almacenamiento
volúmenes de Docker
PersistentVolumeClaims (PVCs)
Escalado
Manual (docker compose up --scale)
Declarativo (replicas en deployment)
Comprobaciones de salud
Docker HEALTHCHECK
Probes de readiness/liveness de Kubernetes
Scripts de inicialización
Montaje de volumen en /docker-entrypoint-initdb.d
ConfigMap montado en el pod de PostgreSQL
Tareas previas al vuelo
La sección de Tareas previas describe los pasos esenciales de preparación necesarios antes de desplegar Pentaho Server 11 en contenedores K3s.
Configurar variables de entorno
Edite el .env.example archivo dentro de docker-build/ directorio con sus ajustes específicos de despliegue. Esto incluye el identificador de versión de Pentaho y el nombre/etiqueta de la imagen Docker.
Configure las credenciales de la base de datos PostgreSQL y los parámetros de conexión. Establezca la asignación de memoria JVM con heap mínimo (por defecto 4GB) y heap máximo (por defecto 8GB).
Agregue la URL de su servidor de licencias Enterprise Edition si aplica. Configure las opciones de build incluyendo edición de la imagen (EE/CE), detección de plugins y ajustes de push al registro.
Una vez configurado, copie esta plantilla a .env para uso por el proceso de build.
Directorio softwareOverride
El softwareOverride/ directorio dentro de docker-build/ proporciona un mecanismo para personalizar las configuraciones de Pentaho. Estas personalizaciones se integran en la imagen Docker durante el proceso de build.
Los archivos están organizados en directorios numerados y procesados en orden alfabético.
El 1_drivers/ el directorio contiene el driver JDBC de PostgreSQL (incluido por defecto), y puede colocar drivers JDBC adicionales aquí.
El 2_repository/ el directorio contiene las configuraciones de conexión a base de datos para Jackrabbit (JCR), Quartz (scheduler) y repositorios Hibernate. El 3_security/ el directorio está vacío en este despliegue K3s ya que no hay integración con Vault.
El 4_others/ el directorio contiene scripts modificados de Tomcat (startup.sh, setenv.sh), server.xml y otras configuraciones a nivel de aplicación.
Opcionalmente puede actualizar el driver JDBC de PostgreSQL descargándolo desde Maven Central o copiándolo desde la colección de drivers de base de datos del workshop. Coloque el driver actualizado en softwareOverride/1_drivers/tomcat/lib/.
Configurar .env
Edite la plantilla .env.template
Ingrese los siguientes detalles:
PENTAHO_VERSION
11.0.0.0-237
Versión de Pentaho Server
EDITION
ee
Versión Enterprise
INCLUDE_DEMO
1
Incluir datos de demostración
IMAGE_TAG
pentaho/pentaho-server:11.0.0.0-237
Etiqueta de la imagen Docker
PENTAHO_MIN_MEMORY
4096m
Tamaño mínimo del heap de la JVM
PENTAHO_MAX_MEMORY
8192m
Tamaño máximo del heap de la JVM
PENTAHO_DI_JAVA_OPTIONS
"-Dfile.encoding=utf8 -Djava.awt.headless=true"
PENTAHO_IMAGE_NAME
pentaho/pentaho-server
Nombre de la imagen Docker
TZ
America/NY
Zona horaria del servidor
DB_TYPE
postgres
DB_HOST
postgres
DB_PORT
5432
Puerto HTTP de PostgreSQL
PUSH_TO REGISTRY
false
Hace push directo al registro de K3s
LOAD_INTO_K3S
true
Carga directamente en K3s
RUN TESTS
true
LICENSE_URL
(vacío)
URL del servidor de licencias EE
Guardar:
Crear .env
softwareOverride
El softwareOverride/ El directorio proporciona un potente mecanismo para personalizar Pentaho Server sin modificar la instalación central. Los archivos se copian en la instalación de Pentaho durante el arranque del contenedor, procesados en orden alfabético por nombre de directorio.
El driver JDBC de PostgreSQL está incluido en la distribución de Pentaho. Si necesita actualizarlo:
Descargar desde Maven Central
Colocar en
softwareOverride/1_drivers/tomcat/lib/
O
Copiar desde Workshop--Installation/'Database Drivers'/
Construir y enviar la imagen de Pentaho
El script build.sh es un envoltorio de build automatizado que:
Valida prerrequisitos - Comprueba que Docker está instalado
Comprueba archivos requeridos - Verifica que el ZIP de Pentaho exista en stagedArtifacts/
Detecta plugins automáticamente - Encuentra plugins PAZ, PIR, PDD
Confirma el build - Muestra lo que se va a construir y solicita confirmación
Ejecuta docker build - Ejecuta la compilación con los argumentos adecuados
Muestra información de la imagen - Muestra tamaño y detalles de la imagen después del build
Opcional: Prueba la imagen - Ejecuta una prueba básica del contenedor (puede omitirse)
Opcional: Hace push al registro - Empuja al registro Docker (solo con la bandera -p)
Este es el enfoque recomendado para construir imágenes Docker de Pentaho. Usa un solo .env archivo para configurar todo - similar al despliegue con Docker Compose.
Puede modificar el build con las siguientes opciones:
-v
--version VERSION
Versión de Pentaho (por defecto: 11.0.0.0-237)
-t
--tag TAG
Etiqueta de la imagen Docker (por defecto: pentaho/pentaho-server:VERSION)
-e
--edition EDITION
ee o ce (por defecto: ee)
-d
--demo
Incluir contenido de demostración (por defecto: no)
-p
--push
Hacer push al registro después del build
-h
--help
Hacer push al registro después del build
Construir y enviar la imagen del Pentaho Server directamente al registro de K3s.

1. Construcción de la imagen Docker: El despliegue usa una imagen de contenedor de Pentaho Server construida a medida:
El build.sh script:
Valida prerrequisitos y archivos requeridos
Detecta plugins automáticamente (PAZ, PIR, PDD)
Ejecuta build Docker multietapa
Opcionalmente empuja al almacén de imágenes de K3s
2. Gestión de configuración:
.envel archivo contiene ajustes específicos del despliegue (versiones, credenciales, memoria JVM)softwareOverride/el directorio proporciona superposiciones de configuración procesadas en orden numeradoDriver JDBC de PostgreSQL incluido por defecto, con opción de actualizar
Scripts personalizados de Tomcat para optimizar el arranque del contenedor
Helm Charts
Helm es el gestor de paquetes para Kubernetes, a menudo referido como "apt/yum para Kubernetes." Simplifica el despliegue y la gestión de aplicaciones Kubernetes mediante:
Empaquetado: Agrupar recursos relacionados de Kubernetes
Templating: Parametrizar manifiestos para reutilización entre entornos
Versionado: Gestionar versiones de aplicaciones y actualizaciones
Gestión de releases: Rastrear despliegues y permitir rollbacks

x
Chart.yaml
Este archivo define la identidad del chart, la versión y los metadatos usados por Helm.
Sirve como la "definición del paquete" para el chart de Helm, similar a package.json (npm) o Chart.lock (dependencias de Helm).
Rol: Chart.yaml le indica a Helm qué es este chart, qué versión tiene, qué aplicación despliega y proporciona metadatos buscables para repositorios de charts.
Helm usa este archivo para rastrear versiones del chart, gestionar dependencias y mostrar información cuando los usuarios buscan o instalan charts.
values.yaml
templates
namespace.yaml
Crea un namespace aislado de Kubernetes para contener todos los recursos de Pentaho
secret.yaml
Almacena credenciales sensibles de la base de datos (contraseñas) cifradas en Kubernetes
config-*.yaml
Configura las variables de entorno de Pentaho (memoria JVM, configuración de base de datos, rutas, zona horaria) Contiene scripts SQL para inicializar las bases de datos PostgreSQL (jackrabbit, quartz, hibernate) en el primer inicio
pvc.yaml
Solicita volúmenes de almacenamiento persistente para los datos de PostgreSQL y, opcionalmente, los datos/soluciones de Pentaho
*-deployment.yaml
Implementa Pentaho Business Analytics Server con contenedor init, sondas de salud y límites de recursos. Implementa el servidor de base de datos PostgreSQL 15 con inicialización automática y almacenamiento persistente
*-service.yaml
Enruta el tráfico externo HTTP/HTTPS hacia Pentaho Server a través del controlador ingress Traefik. Expone el puerto 5432 de PostgreSQL como un punto final DNS estable para que Pentaho se conecte.
ingress.yaml
Enruta el tráfico externo HTTP/HTTPS hacia Pentaho Server a través del controlador ingress Traefik
x
Antes de continuar, asegúrese de haber completado los Pasos 1 - 3. Debe tener una imagen de Pentaho Server + imágenes del repositorio PostgreSQL 15 empujadas al repositorio K3s.
Comprobación rápida.
Comprobar que la imagen de Pentaho esté disponible.


Estructura de directorios
Esta configuración de despliegue en K3s proporciona varias capacidades importantes:
Despliegue Kubernetes completamente autocontenido en K3s ligero
Inicialización automatizada de la base de datos con scripts SQL de PostgreSQL
Comprobaciones de salud nativas de Kubernetes y orden de inicio
Claims de volúmenes persistentes para la base de datos y el contenido de Pentaho
Proceso de construcción de imagen Docker con optimización de múltiples etapas
Límites de recursos (CPU/memoria) para estabilidad
Plantillas de manifiestos Kubernetes listas para producción
Controlador JDBC de PostgreSQL incluido
Procedimientos sencillos de copia de seguridad y restauración mediante scripts utilitarios
Configuración de Ingress para enrutamiento Traefik
Archivos del directorio raíz
Archivos de documentación:
README.md - El documento de entrada principal que proporciona una visión general del proyecto, instrucciones de inicio rápido, requisitos previos e información de uso general para el taller de despliegue en K3s.
DEPLOYMENT.md - Guía de despliegue detallada que cubre el flujo completo de despliegue en K3s, incluidos los requisitos previos, instrucciones paso a paso y procedimientos de verificación posteriores al despliegue.
K3s-INSTALLATION.md - Instrucciones de configuración e instalación de K3s que abarcan la preparación del sistema, la instalación de K3s, la configuración de red y la configuración de la clase de almacenamiento necesaria antes de desplegar Pentaho.
Orquestación y despliegue:
deploy.sh - Script de despliegue automatizado que orquesta el flujo completo de despliegue en K3s incluyendo la creación de namespaces, generación de secretos, aplicación de manifiestos y comprobaciones de disponibilidad de servicios.
destroy.sh - Script de limpieza que elimina de forma segura todos los recursos de K3s incluyendo despliegues, servicios, claims de volúmenes persistentes y namespaces, útil para escenarios de redepliegue o desmontaje.
Makefile - Contiene objetivos de comandos de conveniencia para operaciones comunes de K3s como desplegar, destruir, comprobar estado y ver registros. Los usuarios pueden ejecutar make help para ver todos los comandos disponibles.
docker-build
El docker-build/ el directorio contiene todos los componentes necesarios para construir la imagen del contenedor Pentaho Server que se desplegará en K3s:
Archivos de documentación:
README.md - Documentación completa de la construcción que cubre el proceso de construcción de la imagen Docker, la arquitectura de construcción en varias etapas, las opciones de configuración, la resolución de problemas y las mejores prácticas para construir imágenes de Pentaho Server para despliegue en K3s.
QUICK-START.md - Guía rápida de construcción que proporciona instrucciones paso a paso para usuarios que desean construir y probar rápidamente la imagen de Pentaho sin leer la documentación completa. Incluye comandos comunes de construcción y flujos de trabajo típicos.
ENV-CONFIGURATION.md - Guía de referencia de configuración completa para el .env.example archivo, detallando todas las variables de entorno disponibles, sus propósitos, valores por defecto y cómo afectan al proceso de construcción de Docker y a la imagen resultante.
Archivos de construcción y configuración:
build.sh - Script envoltorio de construcción automatizada que valida los requisitos previos, comprueba los archivos necesarios (ZIP de Pentaho en stagedArtifacts/), detecta plugins automáticamente (PAZ, PIR, PDD), confirma la construcción con el usuario, ejecuta docker build, muestra información de la imagen después de la construcción y, opcionalmente, la empuja a un registro con la -p bandera.
.env.example - Archivo plantilla de configuración que contiene todas las variables de entorno disponibles para el proceso de construcción de Docker. Los usuarios copian esto a .env y personalizan los valores para sus necesidades específicas de despliegue, incluyendo la versión de Pentaho, etiquetas de imagen y opciones de construcción.
Dockerfile - Definición de construcción en múltiples etapas usando debian:trixie-slim como imagen base con OpenJDK 21 JRE. Crea imágenes optimizadas separando el entorno de construcción del entorno de ejecución, reduciendo el tamaño final de la imagen mientras mantiene todos los componentes necesarios de Pentaho. El enfoque de múltiples etapas minimiza las vulnerabilidades de seguridad y mejora la eficiencia de la construcción.
test-compose.yml - Entorno de pruebas local con Docker Compose que le permite probar la imagen Docker construida localmente antes de desplegarla en K3s. Esto es útil para validar cambios de configuración, probar plugins personalizados o depurar problemas de inicio sin la sobrecarga de un despliegue completo en K3s.
Scripts de inicio del contenedor:
entrypoint/ - Directorio que contiene scripts de inicialización y arranque del contenedor:
docker-entrypoint.sh - Script principal de inicio del contenedor que se ejecuta cuando el contenedor arranca. Maneja el procesamiento de variables de entorno, la personalización de archivos de configuración desde
softwareOverride/, la validación de la conexión a la base de datos, las comprobaciones de salud y orquesta la secuencia de inicio de Pentaho Server.start-pentaho-docker.sh - Script de inicio específico de Pentaho que gestiona la inicialización de Tomcat, la configuración de la JVM, los ajustes de memoria y arranca los servicios de Pentaho Server. Este script es llamado por
docker-entrypoint.shdespués de que la preparación del entorno esté completa.
Superposiciones de configuración:
softwareOverride/ - Directorio de superposiciones de configuración que se incorpora en la imagen Docker durante el proceso de construcción. Los archivos están organizados en directorios numerados y se procesan en orden alfabético para asegurar la secuencia correcta de aplicación:
1_drivers/ - Controlador JDBC de PostgreSQL (incluido por defecto) para la conectividad a la base de datos. Aquí se pueden colocar controladores JDBC adicionales o conectores de datos.
2_repository/ - Configuraciones de conexión a la base de datos para todos los repositorios de Pentaho, incluyendo Jackrabbit (JCR), Quartz (scheduler) y Hibernate (seguridad/auditoría). Contiene un README.md que explica los archivos de configuración del repositorio y sus propósitos.
3_security/ - Vacío en este despliegue K3s dado que no se utiliza la integración con HashiCorp Vault. En entornos de producción, esto contendría archivos de autenticación, autorización y configuración de seguridad.
4_others/ - Scripts de Tomcat modificados (startup.sh, setenv.sh), server.xml, web.xml y otras configuraciones a nivel de aplicación. Contiene un README.md documentando las modificaciones personalizadas de Tomcat y sus propósitos.
Artefactos en staging:
stagedArtifacts/ - Directorio de staging donde los usuarios colocan el paquete de instalación de Pentaho Server (pentaho-server-ee-11.0.0.0-237.zip) antes de construir la imagen Docker. Contiene un README.md con instrucciones sobre dónde obtener el paquete de Pentaho y cómo colocarlo correctamente en staging.
db_init_postgres
El db_init_postgres/ el directorio contiene scripts de inicialización de PostgreSQL que crean todas las bases de datos de repositorio de Pentaho requeridas. Estos scripts se montan en el contenedor de PostgreSQL y se ejecutan automáticamente en el primer inicio:
1_create_jcr_postgresql.sql - Crea la Base de datos del Repositorio de Contenido Jackrabbit (JCR) . El JCR almacena todo el contenido de Pentaho incluyendo informes, paneles, fuentes de datos, esquemas de análisis, transformaciones, trabajos y archivos de usuario. Este es el sistema principal de gestión de contenido para el repositorio de Pentaho.
2_create_quartz_postgresql.sql - Configura la Base de datos del Scheduler Quartz . Quartz gestiona todos los trabajos programados, triggers y calendarios dentro de Pentaho Server, incluyendo horarios de generación de informes, ejecuciones de trabajos ETL y otros procesos automatizados. Contiene tablas críticas como QRTZ6_JOB_DETAILS, QRTZ6_TRIGGERS, y el historial de ejecuciones.
3_create_repository_postgresql.sql - Crea la Base de datos del Repositorio Hibernate . Esta almacena datos de autenticación de usuarios, información de autorización, roles, permisos y otra información relacionada con la seguridad gestionada por el subsistema de seguridad de Pentaho.
4_pentaho_logging_postgresql.sql - Establece el pentaho_dilogs esquema dentro de la base de datos Hibernate para auditoría y registro de Data Integration (DI). Captura información detallada de ejecución ETL incluyendo registros de trabajos, registros de transformaciones, métricas de rendimiento de pasos y registros de errores. Es esencial para depurar flujos de integración de datos y monitorizar la salud de las canalizaciones.
5_pentaho_mart_postgresql.sql - Crea la pentaho_operations_mart esquema dentro de la base de datos Hibernate. Este data mart dimensional almacena analíticas operacionales sobre el uso de Pentaho Server, incluyendo tablas de dimensiones (DIM_DATE, DIM_TIME, DIM_EXECUTOR) y tablas de hechos (FACT_EXECUTION, FACT_STEP_EXECUTION) para analizar la utilización de la plataforma, tendencias de rendimiento y patrones de actividad de los usuarios.
manifests
El manifests/ el directorio contiene todas las definiciones de recursos de Kubernetes organizadas por área funcional. Estos archivos YAML definen el estado declarativo de su despliegue en K3s:
namespace.yaml - Crea el dedicado pentaho namespace para aislar todos los recursos relacionados con Pentaho de otras cargas de trabajo de K3s, proporcionando separación lógica y organización de recursos.
configmaps/ - Recursos ConfigMap para datos de configuración no sensibles:
pentaho-config.yaml - Ajustes de configuración de Pentaho Server como parámetros de la JVM, configuraciones de Tomcat y propiedades de la aplicación
postgres-init-scripts.yaml - ConfigMap que contiene los cinco scripts de inicialización de PostgreSQL del directorio
db_init_postgres/, montado en el pod de PostgreSQL
pentaho/ - Recursos Kubernetes de Pentaho Server:
deployment.yaml - Define el despliegue de Pentaho Server incluyendo especificaciones del contenedor, solicitudes/límites de recursos, variables de entorno, montajes de volúmenes, sondas de readiness/liveness y el conteo de réplicas
service.yaml - Servicio ClusterIP que expone Pentaho Server en el puerto 8080 dentro del clúster, proporcionando DNS interno estable y balanceo de carga
postgres/ - Recursos Kubernetes de la base de datos PostgreSQL:
deployment.yaml - Define el despliegue de PostgreSQL 15 con especificaciones de contenedor, persistent volume claims para el almacenamiento de datos, montaje de scripts de inicialización y configuración de la base de datos
service.yaml - Servicio ClusterIP que expone PostgreSQL en el puerto 5432 dentro del clúster para las conexiones de base de datos de Pentaho Server
secrets/ - Almacenamiento de credenciales sensibles:
secrets.yaml - Recurso Kubernetes Secret que contiene credenciales codificadas en base64 para PostgreSQL (
postgres_password,pentaho_user,pentaho_password) y cadenas de conexión JDBC. Este archivo está ignorado por git por motivos de seguridad.
storage/ - Definiciones de almacenamiento persistente:
pvc.yaml - Definiciones de PersistentVolumeClaim tanto para los datos de PostgreSQL (
postgres-pvc) como para las soluciones/datos de Pentaho (pentaho-pvc), usando la clase de almacenamiento local-path de K3s para datos persistentes a través de reinicios de pods
ingress/ - Configuración de acceso externo:
ingress.yaml - Recurso Ingress de Traefik que define reglas de enrutamiento HTTP/HTTPS externas para exponer Pentaho Server fuera del clúster K3s, incluyendo hostname, enrutamiento por ruta y configuración TLS si procede
scripts
El scripts/ el directorio contiene utilidades operativas y de mantenimiento para gestionar el despliegue de Pentaho en K3s:
Gestión de bases de datos:
backup-postgres.sh - Utilidad automatizada de copia de seguridad de PostgreSQL que crea volcados comprimidos de todas las bases de datos de Pentaho (jackrabbit, quartz, hibernate) usando kubectl exec para ejecutar pg_dump dentro del pod de PostgreSQL. Las copias de seguridad llevan marca de tiempo y se comprimen con gzip para un almacenamiento eficiente.
restore-postgres.sh - Utilidad de restauración de bases de datos para recuperar las bases de datos de Pentaho desde archivos de copia de seguridad. Útil para recuperación ante desastres, clonación de entornos o migración de datos entre clústeres K3s. Maneja la descompresión y la restauración vía kubectl exec y psql.
Monitorización y validación:
health-check.sh - Script de comprobación de salud que verifica que tanto PostgreSQL como Pentaho Server estén ejecutándose y respondiendo correctamente. Comprueba el estado de los pods, las sondas de readiness y realiza pruebas básicas de conectividad.
monitor-resources.sh - Utilidad de monitorización de recursos que rastrea el uso de CPU, memoria y almacenamiento en todos los pods de Pentaho usando kubectl top y métricas de recursos, ayudando a identificar restricciones de recursos u oportunidades de optimización.
monitor-postgres.sh - Script de monitorización específico de PostgreSQL que comprueba recuentos de conexiones a la base de datos, consultas activas, tamaños de tablas y métricas de salud de la base de datos mediante consultas SQL ejecutadas en el pod de PostgreSQL.
validate-deployment.sh - Script completo de validación del despliegue que confirma que todos los recursos de K3s se han creado correctamente, los pods se están ejecutando, los servicios son accesibles, los volúmenes persistentes están vinculados y todo el despliegue está operativo.
verify-k3s.sh - Script de verificación de la infraestructura K3s que comprueba la instalación de K3s, el estado de los nodos, las clases de almacenamiento, el controlador ingress Traefik y los componentes principales de K3s antes de intentar el despliegue de Pentaho.
Diferencias clave: K3s vs Docker
Orquestación
Docker Compose
Kubernetes (K3s)
Configuración
.env archivo + docker-compose.yml
Manifiestos de Kubernetes (YAML)
Secrets
Secrets de Docker o Vault
Secrets de Kubernetes
Redes
red puente de Docker
Red del clúster K3s + Ingress Traefik
Almacenamiento
volúmenes de Docker
PersistentVolumeClaims (PVCs)
Escalado
Manual (docker compose up --scale)
Declarativo (replicas en deployment)
Comprobaciones de salud
Docker HEALTHCHECK
Probes de readiness/liveness de Kubernetes
Scripts de inicialización
Montaje de volumen en /docker-entrypoint-initdb.d
ConfigMap montado en el pod de PostgreSQL
Ejecución del despliegue
El deploy.sh el script automatiza todo el flujo de trabajo:
Verifica que K3s se está ejecutando
Crea el namespace
Aplica todos los manifiestos en el orden correcto
Monitorea el arranque de los pods
Valida la disponibilidad de los servicios
Proporciona un resumen del despliegue con URLs de acceso
1. Creación del Namespace:
Crea un entorno lógico aislado para todos los recursos de Pentaho.
2. Generación de secretos:
Almacena las credenciales de PostgreSQL y las cadenas de conexión JDBC como Secrets de Kubernetes.
3. Provisionamiento de almacenamiento:
Crea PersistentVolumeClaims para los datos de PostgreSQL y el contenido de Pentaho.
4. Creación de ConfigMap:
Monta scripts de inicialización de PostgreSQL y la configuración de Pentaho.
5. Despliegue de PostgreSQL:
Despliega el pod de PostgreSQL con:
Scripts init montados (creación automática de la base de datos en el primer inicio)
Volumen persistente para datos
Comprobaciones de salud y límites de recursos
Servicio ClusterIP para conectividad interna
6. Despliegue de Pentaho Server:
Despliega el pod de Pentaho con:
Imagen Docker personalizada
Variables de entorno desde ConfigMap y Secrets
Montajes de volúmenes para soluciones/datos
Sondas de readiness/liveness
Servicio ClusterIP
7. Configuración de Ingress:
Configura el enrutamiento de Traefik para el acceso externo.
Ejecute el deploy.sh

Este script unificado gestiona el proceso completo de despliegue de Pentaho Server en K3s, incluyendo:
Importación de la imagen Docker en el runtime de contenedores de K3s
Creación de recursos de Kubernetes (namespace, secrets, configmaps, storage)
Despliegue de la base de datos PostgreSQL
Despliegue de Pentaho Server
Configuración de Ingress
Comprobaciones de salud e informes de estado
Requisitos previos:
K3s instalado y en ejecución
Imagen Docker construida: pentaho/pentaho-server:11.0.0.0-237
kubectl configurado para acceder al clúster K3s
Acceso sudo para operaciones de containerd de K3s
Comandos rápidos con Makefile
También hay un conjunto de scripts que ayudarán a validar el despliegue:
Script completo de validación posterior al despliegue que verifica que todos los componentes del despliegue Pentaho en K3s estén correctamente configurados y funcionando. Qué comprueba (6 categorías)
Namespace
Verifica que exista el namespace pentaho
Pods
El pod de PostgreSQL está Running
El pod de Pentaho Server está Running
Muestra el estado actual si no está en ejecución
Servicios
Existe el servicio de PostgreSQL
Existe el servicio de Pentaho Server
PersistentVolumeClaims (3 PVCs)
postgres-data-pvc (10Gi) - Archivos de la base de datos
pentaho-data-pvc (10Gi) - Pentaho
data pentaho-solutions-pvc (5Gi) - Repositorio de soluciones
Todos deben estar en estado "Bound"
ConfigMaps
pentaho-config - Variables de entorno
postgres-init - Scripts de inicialización de la base de datos
Ingress
pentaho-ingress - Configuración de enrutamiento Traefik
Pruebas de conectividad a la base de datos
Se conecta al pod de PostgreSQL
Prueba las 3 bases de datos de Pentaho:
* jackrabbit - repositorio de contenido JCR
* quartz - scheduler de trabajos
* hibernate - repositorio de configuración
Ejecuta la consulta SELECT 1 en cada una
Ejecute el siguiente
validate-deployment.shscript.

Comprobación de salud
Script rápido de comprobación de salud para el despliegue de Pentaho en ejecución - más rápido y ligero que la validación completa, enfocado en el estado de salud en tiempo de ejecución.
Namespace
Verifica que exista el namespace pentaho
Sale inmediatamente si falta el namespace (crítico)
Disponibilidad de pods
El pod de PostgreSQL está listo (no solo en ejecución)
El pod de Pentaho Server está listo
Comprueba
el estado containerStatuses[0].ready
Servicios
Existe el servicio de PostgreSQL
Existe el servicio de Pentaho Server
Conectividad a la base de datos
PostgreSQL responde a consultas
Existen las 3 bases de datos:
* jackrabbit
* quartz
* hibernate
Usa
psql -lqtpara listar bases de datos
Salud de la aplicación web
Prueba HTTP en vivo a la página de login de Pentaho
Usa port-forward para acceder al servicio
Espera una respuesta HTTP 200
Pruebas: http://localhost:8080/pentaho/Login
Uso de recursos
Muestra uso de CPU/memoria mediante
kubectl top podsManeja de forma elegante la ausencia de metrics-server

Redirección de puertos (recomendada para pruebas/desarrollo)
El método más sencillo usando kubectl para reenviar un puerto local al servicio Pentaho:
URL de acceso: http://localhost:8080/pentaho
También puede usar un puerto alternativo si 8080 está ocupado:
Ingress con hostname (pentaho.local)
Usa el controlador ingress Traefik integrado de K3s con acceso estilo DNS:
Configuración:
(Reemplace 10.0.0.1 con la IP real de su nodo)
URL de acceso: http://pentaho.local/pentaho
Ingress vía IP directa del nodo (no se requiere DNS)
Acceda directamente a través de la IP de cualquier nodo del clúster sin configurar /etc/hosts:
URL de acceso: http://<node-ip>/pentaho
Esto funciona porque el ingress incluye una regla basada en la ruta que no requiere un hostname.
Comando de conveniencia del Makefile
El proyecto incluye un acceso directo Makefile:
Esto configura automáticamente el reenvío de puertos a localhost:8080.
Credenciales predeterminadas
admin
password
⚠️ ¡Cambia estos para despliegues en producción!
Referencia rápida
Reenvío de puerto
Desarrollo/Pruebas
http://localhost:8080/pentaho
Ingress (nombre de host)
Producción con DNS
http://pentaho.local/pentaho
Ingress (IP directa)
Pruebas sin DNS
http://<node-ip>/pentaho
Última actualización
¿Te fue útil?

