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.comand update the local index before installation. - Isolate deployments using dedicated namespaces and configure a production-grade StorageClass instead of the default
local-pathprovisioner. - Enable agent-based metrics by setting
metricsWithAgent: trueandmetricsConfigServerfor 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 upgradefor 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:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →