Skip to content

User Workloads

Custom applications where you provide your own Helm chart values directly.

Unlike system workloads (which have pre-configured presets), user workloads require you to specify all Helm values yourself. This gives you full control over the chart configuration.

HTTP services use Traefik ingress for routing. No TCP port configuration needed.

workloads:
http-webhook:
type: user
description: HTTP service with Traefik ingress
chart:
repo: securecodebox # From catalog repositories
name: securecodebox/http-webhook
version: "5.5.0"
defaults:
namespace: default
values:
# You provide ALL Helm values (no presets)
ingress:
enabled: true
ingressClassName: traefik
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
hosts:
- host: echo.${LOKO_APPS_DOMAIN}
paths: [/]
tls:
- hosts:
- echo.${LOKO_APPS_DOMAIN}

HTTP Service Access: https://echo.${LOKO_APPS_DOMAIN}


TCP services require port exposure and special routing configuration.

workloads:
tcp-echo:
type: user
description: TCP service requiring port exposure
chart:
repo: istio
name: istio/tcp-echo-server
version: "1.2.0"
defaults:
namespace: default
ports: [9000] # Dynamically routed via HAProxy tunnel
values:
service:
type: ClusterIP
ports:
- port: 9000
name: tcp
protocol: TCP

Requirements:

  1. Port exposed via HAProxy tunnel (automatically updated when ports change)
  2. DNS host record configuration
  3. Traefik TCPIngressRoute for routing (automatically configured)

TCP Service Access: telnet tcp-echo.${LOKO_DOMAIN} 9000


If your chart is not from a catalog repository, add the Helm repository to your config:

# loko.yaml
workloads:
helm-repositories:
- name: my-custom-repo
url: https://my-charts.example.com/

Then reference it in your workload:

workloads:
my-app:
type: user
chart:
repo: my-custom-repo
name: my-custom-repo/my-chart
version: "1.0.0"
values:
# Your chart values here

FeatureSystem WorkloadsUser Workloads
PresetsPre-configured valuesYou provide all values
SecretsAuto-generatedYou manage
ConfigurationSimplifiedFull Helm control
Use CaseStandard servicesCustom applications
ExamplesPostgreSQL, RabbitMQ, ArgoCDYour own apps, custom charts
Terminal window
# Add workload to config
loko workloads add my-app
# Enable and deploy
loko workloads enable my-app --now
# Check status
loko workloads status my-app