Appearance
Kestra
Con Kestra es posible organizar y orquestar flujos de trabajo, procesos de negocio en integración continua. Esto se hace mediante su platforma que contine un editor y un interfaz de usuario que puede ilustrar los pasos de las tareas. Este documento busca una pauta esencial para los primeros pasos y prueba de concepto inicial.
Instalación de Kestra
Se puede instalar Kestra de modo local teniendo Java 17 (o 21) previamente instalado y descargando su binario desde el sitio oficial.
Instalación de Kestra en Linux & macOS
Una vez se tiene descargado el paquete de Kestra, podemos considerar las siguientes sentencias para Linux & macOS:
bash
mkdir kestra-local
mv ./kestra kestra-local/
cd kestra-local
./kestra plugins install io.kestra.plugin:plugin-script-powershell:LATEST io.kestra.plugin:plugin-script-python:LATEST io.kestra.plugin:plugin-ansible:LATEST io.kestra.plugin:plugin-fs:LATEST io.kestra.plugin:plugin-script-node:LATEST io.kestra.plugin:plugin-script-groovy:LATEST io.kestra.plugin:plugin-script-shell:LATEST io.kestra.plugin:plugin-terraform:LATEST io.kestra.plugin:plugin-git:LATEST io.kestra.plugin:plugin-docker:LATEST io.kestra.plugin:plugin-jdbc-duckdb:LATEST
./kestra server localSe debe ubicar primero el archivo descargado (kestra o kestra.jar) en la capeta de trabajo contenedora para proyectos.
Se puede lanzar también en modo de servidor Standalone así:./kestra server standalone
Instalación de Kestra en Windows
Una vez se tiene descargado el paquete de Kestra, podemos considerar las siguientes sentencias para Windows:
bash
mkdir kestra-local
mv ./kestra ./kestra-local/kestra.bat
cd kestra-local
./kestra.bat plugins install io.kestra.plugin:plugin-script-powershell:LATEST io.kestra.plugin:plugin-script-python:LATEST io.kestra.plugin:plugin-ansible:LATEST io.kestra.plugin:plugin-fs:LATEST io.kestra.plugin:plugin-script-node:LATEST io.kestra.plugin:plugin-script-groovy:LATEST io.kestra.plugin:plugin-script-shell:LATEST io.kestra.plugin:plugin-terraform:LATEST io.kestra.plugin:plugin-git:LATEST io.kestra.plugin:plugin-docker:LATEST io.kestra.plugin:plugin-jdbc-duckdb:LATEST
./kestra.bat server localSe debe ubicar primero el archivo descargado (kestra o kestra.jar) en la capeta de trabajo contenedora para proyectos.
Acceso a la interfaz web
Una vez iniciado el servidor, puedes acceder a la interfaz web de Kestra desde:
http://localhost:8080Ejemplo de flujo inicial sencillo
En Kestra, los flujos se definen en archivos YAML. Veamos un ejemplo básico que ejecuta un comando shell:
yaml
id: hello-world
namespace: dev.tutorial
tasks:
- id: hello
type: io.kestra.plugin.core.log.Log
message: Hello World from Kestra!
- id: current-date
type: io.kestra.plugin.scripts.shell.Commands
commands:
- date
- echo "Current user: $(whoami)"
- id: python-task
type: io.kestra.plugin.scripts.python.Script
script: |
print("Hello from Python!")
import datetime
print(f"Current time: {datetime.datetime.now()}")Para ejecutar este flujo:
- Copia el contenido YAML
- En la interfaz web, ve a Flows > Create
- Pega el contenido y guarda
- Ejecuta el flujo con Execute
Flujo con variables y condiciones
yaml
id: conditional-flow
namespace: dev.tutorial
inputs:
- id: environment
type: STRING
defaults: development
tasks:
- id: check-environment
type: io.kestra.plugin.core.log.Log
message: "Running in {{ inputs.environment }} environment"
- id: production-task
type: io.kestra.plugin.scripts.shell.Commands
disabled: "{{ inputs.environment != 'production' }}"
commands:
- echo "This runs only in production"
- id: development-task
type: io.kestra.plugin.scripts.shell.Commands
disabled: "{{ inputs.environment == 'production' }}"
commands:
- echo "This runs in development"Usando Ollama con Kestra para flujos de IA
Semejante a n8n, podemos integrar Ollama con Kestra para crear flujos con inteligencia artificial. Primero, asegúrate de tener Ollama instalado y ejecutándose:
bash
# Instalar Ollama (Linux/macOS)
curl -fsSL https://ollama.com/install.sh | sh
# Descargar modelo
ollama pull llama3.2:3b
# Verificar que esté corriendo
ollama listFlujo de IA para Asistente de viajes
Crearemos un flujo que actúa como asistente de viajes usando Ollama:
yaml
id: ai-travel-assistant
namespace: dev.ai
description: AI Travel Assistant using Ollama
inputs:
- id: user_question
type: STRING
defaults: "Cuéntame algo interesante sobre Japón"
tasks:
- id: prepare-prompt
type: io.kestra.plugin.core.log.Log
message: "Processing question: {{ inputs.user_question }}"
- id: call-ollama
type: io.kestra.plugin.scripts.python.Script
docker:
image: python:3.11-slim
beforeCommands:
- pip install requests
script: |
import requests
import json
# System prompt
system_prompt = """Eres un asistente experto en viajes y turismo.
Proporciona información interesante, curiosidades y recomendaciones
sobre destinos turísticos. Responde de manera clara, concisa y amigable
en máximo 3 oraciones."""
# User question
user_question = "{{ inputs.user_question }}"
# Call Ollama API
url = "http://host.docker.internal:11434/api/generate"
payload = {
"model": "llama3.2:3b",
"prompt": f"{system_prompt}\n\nPregunta: {user_question}\n\nRespuesta:",
"stream": False
}
response = requests.post(url, json=payload)
result = response.json()
print("=== AI Response ===")
print(result['response'])
print("===================")
# Output for next tasks
with open('{{ outputDir }}/ai_response.txt', 'w') as f:
f.write(result['response'])
- id: log-response
type: io.kestra.plugin.core.log.Log
message: "AI response generated successfully"Triggers y automatización
Puedes programar flujos para ejecutarse automáticamente:
yaml
id: scheduled-ai-report
namespace: dev.ai
triggers:
- id: daily-schedule
type: io.kestra.plugin.core.trigger.Schedule
cron: "0 9 * * *" # Daily at 9 AM
tasks:
- id: generate-report
type: io.kestra.plugin.scripts.python.Script
script: |
import datetime
print(f"Daily AI report generated at {datetime.datetime.now()}")Buenas prácticas para continuar con Kestra
- Usar namespaces: Organizar flujos por proyecto o equipo
- Variables de entorno: Configurar credenciales y URLs
- Docker: Aislar dependencias en contenedores
- Logs: Usar tareas de log para debugging
- Inputs: Hacer flujos reutilizables con parámetros
- Error handling: Implementar reintentos y notificaciones
Kestra es ideal para orquestar flujos complejos que combinan scripts, APIs y servicios de IA, proporcionando una plataforma robusta para automatización empresarial con capacidades de inteligencia artificial integradas.