Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/nicolai86/couchdb-operator
- Owner: nicolai86
- Archived: true
- Created: 2017-08-30T23:51:21.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2017-09-05T02:31:42.000Z (about 7 years ago)
- Last Synced: 2024-05-22T13:33:00.936Z (6 months ago)
- Topics: couchdb, couchdb-cluster, couchdb-operator, k8s, kubernetes, kubernetes-operator
- Language: Go
- Homepage:
- Size: 11 MB
- Stars: 17
- Watchers: 3
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
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
```