Aerospike Kubernetes Operator
The Aerospike Kubernetes Operator automates the deployment and management of Aerospike Enterprise clusters on Kubernetes. The Operator has a controller which manages a Custom Resource Definition (CRD) to extend the Kubernetes API for Aerospike clusters. Aerospike cluster deployment and life cycle management are performed by updating an Aerospike cluster Custom Resource (CR).
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.
This documentation includes examples of various Aerospike configuration settings and possibilities you can use with your Aerospike cluster on Kubernetes. If you have questions, suggestions, or other feedback, please let us know.
What features does it provide?
The goal of the Operator is to give you the ability to deploy multi-node Aerospike clusters, recover from node failures, scale up or down as load changes, ensure nodes are evenly split across racks or zones, update to new versions of Aerospike, and manage configuration changes in your clusters.
The Operator supports the following capabilities:
- Deploy Aerospike clusters
- Scale up and down existing Aerospike clusters
- Version upgrade and downgrade
- Configure persistent storage and resource allocation
- Standardize and validate configurations
- Cluster security management
- Attach custom sidecars and init containers
Architecture
The Aerospike Kubernetes Operator has a custom controller (written in Go) that allows us to embed specific lifecycle management logic to manage the state of an Aerospike cluster. It does so by managing a Custom Resource Definition (CRD) to extend the Kubernetes API for Aerospike clusters. Regular maintenance to the Aerospike cluster deployment and management can be performed by updating an Aerospike Enterprise cluster Custom Resource (CR).
The Operator is deployed with StatefulSet and operates as a headless service to handle the DNS resolution of pods in the deployment. Kubernetes StatefulSets is the workload API object that is used to manage stateful applications. It is important because it manages the deployment and scaling of a set of Pods, and provides guarantees about the ordering and uniqueness of these Pods (e.g. as unique addressable identities).
The Operator takes a layered approach to orchestration. This allows the Operator to manage Aerospike cluster tasks outside the Aerospike deployment.