forked from apache/couchdb-helm
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Initial import from http://github.com/helm/charts/stable
- Loading branch information
0 parents
commit 3e77c49
Showing
12 changed files
with
658 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Patterns to ignore when building packages. | ||
# This supports shell glob matching, relative path matching, and | ||
# negation (prefixed with !). Only one pattern per line. | ||
.DS_Store | ||
# Common VCS dirs | ||
.git/ | ||
.gitignore | ||
.bzr/ | ||
.bzrignore | ||
.hg/ | ||
.hgignore | ||
.svn/ | ||
# Common backup files | ||
*.swp | ||
*.bak | ||
*.tmp | ||
*~ | ||
# Various IDEs | ||
.project | ||
.idea/ | ||
*.tmproj |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
apiVersion: v1 | ||
name: couchdb | ||
version: 2.2.0 | ||
appVersion: 2.3.1 | ||
description: A database featuring seamless multi-master sync, that scales from | ||
big data to mobile, with an intuitive HTTP/JSON API and designed for | ||
reliability. | ||
keywords: | ||
- couchdb | ||
- database | ||
- nosql | ||
home: https://couchdb.apache.org/ | ||
sources: | ||
- https://github.com/apache/couchdb-docker | ||
maintainers: | ||
- name: kocolosk | ||
email: [email protected] | ||
icon: http://couchdb.apache.org/CouchDB-visual-identity/logo/CouchDB-couch-symbol.svg |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,133 @@ | ||
# CouchDB | ||
|
||
Apache CouchDB is a database featuring seamless multi-master sync, that scales | ||
from big data to mobile, with an intuitive HTTP/JSON API and designed for | ||
reliability. | ||
|
||
This chart deploys a CouchDB cluster as a StatefulSet. It creates a ClusterIP | ||
Service in front of the Deployment for load balancing by default, but can also | ||
be configured to deploy other Service types or an Ingress Controller. The | ||
default persistence mechanism is simply the ephemeral local filesystem, but | ||
production deployments should set `persistentVolume.enabled` to `true` to attach | ||
storage volumes to each Pod in the Deployment. | ||
|
||
## TL;DR | ||
|
||
```bash | ||
$ helm install stable/couchdb --set allowAdminParty=true | ||
``` | ||
|
||
## Prerequisites | ||
|
||
- Kubernetes 1.8+ with Beta APIs enabled | ||
|
||
## Installing the Chart | ||
|
||
To install the chart with the release name `my-release`: | ||
|
||
```bash | ||
$ helm install --name my-release stable/couchdb | ||
``` | ||
|
||
This will create a Secret containing the admin credentials for the cluster. | ||
Those credentials can be retrieved as follows: | ||
|
||
```bash | ||
$ kubectl get secret my-release-couchdb -o go-template='{{ .data.adminPassword }}' | base64 --decode | ||
``` | ||
|
||
If you prefer to configure the admin credentials directly you can create a | ||
Secret containing `adminUsername`, `adminPassword` and `cookieAuthSecret` keys: | ||
|
||
```bash | ||
$ kubectl create secret generic my-release-couchdb --from-literal=adminUsername=foo --from-literal=adminPassword=bar --from-literal=cookieAuthSecret=baz | ||
``` | ||
|
||
and then install the chart while overriding the `createAdminSecret` setting: | ||
|
||
```bash | ||
$ helm install --name my-release --set createAdminSecret=false stable/couchdb | ||
``` | ||
|
||
This Helm chart deploys CouchDB on the Kubernetes cluster in a default | ||
configuration. The [configuration](#configuration) section lists | ||
the parameters that can be configured during installation. | ||
|
||
> **Tip**: List all releases using `helm list` | ||
## Uninstalling the Chart | ||
|
||
To uninstall/delete the `my-release` Deployment: | ||
|
||
```bash | ||
$ helm delete my-release | ||
``` | ||
|
||
The command removes all the Kubernetes components associated with the chart and | ||
deletes the release. | ||
|
||
## Upgrading an existing Release to a new major version | ||
|
||
A major chart version change (like v0.2.3 -> v1.0.0) indicates that there is an | ||
incompatible breaking change needing manual actions. | ||
|
||
### 1.0.0 | ||
|
||
This version removes the `chart` and `heritage` labels from the | ||
`volumeClaimTemplates` which is immutable and prevents chart from being upgraded | ||
(see https://github.com/helm/charts/issues/7803 for details). | ||
|
||
In order to upgrade, delete the CouchDB StatefulSet before upgrading: | ||
|
||
```bash | ||
$ kubectl delete statefulsets --cascade=false my-release-couchdb | ||
``` | ||
|
||
## Configuration | ||
|
||
The following table lists the most commonly configured parameters of the | ||
CouchDB chart and their default values: | ||
|
||
| Parameter | Description | Default | | ||
|---------------------------------|-------------------------------------------------------|----------------------------------------| | ||
| `clusterSize` | The initial number of nodes in the CouchDB cluster | 3 | | ||
| `couchdbConfig` | Map allowing override elements of server .ini config | chttpd.bind_address=any | | ||
| `allowAdminParty` | If enabled, start cluster without admin account | false (requires creating a Secret) | | ||
| `createAdminSecret` | If enabled, create an admin account and cookie secret | true | | ||
| `schedulerName` | Name of the k8s scheduler (other than default) | `nil` | | ||
| `erlangFlags` | Map of flags supplied to the underlying Erlang VM | name: couchdb, setcookie: monster | ||
| `persistentVolume.enabled` | Boolean determining whether to attach a PV to each node | false | ||
| `persistentVolume.size` | If enabled, the size of the persistent volume to attach | 10Gi | ||
| `enableSearch` | Adds a sidecar for Lucene-powered text search | false | | ||
|
||
A variety of other parameters are also configurable. See the comments in the | ||
`values.yaml` file for further details: | ||
|
||
| Parameter | Default | | ||
|---------------------------------|----------------------------------------| | ||
| `adminUsername` | admin | | ||
| `adminPassword` | auto-generated | | ||
| `cookieAuthSecret` | auto-generated | | ||
| `image.repository` | couchdb | | ||
| `image.tag` | 2.3.1 | | ||
| `image.pullPolicy` | IfNotPresent | | ||
| `searchImage.repository` | kocolosk/couchdb-search | | ||
| `searchImage.tag` | 0.1.0 | | ||
| `searchImage.pullPolicy` | IfNotPresent | | ||
| `initImage.repository` | busybox | | ||
| `initImage.tag` | latest | | ||
| `initImage.pullPolicy` | Always | | ||
| `ingress.enabled` | false | | ||
| `ingress.hosts` | chart-example.local | | ||
| `ingress.annotations` | | | ||
| `ingress.tls` | | | ||
| `persistentVolume.accessModes` | ReadWriteOnce | | ||
| `persistentVolume.storageClass` | Default for the Kube cluster | | ||
| `podManagementPolicy` | Parallel | | ||
| `affinity` | | | ||
| `resources` | | | ||
| `service.annotations` | | | ||
| `service.enabled` | true | | ||
| `service.type` | ClusterIP | | ||
| `service.externalPort` | 5984 | | ||
| `dns.clusterDomainSuffix` | cluster.local | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
Apache CouchDB is starting. Check the status of the Pods using: | ||
|
||
kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "couchdb.name" . }},release={{ .Release.Name }}" | ||
|
||
Once all of the Pods are fully Ready, execute the following command to create | ||
some required system databases: | ||
|
||
kubectl exec --namespace {{ .Release.Namespace }} {{ if not .Values.allowAdminParty }}-it {{ end }}{{ template "couchdb.fullname" . }}-0 -c couchdb -- \ | ||
curl -s \ | ||
http://127.0.0.1:5984/_cluster_setup \ | ||
-X POST \ | ||
-H "Content-Type: application/json" \ | ||
{{- if .Values.allowAdminParty }} | ||
-d '{"action": "finish_cluster"}' | ||
{{- else }} | ||
-d '{"action": "finish_cluster"}' \ | ||
-u <adminUsername> | ||
{{- end }} | ||
|
||
Then it's time to relax. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
{{/* vim: set filetype=mustache: */}} | ||
{{/* | ||
Expand the name of the chart. | ||
*/}} | ||
{{- define "couchdb.name" -}} | ||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
Create a default fully qualified app name. | ||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). | ||
*/}} | ||
{{- define "couchdb.fullname" -}} | ||
{{- if .Values.fullnameOverride -}} | ||
{{- printf "%s-%s" .Values.fullnameOverride .Chart.Name | trunc 63 | trimSuffix "-" -}} | ||
{{- else -}} | ||
{{- $name := default .Chart.Name .Values.nameOverride -}} | ||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} | ||
{{- end -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
In the event that we create both a headless service and a traditional one, | ||
ensure that the latter gets a unique name. | ||
*/}} | ||
{{- define "couchdb.svcname" -}} | ||
{{- if .Values.fullnameOverride -}} | ||
{{- printf "%s-svc-%s" .Values.fullnameOverride .Chart.Name | trunc 63 | trimSuffix "-" -}} | ||
{{- else -}} | ||
{{- $name := default .Chart.Name .Values.nameOverride -}} | ||
{{- printf "%s-svc-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} | ||
{{- end -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
Create a random string if the supplied key does not exist | ||
*/}} | ||
{{- define "couchdb.defaultsecret" -}} | ||
{{- if . -}} | ||
{{- . | b64enc | quote -}} | ||
{{- else -}} | ||
{{- randAlphaNum 20 | b64enc | quote -}} | ||
{{- end -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
Labels used to define Pods in the CouchDB statefulset | ||
*/}} | ||
{{- define "couchdb.ss.selector" -}} | ||
app: {{ template "couchdb.name" . }} | ||
release: {{ .Release.Name }} | ||
{{- end -}} | ||
|
||
{{/* | ||
Generates a comma delimited list of nodes in the cluster | ||
*/}} | ||
{{- define "couchdb.seedlist" -}} | ||
{{- $nodeCount := min 5 .Values.clusterSize | int }} | ||
{{- range $index0 := until $nodeCount -}} | ||
{{- $index1 := $index0 | add1 -}} | ||
{{ $.Values.erlangFlags.name }}@{{ template "couchdb.fullname" $ }}-{{ $index0 }}.{{ template "couchdb.fullname" $ }}.{{ $.Release.Namespace }}.svc.{{ $.Values.dns.clusterDomainSuffix }}{{ if ne $index1 $nodeCount }},{{ end }} | ||
{{- end -}} | ||
{{- end -}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
apiVersion: v1 | ||
kind: ConfigMap | ||
metadata: | ||
name: {{ template "couchdb.fullname" . }} | ||
labels: | ||
app: {{ template "couchdb.name" . }} | ||
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" | ||
heritage: {{ .Release.Service | quote }} | ||
release: {{ .Release.Name | quote }} | ||
data: | ||
inifile: | | ||
{{ range $section, $settings := .Values.couchdbConfig -}} | ||
{{ printf "[%s]" $section }} | ||
{{ range $key, $value := $settings -}} | ||
{{ printf "%s = %s" $key ($value | toString) }} | ||
{{ end }} | ||
{{ end }} | ||
seedlistinifile: | | ||
[cluster] | ||
seedlist = {{ template "couchdb.seedlist" . }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
apiVersion: v1 | ||
kind: Service | ||
metadata: | ||
name: {{ template "couchdb.fullname" . }} | ||
labels: | ||
app: {{ template "couchdb.name" . }} | ||
chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} | ||
release: {{ .Release.Name }} | ||
heritage: {{ .Release.Service }} | ||
spec: | ||
clusterIP: None | ||
publishNotReadyAddresses: true | ||
ports: | ||
- name: couchdb | ||
port: 5984 | ||
selector: | ||
{{ include "couchdb.ss.selector" . | indent 4 }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
{{- if .Values.ingress.enabled -}} | ||
{{- $serviceName := include "couchdb.fullname" . -}} | ||
{{- $servicePort := .Values.service.externalPort -}} | ||
apiVersion: extensions/v1beta1 | ||
kind: Ingress | ||
metadata: | ||
name: {{ template "couchdb.fullname" . }} | ||
labels: | ||
app: {{ template "couchdb.name" . }} | ||
chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} | ||
release: {{ .Release.Name }} | ||
heritage: {{ .Release.Service }} | ||
annotations: | ||
{{- range $key, $value := .Values.ingress.annotations }} | ||
{{ $key }}: {{ $value | quote }} | ||
{{- end }} | ||
spec: | ||
rules: | ||
{{- range $host := .Values.ingress.hosts }} | ||
- host: {{ $host }} | ||
http: | ||
paths: | ||
- path: / | ||
backend: | ||
serviceName: {{ $serviceName }} | ||
servicePort: {{ $servicePort }} | ||
{{- end -}} | ||
{{- if .Values.ingress.tls }} | ||
tls: | ||
{{ toYaml .Values.ingress.tls | indent 4 }} | ||
{{- end -}} | ||
{{- end -}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
{{- if .Values.createAdminSecret -}} | ||
apiVersion: v1 | ||
kind: Secret | ||
metadata: | ||
name: {{ template "couchdb.fullname" . }} | ||
labels: | ||
app: {{ template "couchdb.fullname" . }} | ||
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" | ||
release: "{{ .Release.Name }}" | ||
heritage: "{{ .Release.Service }}" | ||
type: Opaque | ||
data: | ||
adminUsername: {{ template "couchdb.defaultsecret" .Values.adminUsername }} | ||
adminPassword: {{ template "couchdb.defaultsecret" .Values.adminPassword }} | ||
cookieAuthSecret: {{ template "couchdb.defaultsecret" .Values.cookieAuthSecret }} | ||
{{- end -}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
{{- if .Values.service.enabled -}} | ||
apiVersion: v1 | ||
kind: Service | ||
metadata: | ||
name: {{ template "couchdb.svcname" . }} | ||
labels: | ||
app: {{ template "couchdb.name" . }} | ||
chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} | ||
release: {{ .Release.Name }} | ||
heritage: {{ .Release.Service }} | ||
{{- if .Values.service.annotations }} | ||
annotations: | ||
{{ toYaml .Values.service.annotations | indent 4 }} | ||
{{- end }} | ||
spec: | ||
ports: | ||
- port: {{ .Values.service.externalPort }} | ||
protocol: TCP | ||
targetPort: 5984 | ||
type: {{ .Values.service.type }} | ||
selector: | ||
{{ include "couchdb.ss.selector" . | indent 4 }} | ||
{{- end -}} |
Oops, something went wrong.