From 38a6062b7afdc2622f85cbcfeab50fde86f800cd Mon Sep 17 00:00:00 2001 From: Steve Wilkerson Date: Sat, 4 May 2019 06:37:35 -0600 Subject: [PATCH] Fix helm-toolkit snippet for statefulset updates This fixes the incorrect statefulset update helm-toolkit snippet, as the previous implementation used incorrect keys and fields for statefulset updates. See below: https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/#updating-statefulsets https://github.com/kubernetes/kubernetes/issues/68397 Change-Id: I5044460f19f0c824b08f99a90472c2e4a0e53e52 --- .../_kubernetes_upgrades_statefulset.tpl | 38 ++++++++++++++++--- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/helm-toolkit/templates/snippets/_kubernetes_upgrades_statefulset.tpl b/helm-toolkit/templates/snippets/_kubernetes_upgrades_statefulset.tpl index a088449d4..14b9f39e9 100644 --- a/helm-toolkit/templates/snippets/_kubernetes_upgrades_statefulset.tpl +++ b/helm-toolkit/templates/snippets/_kubernetes_upgrades_statefulset.tpl @@ -1,9 +1,12 @@ {{/* Copyright 2019 The Openstack-Helm Authors. + Licensed 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. @@ -11,15 +14,40 @@ See the License for the specific language governing permissions and limitations under the License. */}} +{{/* +abstract: | + Renders upgradeStrategy configuration for Kubernetes statefulsets. + See: https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/#updating-statefulsets + Types: + - RollingUpdate (default) + - OnDelete + Partitions: + - Stage updates to a statefulset by keeping pods at current version while + allowing mutations to statefulset's .spec.template +values: | + pod: + lifecycle: + upgrades: + statefulsets: + pod_replacement_strategy: RollingUpdate + partition: 2 +usage: | + {{ tuple $envAll | include "helm-toolkit.snippets.kubernetes_upgrades_statefulset" | indent 2 }} +return: | + updateStrategy: + type: RollingUpdate + rollingUpdate: + partition: 2 +*/}} + {{- define "helm-toolkit.snippets.kubernetes_upgrades_statefulset" -}} {{- $envAll := index . 0 -}} {{- with $envAll.Values.pod.lifecycle.upgrades.statefulsets -}} -revisionHistoryLimit: {{ .revision_history }} -strategy: +updateStrategy: type: {{ .pod_replacement_strategy }} - {{- if eq .pod_replacement_strategy "RollingUpdate" }} + {{ if .partition -}} rollingUpdate: - maxUnavailable: {{ .rolling_update.max_unavailable }} - {{- end }} + partition: {{ .partition }} + {{- end -}} {{- end -}} {{- end -}}