For the complete documentation index, see llms.txt. This page is also available as Markdown.

Azure AKS Helm Chart

Helm chart for deploying DecisionRules to Azure Kubernetes Service (AKS). What it deploys, what you need to provision separately, and how to configure it.

The decisionrules-aks chart deploys DecisionRules to Azure Kubernetes Service (AKS). Every component gets its own public Azure Load Balancer IP address. All configuration, including credentials, is set in values.yaml.

Chart name

decisionrules-aks

Helm repository

https://decisionrules.github.io/helm-charts/decisionrules-aks/

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:

Requirement
Required
Notes

AKS cluster

Yes

Any AKS cluster that can create Services of type LoadBalancer (the default).

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.

Redis

Yes

For example Azure Cache for Redis, see Cache - Azure Cache for Redis.

DecisionRules license key

Yes

LICENSE_KEY

DNS names and TLS

Optional

The chart publishes plain HTTP on port 80 of each load balancer. It does not configure TLS or DNS.

Outbound access to the license and distribution servers

Yes

The chart does not create MongoDB, Redis, DNS records or TLS certificates.

The chart does not set DB_TYPE, so it works with MongoDB, for example MongoDB Atlas. Azure Cosmos DB requires DB_TYPE, which this chart cannot set. To use Cosmos DB, deploy with your own manifests, see Kubernetes Setup.

What the chart deploys

Component
Resources created
Load balancer
Enabled

Namespace

Namespace named after the namespace value

–

Always

Client

Deployment decisionrules-client, Service decisionrules-client-service

Port 80 → container port 80

Always

Server

Deployment decisionrules-server, Service decisionrules-server-service, HorizontalPodAutoscaler decisionrules-server-autoscaling

Port 80 → container port 8080

Always

Business Intelligence

Deployment decisionrules-bi, Service decisionrules-bi-service

Port 80 → container port 8082

bi.enabled

AI Engine

Deployment decisionrules-ai, Service decisionrules-ai-service

Port 80 → container port 8084

ai.enabled

All Services are of type LoadBalancer, so each of them gets a public IP address on the cluster's Azure Load Balancer.

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.

For Azure Cache for Redis, the connection string usually includes the user default, for example rediss://default:<access_key>@<name>.redis.cache.windows.net:6380. The default REDIS_PING_INTERVAL of 5 minutes keeps the connection alive through the cache's 10-minute idle timeout.

Application URLs

The client and the server need to know their public URLs. The chart does not derive them, so you set them yourself:

Value
Meaning

env.server.API_URL

Public URL of the server

env.server.CLIENT_URL

Public URL of the client, ending with /#

env.client.API_URL

Public URL of the server, as called from the browser

env.client.BI_API_URL

Public URL of Business Intelligence (only with bi.enabled)

The load balancer IP addresses exist only after the first installation. The usual order is:

  1. Install the chart with the URLs left empty.

  2. Read the IP addresses from the EXTERNAL-IP column of kubectl get svc -n decisionrules. Optionally create DNS records for them.

  3. Set the URLs in your values file and run helm upgrade.

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

Business Intelligence — bi.enabled (default: false)
  • Creates the Business Intelligence Deployment and its own public load balancer IP.

  • Requires env.bi.BI_MONGO_DB_URI.

  • Set env.client.BI_API_URL to the address of the BI load balancer, otherwise the client cannot use Business Intelligence features.

AI Engine — ai.enabled (default: false)
  • Creates the AI Engine Deployment and its own public load balancer IP.

  • Sets AI_ENGINE_URL on the server automatically.

  • The chart does not pass any AI provider settings to the AI Engine. Configure the AI provider in DecisionRules, see AI Assistant Provider and AI Engine providers and models.

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

Value
Default
Description

namespace

decisionrules

Namespace the chart creates and deploys into.

bi.enabled

false

Deploy Business Intelligence.

ai.enabled

false

Deploy the AI Engine.

solver

aero

Server sizing profile: aero or gaia, see Server sizing.

solverProfiles.aero, solverProfiles.gaia

Server resources, minReplicas and maxReplicas of each profile.

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.server.WORKERS_NUMBER

"1"

Number of server worker processes.

env.server.RF_TIMEOUT

"5000"

Rule Flow timeout in milliseconds.

env.server.SR_TIMEOUT

"5000"

Rule solve timeout in milliseconds.

env.server.WORKFLOW_TIMEOUT

"10000"

Workflow timeout in milliseconds.

env.server.FLUSH_REDIS_ON_STARTUP

"false"

Flush Redis when the server starts.

env.server.IN_MEMORY_RULE_COUNT

"100"

Number of rules cached in memory.

env.server.CONNECTION_TIMEOUT

"60000"

Connection timeout in milliseconds.

env.server.REDIS_PING_INTERVAL

"300000"

Interval of Redis keep-alive pings in milliseconds.

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

Then read the load balancer addresses and, if needed, update the URLs:

Verify

All Pods should be Running and ready. If the server keeps restarting, check its log with kubectl logs deploy/decisionrules-server -n decisionrules.

Last updated

Was this helpful?