• Stars
    star
    225
  • Rank 175,870 (Top 4 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created over 6 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

ArangoDB Kubernetes Operator - Start ArangoDB on Kubernetes in 5min

ArangoDB Kubernetes Operator

Docker Pulls

ArangoDB Kubernetes Operator helps to run ArangoDB deployments on Kubernetes clusters.

To get started, follow the Installation instructions below and/or read the tutorial.

State

The ArangoDB Kubernetes Operator is Production ready.

Documentation

Production readiness state

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".

Operator will supports versions supported on providers and maintained by Kubernetes. Once version is not supported anymore it will go into "Deprecating" state and will be marked as deprecated on Minor release.

Kubernetes versions starting from 1.18 are supported and tested, charts and manifests can use API Versions which are not present in older versions.

The following table has the general readiness state, the table below covers individual newer features separately.

Platform Kubernetes Version ArangoDB Version State Remarks Provider Remarks
Google GKE 1.21-1.25 >= 3.6.0 Production Don't use micro nodes
Azure AKS 1.21-1.24 >= 3.6.0 Production
Amazon EKS 1.21-1.24 >= 3.6.0 Production Amazon EKS
IBM Cloud 1.17 >= 3.6.0 Deprecated Support will be dropped in Operator 1.5.0
IBM Cloud 1.18-1.21 >= 3.6.0 Production
OpenShift 3.11 >= 3.6.0 Deprecated Support will be dropped in Operator 1.5.0
OpenShift 4.2-4.11 >= 3.6.0 Production
BareMetal (kubeadm) <= 1.20 >= 3.6.0 Deprecated Support will be dropped in Operator 1.5.0
BareMetal (kubeadm) 1.21-1.25 >= 3.6.0 Production
Minikube 1.21-1.25 >= 3.6.0 Devel Only
Other 1.21-1.25 >= 3.6.0 Devel Only

Feature-wise production readiness table:

Feature Operator Version ArangoDB Version ArangoDB Edition Introduced State Enabled Flag Remarks
Pod Disruption Budgets 0.3.11 Any Community, Enterprise 0.3.10 Production True N/A N/A
Volume Resizing 0.3.11 Any Community, Enterprise 0.3.10 Production True N/A N/A
Disabling of liveness probes 0.3.11 Any Community, Enterprise 0.3.10 Production True N/A N/A
Volume Claim Templates 1.0.0 Any Community, Enterprise 0.3.10 Production True N/A N/A
Prometheus Metrics Exporter 1.0.0 Any Community, Enterprise 0.3.10 Production True N/A Prometheus required
Sidecar Containers 1.0.0 Any Community, Enterprise 0.3.10 Production True N/A N/A
Operator Single Mode 1.0.4 Any Community, Enterprise 1.0.4 Production False --mode.single Only 1 instance of Operator allowed in namespace when feature is enabled
TLS SNI Support 1.0.3 >= 3.7.0 Enterprise 1.0.3 Production True --deployment.feature.tls-sni N/A
TLS Runtime Rotation Support 1.1.0 > 3.7.0 Enterprise 1.0.4 Production True --deployment.feature.tls-rotation N/A
JWT Rotation Support 1.1.0 > 3.7.0 Enterprise 1.0.3 Production True --deployment.feature.jwt-rotation N/A
Encryption Key Rotation Support 1.2.0 > 3.7.0 Enterprise 1.0.3 NotSupported False --deployment.feature.encryption-rotation N/A
Version Check 1.1.4 >= 3.6.0 Community, Enterprise 1.1.4 Alpha False --deployment.feature.upgrade-version-check N/A
Version Check 1.2.23 >= 3.6.0 Community, Enterprise 1.1.4 Production True --deployment.feature.upgrade-version-check N/A
Operator Maintenance Management Support 1.2.0 >= 3.6.0 Community, Enterprise 1.0.7 Production True --deployment.feature.maintenance N/A
Graceful Restart 1.2.5 >= 3.6.0 Community, Enterprise 1.0.7 Production True --deployment.feature.graceful-shutdown N/A
Optional Graceful Restart 1.2.25 >= 3.6.0 Community, Enterprise 1.2.5 Beta True --deployment.feature.optional-graceful-shutdown N/A
Operator Internal Metrics Exporter 1.2.0 >= 3.6.0 Community, Enterprise 1.2.0 Production True --deployment.feature.metrics-exporter N/A
Operator Ephemeral Volumes 1.2.2 >= 3.7.0 Community, Enterprise 1.2.2 Alpha False --deployment.feature.ephemeral-volumes N/A
Spec Default Restore 1.2.21 >= 3.7.0 Community, Enterprise 1.2.21 Beta True --deployment.feature.deployment-spec-defaults-restore If set to False Operator will not change ArangoDeployment Spec
Force Rebuild Out Synced Shards 1.2.27 >= 3.8.0 Community, Enterprise 1.2.27 Beta False --deployment.feature.force-rebuild-out-synced-shards It should be used only if user is aware of the risks.

Operator Community Edition (CE)

Image: arangodb/kube-arangodb:1.2.30

Installation of latest CE release using Kubectl

kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.30/manifests/arango-crd.yaml
kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.30/manifests/arango-deployment.yaml
# To use `ArangoLocalStorage`, also run
kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.30/manifests/arango-storage.yaml
# To use `ArangoDeploymentReplication`, also run
kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.30/manifests/arango-deployment-replication.yaml

This procedure can also be used for upgrades and will not harm any running ArangoDB deployments.

Installation of latest CE release using kustomize

Installation using kustomize looks like installation from yaml files, but user is allowed to modify namespace or resource names without yaml modifications.

IT is recommended to use kustomization instead of handcrafting namespace in yaml files - kustomization will replace not only resource namespaces, but also namespace references in resources like ClusterRoleBinding.

Example kustomization file:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

namespace: my-custom-namespace

bases:
  - https://github.com/arangodb/kube-arangodb/manifests/kustomize/deployment/?ref=1.0.3

Installation of latest CE release using Helm

Only use this procedure for a new install of the operator. See below for upgrades.

# The following will install the operator for `ArangoDeployment` &
# `ArangoDeploymentReplication` resources.
helm install https://github.com/arangodb/kube-arangodb/releases/download/1.2.30/kube-arangodb-1.2.30.tgz
# To use `ArangoLocalStorage`, set field `operator.features.storage` to true
helm install https://github.com/arangodb/kube-arangodb/releases/download/1.2.30/kube-arangodb-1.2.30.tgz --set "operator.features.storage=true"

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
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

helm delete vetoed-ladybird

but not delete steely-mule. Then you could install the new version with helm install as normal:

# The following will install the operator for `ArangoDeployment` &
# `ArangoDeploymentReplication` resources.
helm install https://github.com/arangodb/kube-arangodb/releases/download/1.2.30/kube-arangodb-1.2.30.tgz
# To use `ArangoLocalStorage`, set field `operator.features.storage` to true
helm install https://github.com/arangodb/kube-arangodb/releases/download/1.2.30/kube-arangodb-1.2.30.tgz --set "operator.features.storage=true"

Operator Enterprise Edition (EE)

Image: arangodb/kube-arangodb-enterprise:1.2.30

Installation of latest EE release using Kubectl

kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.30/manifests/enterprise-crd.yaml
kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.30/manifests/enterprise-deployment.yaml
# To use `ArangoLocalStorage`, also run
kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.30/manifests/enterprise-storage.yaml
# To use `ArangoDeploymentReplication`, also run
kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.30/manifests/enterprise-deployment-replication.yaml

This procedure can also be used for upgrades and will not harm any running ArangoDB deployments.

Installation of latest EE release using kustomize

Installation using kustomize looks like installation from yaml files, but user is allowed to modify namespace or resource names without yaml modifications.

IT is recommended to use kustomization instead of handcrafting namespace in yaml files - kustomization will replace not only resource namespaces, but also namespace references in resources like ClusterRoleBinding.

Example kustomization file:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

namespace: my-custom-namespace

bases:
  - https://github.com/arangodb/kube-arangodb/manifests/kustomize-enterprise/deployment/?ref=1.0.3

Installation of latest EE release using Helm

Only use this procedure for a new install of the operator. See below for upgrades.

# The following will install the operator for `ArangoDeployment` &
# `ArangoDeploymentReplication` resources.
helm install https://github.com/arangodb/kube-arangodb/releases/download/1.2.30/kube-arangodb-1.2.30.tgz --set "operator.image=arangodb/kube-arangodb-enterprise:1.2.30"
# To use `ArangoLocalStorage`, set field `operator.features.storage` to true
helm install https://github.com/arangodb/kube-arangodb/releases/download/1.2.30/kube-arangodb-1.2.30.tgz --set "operator.image=arangodb/kube-arangodb-enterprise:1.2.30" --set "operator.features.storage=true"

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
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

helm delete vetoed-ladybird

but not delete steely-mule. Then you could install the new version with helm install as normal:

# The following will install the operator for `ArangoDeployment` &
# `ArangoDeploymentReplication` resources.
helm install https://github.com/arangodb/kube-arangodb/releases/download/1.2.30/kube-arangodb-1.2.30.tgz --set "operator.image=arangodb/kube-arangodb-enterprise:1.2.30"
# To use `ArangoLocalStorage`, set field `operator.features.storage` to true
helm install https://github.com/arangodb/kube-arangodb/releases/download/1.2.30/kube-arangodb-1.2.30.tgz --set "operator.image=arangodb/kube-arangodb-enterprise:1.2.30" --set "operator.features.storage=true"

Building

DOCKERNAMESPACE=<your dockerhub account> make
kubectl apply -f manifests/arango-deployment-dev.yaml
# To use `ArangoLocalStorage`, also run
kubectl apply -f manifests/arango-storage-dev.yaml
# To use `ArangoDeploymentReplication`, also run
kubectl apply -f manifests/arango-deployment-replication-dev.yaml

More Repositories

1

arangodb

πŸ₯‘ ArangoDB is a native multi-model database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions.
C++
13,407
star
2

arangojs

The official ArangoDB JavaScript driver.
TypeScript
599
star
3

python-arango

The official ArangoDB Python driver.
Python
444
star
4

velocypack

A fast and compact format for serialization and storage
C++
415
star
5

go-driver

The official ArangoDB go driver.
Go
338
star
6

arangodb-java-driver

The official ArangoDB Java driver.
Java
200
star
7

arangodb-php

PHP ODM for ArangoDB
PHP
183
star
8

spring-data

Spring Data ArangoDB
Java
109
star
9

arangodb-docker

Docker container for ArangoDB
Shell
104
star
10

example-datasets

Demo Data for ArangoDB
JavaScript
90
star
11

interactive_tutorials

Repository for all ArangoDB interactive tutorial notebooks.
Jupyter Notebook
89
star
12

guesser

Building a self-learning game with ArangoDB, io.js/NodeJS & AngularJS in half a day.
JavaScript
89
star
13

aqbjs

ArangoDB AQL query builder [DEPRECATED]
JavaScript
46
star
14

foxx-cli

CLI for managing Foxx services.
JavaScript
44
star
15

arangodb-java-driver-async

ArangoDB Asynchronous Java driver
Java
42
star
16

fuerte

Low Level C++ Driver for ArangoDB
C++
42
star
17

foxx-apps

List of all public FOXX Applications for ArangoDB
37
star
18

spring-data-demo

Java
35
star
19

arangodb-spark-connector

Scala
33
star
20

deployment

Fast-deploy arangodb instances on popular cloud computing platforms
29
star
21

spring-boot-starter

Java
22
star
22

docs

⚠ DEPRECATED! Source code of the legacy ArangoDB online documentation. See arangodb/docs-hugo
CSS
20
star
23

java-velocypack

Java
17
star
24

velocystream

Description of the Communication Protocol
15
star
25

arangodb-spark-datasource

ArangoDB Connector for Apache Spark, using the Spark DataSource API
Scala
14
star
26

cloud

ArangoGraph is the easiest way to run ArangoDB. Available on AWS, Google Cloud & Azure.
14
star
27

go-velocypack

Go
13
star
28

dashboards

Grafana dashboards for monitoring ArangoDB.
13
star
29

jackson-dataformat-velocypack

Java
13
star
30

1mDocsPerSec

Database latency and throughput tests for ArangoDB
C++
10
star
31

careers

Welcome to the ArangoDB Careers repository! These are the current open positions at ArangoDB. If you want to join us on this great journey, this is the right place to start.
10
star
32

release-test-automation

Python
9
star
33

python-arango-async

Python
7
star
34

feed

A tool to feed generated random data of various types into ArangoDB and run other load
Go
7
star
35

oskar

Shell
7
star
36

arangodb-java-reactive-driver

DRAFT VERSION
Java
6
star
37

java-velocypack-module-scala

Scala
6
star
38

docs-hugo

Source code of the ArangoDB online documentation
Python
5
star
39

foxx-ui-template

Minimalistic foxx ui template using pure css
CSS
5
star
40

arangodb-dcos

DCOS CLI for ArangoDB
Python
5
star
41

java-velocypack-module-jdk8

Java
5
star
42

cluster-maintenance

These scripts are to be used with caution, under the guidance of ArangoDB support.
JavaScript
4
star
43

simple-performance-test

A collection of performance tests that test various aspects of ArangoDB.
JavaScript
4
star
44

graph-importer

Import graphs
Python
3
star
45

node-arangodb-cxx

ArangoDB node API in C++
C++
3
star
46

nx-arangodb

The ArangoDB backend to NetworkX
Python
3
star
47

gobench

Some parallel benchmarks in Go for ArangoDB
Go
3
star
48

kafka-connect-arangodb

Kafka Connect ArangoDB Sink Connector
Java
3
star
49

simple-java-performance-test

Java
2
star
50

clang-format-action

A Github Action to check for clang-format lint errors
Shell
2
star
51

jmeter

JMeter samples for ArangoDB
2
star
52

demo-aql-g6

React JS application using AntV G6 library to visualize of AQL query results
JavaScript
1
star
53

go-upgrade-rules

Code to describe which ArangoDB upgrades and downgrades are allowed
Go
1
star
54

node-velocypack

C++
1
star
55

arangodb-cleanup-framework

Cleanup helper framework
C++
1
star
56

resilience-tests

ArangoDB resilience tests
JavaScript
1
star
57

Neo4j-Arango-Migration

Jupyter Notebook
1
star
58

java-velocypack-module-joda

Java
1
star
59

upgrade-data-tests

Contains test data for upgrade tests
JavaScript
1
star
60

arangosync-client

Client Go-Library to communicate with ArangoSync processes.
Go
1
star
61

windows-procdump-wrapper

Wrapper around procdump that will put the dump relative to the executable instead of a fixed directory
C++
1
star
62

java-resilience-tests

Java
1
star
63

arangodb-spark-example

Scala
1
star
64

rta-makedata

JavaScript
1
star