Use kubectl to Create an Aerospike Cluster on Kubernetes
To deploy an Aerospike Database Enterprise Edition (EE) cluster with AKO, create an Aerospike custom resource (CR) file with the cluster parameters, such as the number of nodes, Aerospike configuration, and system resources.
Then use kubectl
to apply that configuration to your Kubernetes cluster(s).
The Aerospike Kubernetes Operator can deploy multiple Aerospike clusters within a single Kubernetes namespace, or in multiple namespaces.
Requirements
Before deploying your Aerospike cluster, install the Aerospike Kubernetes Operator on your Kubernetes cluster(s) using either:
Deploy Aerospike Database with AKO
-
Prepare the namespace. We recommend not using the Aerospike Kubernetes Operator’s namespace for your clusters. Instead, use at least one namespace called
aerospike
for Aerospike clusters.If this is the first cluster being launched, create and provide access for AKO to use this namespace.
You can use the
kubectl
orakoctl
tools to grant permissions for theaerospike
namespace.-
Create the Kubernetes namespace if not already created.
kubectl create namespace aerospike -
Create a service account.
kubectl -n aerospike create serviceaccount aerospike-operator-controller-manager -
Create a RoleBinding or ClusterRoleBinding to attach this service account to the
aerospike-cluster
ClusterRole. This ClusterRole is created as part of AKO installation and grants Aerospike cluster permissions to the service account.- For using the Kubernetes native, pod-only network to connect to the Aerospike cluster, create a RoleBinding with the following command:
kubectl -n aerospike create rolebinding aerospike-cluster --clusterrole=aerospike-cluster --serviceaccount=aerospike:aerospike-operator-controller-manager-
For connecting to the Aerospike cluster from outside Kubernetes, create a ClusterRoleBinding with the following command:
kubectl create clusterrolebinding aerospike-cluster --clusterrole=aerospike-cluster --serviceaccount=aerospike:aerospike-operator-controller-manager
-
If the required ClusterRoleBinding already exists in the cluster, edit it to attach a new service account.
kubectl edit clusterrolebinding aerospike-cluster -
The
kubectl edit
command launches an editor. Append the following lines to thesubjects
section:kind: ServiceAccountname: aerospike-operator-controller-managernamespace: aerospike -
Save and ensure that the changes are applied.
For instructions on installing the
akoctl
plugin, see akoctl installation.-
For using the Kubernetes native, pod-only network to connect to the Aerospike cluster, grant namespace scope permissions:
kubectl akoctl auth create -n aerospike --cluster-scope=false -
For connecting to the Aerospike cluster from outside Kubernetes, grant cluster scope permissions:
kubectl akoctl auth create -n aerospikeTo grant permissions for multiple namespaces at the same time, specify a comma-separated namespace list with the
-n
flag.kubectl akoctl auth create -n aerospike,aerospike1
-
-
Create your Aerospike cluster configuration file. The Aerospike Kubernetes Operator GitHub repository contains example YAML CR files for different types of cluster deployment. These files are located in the main Aerospike Kubernetes Operator repository.
See the cluster configuration reference page for details of each parameter.
-
Configure your storage class.
Persistent storage on the pods support a variety of storage class provisioners. You can access and download sample storage class files in the AKO GitHub repository. Apply one of the following sample storage classes based on your Kubernetes environment:
- EKS:
kubectl apply -f eks_ssd_storage_class.yaml
- GCE:
kubectl apply -f gce_ssd_storage_class.yaml
- Microk8s:
kubectl apply -f microk8s_filesystem_storage_class.yaml
These file paths assume that you are running commands from the folder containing the files. If not, replace the file name with the full path to the sample file.
See Storage Provisioning for more details on configuring persistent storage.
- EKS:
-
Create secrets to set up features like the feature-key file (
features.conf
), Aerospike authentication, TLS, and the cluster admin password. See the Manage TLS Certificates section for more details.The example secrets directory on GitHub includes a collection of example TLS certificates and security credentials.
Download these files into a local folder called
secrets
, then apply them as a Kubernetes Secret with the following command.Terminal window kubectl -n aerospike create secret generic aerospike-secret --from-file=secretsTo create a Secret containing the password for the Aerospike cluster admin user:
Terminal window kubectl -n aerospike create secret generic auth-secret --from-literal=password='admin123' -
Create Aerospike cluster custom resource (CR) file
See cluster configuration settings for details on the parameters available in the Aerospike cluster CR file. You can find sample Aerospike cluster CR files for different configurations in the AKO GitHub repository.
You can edit the CR file at any time to make changes and manage the Aerospike cluster.
-
Deploy the Aerospike cluster.
Use the Aerospike cluster custom resource YAML file (CR file) you created in the previous step to deploy an Aerospike cluster.
Terminal window kubectl apply -f CUSTOM_RESOURCE_FILE.yamlFor example, to use the dim_nostorage_cluster_cr.yaml file, download it and apply it to your cluster with the following command:
Terminal window kubectl apply -f dim_nostorage_cluster_cr.yamlTo deploy a non-root Aerospike cluster, see Create Non-root Aerospike Cluster.
-
Run
kubectl get statefulset
to ensure AKO has created the StatefulSets for the custom resource.Output:
Terminal window $ kubectl get statefulset -n aerospikeNAME READY AGEaerocluster-0 2/2 24s -
Run
kubectl get pods
to check the pods to confirm the status. This step may take time as the pods provision resources, initialize, and are ready. Wait for the pods to switch to the Running state before you continue.Output:
Terminal window $ kubectl get pods -n aerospikeNAME READY STATUS RESTARTS AGEaerocluster-0-0 1/1 Running 0 48saerocluster-0-1 1/1 Running 0 48sIf the Aerospike cluster pods do not switch to Running status in a few minutes, refer to the Troubleshooting Guide.