Enterprise Edition Installation Guide
Deploy OpenObserve Enterprise Edition as a Highly Available (HA) installation using Helm.
This guide explains how to deploy OpenObserve Enterprise Edition in a Kubernetes environment using Helm.
For support, reach out in the Slack channel.
Architecture Overview
OpenObserve Enterprise Edition depends on several components to support scalable ingestion, search, storage, and access control:
- Object Storage, such as S3, Azure Blob, GCS, or MinIO, stores all telemetry data in Parquet format.
- PostgreSQL stores metadata such as dashboards, stream configurations, users, and the filelist table.
- NATS coordinates communication between ingestion and query nodes.
- Dex and OpenFGA enable Single Sign-On (SSO) and Role-Based Access Control (RBAC).
Installation Steps
Follow these steps to install OpenObserve Enterprise Edition on Amazon Elastic Kubernetes Service (EKS):
Prerequisites
Before you begin, ensure that the following are available:
- An active AWS account with permissions to create EKS clusters, S3 buckets, IAM roles, and policies.
- AWS CLI installed and configured using the
aws configure
command.
Step 1: Create a Kubernetes Cluster Using eksctl
Cluster Setup: This step sets up the Kubernetes cluster using Amazon EKS. You can use any other Kubernetes service instead of EKS.
- Download the cluster configuration file:
- Open
o2-eks.yaml
and update theCLUSTER_NAME
. - Run the following command to create the cluster:
After this step, you have a working Kubernetes cluster.
Step 2: Install Helm
Deployment Tool: Helm is a tool that simplifies application deployment in Kubernetes by using reusable configuration templates called charts.
For installation instructions, see the Helm Installation Guide.
Step 3: Create an S3 Bucket and IAM Role
Object Storage and IAM Access: This step configures a storage bucket and IAM role that OpenObserve will use to write log data to S3.
- Download and prepare the script:
- Open
bucket.sh
and update theCLUSTER_NAME
variable to match your cluster you created in Step 1. - Run the script:
Make a note of the following:
- Bucket name
- IAM role ARN
These values are required for the Helm chart configuration in later steps.
You can verify the bucket and IAM role in the AWS Console. You should see the S3 bucket and a role named OpenObserveRole.
Step 4: Download the OpenObserve Helm Values File
Deployment Configuration: This file contains the configurable parameters that control how OpenObserve will be deployed.
Download the values file using:
Step 5: Update the values.yaml
Configuration
Helm Chart Configurations: This step configures access credentials, storage, and platform-specific settings before deploying OpenObserve.
- Add the IAM role for the service account
Under the
serviceAccount
section, add the IAM role ARN: - Configure the object storage provider
Under the config section, set the S3 provider, bucket name, and region:
Valid values for
ZO_S3_PROVIDER
includes3
,azure
,minio
, andgcs
. Example configurations for Azure and MinIO are available in the samevalues.yaml
file. - Set up root user credentials Under the auth section, define login credentials for the root user:
- Enable RBAC and SSO To enable role-based access control and single sign-on, add the following configuration: For more information, refer to the RBAC and SSO guides.
Note
The NATS coordinator service is deployed automatically by the OpenObserve Helm chart. You do not need to install or configure it separately.
Step 6: Install PostgreSQL Using CloudNativePG
Metadata Storage: OpenObserve uses PostgreSQL to store metadata such as dashboards, stream configurations, users, and the filelist table.
If you are not using Amazon RDS, install the CloudNativePG operator using the following command:
Step 7: Create a gp3
Storage Class
Local Buffering: This storage class enables local disk buffering before telemetry data is stored in S3.
Create the gp3
storage class using:
kubectl get sc
.
This command works with all Kubernetes environments. The gp3
class is specific to Amazon EBS.
Step 8: Add the OpenObserve Helm Repository
Chart Repository: This repository contains the official Helm chart for deploying OpenObserve.
Step 9: Deploy OpenObserve Using Helm
Deployment: This step installs OpenObserve into your Kubernetes cluster using the Helm chart.
- Create the namespace:
- Deploy OpenObserve:
After installation, the output displays akubectl port-forward
command. Run that command and then openhttp://localhost:<port>
in your browser, replacing<port>
with the actual port number shown.
OpenObserve is now running in your Kubernetes cluster. Log in using the root user credentials configured in Step 5 to start using OpenObserve.
Note
OpenObserve also provides an Infrastructure as Code (IAC) workflow using Terraform or OpenTofu. This streamlines the deployment of Amazon Elastic Kubernetes Service (EKS) and OpenObserve in HA mode. It enables teams to quickly provision and manage OpenObserve infrastructure in Amazon EKS using prebuilt, flexible modules. To explore this option, visit the openobserve-eks-iac repository.
Follow these steps to install OpenObserve Enterprise Edition on Azure Kubernetes Service (AKS):
Prerequisites
Before starting, install the required tools:
-
Azure Resources:
- An active Azure subscription
- A Resource Group in your preferred region
- An AKS Kubernetes Cluster deployed in the same resource group You can create these resources using the Azure Portal. Select your region and resource group carefully, as they will be referenced throughout the setup.
-
Tools Installed Locally
Ensure the following tools are installed and available in your terminal session:
- Azure CLI (az) - Installation Guide.
- kubectl - Installation Guide.
- Helm - Installation Guide.
Verify tool installation:
Configure authentication:
Connect kubectl to your AKS clusterVerify cluster connection
-
Install CloudNativePG Operator
PostgreSQL is used for storing openobserve metadata.
To install CloudNativePG:Verify the operator installation:
Ensure that the pods are running.
-
Azure Storage Setup
OpenObserve uses object storage to store telemetry data. Create a storage account and a container:
Create storage account with unique name:
Create blob container:
Retrieve storage access key:
Store the storage account name and key securely.
Step 1: Add OpenObserve Helm Repository
Add the OpenObserve Helm chart repository and update your local repository cache:
Verify the repository was added successfully:
Step 2: Download and Configure values.yaml
Download the default OpenObserve configuration file:
Edit the configuration file with your preferred text editor:
Step 3: Configure Authentication and Storage Settings
Update the auth:
section with your credentials and storage settings:
Update the config:
section with storage and database settings:
Configuration Notes:
- Email: Use any email format. This becomes your admin login for OpenObserve.
- Password: Choose a secure password for the OpenObserve web interface.
- Storage Key: Use the key retrieved from prerequisites step 4.
- Storage Name: Use the storage account name from prerequisites step 4.
- PostgreSQL DSN: Keep the placeholder. Helm will auto-configure this when using built-in PostgreSQL.
Configure for Multi-Node Deployment
If you are using a 3+ node AKS cluster, keep the default settings:
Enable RBAC and SSO
To enable role-based access control and single sign-on, add the following configuration:
For more information, refer to the RBAC and SSO guides.Step 4: Create Namespace and Install OpenObserve
Create the OpenObserve namespace:
Install OpenObserve using Helm:
The installation should show:
Step 5: Monitor Installation Progress
Check pod status during startup:
Expected progression:
- Initial state: Pods in
Pending
orInit:0/1
status. - Startup phase: Pods move to
ContainerCreating
orRunning
. - Final state: All pods should show
Running
status.
Note: If you are testing on single-node clusters, you may need to manually scale down NATS if multiple pods are created:**
Installation typically takes 3-5 minutes. Wait for all pods to reach Running
status before proceeding.
Step 6: Access OpenObserve
Set up port-forwarding to access OpenObserve:
Access the OpenObserve web interface:
- Open your web browser
- Navigate to: http://localhost:5080
-
Log in with the credentials configured in Step 3:
- Email: The email you configured in
ZO_ROOT_USER_EMAIL
- Password: The password you configured in
ZO_ROOT_USER_PASSWORD
- Email: The email you configured in
Troubleshooting
- NATS Clustering Issues
Symptoms: Pods stuck in Init:0/1, "Waiting for NATS to be ready" messages.
Cause: NATS trying to form a cluster but unable to establish connections
Solution: Ensure all nodes are healthy and networking is properly configured. - Volume Attachment Limit Errors
Symptoms: "exceed max volume count" errors, pods stuck in Pending
Cause: Too many persistent volumes for the VM size or single-node setup
Solution: Use larger VM sizes or disable persistence for non-critical components as shown in the single-node configuration.
- Storage Authentication Failures
Symptoms: "AuthenticationFailed" errors in pod logs.
Cause: Incorrect or expired storage account key.
Solution: Regenerate storage account key:Then update the key inSA_KEY=$(az storage account keys list \ --resource-group openobserve-rg \ --account-name $STORAGE_ACCOUNT_NAME \ --query '[0].value' -o tsv)
values.yaml
and reinstall. - Pod Scheduling Issues
Symptoms: Pods stuck in Pending, insufficient resources.
Cause: Node resource constraints or anti-affinity rules.
Solution: Scale up your cluster or use larger VM sizes. - Port-Forward Connection Issues
Symptoms: "connection refused" when accessing http://localhost:5080.
Cause: Router pod not fully ready.
Solution: Wait for router pod to show 1/1 Running, then retry port-forward.
Follow these steps to install OpenObserve Enterprise Edition on Google Kubernetes Engine (GKE):
Prerequisites
Google Cloud Setup
-
Create a Google Cloud project:
- In Google Cloud Console, open the project selector on the top bar.
- Select New Project.
- Enter a project name.
- Create the project and note the Project ID.
-
Enable billing for the project. In Billing, link the new project to an active billing account.
-
Enable required APIs for the project:
- In APIs and Services, select Enable APIs and Services.
- Enable Kubernetes Engine API, Compute Engine API, and Cloud Storage API
-
Create a GKE cluster in the Console:
- Go to Kubernetes Engine > Clusters > Create.
- Choose Standard.
- Set Cluster name.
- Set Region or Zone. The video used us-central1 region and us-central1-c zone.
- Choose a node pool size and machine type appropriate for your need.
- Create the cluster and wait until the status is Running.
- Keep the region or zone handy. You will use the same location for your storage bucket.
Install tools locally
- Install Google Cloud SDK
For installation instructions, see the installation guide.
Verify:
- Authenticate and select the project
Log in:
Set the active project:Set the default compute region and zone to match your cluster:
- Install
kubectl
For installation instructions, see the installation guide. Verify: - Install Helm
For installation instructions, see the installation guide.
Verify:
- Configure kubectl context for your cluster
Pull credentials for the cluster so kubectl can talk to it:
Verify:
Create and Configure Google Cloud Storage Bucket
-
Create a bucket in the same region as the GKE cluster
- In Cloud Storage, select Buckets, then Create.
- Set a unique bucket name, for example
oo-123456
. - Set Location type to Region.
- Set Region to us-central1 if your cluster is in us-central1.
- Create the bucket.
-
Generate interoperability access keys
- In Cloud Storage, select Settings, then Interoperability.
- Enable interoperability if it is not already enabled.
- Create a new access key.
- Note the Access key and Secret key.
- Note the Server URL shown on this page. You will use these values in
values.yaml
.
Install CloudNativePG Operator
- Install the operator into the cluster
- Confirm that the operator components are running
Step 1: Connect to the GKE cluster
Step 2: Add OpenObserve Helm Repository
Step 3: Download the Helm chart configuration
Step 4: Configure values.yaml
Storage settings for Google Cloud Storage
Use the bucket you created and the interoperability credentials.
Initial login
Enable RBAC and SSO
To enable role-based access control and single sign-on, add the following configuration:
For more information, refer to the RBAC and SSO guides.Step 5: Install OpenObserve with Helm
Step 7: Port forward to access the UI locally
Forward the router service to your machine so you can open the UI at localhost.
values.yaml
.