Helm chart for Aerospike REST Client on Kubernetes

Implements Aerospike REST client deployment on Kubernetes

Usage

Add Aerospike repository

helm repo add aerospike https://aerospike.github.io/aerospike-kubernetes-enterprise

Install the chart

helm install rest-client aerospike/aerospike-rest-client --set config.hostname=<aerospike_hostname>

Configuration

Connect to Aerospike cluster

Specify aerospike cluster seed IP or hostname and port

helm install rest-client aerospike/aerospike-rest-client \
            --set config.hostname=demo-aerospike-enterprise \
            --set config.port=3000

Specify username and password (for security enabled clusters)

helm install rest-client aerospike/aerospike-rest-client \
            --set config.hostname=demo-aerospike-enterprise \
            --set config.port=3000 \
            --set config.user=superman \
            --set config.password=krypton

Specify cluster name (if applicable)

--set config.clusterName=demo-aerospike-enterprise

Expose REST client deployment

Using NodePort type service

Aerospike REST client can be exposed for external access using NodePort type services.

Set service.type=NodePort to expose REST client via a NodePort.

Applications can access REST client endpoint at <K8sNodeIP>:<NodePort>.

Using LoadBalancer type service

Aerospike REST client can be exposed for external access using Load balancers.

Set service.type=LoadBalancer to expose REST client via a network load balancer.

Applications can access REST client endpoint at <LoadBalancerIP>:<LoadBalancerPort>

Using Ingress

Aerospike REST client can be exposed for external access using ingress.

  • Set ingress.enabled=true,
  • Specify ingress.annotations, ingress.rules and ingress.tls configuration.

For example (using nginx controller),

# Ingress resource settings
ingress:
  enabled: true
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
  rules: []
    - paths:
        - '/'
      # host: rest.aerospike.com
  tls: []
  # - secretName: rest-client-tls
  #   hosts:
  #   - rest.aerospike.com

Applications can access REST client endpoint at the specified url (or host) in the rules or at the external IP of ingress controller (loadbalancer).

Configuration parameters and default values

ParameterDescriptionDefault Value
replicaCountNumber of replicas for the Aerospike REST client deployment1
image.repositoryAerospike REST client docker image repositoryaerospike/aerospike-client-rest
image.tagAerospike REST client docker image taglatest
config.hostnameAerospike cluster Seed IP address to connect to127.0.0.1
config.portAerospike cluster Seed Port3000
config.userUsername for access control to connect to the aerospike cluster""
config.passwordPassword for access control to connect to the aerospike cluster""
config.clusterNameCluster name defined for the aerospike cluster""
config.requireAuthenticationRequire the Basic Authentication on each requestfalse
config.poolSizeRepresents the max size of the clients LRU cache16
serviceAccount.createCreate and use a serviceAccount for the deploymenttrue
serviceAccount.annotationsAnnotations for the serviceAccount resource{} (nil)
serviceAccount.nameServiceAccount name whether to be created or already existstrue
podSecurityContextPod security context{} (nil)
securityContextContainer security context{} (nil)
containerPortAerospike REST client deployment container port8080
service.typeType of service to access REST client deploymentClusterIP
service.portPort for the service to access REST client deployment8080
ingress.enabledEnable Ingress resourcefalse
ingress.annotationsAnnotations for Ingress resource{} (nil)
ingress.rulesRules for Ingress resource[] (nil)
ingress.tlsTLS configuration for Ingress resource[] (nil)
resourcesResources and Limits for REST client Deployment{} (nil)
nodeSelectorSpecify node selectors labels for Pod scheduling{} (nil)
tolerationsDefine tolerations and taints for Pod scheduling and execution[] (nil)
affinityDefine pod and node affinity and antiAffinity{} (nil)