Add pdb (#117)

Adds a optional PDB to make node drains/cordons safer
diff --git a/couchdb/Chart.yaml b/couchdb/Chart.yaml
index 1de5fa8..76e58d4 100644
--- a/couchdb/Chart.yaml
+++ b/couchdb/Chart.yaml
@@ -1,6 +1,6 @@
 apiVersion: v1
 name: couchdb
-version: 4.3.1
+version: 4.4.0
 appVersion: 3.3.2
 description: A database featuring seamless multi-master sync, that scales from
   big data to mobile, with an intuitive HTTP/JSON API and designed for
diff --git a/couchdb/README.md b/couchdb/README.md
index 5175d25..569837f 100644
--- a/couchdb/README.md
+++ b/couchdb/README.md
@@ -18,7 +18,7 @@
 ```bash
 $ helm repo add couchdb https://apache.github.io/couchdb-helm
 $ helm install couchdb/couchdb \
-  --version=4.2.0 \
+  --version=4.4.0 \
   --set allowAdminParty=true \
   --set couchdbConfig.couchdb.uuid=$(curl https://www.uuidgenerator.net/api/version4 2>/dev/null | tr -d -)
 ```
@@ -44,7 +44,7 @@
 ```bash
 $ helm install \
   --name my-release \
-  --version=4.2.0 \
+  --version=4.4.0 \
   --set couchdbConfig.couchdb.uuid=decafbaddecafbaddecafbaddecafbad \
   couchdb/couchdb
 ```
@@ -78,7 +78,7 @@
 ```bash
 $ helm install \
   --name my-release \
-  --version=4.2.0 \
+  --version=4.4.0 \
   --set createAdminSecret=false \
   --set couchdbConfig.couchdb.uuid=decafbaddecafbaddecafbaddecafbad \
   couchdb/couchdb
@@ -133,7 +133,7 @@
 
 ```bash
 $ helm repo add couchdb https://apache.github.io/couchdb-helm
-$ helm upgrade my-release --version=4.2.0 couchdb/couchdb
+$ helm upgrade my-release --version=4.4.0 couchdb/couchdb
 ```
 
 ## Configuration
@@ -193,6 +193,10 @@
 | `persistentVolume.volumeName`          |                                                  |
 | `persistentVolume.claimName`           |                                                  |
 | `persistentVolume.volumeSource`        |                                                  |
+| `persistentVolume.annotations`         | {}                                               |
+| `podDisruptionBudget.enabled`          | false                                            |
+| `podDisruptionBudget.minAvailable`     | nil                                              |
+| `podDisruptionBudget.maxUnavailable`   | 1                                                |
 | `podManagementPolicy`                  | Parallel                                         |
 | `affinity`                             |                                                  |
 | `topologySpreadConstraints`            |                                                  |
diff --git a/couchdb/README.md.gotmpl b/couchdb/README.md.gotmpl
index 2bdd972..969c2d0 100644
--- a/couchdb/README.md.gotmpl
+++ b/couchdb/README.md.gotmpl
@@ -179,6 +179,9 @@
 | `persistentVolume.accessModes`       | ReadWriteOnce                                                                                                                                                |
 | `persistentVolume.storageClass`      | Default for the Kube cluster                                                                                                                                 |
 | `persistentVolume.annotations`       | {}                                                                                                                                                           |
+| `podDisruptionBudget.enabled`        | false                                                                                                                                                        |
+| `podDisruptionBudget.minAvailable`   | nil                                                                                                                                                          |
+| `podDisruptionBudget.maxUnavailable` | 1                                                                                                                                                            |
 | `podManagementPolicy`                | Parallel                                                                                                                                                     |
 | `affinity`                           |                                                                                                                                                              |
 | `topologySpreadConstraints`          |                                                                                                                                                              |
diff --git a/couchdb/templates/pdb.yaml b/couchdb/templates/pdb.yaml
new file mode 100644
index 0000000..4b79818
--- /dev/null
+++ b/couchdb/templates/pdb.yaml
@@ -0,0 +1,21 @@
+{{- if and .Values.podDisruptionBudget .Values.podDisruptionBudget.enabled }}
+apiVersion: policy/v1
+kind: PodDisruptionBudget
+metadata:
+  name: "{{ .Release.Name }}-pdb"
+  labels:
+    app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
+    app.kubernetes.io/instance: {{ .Release.Name | quote }}
+    app.kubernetes.io/version: {{ .Chart.AppVersion }}
+    helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+spec:
+  {{- if .Values.podDisruptionBudget.minAvailable }}
+  minAvailable: {{ .Values.podDisruptionBudget.minAvailable }}
+  {{- end }}
+  {{- if .Values.podDisruptionBudget.maxUnavailable }}
+  maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable }}
+  {{- end }}
+  selector:
+    matchLabels:
+{{ include "couchdb.ss.selector" . | indent 6 }}
+{{- end }}
diff --git a/couchdb/values.yaml b/couchdb/values.yaml
index cc9878e..19b6b50 100644
--- a/couchdb/values.yaml
+++ b/couchdb/values.yaml
@@ -221,6 +221,13 @@
   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: