1- # Navigator - managed DBaaS on Kubernetes [ ![ Build Status Widget]] [ Build Status ]
1+ # Navigator - self managed DBaaS on Kubernetes [ ![ Build Status Widget]] [ Build Status ]
22
33Navigator is a Kubernetes extension for managing common stateful services on
44Kubernetes. It is implemented as a custom apiserver that operates behind
@@ -10,47 +10,13 @@ other resource in Kubernetes core. This means you can manage fine-grained
1010permissions via conventional RBAC rules, allowing you to offer popular but
1111complex services "as a Service" within your organisation.
1212
13- To get started, jump to the [ quick-start guide ] ( docs/quick-start ) .
13+ For more in-depth information and to get started, jump to the [ docs ] ( https://navigator-dbaas.readthedocs.io ) .
1414
15- ## Design
15+ Here's a quick demo of creating, scaling and deleting a Cassandra database:
1616
17- As well as following "the operator model", Navigator additionally introduces
18- the concept of 'Pilots' - small 'nanny' processes that run inside each pod
19- in your application deployment. These Pilots are responsible for managing the
20- lifecycle of your underlying application process (e.g. an Elasticsearch JVM
21- process) and periodically report state information about the individual node
22- back to the Navigator API.
17+ ![ ] ( docs/images/demo.gif )
2318
24- By separating this logic into it's own binary that is run alongside each node,
25- in certain failure events the Pilot is able to intervene in order to help
26- prevent data loss, or otherwise update the Navigator API with details of the
27- failure so that navigator-controller can take action to restore service.
28-
29- Navigator has a few unique traits that differ from similar projects (such as
30- elasticsearch-operator, etcd-operator etc).
31-
32- - ** navigator-apiserver** - this takes on a similar role to ` kube-apiserver ` .
33- It is responsible for storing and coordinating all of the state stored for
34- Navigator. It requires a connection to an etcd cluster in order to do this. In
35- order to make Navigator API types generally consumable to users of your cluster,
36- it registers itself with kube-aggregator. It performs validation of your
37- resources, as well as performing conversions between API versions which allow
38- us to maintain a stable API without hindering development.
39-
40- - ** navigator-controller** - the controller is akin to ` kube-controller-manager ` .
41- It is responsible for actually realising your deployments within the Kubernetes
42- cluster. It can be seen as the 'operator' for the various applications
43- supported by ` navigator-apiserver ` .
44-
45- - ** pilots** - the pilot is responsible for managing each database process.
46- Currently Navigator has two types: ` pilot-elasticsearch ` and
47- ` pilot-cassandra ` .
48-
49- ## Architecture
50-
51- ![ alt text] ( docs/arch.jpg )
52-
53- ## Supported applications
19+ ## Supported databases
5420
5521Whilst we aim to support as many common applications as possible, it does take
5622a certain level of operational knowledge of the applications in question in
@@ -62,38 +28,11 @@ Please search for or create an issue for the application in question you'd like
6228to see a part of Navigator, and we can begin discussion on implementation &
6329planning.
6430
65- | Name | Version | Status | Notes |
66- | ------------- | --------- | ----------- | ----------------------------------------------------------- |
67- | Elasticsearch | 5.x | Alpha | [ more info] ( docs/supported-types/elasticsearch-cluster.md ) |
68- | Cassandra | 3.x | Alpha | [ more info] ( docs/supported-types/cassandra-cluster.md ) |
69- | Couchbase | | Coming soon | |
70-
71- ## Links
72-
73- * [ Quick-start] ( docs/quick-start )
74- * [ Developing quick-start] ( docs/developing.md )
75- * [ Resource types] ( docs/supported-types/README.md )
76- * [ ElasticsearchCluster] ( docs/supported-types/elasticsearch-cluster.md )
77-
78-
79- ## E2E Testing
80-
81- Navigator has an end-to-end test suite which verifies that Navigator can be
82- installed [ as documented in the quick start guide] ( docs/quick-start ) . The
83- tests are run on a Minikube cluster. Run the tests using the following
84- sequence of commands:
85-
86- ```
87- minikube start
88- # This ensures that the Docker image will be built in the Minikube VM
89- eval $(minikube docker-env)
90- # Override the Docker image tag so that it is built as :latest
91- # (the tag used in the documented deployment)
92- # XXX: This is a hack.
93- # Better if we had a helm chart in the documentation,
94- # so that we could provide an alternative navigator image and tag.
95- make BUILD_TAG=latest e2e-test
96- ```
31+ | Name | Version | Status | Notes |
32+ | ------------- | --------- | ----------- | --------------------------------------------------------------------------------- |
33+ | Elasticsearch | 5.x | Alpha | [ more info] ( https://navigator-dbaas.readthedocs.io/en/latest/elasticsearch.html ) |
34+ | Cassandra | 3.x | Alpha | [ more info] ( https://navigator-dbaas.readthedocs.io/en/latest/cassandra.html ) |
35+ | Couchbase | | Coming soon | |
9736
9837## Credits
9938
0 commit comments