Skip to main content

Install Lumi Enterprise on OpenShift

info

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:

  1. Authenticate to the OCI registry:

    helm registry login registry-1.docker.io \
    --username DOCKERHUB_USERNAME \
    --password DOCKERHUB_PAT
  2. Pull the default values.yaml file:

    helm show values oci://registry-1.docker.io/imply/lumi --version {LEA_CHART_VERSION} > values.yaml
  3. Edit the values.yaml file with your configuration. Set the following fields:

    • tenantId, apiKey, and customerId
    • database, kafka, and objectStore
    • ingress.host
    • gateway.ingress.enabled and gateway.ingress.className, or gateway.service.type if you expose the gateway with a load balancer
    • auth
    • registry.pullSecret, or registry.dockerhub.username and registry.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.yaml for deploying Lumi Enterprise on OpenShift bare metal:

    Click to view the example
    database:
    host: DATABASE_HOST
    port: 3306
    username: DATABASE_USERNAME
    password: DATABASE_PASSWORD

    # Identifiers provided by Imply. Contact your Imply representative if you don't have these.
    tenantId: TENANT_ID
    customerId: CUSTOMER_ID
    apiKey: API_KEY

    data:
    count: 3
    resources:
    requests:
    cpu: 2400m
    memory: 18582M
    limits:
    cpu: 4000m
    memory: 20480M
    storageVolumes:
    - maxSize: 2469G
    volume:
    hostPath:
    path: /mnt/k8s-disks/0
    tmpStorageVolume:
    maxSize: 10Gi
    volume:
    emptyDir:
    sizeLimit: 10Gi

    virtual:
    count: 1
    resources:
    requests:
    cpu: 1000m
    memory: 5G
    limits:
    cpu: 1000m
    memory: 6G
    storageVolumes:
    - maxSize: 50G
    volume:
    emptyDir:
    sizeLimit: 50G
    tmpStorageVolume:
    maxSize: 10Gi
    volume:
    emptyDir:
    sizeLimit: 10Gi

    broker:
    count: 2
    resources:
    requests:
    cpu: 2400m
    memory: 12052M
    limits:
    cpu: 4000m
    memory: 13246M

    coordinator:
    count: 2
    resources:
    requests:
    cpu: 2400m
    memory: 8635M
    limits:
    cpu: 4000m
    memory: 9500M

    ingest:
    resources:
    requests:
    cpu: 2000m
    memory: 18000M
    limits:
    cpu: 8000m
    memory: 19400M
    storageVolume:
    maxSize: 100G
    volume:
    emptyDir:
    sizeLimit: 100G

    workerPools:
    - name: worker-small
    resources:
    requests:
    cpu: 2400m
    memory: 24000M
    limits:
    memory: 24000M
    storageVolume:
    maxSize: 100G
    volume:
    emptyDir:
    sizeLimit: 100G
    - name: worker-medium
    resources:
    requests:
    cpu: 6000m
    memory: 50000M
    limits:
    memory: 50000M
    storageVolume:
    maxSize: 150G
    volume:
    emptyDir:
    sizeLimit: 150G
    - name: worker-large
    resources:
    requests:
    cpu: 13000m
    memory: 105000M
    limits:
    memory: 105000M
    storageVolume:
    maxSize: 200G
    volume:
    emptyDir:
    sizeLimit: 200G

    virtualCompute:
    enabled: true
    tshirtSizes:
    - size: s
    name: Small
    workerPool: worker-small
    nodeCount: 2
    maxConcurrency: 4
    - size: m
    name: Medium
    workerPool: worker-medium
    nodeCount: 4
    maxConcurrency: 8
    - size: l
    name: Large
    workerPool: worker-large
    nodeCount: 4
    maxConcurrency: 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_DOMAIN

    gateway:
    ingress:
    enabled: true
    className: openshift-lumi-external
    annotations:
    route.openshift.io/termination: edge

    objectStore:
    s3:
    accessKey: ACCESS_KEY
    secretKey: SECRET_KEY
    bucket: BUCKET_NAME
    endpoint: ENDPOINT_URL
    region: us-east-1
    usePathStyle: true

    registry:
    containerRepo: registry-1.docker.io/imply
    chartRepo: oci://registry-1.docker.io/imply
    dockerhub:
    username: DOCKERHUB_USERNAME
    password: DOCKERHUB_PASSWORD

    auth:
    # Email address for the initial admin user. Used as the admin username to log in to Lumi.
    username: ADMIN_USERNAME
    password: ADMIN_PASSWORD
    rsa:
    # Generate with: openssl genrsa -out private.pem 2048
    privateKey: RSA_PRIVATE_KEY
    # Generate with: openssl rsa -in private.pem -pubout -out public.pem
    publicKey: RSA_PUBLIC_KEY

    kafka:
    bootstrap:
    servers: KAFKA_BOOTSTRAP_SERVERS
    security:
    protocol: SASL_SSL
    sasl:
    mechanism: SCRAM-SHA-512
    username: KAFKA_USERNAME
    password: KAFKA_PASSWORD

    eventCollector:
    s2s:
    service:
    # Use LoadBalancer if your cluster has a load balancer provider configured.
    # Otherwise, use ClusterIP or NodePort.
    type: ClusterIP
    tls:
    secretName: TLS_SECRET_NAME
  4. Install the Helm chart:

    helm install lumi oci://registry-1.docker.io/imply/lumi \
    --version {LEA_CHART_VERSION} \
    -f values.yaml \
    --namespace NAMESPACE

    Your output should be similar to the following:

    NAME: lumi
    LAST DEPLOYED: Wed Sep 9 11:15:19 2026
    NAMESPACE: lumi-enterprise
    STATUS: deployed
    REVISION: 1
    DESCRIPTION: Install complete
    TEST SUITE: None
  5. Check the status:

    helm status lumi -n NAMESPACE
  6. Check if pods are starting, run the following command. It may take several minutes for all pods to come up.

    oc get pods -n NAMESPACE

    The update-client service starts running and connects to the Imply update server to pull the latest Bill of Materials (BOM) and deploy the remaining Lumi services.

  7. Verify that you can reach the UI by opening https://YOUR_INGRESS_HOST in a browser and confirming the Lumi login page loads. Sign in with the admin username and password you set in auth.username and auth.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​

warning

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: