Skip to content

mendixlabs/mendix-portable-runtime-helm-charts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mendix Portable Runtime Helm Chart

Deploys a Mendix Portable Runtime application to Kubernetes or OpenShift.

Prerequisites

  • Helm 3.x
  • Kubernetes 1.21+ or OpenShift 4.x

Quick Start

# Install
helm install myapp . -f examples/dev-simple.yaml -n <namespace>

# Upgrade after changes
helm upgrade myapp . -f examples/dev-simple.yaml -n <namespace>

# Check what will be deployed (dry-run)
helm template myapp . -f examples/dev-simple.yaml

# Uninstall
helm uninstall myapp -n <namespace>

Chart Structure

mendix-portable-runtime/
├── Chart.yaml          # Chart metadata
├── values.yaml         # Default values (all options documented)
├── templates/          # Kubernetes resource templates
│   ├── deployment.yaml
│   ├── service.yaml
│   ├── ingress.yaml
│   ├── route.yaml      # OpenShift Route
│   ├── configmap.yaml
│   ├── secret.yaml
│   ├── serviceaccount.yaml
│   ├── namespace.yaml
│   ├── storage.yaml    # PVC
│   └── _helpers.tpl
└── examples/
    ├── dev-simple.yaml     # Development values example
    └── custom-config.conf  # Example HOCON config file

Configuration

All configuration is in values.yaml with inline documentation. Key sections:

Section Description
image Container image repository and tag
runtime Base config and optional custom config file mounting
env Plain-text environment variables
secrets / secretKeyRefs Secret creation or external secret references
configMaps / configMapVolumes ConfigMap creation or external ConfigMap mounting
ingress Kubernetes Ingress (nginx, ALB, etc.)
route OpenShift Route with TLS
storage PVC, S3, or Azure Blob storage
resources CPU/memory requests and limits
livenessProbe / readinessProbe Health checks

How It Works

The chart deploys the Mendix Portable Runtime container which starts with:

./bin/start <baseConfig> [customConfigFile...]
  • baseConfig — base configuration baked into the container image (default: etc/Default)
  • customConfigFile — optional overrides mounted from a ConfigMap

Configuration is layered: base config < custom config file < environment variables.

Custom Config Files (Optional)

You can optionally layer additional configuration on top of the base config by mounting a ConfigMap as a file. Define this in values:

runtime:
  baseConfig: "etc/Default"
  customConfigFiles:
    - name: custom
      configMapName: my-config        # external ConfigMap name
      key: custom-config.conf         # key in the ConfigMap
      filename: custom-config.conf    # filename to mount as
      mountPath: /opt/app/etc

The file uses HOCON format:

runtime {
  params {
    "DTAPMode" = "D"
    "SessionTimeout" = 2 minutes
  }
}

Database and Secrets

Database credentials and other secrets can be provided in multiple ways:

  1. Selective key references from an external secret:
secretKeyRefs:
  - envName: RUNTIME_PARAMS_DATABASEJDBCURL
    secretName: my-db-secret
    key: DATABASE_URL
  1. Import all keys from a secret as env vars:
secretEnvFrom:
  - name: my-db-secret
  1. Chart-created secrets (for development):
secrets:
  - name: db-credentials
    stringData:
      DATABASE_URL: "jdbc:postgresql://host:5432/db"

Common Operations

# Get pods
kubectl get pods -n <namespace>

# View logs
kubectl logs -l app=myapp-mendix-portable-runtime -n <namespace>

# Restart after ConfigMap content change
kubectl rollout restart deployment myapp-mendix-portable-runtime -n <namespace>

# Get route URL (OpenShift)
kubectl get route -n <namespace>

# Get ingress URL (Kubernetes)
kubectl get ingress -n <namespace>

About

Contains helm chart to deploy Mendix portable runtime app on Kubernetes cluster

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors