You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by zh...@apache.org on 2022/01/27 12:00:49 UTC

[apisix-helm-chart] branch master updated: APISIX - Supports PodDisruptionBudget (#220)

This is an automated email from the ASF dual-hosted git repository.

zhangjintao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-helm-chart.git


The following commit(s) were added to refs/heads/master by this push:
     new c9b74d9  APISIX - Supports PodDisruptionBudget (#220)
c9b74d9 is described below

commit c9b74d9de83ed92c5c452cb74cc4e2e03a2b0af1
Author: Hao Xin <ha...@gmail.com>
AuthorDate: Thu Jan 27 20:00:41 2022 +0800

    APISIX - Supports PodDisruptionBudget (#220)
---
 charts/apisix/README.md          |  3 +++
 charts/apisix/templates/pdb.yaml | 34 ++++++++++++++++++++++++++++++++++
 charts/apisix/values.yaml        |  6 ++++++
 3 files changed, 43 insertions(+)

diff --git a/charts/apisix/README.md b/charts/apisix/README.md
index 847c472..cda47d9 100644
--- a/charts/apisix/README.md
+++ b/charts/apisix/README.md
@@ -71,6 +71,9 @@ The following tables lists the configurable parameters of the apisix chart and t
 | `apisix.podAnnotations`                  | Annotations to add to each pod                      | `{}`                                                    |
 | `apisix.podSecurityContext`              | Set the securityContext for Apache APISIX pods      | `{}`                                                    |
 | `apisix.securityContext`                 | Set the securityContext for Apache APISIX container | `{}`                                                    |
+| `apisix.podDisruptionBudget.enabled`     | Enable or disable podDisruptionBudget               | `false`                                                 |
+| `apisix.podDisruptionBudget.minAvailable`| Set the `minAvailable` of podDisruptionBudget. You can specify only one of `maxUnavailable` and `minAvailable` in a single PodDisruptionBudget. See [Specifying a Disruption Budget for your Application](https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget) for more details | `Not set` |
+| `apisix.podDisruptionBudget.maxUnavailable`| Set the maxUnavailable of podDisruptionBudget     | `1`                                                     |
 | `apisix.resources`                       | Set pod resource requests & limits                  | `{}`                                                    |
 | `apisix.nodeSelector`                    | Node labels for Apache APISIX pod assignment        | `{}`                                                    |
 | `apisix.tolerations`                     | List of node taints to tolerate                     | `{}`                                                    |
diff --git a/charts/apisix/templates/pdb.yaml b/charts/apisix/templates/pdb.yaml
new file mode 100644
index 0000000..e37239f
--- /dev/null
+++ b/charts/apisix/templates/pdb.yaml
@@ -0,0 +1,34 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+{{- if (and .Values.apisix.enabled .Values.apisix.podDisruptionBudget.enabled) }}
+apiVersion: policy/v1beta1
+kind: PodDisruptionBudget
+metadata:
+  name: {{ include "apisix.fullname" . }}
+  namespace: {{ .Release.Namespace }}
+  labels:
+    {{- include "apisix.labels" . | nindent 4 }}
+spec:
+{{- if .Values.apisix.podDisruptionBudget.minAvailable }}
+  minAvailable: {{ .Values.apisix.podDisruptionBudget.minAvailable }}
+{{- else }}
+  maxUnavailable: {{ .Values.apisix.podDisruptionBudget.maxUnavailable }}
+{{- end }}
+  selector:
+    matchLabels:
+{{- include "apisix.selectorLabels" . | nindent 6 }}
+{{- end }}
diff --git a/charts/apisix/values.yaml b/charts/apisix/values.yaml
index 799ec9c..4232739 100644
--- a/charts/apisix/values.yaml
+++ b/charts/apisix/values.yaml
@@ -71,6 +71,12 @@ apisix:
     # runAsNonRoot: true
     # runAsUser: 1000
 
+  # See https://kubernetes.io/docs/tasks/run-application/configure-pdb/ for more details
+  podDisruptionBudget:
+    enabled: false
+    minAvailable: 90%
+    maxUnavailable: 1
+
   resources: {}
     # We usually recommend not to specify default resources and to leave this as a conscious
     # choice for the user. This also increases chances charts run on environments with little