From b666637539ff2bf89d8b43e0a6f62ddd44f68800 Mon Sep 17 00:00:00 2001 From: Andrew Drake Date: Wed, 2 Oct 2019 22:26:07 -0700 Subject: [PATCH] [stable/memcached] Update apiVersions for Kubernetes 1.16 (#17627) Signed-off-by: Andrew Drake --- stable/memcached/Chart.yaml | 2 +- stable/memcached/README.md | 39 +++++++++++++++++++++ stable/memcached/templates/statefulset.yaml | 6 +++- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/stable/memcached/Chart.yaml b/stable/memcached/Chart.yaml index bbb805adf6..7db216ce42 100644 --- a/stable/memcached/Chart.yaml +++ b/stable/memcached/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v1 name: memcached -version: 2.10.2 +version: 3.0.0 appVersion: 1.5.12 description: Free & open source, high-performance, distributed memory object caching system. diff --git a/stable/memcached/README.md b/stable/memcached/README.md index 72adb41463..7faa0ad2b0 100644 --- a/stable/memcached/README.md +++ b/stable/memcached/README.md @@ -84,3 +84,42 @@ $ helm install --name my-release -f values.yaml stable/memcached ``` > **Tip**: You can use the default [values.yaml](values.yaml) + +## Upgrading to 3.x from a previous major version +Version 3.0.0 of this chart makes an incompatible change to the way StatefulSet/Deployment selectors are configured. If you try to upgrade from a previous major version, you will see an error like this: + +``` +Error: UPGRADE FAILED: Deployment.apps "mc-test-memcached" is invalid: spec.template.metadata.labels: Invalid value: map[string]string{"app":"mc-test-memcached", "chart":"memcached-3.0.0", "custom":"value", "heritage":"Tiller", "release":"mc-test"}: `selector` does not match template `labels` +``` + +To upgrade from a previous major version, you'll either need to perform a small manual fix or delete and reinstall the chart. + +The manual fix is to remove all selectors from the existing StatefulSet/Deployment except `app` and `release`. Run `kubectl edit sts|deploy name-goes-here` (as needed), and you should see a part like this in your editor about 20 lines down: + +```yaml +spec: + progressDeadlineSeconds: 600 + replicas: 1 + revisionHistoryLimit: 2 + selector: + matchLabels: + app: mc-test-memcached + chart: memcached-2.10.2 + heritage: Tiller + release: mc-test +``` + +Remove the lines under `matchLabels` except `app: ...` and `release: ...`, and don't change any other lines. The part from above should look like this when you're done: + +```yaml +spec: + progressDeadlineSeconds: 600 + replicas: 1 + revisionHistoryLimit: 2 + selector: + matchLabels: + app: mc-test-memcached + release: mc-test +``` + +Once you've done this, you can upgrade to 3.x with Helm as normal. diff --git a/stable/memcached/templates/statefulset.yaml b/stable/memcached/templates/statefulset.yaml index 336fee2b0c..1fab9f1dcd 100644 --- a/stable/memcached/templates/statefulset.yaml +++ b/stable/memcached/templates/statefulset.yaml @@ -1,4 +1,4 @@ -apiVersion: apps/v1beta1 +apiVersion: apps/v1 kind: {{ .Values.kind }} metadata: name: {{ template "memcached.fullname" . }} @@ -8,6 +8,10 @@ metadata: release: "{{ .Release.Name }}" heritage: "{{ .Release.Service }}" spec: + selector: + matchLabels: + app: {{ template "memcached.fullname" . }} + release: "{{ .Release.Name }}" {{- if eq .Values.kind "StatefulSet" }} serviceName: {{ template "memcached.fullname" . }} {{- end }}