Ingress Helm Chart
Helm chart for deploying DecisionRules to any Kubernetes cluster with the NGINX Ingress Controller and cert-manager. What it deploys, what you need to provision separately, and how to configure it.
The decisionrules-ingress chart deploys DecisionRules to any Kubernetes cluster that runs the NGINX Ingress Controller and cert-manager. All components are exposed through a single Ingress with one hostname per component and a TLS certificate from cert-manager. All configuration, including credentials, is set in values.yaml.
Chart name
decisionrules-ingress
Helm repository
https://decisionrules.github.io/helm-charts/decisionrules-ingress/
Artifact Hub
Images
decisionrules/client, decisionrules/server, decisionrules/business-intelligence, decisionrules/ai-engine from Docker Hub
What you need to provision separately
The chart deploys only the DecisionRules application. Prepare the following before you install it:
Kubernetes cluster
Yes
Any distribution.
NGINX Ingress Controller
Yes
The Ingress uses the ingress class nginx. See step 2 of Kubernetes Setup.
cert-manager with a ClusterIssuer named letsencrypt-prod
Yes
The chart references this exact name. See steps 3 and 4 of Kubernetes Setup.
DNS records
Yes
One hostname per component, all pointing at the external IP address of the NGINX Ingress Controller.
MongoDB
Yes
The main database (MONGO_DB_URI) and, with Business Intelligence, the audit database (BI_MONGO_DB_URI). For MongoDB Atlas, see MongoDB Atlas Network Peering.
DecisionRules license key
Yes
LICENSE_KEY
Outbound access to the license and distribution servers
Yes
See Prerequisites, or use an Offline License.
The chart does not install the Ingress Controller or cert-manager, and does not create MongoDB, Redis or DNS records.
What the chart deploys
Namespace
Namespace named after the namespace value
–
Always
Client
Deployment decisionrules-client, Service decisionrules-client-service
80
Always
Server
Deployment decisionrules-server, Service decisionrules-server-service, HorizontalPodAutoscaler decisionrules-server-autoscaling
8080
Always
Business Intelligence
Deployment decisionrules-bi, Service decisionrules-bi-service
8082
bi.enabled
AI Engine
Deployment decisionrules-ai, Service decisionrules-ai-service
8084
ai.enabled
Ingress
Ingress decisionrules-ingress
–
Always
The Services are cluster-internal (ClusterIP). The Ingress routes each hostname from domain to its Service:
domain.client
Client
Always
domain.api
Server
Always
domain.bi
Business Intelligence
bi.enabled
domain.ai
AI Engine
ai.enabled
The Ingress has the annotation cert-manager.io/cluster-issuer: letsencrypt-prod. cert-manager requests one certificate for all included hostnames and stores it in the Secret echo-tls in the release namespace.
Credentials
LICENSE_KEY, MONGO_DB_URI, REDIS_URL and BI_MONGO_DB_URI are set in values.yaml (env.server and env.bi) and passed to the Deployments as plain environment variables.
Application URLs
The chart does not derive the URLs from the hostnames, so set them to match domain:
env.server.API_URL
https://<domain.api>
env.server.CLIENT_URL
https://<domain.client>/# (the trailing /# is mandatory)
env.client.API_URL
https://<domain.api>
env.client.BI_API_URL
https://<domain.bi> (only with bi.enabled)
When the AI Engine is enabled, the chart also sets AI_ENGINE_URL on the server to the cluster-internal address of the AI Engine Service, so you do not need to configure it.
Optional components
Server sizing
The solver value sizes the server for the rule solver you use:
solver
Use for
Server CPU / memory per Pod
Autoscaling
aero (default)
AERO (v2) solver or mixed v1/v2 traffic
4000m / 4Gi (requests = limits)
2–5 Pods
gaia
GAIA (v1) solver only
1000m / 1Gi requests, 2000m / 2Gi limits
2–10 Pods
AERO uses several CPUs within one process, so it runs best on fewer, larger replicas. The profiles are defined in solverProfiles in the chart's values.yaml, so you can adjust them, for example --set solverProfiles.aero.maxReplicas=8. To size the server yourself regardless of the profile, set resources.server and autoscalingServer.minReplicas / maxReplicas; they take precedence over the profile. See server sizing for scaling and resource reserve.
Configuration reference
namespace
decisionrules
Namespace the chart creates and deploys into.
bi.enabled
false
Deploy Business Intelligence.
ai.enabled
false
Deploy the AI Engine.
solverProfiles.aero, solverProfiles.gaia
see Server sizing
Server resources, minReplicas and maxReplicas of each profile.
domain.client
yourdomain.local
Client hostname.
domain.api
api.yourdomain.local
Server hostname.
domain.bi
bi.yourdomain.local
Business Intelligence hostname.
domain.ai
ai.yourdomain.local
AI Engine hostname.
env.client.API_URL
""
Server URL used by the client.
env.client.BI_API_URL
""
Business Intelligence URL used by the client.
env.server.API_URL
""
Public URL of the server.
env.server.CLIENT_URL
""
Public URL of the client, ending with /#.
env.server.LICENSE_KEY
""
License key.
env.server.MONGO_DB_URI
""
Main database connection string.
env.server.REDIS_URL
""
Redis connection string.
env.bi.BI_MONGO_DB_URI
""
Audit database connection string.
images.client, server, bi, ai
decisionrules/<component>
Image references. Pin a version in production, for example decisionrules/server:1.26.2.1.
resources.client
250m / 128Mi requests, 500m / 256Mi limits
CPU and memory.
resources.server
From the solver profile
CPU and memory of the server. Overrides the profile when set.
resources.bi
1 CPU / 1Gi requests, 2 CPU / 4Gi limits
CPU and memory.
resources.ai
1 CPU / 1Gi requests, 2 CPU / 2Gi limits
CPU and memory.
replicaCount.client, server, bi, ai
2 each
Number of Pods. For the server, the autoscaler takes over.
autoscalingServer.minReplicas / maxReplicas
From the solver profile
Server autoscaling range (2–5 for aero, 2–10 for gaia). Overrides the profile when set.
autoscalingServer.targetCPUUtilizationPercentage
60
Server CPU target.
See Environment Variables for details on each variable.
Example values
Install
Install the NGINX Ingress Controller and cert-manager, and create the letsencrypt-prod ClusterIssuer first (steps 2 to 4 of Kubernetes Setup). Point the DNS records at the Ingress Controller's external IP address (kubectl get svc -n ingress-nginx). Then install the chart:
Verify
All Pods should be Running and ready, and the certificate should show READY True. If the certificate stays not ready, check that every hostname in the Ingress resolves to the Ingress Controller: kubectl describe certificate -n decisionrules.
Last updated
Was this helpful?

