Skip to main content
Loading
Version: Operator 2.5.0

Install the Aerospike Kubernetes 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.5.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 replicas2
operatorImage.repositoryOperator image repositoryaerospike/aerospike-kubernetes-operator
operatorImage.tagOperator image tag2.5.0
operatorImage.pullPolicyImage pull policyIfNotPresent
imagePullSecretsSecrets containing credentials to pull Operator image from a private registry{} (nil)
rbac.createSet this to true to let helm chart automatically create RBAC resources necessary for operatortrue
rbac.serviceAccountNameIf rbac.create=false, provide a service account name to be used with the operator deploymentdefault
healthPortHealth port8081
metricsPortMetrics port8080
webhookServicePortWebhook service port9443
kubeRBACProxyPortKube RBAC proxy listening port8443
certs.createSet this to true to let helm chart automatically create certificates using cert-managertrue
certs.webhookServerCertSecretNameKubernetes secret name which contains webhook server certificateswebhook-server-cert
watchNamespacesNamespaces to watch. Operator will watch for AerospikeCluster custom resources in these namespaces. Every watchedNamespace should already be existing. For every watched namespace, operator creates A ServiceAccount, ClusterRole and ClusterRoleBinding in that namespace.default
aerospikeKubernetesInitRegistryRegistry used to pull aerospike-init imagedocker.io
resourcesResource requests and limits for the operator pods{} (nil)
affinityAffinity rules for the operator deployment{} (nil)
extraEnvExtra environment variables that will be 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 port8443
metricsService.typeOperator's metrics service typeClusterIP
webhookService.labelsLabels for the operator's webhook service{} (nil)
webhookService.annotationsAnnotations for the operator's webhook service{} (nil)
webhookService.portOperator's webhook service port443
webhookService.typeOperator's webhook service typeClusterIP
podSecurityContextSecurity context for the operator pods{} (nil)
securityContextSecurity context for the operator container{} (nil)
livenessProbeLiveliness probe for operator containerinitialDelaySeconds: 15, periodSeconds: 20, timeoutSeconds: 1, successThreshold: 1, failureThreshold: 3
readinessProbeReadiness probe for the operator containerinitialDelaySeconds: 5, periodSeconds: 10, timeoutSeconds: 1, successThreshold: 1, failureThreshold: 3
kubeRBACProxy.image.repositoryKube RBAC Proxy image repository containergcr.io/kubebuilder/kube-rbac-proxy
kubeRBACProxy.image.tagKube RBAC Proxy image tagv0.13.0
kubeRBACProxy.image.pullPolicyKube RBAC Proxy image pull policyIfNotPresent
kubeRBACProxy.resourcesKube RBAC Proxy container resource{} (nil)