Red Hat OpenShift Installation
Free-tier clusters still need a no-cost license key. Request a free key.
Prerequisites
- OpenShift cluster, 4.13+.
ocCLI configured for the target cluster.helm3.
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.
- Product page: https://catalog.redhat.com/en/software/container-stacks/detail/6889da8b7d210ca6f32ec53a (opens in a new tab)
- Helm chart repository:
https://charts.openshift.io/ - Image registry:
registry.connect.redhat.com/stclab-inc/*
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.
- Visit https://access.redhat.com/terms-based-registry/accounts (opens in a new tab).
- Log in with your Red Hat account and create a Service Account.
- Open the Service Account's detail page and select the OpenShift Secret tab.
- Click Download secret or view its contents to obtain the Secret YAML.
- Copy the value of
data[".dockerconfigjson"]from the Secret YAML intoredhat.dockerconfigjsoninvalues-redhat.yamlbelow.
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.
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-autoscaleMethod 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
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.
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-autoscaleMethod 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
- In the OpenShift web console, go to Operators → OperatorHub and search for Wave Autoscale.
- Click Install, choose the
wave-autoscalenamespace (OLM can create it), and confirm. OLM installs the controller and the CRDs. - When the Operator status is Succeeded, create a
Wavecustom resource, either from the Operator's Create Wave form, or by applying the YAML below. Itsspecaccepts the same keys as the Helm values file.
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>"oc apply -f wave-cr.yamlTo 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-priorityandwave-autoscale-agent-prioritySCCs.
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
oc get pods -n wave-autoscaleOpen the web console:
oc port-forward -n wave-autoscale svc/wave-autoscale-svc 3025:3025Browse 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
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
helm uninstall wave-autoscale-helm -n wave-autoscalePVC retention: the StatefulSet retention policy keeps PVCs after uninstall. Delete the PVC manually only when stored data is no longer needed.
Next steps
- Important: Before You Begin: runtime behaviors to know.
- Helm Values & Environment Variables: full env vars and Helm values.
- Troubleshooting: common issues.