Skip to main content
The chart at deploy/helm/opencluster is not a complete OpenCluster installation. It deploys the control plane only. You must supply PostgreSQL, ingress, and TLS termination. A separately deployed browser console is optional and needs same-origin routing.

Prerequisites

You need Kubernetes, Helm 3, a reachable PostgreSQL database, outbound HTTPS access to the selected model provider, and two Secrets:
  • opencluster-database with key postgres-dsn;
  • opencluster-credentials with keys bootstrap-token, sealing-key, and model-key.
The shipped chart names these Secret keys bootstrap-token and sealing-key; they supply the administrator bootstrap token and 32-byte credential-encryption key respectively. The bootstrap token must be at least 32 characters and the encryption key exactly 32 bytes. Do not put their values in Helm values or command history.

Install

Create a values file with the public URL, released image, model provider, and model:
Install from a checkout of the matching release:

Verify

The rollout proves only that the control-plane component is ready. The installation is usable only after ingress routes /api/v1, /webhooks/v1, /healthz, and /readyz to the HTTP Service on the configured public origin. Verify both probes through that route:
Both commands must succeed before the deployment accepts user traffic.

Optional Relay listener

Set relay.enabled=true, provide at least one relay.spkiPins value, and name a TLS Secret in relay.tls.existingSecret. The Secret must contain the configured certificate and private-key keys. Expose the Relay port only to customer Relays; they initiate the connection and pin the control-plane public key.

Resources and upgrades

The chart intentionally ships no generic CPU or memory requests. Set requests and limits from measured Investigation concurrency and provider workloads before production. OSS v0.1 does not publish a qualified in-place upgrade path. Do not infer compatibility from image or chart tags; see Feature availability. Back up PostgreSQL, disable any autoscaler that could restart old replicas, scale the old Deployment to zero, and wait for every old Pod to terminate. Do not use a rolling upgrade or run mixed versions against one database. The current ledgered baseline migrates only when retained user Message attribution agrees with each Conversation source, every retained nonempty Investigation question has assigned user Messages, and any nonempty Postmortem reviewer is the UUID of an existing User. A failed check rolls back the migration without changing the old schema; repair the data with the old version or restore the backup before retrying. Unknown or unledgered pre-release schemas still require a fresh application database and complete setup. Update API clients before the new Pods start. Conversations now expose source (web or slack) instead of surface and have no lifecycle state; Message roles are user and assistant, attribution uses authorId and authorName, and replies are assistant Messages rather than Turn answers. Final hypotheses have no ID or exploring status; Investigation event envelopes use schemaVersion: 2 with seven compact payloads.

Common failure and recovery

If the rollout stalls, inspect kubectl --namespace opencluster describe deployment/opencluster-opencluster and the control-plane Pod logs. Correct missing Secret keys, database reachability, or model provider configuration, then rerun the Helm command. A ready Pod does not compensate for missing ingress or TLS routing.

Next step

After ingress and TLS routing are verified, use the API to create the first User and Organization and continue with the Quickstart.