From e1219afe91e96dea7bb4cecc7b5829053456a390 Mon Sep 17 00:00:00 2001 From: Tomasz Arendt Date: Mon, 20 Jul 2020 13:33:46 +0200 Subject: [PATCH 1/3] Workarund restart rabbitmq pods during patching #1395 --- .../kubernetes/reconfigure-rabbitmq-app.yml | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/core/src/epicli/data/common/ansible/playbooks/roles/upgrade/tasks/kubernetes/reconfigure-rabbitmq-app.yml b/core/src/epicli/data/common/ansible/playbooks/roles/upgrade/tasks/kubernetes/reconfigure-rabbitmq-app.yml index 17cc3d10a9..07f654c2ac 100644 --- a/core/src/epicli/data/common/ansible/playbooks/roles/upgrade/tasks/kubernetes/reconfigure-rabbitmq-app.yml +++ b/core/src/epicli/data/common/ansible/playbooks/roles/upgrade/tasks/kubernetes/reconfigure-rabbitmq-app.yml @@ -3,3 +3,74 @@ include_tasks: utils/patch-statefulset.yml vars: image_regexp: 'rabbitmq:.*' +- name: Change rabbitmq stateful set to use {{ image_registry_address }} + block: + - name: upgrade-master | Get rabbitmq statefulset name + environment: + KUBECONFIG: /home/{{ admin_user.name }}/.kube/config + shell: |- + kubectl get statefulsets.apps --all-namespaces -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.template.spec.containers[].image}{"\n"}{end}'| + grep -i rabbitmq | + awk '{print $1}' + changed_when: false + register: rabbit_mq_ss_name + args: + executable: /bin/bash + - name: upgrade-master | Get rabbitmq namespace + environment: + KUBECONFIG: /home/{{ admin_user.name }}/.kube/config + shell: |- + kubectl get statefulsets.apps --all-namespaces -o=jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.spec.template.spec.containers[].image}{"\n"}{end}'| + grep -i rabbitmq | + awk '{print $1}' + changed_when: false + register: rabbit_mq_namespace + args: + executable: /bin/bash + - name: upgrade-master | Get rabbitmq image + environment: + KUBECONFIG: /home/{{ admin_user.name }}/.kube/config + shell: |- + kubectl get statefulsets.apps {{ rabbit_mq_ss_name.stdout }} -n {{ rabbit_mq_namespace.stdout }} -o=jsonpath='{$.spec.template.spec.containers[:1].image}' + changed_when: false + register: rabbit_mq_repository + args: + executable: /bin/bash + when: + - not rabbit_mq_namespace.stdout == "" + - name: upgrade-master | Patch rabbitmq to use {{ image_registry_address }} + environment: + KUBECONFIG: /home/{{ admin_user.name }}/.kube/config + shell: |- + set -o pipefail && + kubectl patch statefulsets.apps {{ rabbit_mq_ss_name.stdout }} -n {{ rabbit_mq_namespace.stdout }} --patch '{"spec": {"template": { "spec": { "containers": [ { "image": "{{ image_registry_address }}/{{ rabbit_mq_repository.stdout }}", "name": "{{ rabbit_mq_ss_name.stdout }}" }]}}}}' + args: + executable: /bin/bash + when: + - not rabbit_mq_namespace.stdout == "" + - not image_registry_address in rabbit_mq_repository.stdout + - name: upgrade-master | Get rabbitmq pod names + environment: + KUBECONFIG: /home/{{ admin_user.name }}/.kube/config + shell: |- + set -o pipefail && + kubectl get pod -n {{ rabbit_mq_namespace.stdout }} -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}' + changed_when: false + register: rabbit_mq_pod_names + args: + executable: /bin/bash + when: + - not rabbit_mq_namespace.stdout == "" + - name: upgrade-master | Delete rabbitmq pods + environment: + KUBECONFIG: /home/{{ admin_user.name }}/.kube/config + shell: |- + set -o pipefail && + kubectl delete pod --namespace {{ rabbit_mq_namespace.stdout }} {{ item }} + changed_when: false + args: + executable: /bin/bash + loop: "{{ rabbit_mq_pod_names.stdout_lines }}" + when: + - not rabbit_mq_namespace.stdout == "" + - not rabbit_mq_pod_names.stdout == "" From 2d530743bd79e643ee42276afa4f5bc5592db4be Mon Sep 17 00:00:00 2001 From: Tomasz Arendt Date: Fri, 31 Jul 2020 10:23:36 +0200 Subject: [PATCH 2/3] fix due to review --- .../tasks/kubernetes/reconfigure-rabbitmq-app.yml | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/core/src/epicli/data/common/ansible/playbooks/roles/upgrade/tasks/kubernetes/reconfigure-rabbitmq-app.yml b/core/src/epicli/data/common/ansible/playbooks/roles/upgrade/tasks/kubernetes/reconfigure-rabbitmq-app.yml index 07f654c2ac..eb415dfe38 100644 --- a/core/src/epicli/data/common/ansible/playbooks/roles/upgrade/tasks/kubernetes/reconfigure-rabbitmq-app.yml +++ b/core/src/epicli/data/common/ansible/playbooks/roles/upgrade/tasks/kubernetes/reconfigure-rabbitmq-app.yml @@ -52,24 +52,16 @@ - name: upgrade-master | Get rabbitmq pod names environment: KUBECONFIG: /home/{{ admin_user.name }}/.kube/config - shell: |- - set -o pipefail && - kubectl get pod -n {{ rabbit_mq_namespace.stdout }} -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}' + command: kubectl get pod -n {{ rabbit_mq_namespace.stdout }} -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}' changed_when: false register: rabbit_mq_pod_names - args: - executable: /bin/bash when: - not rabbit_mq_namespace.stdout == "" - name: upgrade-master | Delete rabbitmq pods environment: KUBECONFIG: /home/{{ admin_user.name }}/.kube/config - shell: |- - set -o pipefail && - kubectl delete pod --namespace {{ rabbit_mq_namespace.stdout }} {{ item }} + command: kubectl delete pod --namespace {{ rabbit_mq_namespace.stdout }} {{ item }} changed_when: false - args: - executable: /bin/bash loop: "{{ rabbit_mq_pod_names.stdout_lines }}" when: - not rabbit_mq_namespace.stdout == "" From f7fb93c5754f2ffa9c97080e5255b09a9e774253 Mon Sep 17 00:00:00 2001 From: Tomasz Arendt Date: Thu, 6 Aug 2020 20:10:03 +0200 Subject: [PATCH 3/3] fixes after review, remove redundant code --- .../kubernetes/reconfigure-rabbitmq-app.yml | 52 +++---------------- 1 file changed, 8 insertions(+), 44 deletions(-) diff --git a/core/src/epicli/data/common/ansible/playbooks/roles/upgrade/tasks/kubernetes/reconfigure-rabbitmq-app.yml b/core/src/epicli/data/common/ansible/playbooks/roles/upgrade/tasks/kubernetes/reconfigure-rabbitmq-app.yml index eb415dfe38..cb6fe298c2 100644 --- a/core/src/epicli/data/common/ansible/playbooks/roles/upgrade/tasks/kubernetes/reconfigure-rabbitmq-app.yml +++ b/core/src/epicli/data/common/ansible/playbooks/roles/upgrade/tasks/kubernetes/reconfigure-rabbitmq-app.yml @@ -1,65 +1,29 @@ --- - name: k8s/master | Patch rabbitmq's statefulset include_tasks: utils/patch-statefulset.yml - vars: - image_regexp: 'rabbitmq:.*' -- name: Change rabbitmq stateful set to use {{ image_registry_address }} +- name: Delete rabbitmq pods after patching block: - - name: upgrade-master | Get rabbitmq statefulset name + - name: after-patching | Get rabbitmq namespace environment: - KUBECONFIG: /home/{{ admin_user.name }}/.kube/config - shell: |- - kubectl get statefulsets.apps --all-namespaces -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.template.spec.containers[].image}{"\n"}{end}'| - grep -i rabbitmq | - awk '{print $1}' - changed_when: false - register: rabbit_mq_ss_name - args: - executable: /bin/bash - - name: upgrade-master | Get rabbitmq namespace - environment: - KUBECONFIG: /home/{{ admin_user.name }}/.kube/config + KUBECONFIG: &KUBECONFIG /etc/kubernetes/admin.conf shell: |- kubectl get statefulsets.apps --all-namespaces -o=jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.spec.template.spec.containers[].image}{"\n"}{end}'| - grep -i rabbitmq | - awk '{print $1}' + awk '/rabbitmq/ {print $1}' changed_when: false register: rabbit_mq_namespace args: executable: /bin/bash - - name: upgrade-master | Get rabbitmq image - environment: - KUBECONFIG: /home/{{ admin_user.name }}/.kube/config - shell: |- - kubectl get statefulsets.apps {{ rabbit_mq_ss_name.stdout }} -n {{ rabbit_mq_namespace.stdout }} -o=jsonpath='{$.spec.template.spec.containers[:1].image}' - changed_when: false - register: rabbit_mq_repository - args: - executable: /bin/bash - when: - - not rabbit_mq_namespace.stdout == "" - - name: upgrade-master | Patch rabbitmq to use {{ image_registry_address }} - environment: - KUBECONFIG: /home/{{ admin_user.name }}/.kube/config - shell: |- - set -o pipefail && - kubectl patch statefulsets.apps {{ rabbit_mq_ss_name.stdout }} -n {{ rabbit_mq_namespace.stdout }} --patch '{"spec": {"template": { "spec": { "containers": [ { "image": "{{ image_registry_address }}/{{ rabbit_mq_repository.stdout }}", "name": "{{ rabbit_mq_ss_name.stdout }}" }]}}}}' - args: - executable: /bin/bash - when: - - not rabbit_mq_namespace.stdout == "" - - not image_registry_address in rabbit_mq_repository.stdout - - name: upgrade-master | Get rabbitmq pod names + - name: after-patching | Get rabbitmq pod names environment: - KUBECONFIG: /home/{{ admin_user.name }}/.kube/config + KUBECONFIG: *KUBECONFIG command: kubectl get pod -n {{ rabbit_mq_namespace.stdout }} -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}' changed_when: false register: rabbit_mq_pod_names when: - not rabbit_mq_namespace.stdout == "" - - name: upgrade-master | Delete rabbitmq pods + - name: after-patching | Delete rabbitmq pods environment: - KUBECONFIG: /home/{{ admin_user.name }}/.kube/config + KUBECONFIG: *KUBECONFIG command: kubectl delete pod --namespace {{ rabbit_mq_namespace.stdout }} {{ item }} changed_when: false loop: "{{ rabbit_mq_pod_names.stdout_lines }}"