2018-02-06 07:16:21 +00:00
|
|
|
# ArangoDB Kubernetes Operator
|
|
|
|
|
2018-09-11 13:03:30 +00:00
|
|
|
[![Docker Pulls](https://img.shields.io/docker/pulls/arangodb/kube-arangodb.svg)](https://hub.docker.com/r/arangodb/kube-arangodb/)
|
|
|
|
|
2019-07-04 13:37:01 +00:00
|
|
|
ArangoDB Kubernetes Operator helps to run ArangoDB deployments
|
2018-04-06 11:58:19 +00:00
|
|
|
on Kubernetes clusters.
|
2018-02-06 07:16:21 +00:00
|
|
|
|
2018-04-06 11:58:19 +00:00
|
|
|
To get started, follow the Installation instructions below and/or
|
|
|
|
read the [tutorial](./docs/Manual/Tutorials/Kubernetes/README.md).
|
|
|
|
|
|
|
|
## State
|
|
|
|
|
2018-06-19 09:47:56 +00:00
|
|
|
The ArangoDB Kubernetes Operator is still in **development**.
|
2018-04-06 11:58:19 +00:00
|
|
|
|
2018-04-11 06:49:40 +00:00
|
|
|
Running ArangoDB deployments (single, active-failover or cluster)
|
2018-06-19 09:47:56 +00:00
|
|
|
is reasonably stable, and we're in the process of validating
|
|
|
|
production readiness of various Kubernetes platforms.
|
2018-04-06 11:58:19 +00:00
|
|
|
|
|
|
|
The feature set of the ArangoDB Kubernetes Operator is close to what
|
2018-06-19 09:47:56 +00:00
|
|
|
it is intended to be.
|
2018-02-06 07:16:21 +00:00
|
|
|
|
2018-04-04 14:48:43 +00:00
|
|
|
[Documentation](./docs/README.md)
|
2018-03-12 11:18:50 +00:00
|
|
|
|
2018-06-19 10:02:21 +00:00
|
|
|
### Production readiness state
|
|
|
|
|
2019-06-07 10:02:04 +00:00
|
|
|
Beginning with Version 0.3.11 we maintain a production readiness
|
|
|
|
state for individual new features, since we expect that new
|
|
|
|
features will first be released with an "alpha" or "beta" readiness
|
|
|
|
state and over time move to full "production readiness".
|
|
|
|
|
|
|
|
The following table has the general readiness state, the table below
|
|
|
|
covers individual newer features separately.
|
|
|
|
|
2019-04-06 18:06:28 +00:00
|
|
|
| Platform | Kubernetes version | ArangoDB version | ArangoDB K8s Operator Version | State | Production ready | Remarks |
|
|
|
|
|----------------------|--------------------|------------------|-------------------------------|-------|------------------|-----------------------|
|
2019-10-18 07:56:31 +00:00
|
|
|
| Google GKE | 1.12 | >= 3.3.13 | | Runs | Yes | Don't use micro nodes |
|
|
|
|
| Google GKE | 1.13 | >= 3.3.13 | | Runs | Yes | Don't use micro nodes |
|
2019-04-06 18:06:28 +00:00
|
|
|
| Amazon EKS | 1.11 | >= 3.3.13 | | Runs | Yes | |
|
|
|
|
| Pivotal PKS | 1.11 | >= 3.3.13 | | Runs | Yes | |
|
2019-05-13 10:54:08 +00:00
|
|
|
| IBM Cloud | 1.11 | >= 3.4.5 | >= 0.3.11 | Runs | Yes | |
|
2019-05-28 09:40:56 +00:00
|
|
|
| IBM Cloud | 1.12 | >= 3.4.5 | >= 0.3.11 | Runs | Yes | |
|
2019-07-12 13:21:50 +00:00
|
|
|
| IBM Cloud | 1.13 | >= 3.4.6.1 | >= 0.3.11 | Runs | Yes | |
|
2019-04-06 18:06:28 +00:00
|
|
|
| Amazon & Kops | 1.10 | >= 3.3.13 | | Runs | No | |
|
|
|
|
| Azure AKS | 1.10 | >= 3.3.13 | | Runs | No | |
|
|
|
|
| OpenShift | 1.10 | >= 3.3.13 | | Runs | No | |
|
|
|
|
| Bare metal (kubeadm) | 1.10 | >= 3.3.13 | | Runs | Yes | |
|
|
|
|
| Bare metal (kubeadm) | 1.11 | >= 3.3.13 | | Runs | Yes | |
|
2019-04-30 11:48:12 +00:00
|
|
|
| Bare metal (kubeadm) | 1.12 | >= 3.3.13 | | Runs | In progress | |
|
2019-05-13 11:56:40 +00:00
|
|
|
| Bare metal (kubeadm) | 1.13 | >= 3.3.13 | | Runs | Yes | |
|
2019-04-06 18:06:28 +00:00
|
|
|
| Bare metal (kubeadm) | 1.14 | >= 3.3.13 | | Runs | In progress | |
|
|
|
|
| Minikube | 1.10 | >= 3.3.13 | | Runs | Not intended | |
|
|
|
|
| Docker for Mac Edge | 1.10 | >= 3.3.13 | | Runs | Not intended | |
|
2019-04-30 11:50:11 +00:00
|
|
|
| Scaleway Kubernetes | 1.10 | >= 3.3.13 | ? | No | | |
|
2018-06-19 10:02:21 +00:00
|
|
|
|
2019-06-07 10:02:04 +00:00
|
|
|
Feature-wise production readiness table:
|
2018-08-20 14:25:07 +00:00
|
|
|
|
2019-06-07 10:02:04 +00:00
|
|
|
| Feature | ArangoDB K8s Operator Version | Production Readiness | Remarks |
|
|
|
|
|------------------------------|---------------------------------------|---------------------------|-------------------|
|
|
|
|
| Pod Disruption Budgets | 0.3.10 | new - alpha | |
|
|
|
|
| | 0.3.11 | beta | |
|
|
|
|
| Volume Resizing | 0.3.10 | new - beta | |
|
|
|
|
| | 0.3.11 | beta | |
|
|
|
|
| Disabling of liveness probes | 0.3.10 | new - beta | |
|
|
|
|
| | 0.3.11 | production ready | |
|
|
|
|
| Volume Claim Templates | 0.3.11 | new - alpha | |
|
|
|
|
| Prometheus Metrics export | 0.3.11 | new - alpha | needs Prometheus |
|
|
|
|
| User sidecar containers | 0.3.11 | new - alpha | |
|
2019-02-26 08:56:28 +00:00
|
|
|
|
2019-09-25 10:38:10 +00:00
|
|
|
## Release notes for 0.3.16
|
|
|
|
|
|
|
|
In this release we have reworked the Helm charts. One notable change is
|
|
|
|
that we now create a new service account specifically for the operator.
|
|
|
|
The actual deployment still runs by default under the `default` service
|
|
|
|
account unless one changes that. Note that the service account under
|
|
|
|
which the ArangoDB runs needs a small set of extra permissions. For
|
|
|
|
the `default` service account we grant them when the operator is
|
|
|
|
deployed. If you use another service account you have to grant these
|
|
|
|
permissions yourself. See
|
|
|
|
[here](docs/Manual/Deployment/Kubernetes/DeploymentResource.md#specgroupserviceaccountname-string)
|
|
|
|
for details.
|
|
|
|
|
2019-04-08 09:42:21 +00:00
|
|
|
## Installation of latest release using Kubectl
|
|
|
|
|
|
|
|
```bash
|
2019-11-12 18:50:51 +00:00
|
|
|
kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/0.4.2/manifests/arango-crd.yaml
|
|
|
|
kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/0.4.2/manifests/arango-deployment.yaml
|
2019-04-08 09:42:21 +00:00
|
|
|
# To use `ArangoLocalStorage`, also run
|
2019-11-12 18:50:51 +00:00
|
|
|
kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/0.4.2/manifests/arango-storage.yaml
|
2019-04-08 09:42:21 +00:00
|
|
|
# To use `ArangoDeploymentReplication`, also run
|
2019-11-12 18:50:51 +00:00
|
|
|
kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/0.4.2/manifests/arango-deployment-replication.yaml
|
2019-04-08 09:42:21 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
This procedure can also be used for upgrades and will not harm any
|
|
|
|
running ArangoDB deployments.
|
|
|
|
|
|
|
|
## Installation of latest release using Helm
|
|
|
|
|
|
|
|
Only use this procedure for a new install of the operator. See below for
|
|
|
|
upgrades.
|
|
|
|
|
2018-08-20 14:25:07 +00:00
|
|
|
```bash
|
2018-10-30 16:13:06 +00:00
|
|
|
# The following will install the custom resources required by the operators.
|
2019-11-12 18:50:51 +00:00
|
|
|
helm install https://github.com/arangodb/kube-arangodb/releases/download/0.4.2/kube-arangodb-crd-0.4.2.tgz
|
2018-08-20 14:25:07 +00:00
|
|
|
# The following will install the operator for `ArangoDeployment` &
|
2018-11-09 04:34:54 +00:00
|
|
|
# `ArangoDeploymentReplication` resources.
|
2019-11-12 18:50:51 +00:00
|
|
|
helm install https://github.com/arangodb/kube-arangodb/releases/download/0.4.2/kube-arangodb-0.4.2.tgz
|
2019-09-23 07:00:10 +00:00
|
|
|
# To use `ArangoLocalStorage`, set field `operator.features.storage` to true
|
2019-11-12 18:50:51 +00:00
|
|
|
helm install https://github.com/arangodb/kube-arangodb/releases/download/0.4.2/kube-arangodb-0.4.2.tgz --set "operator.features.storage=true"
|
2018-08-20 14:25:07 +00:00
|
|
|
```
|
|
|
|
|
2019-04-08 09:42:21 +00:00
|
|
|
## Upgrading the operator using Helm
|
|
|
|
|
|
|
|
To upgrade the operator to the latest version with Helm, you have to
|
|
|
|
delete the previous deployment and then install the latest. **HOWEVER**:
|
|
|
|
You *must not delete* the deployment of the custom resource definitions
|
|
|
|
(CRDs), or your ArangoDB deployments will be deleted!
|
|
|
|
|
|
|
|
Therefore, you have to use `helm list` to find the deployments for the
|
|
|
|
operator (`kube-arangodb`) and of the storage operator
|
|
|
|
(`kube-arangodb-storage`) and use `helm delete` to delete them using the
|
|
|
|
automatically generated deployment names. Here is an example of a `helm
|
|
|
|
list` output:
|
|
|
|
|
|
|
|
```
|
|
|
|
% helm list
|
|
|
|
NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
|
|
|
|
steely-mule 1 Sun Mar 31 21:11:07 2019 DEPLOYED kube-arangodb-crd-0.3.9 default
|
|
|
|
vetoed-ladybird 1 Mon Apr 8 11:36:58 2019 DEPLOYED kube-arangodb-0.3.10-preview default
|
|
|
|
```
|
|
|
|
|
|
|
|
So here, you would have to do
|
2018-03-20 10:33:37 +00:00
|
|
|
|
|
|
|
```bash
|
2019-04-08 09:42:21 +00:00
|
|
|
helm delete vetoed-ladybird
|
|
|
|
```
|
|
|
|
|
|
|
|
but **not delete `steely-mule`**. Then you could install the new version
|
|
|
|
with `helm install` as normal:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
# The following will install the operator for `ArangoDeployment` &
|
|
|
|
# `ArangoDeploymentReplication` resources.
|
2019-11-12 18:50:51 +00:00
|
|
|
helm install https://github.com/arangodb/kube-arangodb/releases/download/0.4.2/kube-arangodb-0.4.2.tgz
|
2019-09-23 07:00:10 +00:00
|
|
|
# To use `ArangoLocalStorage`, set field `operator.features.storage` to true
|
2019-11-12 18:50:51 +00:00
|
|
|
helm install https://github.com/arangodb/kube-arangodb/releases/download/0.4.2/kube-arangodb-0.4.2.tgz --set "operator.features.storage=true"
|
2018-03-20 10:33:37 +00:00
|
|
|
```
|
|
|
|
|
2018-03-12 11:18:50 +00:00
|
|
|
## Building
|
|
|
|
|
|
|
|
```bash
|
2019-06-25 11:55:48 +00:00
|
|
|
DOCKERNAMESPACE=<your dockerhub account> make
|
2018-03-19 10:09:20 +00:00
|
|
|
kubectl apply -f manifests/arango-deployment-dev.yaml
|
|
|
|
# To use `ArangoLocalStorage`, also run
|
|
|
|
kubectl apply -f manifests/arango-storage-dev.yaml
|
2018-06-19 09:47:56 +00:00
|
|
|
# To use `ArangoDeploymentReplication`, also run
|
|
|
|
kubectl apply -f manifests/arango-deployment-replication-dev.yaml
|
2018-03-12 11:18:50 +00:00
|
|
|
```
|