Skip to main content

Helm Values Reference

This page documents all configurable values for the aerospike-ce-kubernetes-operator Helm chart.

Aerospike Images

KeyTypeDefaultDescription
aerospikeImages.aerospikestringaerospike:ce-8.1.1.1Default Aerospike CE server image. Used by default templates and UI wizard. Override for air-gapped environments.
aerospikeImages.exporterstringaerospike/aerospike-prometheus-exporter:1.16.1Default Prometheus exporter sidecar image.

CRD Management

KeyTypeDefaultDescription
crds.installbooltrueInstall aerospike-ce-kubernetes-operator-crds as a subchart dependency. Set to false if CRDs are managed separately (e.g., via GitOps).
crds.keepbooltrueRetain CRDs on helm uninstall. Actual keep behavior is enforced by the helm.sh/resource-policy: keep annotation on each CRD template.

Operator

KeyTypeDefaultDescription
replicaCountint1Number of operator replicas. Typically 1 is sufficient as leader election handles HA.
image.repositorystringghcr.io/aerospike-ce-ecosystem/aerospike-ce-kubernetes-operatorOperator container image repository.
image.tagstring"latest"Container image tag.
image.pullPolicystringIfNotPresentImage pull policy: Always, IfNotPresent, or Never.
imagePullSecretslist[]Image pull secrets for private registries.
nameOverridestring""Override the chart name used in resource names.
fullnameOverridestring""Override the full resource name (takes precedence over nameOverride).

Service Account

KeyTypeDefaultDescription
serviceAccount.annotationsobject{}Annotations for the operator service account. Useful for IAM roles (e.g., EKS IRSA, GKE Workload Identity).

Resources

KeyTypeDefaultDescription
resources.limits.cpustring500mCPU limit for the operator pod.
resources.limits.memorystring256MiMemory limit for the operator pod.
resources.requests.cpustring100mCPU request for the operator pod.
resources.requests.memorystring128MiMemory request for the operator pod.

Webhook

KeyTypeDefaultDescription
webhook.enabledbooltrueEnable admission webhooks for CR validation and defaulting.
webhook.portint9443Webhook server listen port.

cert-manager Integration

KeyTypeDefaultDescription
certManager.enabledbooltrueUse cert-manager to provision webhook TLS certificates. Requires cert-manager to be installed in the cluster. When disabled, provide a TLS secret manually via webhookTlsSecret.
certManager.issuer.typestringselfSignedIssuer type: selfSigned, ca, or clusterIssuer.
certManager.issuer.namestring""Name of an existing ClusterIssuer (only used when type is clusterIssuer).
certManager.issuer.caSecretNamestring""CA secret name containing tls.crt and tls.key (only used when type is ca).
certManager.durationstring""Certificate duration (default: 8760h = 1 year).
certManager.renewBeforestring""Certificate renewal time before expiry (default: 2880h = 120 days).
webhookTlsSecretstring""Manually provide a TLS secret for the webhook server. Only used when certManager.enabled is false and webhook.enabled is true. The secret must contain tls.crt and tls.key.

Monitoring - ServiceMonitor

KeyTypeDefaultDescription
serviceMonitor.enabledboolfalseCreate a ServiceMonitor resource for Prometheus Operator.
serviceMonitor.intervalstringScrape interval (e.g., 30s).
serviceMonitor.scrapeTimeoutstringScrape timeout (e.g., 10s).
serviceMonitor.additionalLabelsobject{}Additional labels for ServiceMonitor discovery.

Monitoring - PrometheusRule

KeyTypeDefaultDescription
prometheusRule.enabledboolfalseCreate PrometheusRule resource with operator alerting rules.
prometheusRule.additionalLabelsobject{}Additional labels for PrometheusRule discovery.
prometheusRule.ruleslist[]Custom alerting rules to append or override defaults. When empty, built-in default rules are used.

Monitoring - Grafana Dashboard

KeyTypeDefaultDescription
grafanaDashboard.enabledboolfalseCreate a ConfigMap with a Grafana dashboard for the operator. Requires Grafana sidecar to be configured with dashboard auto-discovery.
grafanaDashboard.sidecarLabelstringgrafana_dashboardGrafana sidecar label key for dashboard auto-discovery.
grafanaDashboard.sidecarLabelValuestring"1"Grafana sidecar label value.
grafanaDashboard.folderstring""Grafana folder annotation for organizing dashboards.

Network Policy

KeyTypeDefaultDescription
networkPolicy.enabledboolfalseCreate standard Kubernetes NetworkPolicy resources. Mutually exclusive with cilium.enabled.

Cilium Network Policy

KeyTypeDefaultDescription
cilium.enabledboolfalseCreate CiliumNetworkPolicy resources instead of standard NetworkPolicy. Mutually exclusive with networkPolicy.enabled. Requires Cilium CNI.
cilium.l7EnabledboolfalseEnable L7 (application-layer) policy rules for Aerospike ports.

Pod Disruption Budget

KeyTypeDefaultDescription
podDisruptionBudget.enabledboolfalseCreate a PodDisruptionBudget for the operator deployment.
podDisruptionBudget.minAvailableint1Minimum available pods. Mutually exclusive with maxUnavailable.
podDisruptionBudget.maxUnavailableintMaximum unavailable pods. Mutually exclusive with minAvailable.

Horizontal Pod Autoscaler

KeyTypeDefaultDescription
autoscaling.enabledboolfalseEnable HPA for the operator deployment. Only useful when running multiple replicas.
autoscaling.minReplicasint1Minimum number of replicas.
autoscaling.maxReplicasint3Maximum number of replicas.
autoscaling.targetCPUUtilizationPercentageint80Target average CPU utilization percentage.
autoscaling.targetMemoryUtilizationPercentageintTarget average memory utilization percentage (optional).

Scheduling

KeyTypeDefaultDescription
nodeSelectorobject{}Node selector labels for operator pod scheduling.
tolerationslist[]Tolerations for operator pod scheduling.
affinityobject{}Affinity rules for operator pod scheduling.
topologySpreadConstraintslist[]Topology spread constraints for operator pod scheduling.
priorityClassNamestring""Priority class name for operator pod.

Extra Annotations and Labels

KeyTypeDefaultDescription
podAnnotationsobject{}Additional annotations for the operator pods.
podLabelsobject{}Additional labels for the operator pods.

UI - Aerospike Cluster Manager

The Aerospike Cluster Manager is a full-stack web dashboard deployed alongside the operator. It provides a visual interface for monitoring and managing Aerospike clusters.

General

KeyTypeDefaultDescription
ui.api.enabledbooltrueDeploy the Cluster Manager API (FastAPI) component. Set to false together with ui.web.enabled=false to skip the UI entirely.
ui.web.enabledbooltrueDeploy the Cluster Manager web (Next.js) component. Set to false together with ui.api.enabled=false to skip the UI entirely.
ui.replicaCountint1Number of UI replicas.
ui.image.repositorystringghcr.io/aerospike-ce-ecosystem/aerospike-cluster-managerUI container image repository.
ui.image.tagstring"latest"UI container image tag. UI is versioned independently from the operator.
ui.image.pullPolicystringIfNotPresentImage pull policy.
ui.imagePullSecretslist[]Image pull secrets for private registries.

Service Account & RBAC

KeyTypeDefaultDescription
ui.serviceAccount.createbooltrueCreate a service account for the UI.
ui.serviceAccount.annotationsobject{}Annotations for the UI service account.
ui.rbac.createbooltrueCreate ClusterRole and ClusterRoleBinding for K8s API access.

When ui.rbac.create=true, the generated ClusterRole includes the following permissions:

API GroupResourcesVerbs
acko.ioaerospikeclusters, aerospikeclustertemplatesget, list, watch, create, update, patch, delete
acko.ioaerospikeclusters/statusget
acko.ioaerospikeclustertemplates/statusget
"" (core)pods, services, persistentvolumeclaimsdelete, get, list, watch
"" (core)pods/logget
"" (core)configmapsget, list, watch
"" (core)secretslist
"" (core)persistentvolumesget, list
"" (core)nodesget, list
"" (core)eventsget, list, watch
"" (core)namespacescreate, list
storage.k8s.iostorageclasseslist
autoscalinghorizontalpodautoscalersget, list, watch, create, update, patch, delete

Service

KeyTypeDefaultDescription
ui.service.typestringClusterIPService type: ClusterIP, NodePort, or LoadBalancer.
ui.service.frontendPortint3000Frontend port (Next.js web UI).
ui.service.backendPortint8000Backend port (FastAPI REST API).
ui.service.annotationsobject{}Annotations for the UI Service.

Ingress

KeyTypeDefaultDescription
ui.ingress.enabledboolfalseEnable ingress for external access.
ui.ingress.classNamestring""Ingress class name.
ui.ingress.annotationsobject{}Ingress annotations.
ui.ingress.hostslistSee values.yamlIngress host rules.
ui.ingress.tlslist[]Ingress TLS configuration.

PostgreSQL (Embedded Sidecar)

KeyTypeDefaultDescription
ui.postgresql.enabledbooltrueDeploy an embedded PostgreSQL sidecar container. Disable to use an external PostgreSQL instance.
ui.postgresql.image.repositorystringpostgresPostgreSQL container image.
ui.postgresql.image.tagstring"17-alpine"PostgreSQL image tag.
ui.postgresql.image.pullPolicystringIfNotPresentImage pull policy.
ui.postgresql.databasestringaerospike_managerDatabase name.
ui.postgresql.usernamestringaerospikeDatabase user.
ui.postgresql.passwordstringaerospikeDatabase password (embedded sidecar only).
ui.postgresql.existingSecretstring""Existing Secret name containing POSTGRES_PASSWORD and DATABASE_URL keys.
ui.postgresql.resources.requests.cpustring50mCPU request.
ui.postgresql.resources.requests.memorystring128MiMemory request.
ui.postgresql.resources.limits.cpustring250mCPU limit.
ui.postgresql.resources.limits.memorystring256MiMemory limit.

The embedded PostgreSQL sidecar includes a startup probe that runs pg_isready to verify database readiness before the UI container begins accepting traffic. This prevents the backend from attempting database connections before PostgreSQL has finished initialization.

Persistence

KeyTypeDefaultDescription
ui.persistence.enabledbooltrueEnable persistent storage for the embedded PostgreSQL database.
ui.persistence.storageClassNamestringnullStorage class name. null = use cluster default StorageClass, "" = disable dynamic provisioning, "name" = use specified StorageClass.
ui.persistence.accessModestringReadWriteOnceAccess mode.
ui.persistence.sizestring1GiVolume size.

Deployment Strategy & Graceful Shutdown

The UI Deployment uses an explicit update strategy based on the PostgreSQL configuration:

  • With embedded PostgreSQL (ui.postgresql.enabled=true): Uses Recreate strategy because the PVC can only be mounted by one pod at a time.
  • Without embedded PostgreSQL (ui.postgresql.enabled=false): Uses RollingUpdate strategy with maxSurge: 1 and maxUnavailable: 0 for zero-downtime deployments.

The UI container includes a preStop lifecycle hook (sleep 5) to allow in-flight requests to complete before the pod is terminated. Combined with terminationGracePeriodSeconds (default: 45), this ensures graceful shutdown during rollouts and node drains.

K8s Cluster Management

KeyTypeDefaultDescription
ui.k8s.enabledbooltrueEnable Kubernetes cluster management features (Create Cluster).
ui.k8s.verifySslbooltrueVerify TLS certificates when connecting to the Kubernetes API server. Set to false for clusters with self-signed or non-standard CA certificates.

UI Resources

KeyTypeDefaultDescription
ui.resources.requests.cpustring100mCPU request.
ui.resources.requests.memorystring256MiMemory request.
ui.resources.limits.cpustring200mCPU limit.
ui.resources.limits.memorystring512MiMemory limit.

Security Context

KeyTypeDefaultDescription
ui.podSecurityContext.runAsNonRootbooltrueRun pod as non-root.
ui.podSecurityContext.runAsUserint1001User ID.
ui.podSecurityContext.fsGroupint1001Filesystem group ID.
ui.podSecurityContext.seccompProfile.typestringRuntimeDefaultSeccomp profile type.
ui.securityContext.allowPrivilegeEscalationboolfalseDisallow privilege escalation.
ui.securityContext.readOnlyRootFilesystemboolfalseRead-only root filesystem.
ui.securityContext.capabilities.droplist["ALL"]Drop all Linux capabilities.

Probes

KeyTypeDefaultDescription
ui.livenessProbe.httpGet.pathstring/api/healthLiveness probe path.
ui.livenessProbe.httpGet.portstringbackendLiveness probe port.
ui.livenessProbe.initialDelaySecondsint15Initial delay.
ui.livenessProbe.periodSecondsint20Check period.
ui.livenessProbe.timeoutSecondsint5Timeout.
ui.readinessProbe.httpGet.pathstring/api/healthReadiness probe path.
ui.readinessProbe.httpGet.portstringbackendReadiness probe port.
ui.readinessProbe.initialDelaySecondsint5Initial delay.
ui.readinessProbe.periodSecondsint10Check period.
ui.readinessProbe.timeoutSecondsint5Timeout.
ui.startupProbe.httpGet.pathstring/api/healthStartup probe path.
ui.startupProbe.httpGet.portstringbackendStartup probe port.
ui.startupProbe.periodSecondsint5Check period.
ui.startupProbe.timeoutSecondsint3Timeout.
ui.startupProbe.failureThresholdint30Max failures before giving up (allows 150s startup).

Environment

KeyTypeDefaultDescription
ui.env.frontendPortstring(from ui.service.frontendPort)Frontend port injected into the ConfigMap as FRONTEND_PORT. Automatically derived from the service port configuration.
ui.env.backendPortstring(from ui.service.backendPort)Backend port injected into the ConfigMap as BACKEND_PORT. Automatically derived from the service port configuration.
ui.env.corsOriginsstring""Backend CORS origins. Empty means no CORS (frontend proxies via Next.js rewrites).
ui.env.logLevelstring"INFO"Log level: DEBUG, INFO, WARNING, ERROR.
ui.env.logFormatstring"text"Log format: text for human-readable, json for structured logging.
ui.env.databaseUrlstring""External PostgreSQL connection URL. Only used when postgresql.enabled is false.
ui.env.dbPoolSizeint5DB connection pool size.
ui.env.dbPoolOverflowint10Max overflow connections beyond pool size.
ui.env.dbPoolTimeoutint30Pool checkout timeout in seconds.
ui.env.k8sApiTimeoutint30Kubernetes API request timeout in seconds.

UI Monitoring

KeyTypeDefaultDescription
ui.metrics.serviceMonitor.enabledboolfalseCreate a ServiceMonitor for the UI backend metrics endpoint.
ui.metrics.serviceMonitor.intervalstring30sScrape interval.
ui.metrics.serviceMonitor.scrapeTimeoutstring10sScrape timeout.
ui.metrics.serviceMonitor.labelsobject{}Additional labels for ServiceMonitor discovery.

The UI ServiceMonitor scrapes the backend metrics endpoint at /api/metrics. This path is explicitly set in the ServiceMonitor template to ensure Prometheus collects application-level metrics correctly.

UI Scheduling

KeyTypeDefaultDescription
ui.nodeSelectorobject{}Node selector for UI pods.
ui.tolerationslist[]Tolerations for UI pods.
ui.affinityobject{}Affinity rules for UI pods.
ui.topologySpreadConstraintslist[]Topology spread constraints for UI pods.
ui.podAnnotationsobject{}Additional annotations for UI pods.
ui.podLabelsobject{}Additional labels for UI pods.
ui.terminationGracePeriodSecondsint45Termination grace period in seconds.

UI Host Network

KeyTypeDefaultDescription
ui.hostNetworkboolfalseRun the UI pod in the host network namespace. Useful for local/dev clusters (e.g., Kind) that need to reach corporate Aerospike hosts via the host's VPN/DNS resolver. Do not enable in production.
ui.dnsPolicystring""Override the pod dnsPolicy. When hostNetwork is true and this is empty, defaults to ClusterFirstWithHostNet.
ui.dnsConfigobject{}Additional Pod DNS configuration (searches, nameservers, options). Useful for adding corporate search domains.

UI Aerospike Ports

KeyTypeDefaultDescription
ui.aerospikePorts.serviceint3000Aerospike service port.
ui.aerospikePorts.fabricint3001Aerospike fabric port.
ui.aerospikePorts.heartbeatint3002Aerospike heartbeat port.

UI Network Policy

KeyTypeDefaultDescription
ui.networkPolicy.enabledboolfalseEnable NetworkPolicy for restricting UI traffic.
ui.networkPolicy.ingressFromlist[]Optional ingress source restrictions.

UI Pod Disruption Budget

KeyTypeDefaultDescription
ui.podDisruptionBudget.enabledboolfalseEnable PDB for UI pods.
ui.podDisruptionBudget.minAvailableint1Minimum available pods.
ui.podDisruptionBudget.maxUnavailableintMaximum unavailable pods.

UI Autoscaling

KeyTypeDefaultDescription
ui.autoscaling.enabledboolfalseEnable HPA for UI.
ui.autoscaling.minReplicasint1Minimum replicas.
ui.autoscaling.maxReplicasint3Maximum replicas.
ui.autoscaling.targetCPUUtilizationPercentageint80Target CPU utilization.
ui.autoscaling.targetMemoryUtilizationPercentageintTarget memory utilization (optional).

Extra Environment Variables

KeyTypeDefaultDescription
ui.extraEnvlist[]Extra environment variables for the UI container. Supports standard Kubernetes env var syntax including valueFrom references.

UI Helm Tests

KeyTypeDefaultDescription
ui.tests.enabledbooltrueEnable Helm test pods for UI (run with helm test <release>).

Default AerospikeClusterTemplates

KeyTypeDefaultDescription
defaultTemplates.enabledbooltrueCreate pre-built AerospikeClusterTemplate resources (minimal, soft-rack, hard-rack). Templates are cluster-scoped and accessible from all namespaces.

The three default template tiers are configured under defaultTemplates.templates.minimal, defaultTemplates.templates.soft-rack, and defaultTemplates.templates.hard-rack. See Template Management for details on each tier.