Docs
Installation Guides
Red Hat OpenShift

Red Hat OpenShift Installation

Free-tier clusters still need a no-cost license key. Request a free key.

Prerequisites

  • OpenShift cluster, 4.13+.
  • oc CLI configured for the target cluster.
  • helm 3.

Method 1: Red Hat Ecosystem Catalog (Certified)

⚠️

License key required, even for free-tier usage. Request a free key for clusters under 200 vCPUs.

Uses the Red Hat-certified Helm chart and Red Hat UBI-based images.

The Red Hat Ecosystem Catalog page is for verifying the certified status of the product; the actual helm install uses the OpenShift Helm Charts repo. The registry.connect.redhat.com registry is the source for the certified container images that the chart pulls.

Get a Red Hat image pull secret

The pull secret authenticates against registry.connect.redhat.com (image pulls), not against the Helm chart repository.

  1. Visit https://access.redhat.com/terms-based-registry/accounts (opens in a new tab).
  2. Log in with your Red Hat account and create a Service Account.
  3. Open the Service Account's detail page and select the OpenShift Secret tab.
  4. Click Download secret or view its contents to obtain the Secret YAML.
  5. Copy the value of data[".dockerconfigjson"] from the Secret YAML into redhat.dockerconfigjson in values-redhat.yaml below.

values-redhat.yaml

values-redhat.yaml
redhat:
  enabled: true
  dockerconfigjson: "<REDHAT_REGISTRY_SERVICE_ACCOUNT_DOCKERCONFIGJSON>"
 
license:
  key: "<LICENSE_KEY>"
 
spec:
  # Option A: create a new PVC and specify a StorageClass.
  storageClassName: "<STORAGE_CLASS_NAME>"
 
  # Option B: use a pre-existing PVC.
  # existingPvcName: "<EXISTING_PVC_NAME>"

Install

Replace <CHART_VERSION> with the certified Wave Autoscale OpenShift chart version.

CMD
helm repo add wave-autoscale-helm https://charts.openshift.io/
helm repo update
 
helm install wave-autoscale-helm wave-autoscale-helm/wave-autoscale-helm \
  -f values-redhat.yaml \
  --version <CHART_VERSION> \
  --create-namespace \
  -n wave-autoscale

Method 2: GHCR (OpenShift chart)

⚠️

License key required, even for free-tier usage. Request a free key for clusters under 200 vCPUs.

Uses the Wave-published OpenShift Helm chart with GHCR-hosted images. The chart includes OpenShift resources and SCC settings.

  • Helm chart: https://release.waveautoscale.io/helm-chart-openshift
  • Image registry: ghcr.io/stclab-inc/*
  • Pull secret: GHCR pull secret provided by the Wave team.

values-openshift-ghcr.yaml

values-openshift-ghcr.yaml
ghcr:
  enabled: true
  dockerconfigjson: "<GHCR_PULL_SECRET_DOCKERCONFIGJSON>"
 
license:
  key: "<LICENSE_KEY>"
 
spec:
  # Option A: create a new PVC and specify a StorageClass.
  storageClassName: "<STORAGE_CLASS_NAME>"
 
  # Option B: use a pre-existing PVC.
  # existingPvcName: "<EXISTING_PVC_NAME>"

Install

Replace <CHART_VERSION> with the OpenShift Helm chart version.

CMD
helm repo add wave-autoscale-helm https://release.waveautoscale.io/helm-chart-openshift
helm repo update
 
helm install wave-autoscale-helm wave-autoscale-helm/wave-autoscale-helm \
  -f values-openshift-ghcr.yaml \
  --version <CHART_VERSION> \
  --create-namespace \
  -n wave-autoscale

Method 3: Red Hat certified Operator (OperatorHub)

⚠️

License key required, even for free-tier usage. Request a free key for clusters under 200 vCPUs.

The Red Hat-certified Operator installs Wave with one click from the in-cluster OperatorHub, with no Helm CLI. Operator Lifecycle Manager (OLM) installs the Wave controller and the wavek8s.com CRDs; you then create a single Wave custom resource to deploy the platform. Certified images are pulled from registry.connect.redhat.com/stclab-inc/* using OpenShift's global cluster pull secret, so no dockerconfigjson value is needed.

Install

  1. In the OpenShift web console, go to Operators → OperatorHub and search for Wave Autoscale.
  2. Click Install, choose the wave-autoscale namespace (OLM can create it), and confirm. OLM installs the controller and the CRDs.
  3. When the Operator status is Succeeded, create a Wave custom resource, either from the Operator's Create Wave form, or by applying the YAML below. Its spec accepts the same keys as the Helm values file.
wave-cr.yaml
apiVersion: wavek8s.com/v1alpha1
kind: Wave
metadata:
  name: wave-autoscale
  namespace: wave-autoscale
spec:
  # The Wave CR .spec accepts the same keys as the Helm values file.
  license:
    key: "<LICENSE_KEY>"          # or: existingSecret: "<SECRET_NAME>"
  # Other chart values nest here too, e.g. storage:
  # spec:
  #   storageClassName: "<STORAGE_CLASS_NAME>"
CMD
oc apply -f wave-cr.yaml

To upgrade, let OLM roll the Operator (Automatic approval) or approve the InstallPlan (Manual); to change operand image tags, set them under the Subscription's spec.config.env.

OpenShift-specific notes

  • All three methods require OpenShift 4.13+.
  • Both Helm charts include OpenShift-specific resources: SecurityContextConstraints (SCCs), ServiceAccount RBAC, and OpenShift-aware DaemonSet configuration.
  • Wave's StatefulSet runs with privileged SCC for the Agent DaemonSet; the certified chart uses wave-autoscale-priority and wave-autoscale-agent-priority SCCs.

Arbitrary UID support

Wave 3.4.4+.

OpenShift's default restricted-v2 SCC assigns each namespace a random UID from a per-namespace range and runs containers as that UID with GID 0. Wave's Core and Intelligence images support this: their home, cache, and data directories are owned by group 0 and are group-writable, and HOME is set explicitly rather than left to resolve from /etc/passwd.

This matters because a container run under an unexpected UID has no matching passwd entry, so HOME silently resolves to /. Before 3.4.4 that broke two things at startup on OpenShift: DuckDB looked for its ICU extension under //.duckdb, and the Python runtime could not create its cache directory. Both surfaced as a crash loop immediately after install, not as a permissions message.

If you are running an OpenShift cluster with a non-default namespace UID range, or a custom SCC that pins runAsUser, no extra configuration is needed on 3.4.4 or later. If you are on an earlier version and see Core or Intelligence pods crash-looping at startup, upgrade rather than relaxing the SCC.

Verify the install

CMD
oc get pods -n wave-autoscale

Open the web console:

CMD
oc port-forward -n wave-autoscale svc/wave-autoscale-svc 3025:3025

Browse to http://localhost:3025.

Default login: username admin, password waveautoscale. Change these from the web console's user-management UI as soon as you're set up.

Update

CMD
helm repo update
 
helm upgrade wave-autoscale-helm wave-autoscale-helm/wave-autoscale-helm \
  -f values-redhat.yaml \
  --version <CHART_VERSION> \
  -n wave-autoscale

(Use the values file that matches your chosen method.)

Uninstall

CMD
helm uninstall wave-autoscale-helm -n wave-autoscale
⚠️

PVC retention: the StatefulSet retention policy keeps PVCs after uninstall. Delete the PVC manually only when stored data is no longer needed.

Next steps