From 80828a7c77def9faa032476ef3b6eae8972d89ce Mon Sep 17 00:00:00 2001
From: Matthew Mosesohn <mmosesohn@mirantis.com>
Date: Thu, 30 Mar 2017 17:08:13 +0400
Subject: [PATCH] use etcd2 when upgrading unless forced

---
 roles/kubernetes/master/defaults/main.yml     | 3 +++
 roles/kubernetes/master/handlers/main.yml     | 2 +-
 roles/kubernetes/master/tasks/pre-upgrade.yml | 7 ++++++-
 3 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/roles/kubernetes/master/defaults/main.yml b/roles/kubernetes/master/defaults/main.yml
index 9b6e3eff4..016df0c64 100644
--- a/roles/kubernetes/master/defaults/main.yml
+++ b/roles/kubernetes/master/defaults/main.yml
@@ -16,6 +16,9 @@ etcd_cert_dir: "{{ etcd_config_dir }}/ssl"
 # ETCD backend for k8s data
 kube_apiserver_storage_backend: etcd3
 
+# By default, force back to etcd2. Set to true to force etcd3 (experimental!)
+force_etcd3: false
+
 # Limits for kube components
 kube_controller_memory_limit: 512M
 kube_controller_cpu_limit: 250m
diff --git a/roles/kubernetes/master/handlers/main.yml b/roles/kubernetes/master/handlers/main.yml
index 1eb5a4886..94cec7d1b 100644
--- a/roles/kubernetes/master/handlers/main.yml
+++ b/roles/kubernetes/master/handlers/main.yml
@@ -42,5 +42,5 @@
     url: http://localhost:8080/healthz
   register: result
   until: result.status == 200
-  retries: 10
+  retries: 20
   delay: 6
diff --git a/roles/kubernetes/master/tasks/pre-upgrade.yml b/roles/kubernetes/master/tasks/pre-upgrade.yml
index 35d573e97..b42cd06d1 100644
--- a/roles/kubernetes/master/tasks/pre-upgrade.yml
+++ b/roles/kubernetes/master/tasks/pre-upgrade.yml
@@ -42,6 +42,11 @@
   when: kube_apiserver_storage_backend == "etcd3"
   failed_when: false
 
+- name: "Pre-upgrade | etcd3 upgrade | use etcd2 unless forced to etc3"
+  set_fact:
+    kube_apiserver_storage_backend: "etcd2"
+  when: old_data_exists.rc == 0 and not force_etcd3|bool
+
 - name: "Pre-upgrade | etcd3 upgrade | see if data was already migrated"
   command: "{{ bin_dir }}/etcdctl --endpoints={{ etcd_access_addresses }} get --limit=1 --prefix=true /registry/minions"
   environment:
@@ -53,7 +58,7 @@
 
 - name: "Pre-upgrade | etcd3 upgrade | set needs_etcd_migration"
   set_fact:
-    needs_etcd_migration: "{{ kube_apiserver_storage_backend == 'etcd3' and data_migrated.stdout_lines|length == 0 and old_data_exists.rc == 0 }}"
+    needs_etcd_migration: "{{ force_etcd3|default(false) and kube_apiserver_storage_backend == 'etcd3' and data_migrated.stdout_lines|length == 0 and old_data_exists.rc == 0 }}"
 
 - name: "Pre-upgrade | Delete master manifests on all kube-masters"
   file:
-- 
GitLab