Helm Chart
Details
The Oracle AI Optimizer and Toolkit (the AI Optimizer) was specifically designed to run on infrastructure supporting microservices architecture, including Kubernetes. A Helm Chart is provided to make the deployment easier.
This page is a deployment overview plus the handful of choices that matter in practice. For the full configuration surface, read helm/values.yaml or run:
Go Local
Want to try it on your laptop first? A full walkthrough on a local Kubernetes cluster using Docker container “nodes” via the Kind tool is provided below.
Before You Install
You’ll need:
- A Kubernetes cluster.
- A namespace for the release.
- Pinned container images for the server and client.
- An API key Secret or
global.api.apiKey. - A stable Client cookie signing Secret or
client.cookieSecret. - Database connectivity, unless you only want the application pods rendered without database wiring.
If you’re installing from a local checkout, fetch the subchart dependencies first:
Images
No Floating Tags
The chart rejects latest, head, and canary at render time. Build immutable tags (typically the application version you’re deploying) and pass them through server.image.tag and client.image.tag. Leave both empty to inherit Chart.appVersion.
Build and push your images:
In values, either provide fully-qualified repositories:
Or set global.imageRegistry and keep component repositories unqualified:
Minimal Values
Production Hygiene
Inline credentials in a values file get committed by accident. Create Kubernetes Secrets and reference them by name; the chart auto-generates a strong password where one isn’t supplied and keeps it across upgrades via helm.sh/resource-policy: keep.
Create the namespace and pre-shared Secrets up front:
Example values:
For throwaway tests you can pass values inline with --set-string, but don’t ship credentials that way.
Database Modes
The chart supports four database modes:
| Mode | Use When | Notes |
|---|---|---|
SIDB-FREE | You want the chart to run Oracle Database Free in the cluster. | Requires a pinned server.database.image.tag. |
ADB-FREE | You want the chart to run Autonomous Database Free in the cluster. | Requires a pinned server.database.image.tag. |
ADB-S | You have an OCI Autonomous Database. | Requires the Oracle Database Operator CRD in the cluster. |
OTHER | You bring an external Oracle Database connection string. | The chart renders only the application DB Secret and server wiring. |
If server.database.type is empty, no database resources or DB environment variables are rendered.
Container database example:
External database example:
ADB-S example:
server.database.authn configures the application database credentials. server.database.privAuthn configures privileged credentials used by chart-managed user setup for database modes that need it.
More information about configuring the database can be found in the Database Configuration documentation.
OCI And Model Secrets
OCI settings live under server.ociConfig. On OKE, prefer workload identity:
For non-OKE installs, create a Kubernetes Secret from an OCI config file:
Then reference it with server.ociConfig.fileSecretName: oci-config-file (or whatever you passed to --secret-name).
Third-party model credentials are provided by Secret references. For example:
More information about OCI configuration can be found in the OCI Configuration documentation.
Observability
OpenTelemetry export is controlled by server.otel.enabled. You can point it at your own collector:
Or deploy the in-chart SigNoz stack:
Observability is Hungry
The observability collector, query service, and UI together want several GiB of memory โ plan accordingly. Persistent Volume Claims (PVCs) are preserved on uninstall; set global.cleanupPVCs=true only when you intentionally want telemetry storage deleted.
More information about reading traces and dashboards can be found in the Observability documentation.
Environment Overrides
Most application settings should be configured through chart values or Kubernetes Secrets. If you need to provide application .env content, use the chart-managed env Secret blocks:
Pod environment variables rendered by the chart take precedence over .env content. See Configuration for application variables.
Optional Components
The web client is enabled by default. Disable it with:
Ollama is disabled by default. Enable it only on a cluster with suitable CPU, memory, and preferably GPU scheduling:
Deploy
Install from the published chart repository:
Install from a local checkout:
Use helm lint and helm template before applying changes:
Kind Example
Kind is useful for chart development and quick local testing.
Create values-kind.yaml:
Deploy:
Check the release and open the client:
Open http://localhost:8501.
What’s Next?
With **AI Optimizer** up and running, the natural next steps are:
- Swap the in-cluster Free database for an
ADB-Sinstance on OCI. - Turn on autoscaling (
server.autoscaling.enabled) once you’re past the single-pod prototype. - Enable observability with the bundled SigNoz stack or your own collector.
- Front the client and server with TLS.