Services and load balancer
By default, the ArangoDB Kubernetes Operator will also create an additional service to reach the ArangoDB deployment from outside the Kubernetes cluster.
For exposing the ArangoDB deployment to the outside, there are 2 options:
- Using a service. This will expose the deployment on a specific port (above 30.000) on all nodes of the Kubernetes cluster.
- Using a
LoadBalancer
service. This will expose the deployment on a load-balancer that is provisioned by the Kubernetes cluster.
The LoadBalancer
option is the most convenient, but not all Kubernetes clusters are able to provision a load-balancer. Therefore we offer a third (and default) option: Auto
. In this option, the ArangoDB Kubernetes Operator tries to create a LoadBalancer
service. It then waits for up to a minute for the Kubernetes cluster to provision a load-balancer for it. If that has not happened after a minute, the service is replaced by a service of type NodePort
.
To inspect the created service, run:
To use the ArangoDB servers from outside the Kubernetes cluster you have to add another service as explained below.
If you want to create external access services manually, follow the instructions below.
For a single server deployment, the operator creates a single Service
named <deployment-name>
. This service has a normal cluster IP address.
For a full cluster deployment, the operator creates two Services
.
<deployment-name>
a normalService
that selects only the Coordinators of the cluster. ThisService
is configured withClientIP
session affinity. This is needed for cursor requests, since they are bound to a specific Coordinator.
For a full cluster with datacenter replication deployment, the same Services
are created as for a Full cluster, with the following additions:
<deployment-name>-sync
a normalService
that selects only the syncmasters of the cluster.
Load balancer
If you want full control of the Services
needed to access the ArangoDB deployment from outside your Kubernetes cluster, set of the ArangoDeployment
to None
and create a Service
as specified below.
Create a Service
of type LoadBalancer
or NodePort
, depending on your Kubernetes deployment.
This service should select:
arango_deployment: <deployment-name>
The following example yields a service of type LoadBalancer
with a specific load balancer IP address. With this service, the ArangoDB cluster can now be reached on https://1.2.3.4:8529
.