Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/nicolai86/couchdb-operator

prototype kubernetes operator for couchDB
https://github.com/nicolai86/couchdb-operator

couchdb couchdb-cluster couchdb-operator k8s kubernetes kubernetes-operator

Last synced: 3 months ago
JSON representation

prototype kubernetes operator for couchDB

Awesome Lists containing this project

README

        

# couchdb operator

this k8s operator allows you to run a 2.1 couchdb cluster on top of k8s.

## status

- [ ] operator
- [x] RBAC support
- [ ] CRD (CouchDB)
- [x] definition
- [x] management custom object add (spawn cluster)
- [ ] management custom object update (update cluster)
- [x] management custom object delete (delete cluster)
- [x] deployment template (port, readyness, livelyness)
- [ ] cluster management
- [x] credentials from configMap, secrets
- [x] pod anti affinity
- [x] node selection via labels
- [x] custom labels
- [ ] new pod -> join cluster
- [ ] old pod gone -> leave cluster
- [x] operator definition
- [x] README

## guiding notes

see 7 principles taken from coreOS post: https://coreos.com/blog/introducing-operators.html and https://github.com/kubernetes/community/blob/master/contributors/devel/controllers.md
## prerequisites

- k8s >= 1.7.0

## usage

```
$ kubectl apply -f k8s/resource-type.yml
$ kubectl apply -f k8s/deployment.yml
```

now, you can deploy a couchdb cluster like this:

```
apiVersion: "stable.couchdb.org/v1"
kind: CouchDB
metadata:
name: my-couchdb-cluster
spec:
version: "2.1.0"
image: "nicolai86/couchdb"
replicas: 3
```

the operator takes care of spawning the necessary pods and joining them into a single cluster.

## development

required: golang 1.9+, kubernetes cluster (minikube, GKE, Azure...).
To get a working operator locally, assuming kubectl is setup correctly:

```
$ go get -u github.com/golang/dep/cmd/dep
$ go get -du github.com/nicolai86/couchdb-operator
$ cd $(go env GOPATH)/src/github.com/nicolai86/couchdb-operator
$ dep ensure
$ OPERATOR_NAMESPACE=couchdb-operator
$ OPERATOR_NAME=couchdb-operator
$ KUBECONFIG=~/.kube/config
$ go run main.go
```