GitHub - hackthebox/typesense-helm: Helm chart for deploying Typesense on Kubernetes with HA clustering, Prometheus metrics, and Gateway API support. Not affiliated with the Typesense project.

affinity object {} Affinity rules for pod scheduling. When unset or empty and replicaCount > 1, a soft pod anti-affinity on kubernetes.io/hostname is automatically applied. Set to a non-empty affinity object to override this default behavior. extraArgs list [] Extra command-line arguments for Typesense server (e.g., ["--filter-by-max-ops=200"]) extraEnv list [] Extra environment variables for the Typesense container fullnameOverride string "" Override the full name of the release (optional) gateway.enabled bool false Enable or disable Gateway API for the application gateway.hosts list [] List of hostnames the Gateway will route traffic for gateway.parentRefs object {"default":{"name":"","namespace":"istio-system"},"extras":[]} Configuration controlling which Gateway(s) this HTTPRoute attaches to. gateway.prefix string "/" The URL path prefix for the application image.pullPolicy string "IfNotPresent" Image pull policy (Always, IfNotPresent, etc.) image.repository string "typesense/typesense" Docker image repository for Typesense image.tag string "" Overrides the image tag. If left empty, it uses the appVersion from Chart.yaml ingress.annotations object {} Extra annotations to add to the Ingress resource ingress.className string "nginx" The name of the Ingress class to use (e.g., nginx) ingress.enabled bool false Enable or disable Ingress for the application ingress.hosts list [] List of hostnames the Ingress will route traffic for ingress.prefix string "/" The URL path prefix for the application livenessProbe.failureThreshold int 2 Number of failed liveness checks before restarting the container livenessProbe.httpGet object {"path":"/health","port":"http"} HTTP GET path and port to check Typesense health for liveness livenessProbe.periodSeconds int 10 Period (in seconds) to perform the liveness check metrics.enabled bool false Enable Prometheus metrics sidecar metrics.image.pullPolicy string "IfNotPresent" Image pull policy for metrics exporter metrics.image.repository string "imatefx/typesense-prometheus-exporter" Metrics exporter image repository metrics.image.tag string "v0.1.5" Metrics exporter image tag metrics.port int 8888 Port for Prometheus metrics endpoint metrics.resources object {} Resource requests and limits for the metrics sidecar metrics.serviceMonitor.enabled bool false Enable ServiceMonitor for Prometheus scraping metrics.serviceMonitor.interval string "30s" Scrape interval metrics.serviceMonitor.labels object {} Additional labels for ServiceMonitor nameOverride string "" Override the name of the release (optional) nodeSelector object {} Node selector to schedule pods on specific nodes (optional) pdb.enabled bool true Enable PodDisruptionBudget for Typesense StatefulSet. Automatically skipped when replicaCount is 1. pdb.maxUnavailable string/int "auto" Maximum number of pods that can be unavailable during disruption. Set to "auto" (default) to auto-calculate as floor(replicaCount/2), preserving Raft quorum. Set to 0 to block all voluntary disruptions. Any positive value is used directly and must not exceed floor(replicaCount/2). podAnnotations object {} Additional annotations to add to the Typesense pod(s) podLabels object {} Additional labels to add to the Typesense pod(s) podSecurityContext.fsGroup int 2000 Group ID for the filesystem of the Typesense container podSecurityContext.runAsGroup int 3000 Group ID for running the Typesense process podSecurityContext.runAsNonRoot bool true Ensure the container does not run as root podSecurityContext.runAsUser int 10000 User ID for running the Typesense process readinessProbe.failureThreshold int 3 Number of failed readiness checks before marking the pod as unready readinessProbe.httpGet object {"path":"/health","port":"http"} HTTP GET path and port to check Typesense readiness readinessProbe.periodSeconds int 5 Period (in seconds) to perform the readiness check replicaCount int 3 Number of replicas for the Typesense deployment resources object {} Resource requests and limits for the Typesense container secrets.externalSecret.enabled bool false Enable or disable ExternalSecret creation (requires external-secrets operator) secrets.externalSecret.extractKey string "" The key path to extract secrets from secrets.externalSecret.storeName string "" The name of the ClusterSecretStore or SecretStore to use secrets.optional bool true Whether the secretRef in envFrom is optional (pods start even if secret is missing) secrets.secretName string "" Name of the Kubernetes Secret to mount via envFrom. Defaults to -secret securityContext.allowPrivilegeEscalation bool false Prevent privilege escalation securityContext.capabilities object {"drop":["ALL"]} Drop all Linux capabilities securityContext.readOnlyRootFilesystem bool true Read-only root filesystem (Typesense only writes to data PVC) service.port int 8108 Port that the Typesense service will listen on service.type string "ClusterIP" Kubernetes service type (ClusterIP, NodePort, LoadBalancer) serviceAccount.annotations object {} Annotations to add to the ServiceAccount (e.g., for IRSA) serviceAccount.automountServiceAccountToken bool false Whether to automount the ServiceAccount token serviceAccount.create bool true Whether to create a ServiceAccount serviceAccount.name string "" Name of the ServiceAccount. Defaults to fullname startupProbe.failureThreshold int 10 Number of failed startup checks before marking the container as unhealthy startupProbe.httpGet object {"path":"/health","port":"http"} HTTP GET path and port to check Typesense health for startup startupProbe.periodSeconds int 10 Period (in seconds) to perform the startup check storage.className string nil Storage class to use for Persistent Volume Claims (PVC) storage.size string "10Gi" Size of the persistent storage volume (e.g., 10Gi) terminationGracePeriodSeconds int 300 Termination grace period in seconds. Typesense recommends 300s to allow graceful shutdown. tolerations list [] Tolerations for pod scheduling topologySpreadConstraints list [] Topology spread constraints for pod distribution across nodes/zones typesense.analytics.enabled bool false Enable aggregated search query analytics typesense.analytics.flushInterval string nil How often analytics are persisted to disk in seconds. Unset uses Typesense default (3600) typesense.cache.numEntries string nil LRU cache size for search responses. Unset uses Typesense default (1000) typesense.cors.domains list [] List of allowed origins (no trailing slashes) typesense.cors.enabled bool false Enable CORS for browser/JS access typesense.health.readLag string nil Update lag threshold before rejecting reads. Unset uses Typesense default (1000) typesense.health.writeLag string nil Update lag threshold before rejecting writes. Unset uses Typesense default (500) typesense.limits.diskUsedMaxPercentage string nil Reject writes above this disk usage percentage. Unset uses Typesense default (100) typesense.limits.memoryUsedMaxPercentage string nil Reject writes above this memory usage percentage. Unset uses Typesense default (100) typesense.logging.enableSearchLogging bool false Log search request payloads typesense.logging.slowRequestsTimeMs string nil Threshold in ms for slow request logging (-1 disables). Unset uses Typesense default (-1) typesense.snapshots.intervalSeconds string nil Replication log snapshot frequency in seconds. Unset uses Typesense default (3600) typesense.threadPoolSize string nil Concurrent request handler threads. Unset uses Typesense default (NUM_CORES * 8) updateStrategy object {"rollingUpdate":{"maxUnavailable":"auto"},"type":"RollingUpdate"} StatefulSet update strategy configuration. When type is RollingUpdate, rollingUpdate.maxUnavailable is required. When type is OnDelete, rollingUpdate is optional and ignored. updateStrategy.rollingUpdate.maxUnavailable string/int "auto" Maximum number of pods that can be unavailable during a rolling update. Set to "auto" (default) to auto-calculate as floor(replicaCount/2), preserving Raft quorum. Set to 0 to block all voluntary pod replacements. Any positive value is used directly and must not exceed floor(replicaCount/2). Ignored when updateStrategy.type is OnDelete. updateStrategy.type string "RollingUpdate" StatefulSet update strategy type. Use RollingUpdate (default) for zero-downtime upgrades or OnDelete for manual pod-by-pod control.