Add option to set number of max unavailable pods
Applying an update to a chart release involving a pod restart, did not
work, if the number of replica was lower than 4, since the Kubernetes
default for max unavailable pods was used, which is 25 %.
This change adds options to the gerrit-master and gerrit-slave charts to
set the maxSurge and maxUnavailable options for the installed
deployments.
Change-Id: If1e80429b82ef8b205951bb629402d8929434114
diff --git a/helm-charts/gerrit-master/README.md b/helm-charts/gerrit-master/README.md
index e32e209..dc62a6d 100644
--- a/helm-charts/gerrit-master/README.md
+++ b/helm-charts/gerrit-master/README.md
@@ -140,6 +140,9 @@
|-----------------------------------------------|-------------------------------------------------------------------------------------------------|-----------------------------------|
| `gerritMaster.images.gerritInit` | Image name of the Gerrit init container image | `k8s-gerrit/gerrit-init` |
| `gerritMaster.images.gerritMaster` | Image name of the Gerrit master container image | `k8s-gerrit/gerrit-master` |
+| `gerritMaster.replicas` | Number of replica pods to deploy | `1` |
+| `gerritMaster.maxSurge` | Max. percentage or number of pods allowed to be scheduled above the desired number | `25%` |
+| `gerritMaster.maxUnavailable` | Max. percentage or number of pods allowed to be unavailable at a time | `100%` |
| `gerritMaster.resources` | Configure the amount of resources the pod requests/is allowed | `requests.cpu: 1` |
| | | `requests.memory: 5Gi` |
| | | `limits.cpu: 1` |
diff --git a/helm-charts/gerrit-master/templates/gerrit-master.deployment.yaml b/helm-charts/gerrit-master/templates/gerrit-master.deployment.yaml
index 61c3193..b3120ea 100644
--- a/helm-charts/gerrit-master/templates/gerrit-master.deployment.yaml
+++ b/helm-charts/gerrit-master/templates/gerrit-master.deployment.yaml
@@ -9,6 +9,10 @@
release: {{ .Release.Name }}
spec:
replicas: {{ .Values.gerritMaster.replicas | default 1 }}
+ strategy:
+ rollingUpdate:
+ maxSurge: {{ .Values.gerritMaster.maxSurge }}
+ maxUnavailable: {{ .Values.gerritMaster.maxUnavailable }}
selector:
matchLabels:
app: gerrit-master
diff --git a/helm-charts/gerrit-master/values.yaml b/helm-charts/gerrit-master/values.yaml
index 8656eff..4808cfa 100644
--- a/helm-charts/gerrit-master/values.yaml
+++ b/helm-charts/gerrit-master/values.yaml
@@ -70,6 +70,12 @@
gerritInit: k8sgerrit/gerrit-init
gerritMaster: k8sgerrit/gerrit-master
+ replicas: 1
+ maxSurge: 25%
+ # For just one replica, 100 % unavailability has to be allowed for updates to
+ # work.
+ maxUnavailable: 100%
+
# The memory limit has to be higher than the configures heap-size for Java!
resources:
requests:
diff --git a/helm-charts/gerrit-slave/README.md b/helm-charts/gerrit-slave/README.md
index 72e0cdb..3abf951 100644
--- a/helm-charts/gerrit-slave/README.md
+++ b/helm-charts/gerrit-slave/README.md
@@ -116,30 +116,32 @@
### Apache-Git-HTTP-Backend (Git-Backend)
-| Parameter | Description | Default |
-|------------------------------------------|-----------------------------------------------------------------------------|---------------------------------------------------------------------------|
-| `gitBackend.image` | Image name of the Apache-git-http-backend container image | `k8s-gerrit/apache-git-http-backend` |
-| `gitBackend.replicas` | Number of pod replicas to deploy | `1` |
-| `gitBackend.resources` | Configure the amount of resources the pod requests/is allowed | `requests.cpu: 100m` |
-| | | `requests.memory: 256Mi` |
-| | | `limits.cpu: 100m` |
-| | | `limits.memory: 256Mi` |
-| `gitBackend.credentials.htpasswd` | `.htpasswd`-file containing username/password-credentials for accessing git | `git:$apr1$O/LbLKC7$Q60GWE7OcqSEMSfe/K8xU.` (user: git, password: secret) |
-| `gitBackend.logging.persistence.enabled` | Whether to persist logs | `true` |
-| `gitBackend.logging.persistence.size` | Storage size for persisted logs | `1Gi` |
-| `gitBackend.service.type` | Which kind of Service to deploy | `LoadBalancer` |
-| `gitBackend.service.http.enabled` | Whether to serve HTTP-requests (needed for Ingress) | `true` |
-| `gitBackend.service.http.port` | Port over which to expose HTTP | `80` |
-| `gitBackend.service.https.enabled` | Whether to serve HTTPS-requests | `false` |
-| `gitBackend.service.https.port` | Port over which to expose HTTPS | `443` |
-| `gitBackend.service.https.cert` | Public SSL server certificate | `-----BEGIN CERTIFICATE-----` |
-| `gitBackend.service.https.key` | Private SSL server certificate | `-----BEGIN RSA PRIVATE KEY-----` |
-| `gitBackend.ingress.enabled` | Whether to deploy an Ingress | `false` |
-| `gitBackend.ingress.host` | Host name to use for the Ingress (required for Ingress) | `nil` |
-| `gitBackend.ingress.alias` | Optional: ALias host name for the Ingress | `nil` |
-| `gitBackend.ingress.tls.enabled` | Whether to enable TLS termination in the Ingress | `false` |
-| `gitBackend.ingress.tls.cert` | Public SSL server certificate | `-----BEGIN CERTIFICATE-----` |
-| `gitBackend.ingress.tls.key` | Private SSL server certificate | `-----BEGIN RSA PRIVATE KEY-----` |
+| Parameter | Description | Default |
+|------------------------------------------|------------------------------------------------------------------------------------|---------------------------------------------------------------------------|
+| `gitBackend.image` | Image name of the Apache-git-http-backend container image | `k8s-gerrit/apache-git-http-backend` |
+| `gitBackend.replicas` | Number of pod replicas to deploy | `1` |
+| `gitBackend.maxSurge` | Max. percentage or number of pods allowed to be scheduled above the desired number | `25%` |
+| `gitBackend.maxUnavailable` | Max. percentage or number of pods allowed to be unavailable at a time | `100%` |
+| `gitBackend.resources` | Configure the amount of resources the pod requests/is allowed | `requests.cpu: 100m` |
+| | | `requests.memory: 256Mi` |
+| | | `limits.cpu: 100m` |
+| | | `limits.memory: 256Mi` |
+| `gitBackend.credentials.htpasswd` | `.htpasswd`-file containing username/password-credentials for accessing git | `git:$apr1$O/LbLKC7$Q60GWE7OcqSEMSfe/K8xU.` (user: git, password: secret) |
+| `gitBackend.logging.persistence.enabled` | Whether to persist logs | `true` |
+| `gitBackend.logging.persistence.size` | Storage size for persisted logs | `1Gi` |
+| `gitBackend.service.type` | Which kind of Service to deploy | `LoadBalancer` |
+| `gitBackend.service.http.enabled` | Whether to serve HTTP-requests (needed for Ingress) | `true` |
+| `gitBackend.service.http.port` | Port over which to expose HTTP | `80` |
+| `gitBackend.service.https.enabled` | Whether to serve HTTPS-requests | `false` |
+| `gitBackend.service.https.port` | Port over which to expose HTTPS | `443` |
+| `gitBackend.service.https.cert` | Public SSL server certificate | `-----BEGIN CERTIFICATE-----` |
+| `gitBackend.service.https.key` | Private SSL server certificate | `-----BEGIN RSA PRIVATE KEY-----` |
+| `gitBackend.ingress.enabled` | Whether to deploy an Ingress | `false` |
+| `gitBackend.ingress.host` | Host name to use for the Ingress (required for Ingress) | `nil` |
+| `gitBackend.ingress.alias` | Optional: ALias host name for the Ingress | `nil` |
+| `gitBackend.ingress.tls.enabled` | Whether to enable TLS termination in the Ingress | `false` |
+| `gitBackend.ingress.tls.cert` | Public SSL server certificate | `-----BEGIN CERTIFICATE-----` |
+| `gitBackend.ingress.tls.key` | Private SSL server certificate | `-----BEGIN RSA PRIVATE KEY-----` |
***note
At least one endpoint (HTTP and/or HTTPS) has to be enabled in the service!
@@ -175,8 +177,11 @@
| Parameter | Description | Default |
|----------------------------------------------|--------------------------------------------------------------------------------------------------------------------------|-----------------------------------|
-| `gerritMaster.images.gerritInit` | Image name of the Gerrit init container image | `k8s-gerrit/gerrit-init` |
-| `gerritMaster.images.gerritSlave` | Image name of the Gerrit slave container image | `k8s-gerrit/gerrit-slave` |
+| `gerritSlave.images.gerritInit` | Image name of the Gerrit init container image | `k8s-gerrit/gerrit-init` |
+| `gerritSlave.images.gerritSlave` | Image name of the Gerrit slave container image | `k8s-gerrit/gerrit-slave` |
+| `gerritSlave.replicas` | Number of pod replicas to deploy | `1` |
+| `gerritSlave.maxSurge` | Max. percentage or number of pods allowed to be scheduled above the desired number | `25%` |
+| `gerritSlave.maxUnavailable` | Max. percentage or number of pods allowed to be unavailable at a time | `100%` |
| `gerritSlave.initializeTestSite.enabled` | Enable the initialization of a site. USE ONLY for testing, if you do not plan to replicate repositories or the database. | `true` |
| `gerritSlave.resources` | Configure the amount of resources the pod requests/is allowed | `requests.cpu: 1` |
| | | `requests.memory: 5Gi` |
diff --git a/helm-charts/gerrit-slave/templates/gerrit-slave.deployment.yaml b/helm-charts/gerrit-slave/templates/gerrit-slave.deployment.yaml
index bddb9b8..34982e4 100644
--- a/helm-charts/gerrit-slave/templates/gerrit-slave.deployment.yaml
+++ b/helm-charts/gerrit-slave/templates/gerrit-slave.deployment.yaml
@@ -9,6 +9,10 @@
release: {{ .Release.Name }}
spec:
replicas: {{ .Values.gerritSlave.replicas | default 1 }}
+ strategy:
+ rollingUpdate:
+ maxSurge: {{ .Values.gerritSlave.maxSurge }}
+ maxUnavailable: {{ .Values.gerritSlave.maxUnavailable }}
selector:
matchLabels:
app: gerrit-slave
diff --git a/helm-charts/gerrit-slave/templates/git-backend.deployment.yaml b/helm-charts/gerrit-slave/templates/git-backend.deployment.yaml
index 328beea..f96bf2a 100644
--- a/helm-charts/gerrit-slave/templates/git-backend.deployment.yaml
+++ b/helm-charts/gerrit-slave/templates/git-backend.deployment.yaml
@@ -9,6 +9,10 @@
release: {{ .Release.Name }}
spec:
replicas: {{ .Values.gitBackend.replicas | default 1 }}
+ strategy:
+ rollingUpdate:
+ maxSurge: {{ .Values.gitBackend.maxSurge }}
+ maxUnavailable: {{ .Values.gitBackend.maxUnavailable }}
selector:
matchLabels:
app: git-backend
diff --git a/helm-charts/gerrit-slave/values.yaml b/helm-charts/gerrit-slave/values.yaml
index a52576e..2e464d2 100644
--- a/helm-charts/gerrit-slave/values.yaml
+++ b/helm-charts/gerrit-slave/values.yaml
@@ -50,6 +50,10 @@
image: k8sgerrit/apache-git-http-backend
replicas: 1
+ maxSurge: 25%
+ # For just one replica, 100 % unavailability has to be allowed for updates to
+ # work.
+ maxUnavailable: 100%
resources:
requests:
@@ -133,6 +137,12 @@
gerritInit: k8sgerrit/gerrit-init
gerritSlave: k8sgerrit/gerrit-slave
+ replicas: 1
+ maxSurge: 25%
+ # For just one replica, 100 % unavailability has to be allowed for updates to
+ # work.
+ maxUnavailable: 100%
+
# If you only intend to test the Gerrit slave and do not wish to actually
# replicate repositories and the database, activate this option to initialize
# a new site.