Get started with AKO in the cloud
This tutorial describes how to create an Aerospike Database Enterprise Edition deployment using the Aerospike Kubernetes Operator (AKO) on Google Kubernetes Engine (GKE) or Amazon Elastic Kubernetes Service (EKS).
Most steps on this page are performed in the same way on GKE or EKS. Where there is a difference, choose the tab that applies to your deployment.
Prerequisites
- A running GKE or EKS Kubernetes cluster
- The
gcloud
oraws
terminal utilities - Helm
- Git
- Kubectl
- An Aerospike Enterprise Edition feature-key file.
- Download a free Enterprise Edition feature-key file good for 60 days at this link: Get Started with Aerospike
This tutorial assumes basic knowledge of Kubernetes and that your terminal is set up to communicate with your cloud Kubernetes instance.
Pre-install
Your cloud Kubernetes instance should be set up to the point that you can run commands with your local terminal to create Secrets and install Helm charts. You can test this with the following commands. Copy and paste the commands into your terminal. If all commands complete without errors, your environment is ready to install AKO
# Point kubectl at the correct GKE clustergcloud container clusters get-credentials CLUSTER_NAME --region REGION
# Check connectivity and versionskubectl cluster-info # API-server reachable?kubectl get nodes -o wide # Nodes visible?helm version --short # Helm installed?git --version # Git installed?
# Point kubectl at the correct EKS clusteraws eks update-kubeconfig --region REGION --name CLUSTER_NAME
# Check connectivity and versionskubectl cluster-info # API-server reachable?kubectl get nodes -o wide # Nodes visible?helm version --short # Helm installed?git --version # Git installed?
Install AKO
In this section, you use Helm to install AKO on your Kubernetes cluster and configure the Kubernetes namespace to watch for Aerospike database deployment.
-
Add the JetStack Helm repository so you can install
cert-manager
, a utility that AKO relies on to manage certificates.Terminal window helm repo add jetstack https://charts.jetstack.io --force-update -
Install the
cert-manager
Helm chart.Terminal window helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --version v1.17.0 --set crds.enabled=true -
Add the AKO Helm repository.
Terminal window helm repo add aerospike https://aerospike.github.io/aerospike-kubernetes-enterprise -
Install AKO to your cluster.
Terminal window helm install aerospike-kubernetes-operator aerospike/aerospike-kubernetes-operator --version=4.1.0 --set watchNamespaces="aerospike"
AKO is now running on your cluster and is ready to create a new Aerospike Database deployment.
Deploy an Aerospike database
In this section, you use kubectl
to deploy Aerospike Database.
This tutorial uses a pre-built sample configuration for Aerospike database deployment.
-
Create the
aerospike
namespace for your Aerospike Database deployment. While AKO watches all namespaces by default, in the previous section AKO was instructed to watch the namespaceaerospike
.kubectl create namespace aerospike -
Download the Aerospike Kubernetes Operator repository from GitHub to your local machine. This repository contains sample configuration files for an Aerospike Database deployment. You can edit and modify these files on your local machine before using
kubectl
to apply the changes to the cluster.Terminal window git clone https://github.com/aerospike/aerospike-kubernetes-operator.gitThe directories you need to use during this tutorial are
config
andsamples
as shown in the following diagram:Directoryaerospike-kubernetes-operator
Directoryapi/
- …
Directorycmd/
- …
Directoryconfig/
Directorysamples/
- …
- … (sample configuration files)
- … (other directories)
-
Navigate to the repository folder and the most recent release branch, 4.1.0.
Terminal window cd aerospike-kubernetes-operatorgit checkout v4.1.0Your working directory is now
aerospike-kubernetes-operator/
. All file paths in the rest of this tutorial assume this working directory. -
Put your
features.conf
feature-key file in theconfig/samples/secrets
directory. This lets you apply a folder of secrets including TLS certs all at once. -
Pass the
config/samples/secrets
directory tokubectl
to create the Kubernetes Secrets.Terminal window kubectl -n aerospike create secret generic aerospike-secret --from-file=config/samples/secretskubectl -n aerospike create secret generic auth-secret --from-literal=password='admin123' -
Create a ServiceAccount in the
aerospike
namespace for AKO to work within.Terminal window kubectl -n aerospike create serviceaccount aerospike-operator-controller-manager -
Create a ClusterRoleBinding to attach the
aerospike-cluster
ClusterRole with the ServiceAccount from the previous step.Terminal window kubectl create clusterrolebinding aerospike-cluster --clusterrole=aerospike-cluster --serviceaccount=aerospike:aerospike-operator-controller-manager -
Prepare the cluster to use SSD storage with a sample storage class file from the GitHub repository.
Terminal window kubectl apply -f config/samples/storage/gce_ssd_storage_class.yamlTerminal window kubectl apply -f config/samples/storage/eks_ssd_storage_class.yaml -
Create the Aerospike cluster using a sample Custom Resource (CR) file that uses SSD storage.
Terminal window kubectl apply -f config/samples/ssd_storage_cluster_cr.yaml -
Run the following command to check the startup status of the Aerospike cluster.
Terminal window kubectl get aerospikeclusters aerocluster -n aerospike -wWait until the PHASE column shows
Completed
. This can take a few minutes, depending on your cluster size and the resources available.Terminal window NAME SIZE IMAGE MULTIPODPERHOST HOSTNETWORK AGE PHASEaerocluster 2 aerospike/aerospike-server-enterprise:8.1.0.0 true 2s InProgressaerocluster 2 aerospike/aerospike-server-enterprise:8.1.0.0 true 21s InProgressaerocluster 2 aerospike/aerospike-server-enterprise:8.1.0.0 true 21s InProgressaerocluster 2 aerospike/aerospike-server-enterprise:8.1.0.0 true 27s InProgressaerocluster 2 aerospike/aerospike-server-enterprise:8.1.0.0 true 28s Completed -
Run the following command to find the access endpoints. Client applications connect to these endpoints to access your Aerospike Database deployment for reading and writing data.
Terminal window kubectl -n aerospike describe aerospikeclusters aerocluster | grep -E 'Access Endpoints|Alternate Access Endpoints' -A1
You now have a running Aerospike Database deployment using AKO!
Next steps
The biggest difference between the cluster created in this tutorial and a production cluster is in the storage class and CR file configurations. See the AKO Configuration section to learn how to configure your deployment for your own application needs.
Become familiar with the Aerospike Backup Service (ABS) and the monitoring stack. They are separate services that run alongside the database in your cluster. ABS listens for REST requests to perform backups and restores of the database, while the monitoring stack allows you to visualize cluster statistics on Grafana dashboards.