mirror of
https://github.com/helm/charts.git
synced 2026-08-20 04:47:32 +00:00
Uses the [seedlist] feature in CouchDB 2.3.1 to join the nodes in the cluster. This removes the requirement for the statefulset-assembler sidecar. One slight niggle is that CouchDB will assume the seedlist contains fully qualified domain names, which can't be determined by Helm at install time. To address this, a new config value: `dns.clusterDomainSuffix` is added, which defaults to `cluster.local`. For now, users will need to modify this when using a non-default domain suffix. Signed-off-by: Will Holley <willholley@apache.org>
146 lines
4.8 KiB
YAML
146 lines
4.8 KiB
YAML
## clusterSize is the initial size of the CouchDB cluster.
|
|
clusterSize: 3
|
|
|
|
## If allowAdminParty is enabled the cluster will start up without any database
|
|
## administrator account; i.e., all users will be granted administrative
|
|
## access. Otherwise, the system will look for a Secret called
|
|
## <ReleaseName>-couchdb containing `adminUsername`, `adminPassword` and
|
|
## `cookieAuthSecret` keys. See the `createAdminSecret` flag.
|
|
## ref: https://kubernetes.io/docs/concepts/configuration/secret/
|
|
allowAdminParty: false
|
|
|
|
## If createAdminSecret is enabled a Secret called <ReleaseName>-couchdb will
|
|
## be created containing auto-generated credentials. Users who prefer to set
|
|
## these values themselves have a couple of options:
|
|
##
|
|
## 1) The `adminUsername`, `adminPassword`, and `cookieAuthSecret` can be
|
|
## defined directly in the chart's values. Note that all of a chart's values
|
|
## are currently stored in plaintext in a ConfigMap in the tiller namespace.
|
|
##
|
|
## 2) This flag can be disabled and a Secret with the required keys can be
|
|
## created ahead of time.
|
|
createAdminSecret: true
|
|
|
|
adminUsername: admin
|
|
# adminPassword: this_is_not_secure
|
|
# cookieAuthSecret: neither_is_this
|
|
|
|
## Use an alternate scheduler, e.g. "stork".
|
|
## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
|
|
##
|
|
# schedulerName:
|
|
|
|
## The storage volume used by each Pod in the StatefulSet. If a
|
|
## persistentVolume is not enabled, the Pods will use `emptyDir` ephemeral
|
|
## local storage. Setting the storageClass attribute to "-" disables dynamic
|
|
## provisioning of Persistent Volumes; leaving it unset will invoke the default
|
|
## provisioner.
|
|
persistentVolume:
|
|
enabled: false
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
size: 10Gi
|
|
# storageClass: "-"
|
|
|
|
## The CouchDB image
|
|
image:
|
|
repository: couchdb
|
|
tag: 2.3.1
|
|
pullPolicy: IfNotPresent
|
|
|
|
## Experimental integration with Lucene-powered fulltext search
|
|
searchImage:
|
|
repository: kocolosk/couchdb-search
|
|
tag: 0.1.2
|
|
pullPolicy: IfNotPresent
|
|
|
|
## Flip this to flag to include the Search container in each Pod
|
|
enableSearch: false
|
|
|
|
initImage:
|
|
repository: busybox
|
|
tag: latest
|
|
pullPolicy: Always
|
|
|
|
## CouchDB is happy to spin up cluster nodes in parallel, but if you encounter
|
|
## problems you can try setting podManagementPolicy to the StatefulSet default
|
|
## `OrderedReady`
|
|
podManagementPolicy: Parallel
|
|
|
|
## To better tolerate Node failures, we can prevent Kubernetes scheduler from
|
|
## assigning more than one Pod of CouchDB StatefulSet per Node using podAntiAffinity.
|
|
affinity:
|
|
# podAntiAffinity:
|
|
# requiredDuringSchedulingIgnoredDuringExecution:
|
|
# - labelSelector:
|
|
# matchExpressions:
|
|
# - key: "app"
|
|
# operator: In
|
|
# values:
|
|
# - couchdb
|
|
# topologyKey: "kubernetes.io/hostname"
|
|
|
|
## A StatefulSet requires a headless Service to establish the stable network
|
|
## identities of the Pods, and that Service is created automatically by this
|
|
## chart without any additional configuration. The Service block below refers
|
|
## to a second Service that governs how clients connect to the CouchDB cluster.
|
|
service:
|
|
# annotations:
|
|
enabled: true
|
|
type: ClusterIP
|
|
externalPort: 5984
|
|
|
|
## An Ingress resource can provide name-based virtual hosting and TLS
|
|
## termination among other things for CouchDB deployments which are accessed
|
|
## from outside the Kubernetes cluster.
|
|
## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/
|
|
ingress:
|
|
enabled: false
|
|
hosts:
|
|
- chart-example.local
|
|
annotations:
|
|
# kubernetes.io/ingress.class: nginx
|
|
# kubernetes.io/tls-acme: "true"
|
|
tls:
|
|
# Secrets must be manually created in the namespace.
|
|
# - secretName: chart-example-tls
|
|
# hosts:
|
|
# - chart-example.local
|
|
|
|
## Optional resource requests and limits for the CouchDB container
|
|
## ref: http://kubernetes.io/docs/user-guide/compute-resources/
|
|
resources: {}
|
|
# requests:
|
|
# cpu: 100m
|
|
# memory: 128Mi
|
|
# limits:
|
|
# cpu: 56
|
|
# memory: 256Gi
|
|
|
|
## erlangFlags is a map that is passed to the Erlang VM as flags using the
|
|
## ERL_FLAGS env. `name` and `setcookie` flags are minimally required to
|
|
## establish connectivity between cluster nodes.
|
|
## ref: http://erlang.org/doc/man/erl.html#init_flags
|
|
erlangFlags:
|
|
name: couchdb
|
|
setcookie: monster
|
|
|
|
## couchdbConfig will override default CouchDB configuration settings.
|
|
## The contents of this map are reformatted into a .ini file laid down
|
|
## by a ConfigMap object.
|
|
## ref: http://docs.couchdb.org/en/latest/config/index.html
|
|
couchdbConfig:
|
|
# cluster:
|
|
# q: 8 # Create 8 shards for each database
|
|
chttpd:
|
|
bind_address: any
|
|
# chttpd.require_valid_user disables all the anonymous requests to the port
|
|
# 5984 when is set to true.
|
|
require_valid_user: false
|
|
|
|
|
|
# Kubernetes local cluster domain.
|
|
# This is used to generate FQDNs for peers when joining the CouchDB cluster.
|
|
dns:
|
|
clusterDomainSuffix: cluster.local
|