Install Lumi Enterprise on OpenShift
This information applies to Imply Lumi Enterprise deployments on OpenShift.
Lumi Enterprise on OpenShift is an early access feature.
This topic walks you through installing Lumi Enterprise on bare-metal OpenShift using a Helm chart.
Placeholder values are shown in uppercase—for example, DATABASE_HOST.
Replace these with values for your own environment.
Before you install Lumi Enterprise, make sure you've completed the setup topics listed in Deploy Lumi Enterprise. These cover your credentials, permissions, dependencies, networking, and nodes.
Installation steps
Follow these steps to install Lumi Enterprise on OpenShift:
-
Authenticate to the OCI registry:
helm registry login registry-1.docker.io \--username DOCKERHUB_USERNAME \--password DOCKERHUB_PAT -
Pull the default
values.yamlfile:helm show values oci://registry-1.docker.io/imply/lumi --version {LEA_CHART_VERSION} > values.yaml -
Edit the
values.yamlfile with your configuration. Set the following fields:tenantId,apiKey, andcustomerIddatabase,kafka, andobjectStoreingress.hostgateway.ingress.enabledandgateway.ingress.className, orgateway.service.typeif you expose the gateway with a load balancerauthregistry.pullSecret, orregistry.dockerhub.usernameandregistry.dockerhub.password- The resources and storage volumes for the data, broker, coordinator, and ingestion nodes. For recommended starting sizes, see Size and prepare nodes.
For the full list of available fields, see the Helm chart reference.
The following example shows a sample
values.yamlfor deploying Lumi Enterprise on OpenShift bare metal:Click to view the example
database:host: DATABASE_HOSTport: 3306username: DATABASE_USERNAMEpassword: DATABASE_PASSWORD# Identifiers provided by Imply. Contact your Imply representative if you don't have these.tenantId: TENANT_IDcustomerId: CUSTOMER_IDapiKey: API_KEYdata:count: 3resources:requests:cpu: 2400mmemory: 18582Mlimits:cpu: 4000mmemory: 20480MstorageVolumes:- maxSize: 2469Gvolume:hostPath:path: /mnt/k8s-disks/0tmpStorageVolume:maxSize: 10Givolume:emptyDir:sizeLimit: 10Givirtual:count: 1resources:requests:cpu: 1000mmemory: 5Glimits:cpu: 1000mmemory: 6GstorageVolumes:- maxSize: 50Gvolume:emptyDir:sizeLimit: 50GtmpStorageVolume:maxSize: 10Givolume:emptyDir:sizeLimit: 10Gibroker:count: 2resources:requests:cpu: 2400mmemory: 12052Mlimits:cpu: 4000mmemory: 13246Mcoordinator:count: 2resources:requests:cpu: 2400mmemory: 8635Mlimits:cpu: 4000mmemory: 9500Mingest:resources:requests:cpu: 2000mmemory: 18000Mlimits:cpu: 8000mmemory: 19400MstorageVolume:maxSize: 100Gvolume:emptyDir:sizeLimit: 100GworkerPools:- name: worker-smallresources:requests:cpu: 2400mmemory: 24000Mlimits:memory: 24000MstorageVolume:maxSize: 100Gvolume:emptyDir:sizeLimit: 100G- name: worker-mediumresources:requests:cpu: 6000mmemory: 50000Mlimits:memory: 50000MstorageVolume:maxSize: 150Gvolume:emptyDir:sizeLimit: 150G- name: worker-largeresources:requests:cpu: 13000mmemory: 105000Mlimits:memory: 105000MstorageVolume:maxSize: 200Gvolume:emptyDir:sizeLimit: 200GvirtualCompute:enabled: truetshirtSizes:- size: sname: SmallworkerPool: worker-smallnodeCount: 2maxConcurrency: 4- size: mname: MediumworkerPool: worker-mediumnodeCount: 4maxConcurrency: 8- size: lname: LargeworkerPool: worker-largenodeCount: 4maxConcurrency: 12# Base domain Lumi is served from. DNS and any TLS certificate must also cover *.<your-domain>, where the per-service hostnames live.ingress:host: lumi.YOUR_DOMAINgateway:ingress:enabled: trueclassName: openshift-lumi-externalannotations:route.openshift.io/termination: edgeobjectStore:s3:accessKey: ACCESS_KEYsecretKey: SECRET_KEYbucket: BUCKET_NAMEendpoint: ENDPOINT_URLregion: us-east-1usePathStyle: trueregistry:containerRepo: registry-1.docker.io/implychartRepo: oci://registry-1.docker.io/implydockerhub:username: DOCKERHUB_USERNAMEpassword: DOCKERHUB_PASSWORDauth:# Email address for the initial admin user. Used as the admin username to log in to Lumi.username: ADMIN_USERNAMEpassword: ADMIN_PASSWORDrsa:# Generate with: openssl genrsa -out private.pem 2048privateKey: RSA_PRIVATE_KEY# Generate with: openssl rsa -in private.pem -pubout -out public.pempublicKey: RSA_PUBLIC_KEYkafka:bootstrap:servers: KAFKA_BOOTSTRAP_SERVERSsecurity:protocol: SASL_SSLsasl:mechanism: SCRAM-SHA-512username: KAFKA_USERNAMEpassword: KAFKA_PASSWORDeventCollector:s2s:service:# Use LoadBalancer if your cluster has a load balancer provider configured.# Otherwise, use ClusterIP or NodePort.type: ClusterIPtls:secretName: TLS_SECRET_NAME -
Install the Helm chart:
helm install lumi oci://registry-1.docker.io/imply/lumi \--version {LEA_CHART_VERSION} \-f values.yaml \--namespace NAMESPACEYour output should be similar to the following:
NAME: lumiLAST DEPLOYED: Wed Sep 9 11:15:19 2026NAMESPACE: lumi-enterpriseSTATUS: deployedREVISION: 1DESCRIPTION: Install completeTEST SUITE: None -
Check the status:
helm status lumi -n NAMESPACE -
Check if pods are starting, run the following command. It may take several minutes for all pods to come up.
oc get pods -n NAMESPACEThe
update-clientservice starts running and connects to the Imply update server to pull the latest Bill of Materials (BOM) and deploy the remaining Lumi services. -
Verify that you can reach the UI by opening
https://YOUR_INGRESS_HOSTin a browser and confirming the Lumi login page loads. Sign in with the admin username and password you set inauth.usernameandauth.password.
For a more thorough check of your deployment, including pod health, ingestion, and search, see Verify your Lumi Enterprise deployment.
The bootstrap Job
Installing the Lumi Helm chart creates a one-time bootstrap Job in your release namespace.
This Job installs the update-client service, which manages the rest of the Lumi deployment and keeps itself up to date.
The bootstrap Job is a seed step, not an ongoing component.
It checks whether the update-client is already installed, and exits without making changes if it is.
Re-running helm upgrade doesn't repeat the bootstrap process.
The Job pod exits once it completes.
If a service is missing after installation, check the bootstrap Job first:
oc -n NAMESPACE get jobs
A healthy bootstrap Job shows 1/1 under COMPLETIONS.
Check its logs for a line ending in Bootstrap successful!:
oc -n NAMESPACE logs job/BOOTSTRAP_JOB_NAME
Upgrade Lumi Enterprise
Lumi Enterprise on OpenShift supports both automatic and custom upgrade paths.
Once installed, the update-client service periodically checks the Imply update server for a new BOM and automatically upgrades Lumi internal components to match.
You don't need to run Helm commands for these component-level updates.
To upgrade the top-level Lumi Helm chart itself, run the following command:
helm upgrade lumi oci://registry-1.docker.io/imply/lumi \
--version CHART_VERSION \
-f values.yaml \
--namespace NAMESPACE
Replace CHART_VERSION with the chart version you want to upgrade to, and NAMESPACE with your Lumi Enterprise namespace.
Uninstall Lumi Enterprise
Uninstalling Lumi Enterprise deletes all Kubernetes resources associated with the deployment. Deleting the namespace permanently removes any data or configuration stored within it. This doesn't affect data in your external database, Kafka cluster, or object store.
To uninstall Lumi Enterprise and its associated services, run the following commands:
helm uninstall lumi -n NAMESPACE
oc delete namespace NAMESPACE
Learn more
See the following topics for more information:
- Verify your Lumi Enterprise deployment for a full smoke test of your installation.
- Helm chart reference for configurable parameters of the Lumi chart.
- Glossary for definitions of Lumi terms.
- Send events to Lumi for details on sending events to Lumi.
- Search Lumi events for options to search events in Lumi.