A Helm chart for deploying Rybbit self-hosted analytics platform on Kubernetes.
- Kubernetes 1.19+
- Helm 3.2.0+
- PV provisioner support in the underlying infrastructure
# Install with default values
helm install rybbit oci://ghcr.io/antoniolago/rybbit --version 1.1.0
# Install with custom values
helm install rybbit oci://ghcr.io/antoniolago/rybbit --version 1.1.0 -f values.yamlBelow is a minimal configuration example for production usage, DB and Clickhouse secrets are managed by subcharts auth values:
client:
image:
tag: v2.6.0env:
NEXT_PUBLIC_BACKEND_URL: "https://rybbit.lag0.com.br"NEXT_PUBLIC_DISABLE_SIGNUP: "false"backend:
image:
tag: v2.6.0env:
BASE_URL: "https://rybbit.lag0.com.br"DISABLE_SIGNUP: "false"ingress:
# API Ingress (with regex)api:
enabled: trueclassName: "nginx"annotations:
kubernetes.io/ingress.class: nginxcert-manager.io/cluster-issuer: letsencrypt-prodnginx.ingress.kubernetes.io/use-regex: "true"nginx.ingress.kubernetes.io/rewrite-target: /api/$2hosts:
- host: rybbit.lag0.com.brpaths:
- path: /api(/|$)(.*)pathType: ImplementationSpecifictls:
- secretName: lag0-rybbit-certificatehosts:
- rybbit.lag0.com.br# Client Ingress (without regex)client:
enabled: trueclassName: "nginx"annotations:
kubernetes.io/ingress.class: nginxcert-manager.io/cluster-issuer: letsencrypt-prodhosts:
- host: rybbit.lag0.com.brpaths:
- path: /pathType: Prefixtls:
- secretName: lag0-rybbit-certificatehosts:
- rybbit.lag0.com.brThis chart has the following external dependencies:
The chart creates a CloudNativePG Cluster resource directly (inlined template).
The CloudNativePG operator must be installed in the cluster for it to work:
helm repo add cnpg https://cloudnative-pg.github.io/charts
helm install cnpg cnpg/cloudnative-pg \
--namespace cnpg-system \
--create-namespaceThe chart provisions ClickHouse itself by creating ClickHouseInstallation and
ClickHouseKeeperInstallation resources (inlined templates). These are declarative
CRs — the actual ClickHouse/Keeper pods are created by the Altinity ClickHouse
Operator, which is not part of this chart and must be installed in the cluster
beforehand (it also registers the CRDs the chart relies on):
helm repo add altinity https://helm.altinity.com/
helm install clickhouse-operator altinity/altinity-clickhouse-operator \
--namespace clickhouse-system \
--create-namespace \
--set 'watchNamespaces[0]=.*'For detailed configuration options, refer to: Altinity Clickhouse Parameters
The following table lists the configurable parameters of the Rybbit chart and their default values.
| Parameter | Description | Default |
|---|---|---|
global.imagePullSecrets | Global image pull secrets | [] |
global.podSecurityContext | Global pod security context | See values.yaml |
global.containerSecurityContext | Global container security context | See values.yaml |
global.podAntiAffinity | Global pod anti-affinity | "soft" |
| Parameter | Description | Default |
|---|---|---|
backend.enabled | Enable backend deployment | true |
backend.image.repository | Backend image repository | ghcr.io/rybbit-io/rybbit-backend |
backend.image.tag | Backend image tag | latest |
backend.replicaCount | Number of backend replicas | 1 |
backend.resources | Backend resource requests/limits | See values.yaml |
backend.env | Backend environment variables | See values.yaml |
backend.betterSecret.secretName | Name of the secret containing auth key | "" |
backend.betterSecret.authKey | Key in the secret containing auth value | "better-auth-secret" |
backend.betterSecret.authValue | Value for the auth secret | "" |
| Parameter | Description | Default |
|---|---|---|
client.enabled | Enable client deployment | true |
client.image.repository | Client image repository | ghcr.io/rybbit-io/rybbit-client |
client.image.tag | Client image tag | latest |
client.replicaCount | Number of client replicas | 1 |
client.resources | Client resource requests/limits | See values.yaml |
client.env | Client environment variables | See values.yaml |
For all available PostgreSQL parameters, see CloudNativePG Parameters
For all available ClickHouse parameters, see Altinity Operator Configuration
| Parameter | Description | Default |
|---|---|---|
ingress.api.enabled | Enable API ingress (with regex) | false |
ingress.api.className | Ingress class name for API | "" |
ingress.api.annotations | Annotations for API ingress | See values.yaml |
ingress.api.hosts | Hosts for API ingress | See values.yaml |
ingress.api.tls | TLS config for API ingress | See values.yaml |
ingress.client.enabled | Enable client ingress (no regex) | false |
ingress.client.className | Ingress class name for client | "" |
ingress.client.annotations | Annotations for client ingress | See values.yaml |
ingress.client.hosts | Hosts for client ingress | See values.yaml |
ingress.client.tls | TLS config for client ingress | See values.yaml |
See the Minimal Running Example above for a real-world configuration.
The backend and client applications can be configured through environment variables. You can provide custom environment variables in your values.yaml:
backend:
env:
NODE_ENV: production# Add any custom environment variables here### USE clickhouse.auth VALUES INSTEAD, ITS SAFER# CLICKHOUSE_USER: "rybbit"# CLICKHOUSE_PASSWORD: "rybbit"# CLICKHOUSE_HOST: "default-will-come-from-clickhouse-chart"### USE postgres.auth INSTEAD, ITS SAFER# POSTGRES_HOST: postgresql-postgresql# POSTGRES_DB: analytics# POSTGRES_USER: postgres# POSTGRES_PASSWORD: "use-secret-instead"CUSTOM_VAR: valueclient:
env:
NODE_ENV: production# Add any custom environment variables hereCUSTOM_VAR: valuehelm upgrade rybbit oci://ghcr.io/antoniolago/rybbit --version 1.1.0 -f values.yamlhelm uninstall rybbit