Skip to main content
Loading
Version: Operator 2.1.0

Install the Operator Using Helm

A Helm chart for installing the Aerospike Kubernetes Operator. To begin, create a new Kubernetes cluster on the platform of your choice, and configure kubectl to use that cluster. See the Requirements page for Kubernetes version and other requirements.

tip

If you plan to use Helm charts to deploy Aerospike clusters, you also need to use Helm to install the Operator, as described here.

Operator Overview

The Aerospike Kubernetes Operator makes it easier for you to use Aerospike Enterprise clusters on Kubernetes. Instead of making changes to the cluster by hand, you specify changes in the Aerospike cluster CR file and use kubectl apply to apply these changes. The Operator picks up the changes and does what it needs to do to make them happen.

For example, to add Rack Awareness to your Aerospike cluster, add a rack-aware section to the CR as described in Rack Awareness. Use kubectl apply -f to apply the CR, and the Operator deploys Rack Awareness as specified.

Requirements

Before installing the Operator, you must install cert-manager. The Operator uses admission webhooks, which needs TLS certificates. These are issued by cert-manager.

Follow the official cert-manager instructions to install cert-manager on your Kubernetes cluster before you install the Operator.

note

For Kubernetes 1.23 version or later, Pod Security Admission (PSA) is enabled by default. Make sure the namespace where the Aerospike Operator is installed has either baseline or privileged Pod Security Standard level set. The restricted level is not supported by Aerospike. The default Pod Security Standard level in Kubernetes 1.23 is privileged. For more details, see Apply Pod Security Standards

Get the Helm Charts

To get the Helm charts, clone the aerospike/aerospike-kubernetes-operator repository.

git clone https://github.com/aerospike/aerospike-kubernetes-operator.git
git checkout 2.1.0

The charts are in the aerospike-kubernetes-operator/helm-charts folder.

cd aerospike-kubernetes-operator/helm-charts

Deploy the Aerospike Kubernetes Operator

From the aerospike-kubernetes-operator/helm-charts folder, use this command to deploy the Operator.

helm install aerospike-kubernetes-operator ./aerospike-kubernetes-operator --set replicas=3

Configurations

NameDescriptionDefault
replicasNumber of operator replicas.2
operatorImage.repositoryOperator image repository.aerospike/aerospike-kubernetes-operator
operatorImage.tagOperator image tag.2.1.0
operatorImage.pullPolicyImage pull policy.IfNotPresent
imagePullSecretsSecrets containing credentials to pull Operator image from a private registry.{} (nil)
rbac.createSet this to true to let the Helm chart automatically create RBAC resources necessary for operator.true
rbac.serviceAccountNameIf rbac.create=false, provide a service account name to be used with the operator deployment.default
healthPortHealth port.8081
metricsPortMetrics port.8080
webhookServicePortWebhook service port.9443
kubeRBACProxyPortKube RBAC proxy listening port.8443
certs.createSet this to true to let the Helm chart automatically create certificates using cert-manager.true
certs.webhookServerCertSecretNameKubernetes Secret name which contains webhook server certificates.webhook-server-cert
watchNamespacesNamespaces to watch. Operator will watch for AerospikeCluster custom resources in these namespaces. Every watchedNamespace must already exist. For every watched namespace, the Operator creates A ServiceAccount, ClusterRole and ClusterRoleBinding in that namespace.default
aerospikeKubernetesInitRegistryRegistry used to pull aerospike-init image.docker.io
resourcesResource requests and limits for the operator pods.{} (nil)
affinityAffinity rules for the Operator deployment.{} (nil)
extraEnvExtra environment variables which is passed into the operator pods.{} (nil)
nodeSelectorNode selectors for scheduling the Operator pods based on node labels.{} (nil)
tolerationsTolerations for scheduling the Operator pods based on node taints.{} (nil)
annotationsAnnotations for the Operator deployment.{} (nil)
labelsLabels for the Operator deployment.{} (nil)
podAnnotationsAnnotations for the Operator pods.{} (nil)
podLabelsLabels for the Operator pods.{} (nil)
metricsService.labelsLabels for the Operator's metrics service.{} (nil)
metricsService.annotationsAnnotations for the Operator's metrics service.{} (nil)
metricsService.portOperator's metrics service port.8443
metricsService.typeOperator's metrics service type.ClusterIP
webhookService.labelsLabels for the Operator's webhook service.{} (nil)
webhookService.annotationsAnnotations for the Operator's webhook service.{} (nil)
webhookService.portOperator's webhook service port.443
webhookService.typeOperator's webhook service type.ClusterIP
podSecurityContextSecurity context for the Operator pods.{} (nil)
securityContextSecurity context for the Operator container.{} (nil)
livenessProbeLiveness probe for Operator container.initialDelaySeconds: 15, periodSeconds: 20, timeoutSeconds: 1, successThreshold: 1, failureThreshold: 3
readinessProbeReadiness probe for the Operator container.initialDelaySeconds: 5, periodSeconds: 10, timeoutSeconds: 1, successThreshold: 1, failureThreshold: 3
kubeRBACProxy.image.repositoryKube RBAC Proxy image repository container.gcr.io/kubebuilder/kube-rbac-proxy
kubeRBACProxy.image.tagKube RBAC Proxy image tag.v0.5.0
kubeRBACProxy.image.pullPolicyKube RBAC Proxy image pull policy.IfNotPresent
kubeRBACProxy.resourcesKube RBAC Proxy container resource.{} (nil)