Best Practices for Deploying INFINI Console in Kubernetes Environments Using Helm Charts

Deploy INFINI Console in Kubernetes by adding the official Helm repository at https://helm.infinilabs.com, installing into a dedicated namespace with a production-grade StorageClass, and enabling agent-based metrics via metricsWithAgent: true for complete observability.

INFINI Console provides a Helm chart to streamline Kubernetes deployments, but production-grade installations require careful configuration of storage, security, and observability parameters. This guide covers essential practices for deploying the infinilabs/console repository in Kubernetes clusters using Helm, based on the official documentation and chart implementation.

Repository Setup and Namespace Isolation

Adding the Official Helm Repository

Before installation, register the INFINI Helm repository and update the local index. This ensures access to the latest chart versions and dependencies.

helm repo add infinilabs https://helm.infinilabs.com
helm repo update

According to the documentation in docs/content.en/docs/getting-started/helm.md, this step is required once per cluster to maintain version synchronization during future upgrades.

Deploying to a Dedicated Namespace

Isolate Console resources by deploying into a specific namespace. This separation simplifies RBAC management, network policies, and resource quotas.

kubectl create namespace infinilabs
helm install console infinilabs/console -n infinilabs --create-namespace

The --create-namespace flag ensures idempotent installations, creating the namespace only if it does not exist.

Storage Configuration for Production Workloads

Overriding the Default StorageClass

The chart defaults to the local-path provisioner, which is unsuitable for production environments requiring high availability and data durability. Override this with a cloud-native or enterprise StorageClass.

Create a values.yaml file:

storageClassName: gp2  # Example: AWS EBS gp2; replace with your production class

persistence:
  enabled: true
  size: 20Gi

Install with the custom configuration:

helm install console infinilabs/console -n infinilabs -f values.yaml

As documented in docs/content.en/docs/getting-started/helm.md, the storageClassName parameter maps directly to the PersistentVolumeClaim specifications in the chart templates.

Enabling Agent-Based Observability

Configuring metricsWithAgent and metricsConfigServer

For comprehensive monitoring of internal metrics, enable the Agent sidecar which pushes telemetry directly to the Console service. This configuration is essential for utilizing features like the alerting rule metrics charts found in web/src/pages/Alerting/Rule/components/RuleMetricChart.jsx.

Update values.yaml:

metricsWithAgent: true
metricsConfigServer: "http://console:9000"

These values are processed by the chart's configuration templates, mapping to environment variables defined in config/system_config.tpl and the root console.yml file.

Deploy with the observability stack:

helm install console infinilabs/console -n infinilabs -f values.yaml

Securing Easysearch with TLS and cert-manager

When deploying INFINI Console alongside Easysearch, TLS encryption is mandatory for secure node-to-node and client-to-cluster communication.

Installing cert-manager

First, install cert-manager to automate certificate provisioning:

helm repo add jetstack https://charts.jetstack.io --force-update
helm install cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --create-namespace \
  --version v1.17.2 \
  --set crds.enabled=true \
  --set prometheus.enabled=false \
  --set webhook.timeoutSeconds=10

This installation procedure is detailed in docs/content.en/docs/getting-started/k8s-easysearch.md.

Creating Certificates and Secrets

After cert-manager installation, apply a self-signed ClusterIssuer and Certificate resource to generate the Easysearch TLS secrets. Then create the Easysearch credentials secret:

kubectl create secret generic easysearch-secrets \
  --namespace infinilabs \
  --from-literal=ezs_password='YOUR_SECURE_PASSWORD'

Deploy Easysearch with TLS enabled:

helm install easysearch infinilabs/easysearch -n infinilabs \
  --set metricsWithAgent=true \
  --set metricsConfigServer="http://console:9000"

Deployment Automation and Version Management

Pinning Chart Versions

For reproducible deployments across development, staging, and production environments, always pin the chart version:

helm install console infinilabs/console \
  --version 1.5.2 \
  -n infinilabs \
  -f values.yaml

Version pinning prevents unexpected breaking changes during helm upgrade operations and ensures consistent infrastructure-as-code practices.

Performing Rolling Upgrades

When modifying configuration parameters such as enabling metricsWithAgent or changing resource limits, use helm upgrade to apply changes without service interruption:

helm upgrade console infinilabs/console -n infinilabs -f values.yaml

The chart's StatefulSet configuration ensures rolling updates preserve data stored in persistent volume claims, as documented in the upgrade workflows within docs/content.en/docs/getting-started/helm.md.

Cleanup and Maintenance Procedures

Uninstalling and PVC Management

Helm preserves persistent volume claims by default to prevent accidental data loss. When decommissioning a test environment, manually remove the associated PVCs:

helm uninstall console -n infinilabs
kubectl delete pvc console-data-console-0 console-config-console-0 -n infinilabs

If you deployed the Easysearch dependency, delete its PVCs separately as shown in docs/content.en/docs/getting-started/k8s-easysearch.md.

Summary

  • Add the official repository at https://helm.infinilabs.com and update the local index before installation.
  • Isolate deployments using dedicated namespaces and configure a production-grade StorageClass instead of the default local-path provisioner.
  • Enable agent-based metrics by setting metricsWithAgent: true and metricsConfigServer for comprehensive observability.
  • Secure Easysearch deployments with cert-manager and TLS certificates, storing credentials in Kubernetes secrets.
  • Pin chart versions for reproducible infrastructure and use helm upgrade for zero-downtime configuration changes.
  • Manage PVC lifecycle manually when uninstalling to control data retention or cleanup.

Frequently Asked Questions

What is the default storage class used by the INFINI Console Helm chart?

The chart defaults to the local-path provisioner, which is suitable for single-node testing but inadequate for production workloads. Override this by specifying a cloud-native StorageClass such as AWS EBS gp2 or gp3, Azure Disk, or a Ceph-backed class in your custom values.yaml file under the storageClassName key.

How do I enable metric collection when deploying INFINI Console in Kubernetes?

Set metricsWithAgent: true and metricsConfigServer: "http://console:9000" in your values.yaml configuration. These parameters deploy an Agent sidecar that pushes internal metrics directly to the Console service, enabling features like the alerting rule metrics charts. This configuration maps to environment variables defined in config/system_config.tpl and the root console.yml file.

Can I deploy INFINI Console and Easysearch together using Helm?

Yes, deploy Console first with agent metrics enabled, then install the Easysearch chart with matching metricsWithAgent and metricsConfigServer values. For secure communication, install cert-manager first and create TLS certificates for Easysearch nodes. Store the Easysearch admin password in a Kubernetes secret named easysearch-secrets before deploying the Easysearch chart.

How do I upgrade my INFINI Console Helm deployment without data loss?

Use helm upgrade with your updated values.yaml file to apply configuration changes. The chart uses a StatefulSet with persistent volume claims that survive pod restarts and rolling updates. Always pin the chart version using --version to ensure reproducible upgrades, and verify that your StorageClass supports volume expansion if you need to increase disk size later.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →