Deploying Mendix Portable Runtime Using Helm Charts
Introduction
The Mendix Portable Runtime Helm Chart provides a reference deployment template for running Mendix Portable Runtime applications on Kubernetes and OpenShift platforms. The Helm Chart simplifies the deployment of Portable Runtime container images by providing pre-configured Kubernetes resources for application runtime, networking, configuration management, secrets, and storage.
This deployment approach is intended for customers who want to run Mendix Portable Runtime in self-managed Kubernetes environments without using the Mendix Operator. The chart can serve as a starting point for production deployments and can be extended to meet organisation-specific requirements.
Open Source Disclaimer
The Mendix Portable Runtime Helm Chart is an open-source Mendix Labs project provided for guidance purposes. The repository serves as a deployment template demonstrating one possible approach for running Mendix Portable Runtime applications on Kubernetes and OpenShift environments. Customers should review and adapt the implementation to align with their platform standards and operational requirements.
Support Considerations
The Helm Chart provides deployment automation for Kubernetes resources but does not change the Mendix Portable Runtime support model.
Mendix supports the Portable Runtime package and runtime capabilities. Customers remain responsible for the following tasks:
- Kubernetes cluster management
- Container image management
- Security hardening
- Networking and ingress configuration
- Storage configuration
- Backup and disaster recovery procedures
- Operational monitoring and alerting
The Helm Chart should therefore be treated as a deployment accelerator rather than a fully supported deployment product.
Prerequisites
Before deploying a Mendix Portable Runtime application using Helm, ensure that you have the following prerequisites:
- A Mendix Portable Runtime deployment package
- A container image containing your Mendix application
- Helm 3.x installed
- Kubernetes 1.34+ or OpenShift 4.x
- Access to a Kubernetes or OpenShift cluster
- Database and storage services provisioned for your application requirements
For information on creating Portable Runtime deployment packages, see Mendix Portable Runtime.
Obtaining the Helm Chart
The reference Helm Chart is available from the Mendix Portable Runtime Helm Charts Repository.
The repository contains the following artifacts:
- Helm chart templates
- Example deployment configurations
- Sample configuration files
- Kubernetes and OpenShift deployment examples
- Documentation and usage guidance
Helm Chart Structure
The chart follows a standard Helm layout:
mendix-portable-runtime/
├── Chart.yaml
├── values.yaml
├── templates/
│ ├── deployment.yaml
│ ├── service.yaml
│ ├── ingress.yaml
│ ├── route.yaml
│ ├── configmap.yaml
│ ├── secret.yaml
│ ├── serviceaccount.yaml
│ ├── namespace.yaml
│ └── storage.yaml
└── examples/
├── dev-simple.yaml
└── custom-config.confThe templates directory contains Kubernetes resource definitions, while values.yaml provides the deployment configuration used during chart installation.
How the Helm Chart Works
The Helm Chart deploys a container image containing a Mendix Portable Runtime application. During startup, the application is launched using the standard Portable Runtime startup mechanism:
./bin/start <baseConfig> [customConfigFile...]
`Configuration is applied using the Portable Runtime layered configuration model:
Base Configuration
↓
Environment Variables
↓
Custom Configuration Files
`This model enables common settings to be maintained in a base configuration while environment-specific overrides are supplied through mounted configuration files or environment variables.
Installing the Chart
To install the Helm Chart, perform the following steps:
- Clone or download the Helm Chart repository and navigate to the chart directory.
- Install the application by running the following command:
helm install myapp . \
-f examples/dev-simple.yaml \
-n <namespace>- To preview the generated Kubernetes resources before deployment, run the following command:
helm template myapp . \
-f examples/dev-simple.yamlUpgrading a Deployment
To upgrade an existing deployment, run the following command:
helm upgrade myapp . \
-f examples/dev-simple.yaml \
-n <namespace>Uninstalling a Deployment
To uninstall the deployment, run the following command:
helm uninstall myapp \
-n <namespace>Configuring the Deployment
The primary deployment configuration is stored in values.yaml. The chart exposes configuration options for ingress and Openshift Route in the following sections:
image- Container image repository and tag or digestruntime- Portable Runtime configurationenv- Environment variablessecrets- Secret creationsecretKeyRefs- References to external Kubernetes secretsconfigMaps- ConfigMap creation and mountingingress- Kubernetes Ingress configurationroute- OpenShift Route configurationstorage- Persistent storage configurationresources- CPU and memory requests and limitslivenessProbe- Runtime health monitoringreadinessProbe- Traffic readiness validation
Using Custom Configuration Files
Portable Runtime supports layered configuration through external configuration files. The Helm Chart allows configuration files to be mounted through Kubernetes ConfigMaps:
runtime:
baseConfig: "etc/Default"
customConfigFiles:
- name: custom
configMapName: my-config
key: custom-config.conf
filename: custom-config.conf
mountPath: /opt/app/etcExample Configuration File
runtime {
params {
"DTAPMode" = "D"
"SessionTimeout" = 2 minutes
}
}Configuration values supplied through environment variables take precedence over configuration file settings.
Managing Secrets
Database credentials and application secrets can be supplied through Kubernetes Secrets.
Referencing Existing Secrets
secretKeyRefs:
- envName: RUNTIME_PARAMS_DATABASEJDBCURL
secretName: my-db-secret
key: DATABASE_URLImporting All Secret Values
secretEnvFrom:
- name: my-db-secretCreating Secrets Through the Chart
secrets:
- name: db-credentials
stringData:
DATABASE_URL: jdbc:postgresql://host:5432/db For production environments, it is recommended to use externally managed Kubernetes secrets.
Operations and Monitoring
The following commands can be used to manage the deployment.
Listing Running Pods
kubectl get pods -n <namespace>Viewing Application Logs
kubectl logs \
-l app=myapp-mendix-portable-runtime \
-n <namespace>Restarting the Deployment after Updating ConfigMaps or Secrets
kubectl rollout restart deployment \
myapp-mendix-portable-runtime \
-n <namespace>Viewing Configured Ingress Resources
kubectl get ingress -n <namespace>Viewing Routes for OpenShift Deployments
kubectl get route -n <namespace>Read More
- Mendix Portable Runtime
- Best practices for Kubernetes
- Reference Guide for Docker Deployment
- Mendix Portable Runtime Helm Charts Repository