diff --git a/charts/budibase/Chart.lock b/charts/budibase/Chart.lock index 75b9de07b5..3ee752a362 100644 --- a/charts/budibase/Chart.lock +++ b/charts/budibase/Chart.lock @@ -1,9 +1,6 @@ dependencies: - name: couchdb repository: https://apache.github.io/couchdb-helm - version: 3.3.4 -- name: ingress-nginx - repository: https://kubernetes.github.io/ingress-nginx - version: 4.0.13 -digest: sha256:20892705c2d8e64c98257d181063a514ac55013e2b43399a6e54868a97f97845 -generated: "2021-12-30T18:55:30.878411Z" + version: 4.3.0 +digest: sha256:94449a7f195b186f5af33ec5aa66d58b36bede240fae710f021ca87837b30606 +generated: "2023-11-20T17:43:02.777596Z" diff --git a/charts/budibase/Chart.yaml b/charts/budibase/Chart.yaml index b62c1ca248..e2c9378f2c 100644 --- a/charts/budibase/Chart.yaml +++ b/charts/budibase/Chart.yaml @@ -17,6 +17,6 @@ version: 0.0.0 appVersion: 0.0.0 dependencies: - name: couchdb - version: 4.4.5 + version: 4.3.0 repository: https://apache.github.io/couchdb-helm condition: services.couchdb.enabled diff --git a/charts/budibase/charts/couchdb-3.3.4.tgz b/charts/budibase/charts/couchdb-3.3.4.tgz deleted file mode 100644 index f7ebfd3e96..0000000000 Binary files a/charts/budibase/charts/couchdb-3.3.4.tgz and /dev/null differ diff --git a/charts/budibase/charts/couchdb-4.3.0.tgz b/charts/budibase/charts/couchdb-4.3.0.tgz new file mode 100644 index 0000000000..d3cce28ee6 Binary files /dev/null and b/charts/budibase/charts/couchdb-4.3.0.tgz differ diff --git a/charts/budibase/charts/ingress-nginx-4.0.13.tgz b/charts/budibase/charts/ingress-nginx-4.0.13.tgz deleted file mode 100644 index 1e34215c5f..0000000000 Binary files a/charts/budibase/charts/ingress-nginx-4.0.13.tgz and /dev/null differ diff --git a/charts/budibase/templates/app-service-service.yaml b/charts/budibase/templates/app-service-service.yaml index 390fbfe782..6d19590d45 100644 --- a/charts/budibase/templates/app-service-service.yaml +++ b/charts/budibase/templates/app-service-service.yaml @@ -6,9 +6,9 @@ metadata: name: app-service spec: ports: - - name: {{ .Values.services.apps.port | quote }} - port: {{ .Values.services.apps.port }} - targetPort: {{ .Values.services.apps.port }} + - name: {{ .Values.services.apps.port | quote }} + port: {{ .Values.services.apps.port }} + targetPort: {{ .Values.services.apps.port }} selector: io.kompose.service: app-service status: diff --git a/charts/budibase/templates/proxy-service-service.yaml b/charts/budibase/templates/proxy-service-service.yaml index e5dde301fa..988c540599 100644 --- a/charts/budibase/templates/proxy-service-service.yaml +++ b/charts/budibase/templates/proxy-service-service.yaml @@ -6,9 +6,9 @@ metadata: name: proxy-service spec: ports: - - name: { { .Values.services.proxy.port | quote } } - port: { { .Values.services.proxy.port } } - targetPort: { { .Values.services.proxy.port } } + - name: {{ .Values.services.proxy.port | quote }} + port: {{ .Values.services.proxy.port }} + targetPort: {{ .Values.services.proxy.port }} selector: app.kubernetes.io/name: budibase-proxy status: diff --git a/charts/budibase/templates/worker-service-service.yaml b/charts/budibase/templates/worker-service-service.yaml index 214ee7191e..c5f56ba205 100644 --- a/charts/budibase/templates/worker-service-service.yaml +++ b/charts/budibase/templates/worker-service-service.yaml @@ -6,9 +6,9 @@ metadata: name: worker-service spec: ports: - - name: { { .Values.services.worker.port | quote } } - port: { { .Values.services.worker.port } } - targetPort: { { .Values.services.worker.port } } + - name: {{ .Values.services.worker.port | quote }} + port: {{ .Values.services.worker.port }} + targetPort: {{ .Values.services.worker.port }} selector: io.kompose.service: worker-service status: diff --git a/charts/budibase/values.yaml b/charts/budibase/values.yaml index 5c750ce2ca..9409363bbb 100644 --- a/charts/budibase/values.yaml +++ b/charts/budibase/values.yaml @@ -261,22 +261,45 @@ services: # Override values in couchDB subchart couchdb: - ## clusterSize is the initial size of the CouchDB cluster. - clusterSize: 1 + # -- the initial number of nodes in 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 + # -couchdb containing `adminUsername`, `adminPassword` and + # `cookieAuthSecret` keys. See the `createAdminSecret` flag. + # ref: https://kubernetes.io/docs/concepts/configuration/secret/ allowAdminParty: false - # Secret Management + # -- If createAdminSecret is enabled a Secret called -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`, `adminHash`, 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: budibase - # adminPassword: budibase - # cookieAuthSecret: admin + adminUsername: admin + # adminPassword: this_is_not_secure + # adminHash: -pbkdf2-this_is_not_necessarily_secure_either + # cookieAuthSecret: neither_is_this ## When enabled, will deploy a networkpolicy that allows CouchDB pods to ## communicate with each other for clustering and ingress on port 5984 networkPolicy: enabled: true + ## Use an alternate scheduler, e.g. "stork". + ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ + ## + # schedulerName: + # Use a service account serviceAccount: enabled: true @@ -285,25 +308,28 @@ couchdb: # imagePullSecrets: # - name: myimagepullsecret - ## 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. + # -- 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 + # NOTE: the number of existing claims must match the cluster size + existingClaims: [] + annotations: {} accessModes: - ReadWriteOnce size: 10Gi - storageClass: "" + # storageClass: "-" ## The CouchDB image image: repository: budibase/couchdb - tag: 3.2.1 + tag: v3.2.1 pullPolicy: IfNotPresent - ## Experimental integration with Lucene-powered fulltext search + # -- Flip this to flag to include the Search container in each Pod enableSearch: false initImage: @@ -316,19 +342,52 @@ couchdb: ## `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" + + ## To control how Pods are spread across your cluster among failure-domains such as regions, + ## zones, nodes, and other user-defined topology domains use topologySpreadConstraints. + topologySpreadConstraints: + {} + # topologySpreadConstraints: + # - maxSkew: 1 + # topologyKey: "topology.kubernetes.io/zone" + # whenUnsatisfiable: ScheduleAnyway + # labelSelector: + # matchLabels: + # app: couchdb + + ## Optional pod labels + labels: {} + ## Optional pod annotations annotations: {} ## Optional tolerations tolerations: [] - affinity: {} - + ## 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: + annotations: {} enabled: true type: ClusterIP externalPort: 5984 + targetPort: 5984 + labels: {} ## An Ingress resource can provide name-based virtual hosting and TLS ## termination among other things for CouchDB deployments which are accessed @@ -336,11 +395,12 @@ couchdb: ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/ ingress: enabled: false + # className: nginx hosts: - chart-example.local path: / annotations: - [] + {} # kubernetes.io/ingress.class: nginx # kubernetes.io/tls-acme: "true" tls: @@ -360,21 +420,35 @@ couchdb: # 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 + ## Optional resource requests and limits for the CouchDB init container + ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ + initResources: + {} + # requests: + # cpu: 100m + # memory: 128Mi + # limits: + # cpu: 500m + # memory: 128Mi + + # -- erlangFlags is a map that is passed to the Erlang VM as flags using the + # ERL_FLAGS env. The `name` flag is required to establish connectivity + # between cluster nodes. + # ref: http://erlang.org/doc/man/erl.html#init_flags erlangFlags: name: couchdb - setcookie: monster + # Older versions of the official CouchDB image (anything prior to 3.2.1) + # do not act on the COUCHDB_ERLANG_COOKIE environment variable, so if you + # want to cluster these deployments it's necessary to pass in a cookie here + # setcookie: make-something-up - ## 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 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: couchdb: - uuid: budibase-couchdb # REQUIRED: Unique identifier for this CouchDB server instance + uuid: decafbaddecafbaddecafbaddecafbad # Unique identifier for this CouchDB server instance # cluster: # q: 8 # Create 8 shards for each database chttpd: @@ -382,6 +456,9 @@ couchdb: # chttpd.require_valid_user disables all the anonymous requests to the port # 5984 when is set to true. require_valid_user: false + # required to use Fauxton if chttpd.require_valid_user is set to true + # httpd: + # WWW-Authenticate: "Basic realm=\"administrator\"" # Kubernetes local cluster domain. # This is used to generate FQDNs for peers when joining the CouchDB cluster. @@ -390,16 +467,56 @@ couchdb: ## Configure liveness and readiness probe values ## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes - # FOR COUCHDB livenessProbe: + enabled: true failureThreshold: 3 initialDelaySeconds: 0 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 readinessProbe: + enabled: true failureThreshold: 3 initialDelaySeconds: 0 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 + + # Control an optional pod disruption budget + podDisruptionBudget: + # toggle creation of pod disruption budget, disabled by default + enabled: false + # minAvailable: 1 + maxUnavailable: 1 + + # CouchDB 3.2.0 adds in a metrics endpoint on the path `/_node/_local/_prometheus`. + # Optionally, a standalone, unauthenticated port can be exposed for these metrics. + prometheusPort: + enabled: false + bind_address: "0.0.0.0" + port: 17986 + + # Configure arbitrary sidecar containers for CouchDB pods created by the + # StatefulSet + sidecars: + {} + # - name: foo + # image: "busybox" + # imagePullPolicy: IfNotPresent + # resources: + # requests: + # cpu: "0.1" + # memory: 10Mi + # command: ['echo "foo";'] + # volumeMounts: + # - name: database-storage + # mountPath: /opt/couchdb/data/ + + # Placement manager to annotate each document in the nodes DB with "zone" attribute + # recording the zone where node has been scheduled + # Ref: https://docs.couchdb.org/en/stable/cluster/sharding.html#specifying-database-placement + placementConfig: + enabled: false + image: + repository: caligrafix/couchdb-autoscaler-placement-manager + tag: 0.1.0