From c7d50ddf5504828296c97447b281be17282a056e Mon Sep 17 00:00:00 2001 From: Thong Kuah Date: Tue, 4 Jun 2019 23:25:33 +1200 Subject: [PATCH] Fix connection to Tiller error while uninstalling Both the `install-` and `uninstall-` pods loads the `values-content-configuration-` configmap into the pod (see `#volume_specification`). This configmap contains the cert necessary to connect to Tiller. The cert though is only valid for 30 minutes. So this fixes the bug where the configmap when uninstalling should be updated as well. --- .../62713-fix-uninstalling-cluster-apps.yml | 5 ++++ lib/gitlab/kubernetes/helm/api.rb | 1 + spec/lib/gitlab/kubernetes/helm/api_spec.rb | 24 +++++++++++++++++++ 3 files changed, 30 insertions(+) create mode 100644 changelogs/unreleased/62713-fix-uninstalling-cluster-apps.yml diff --git a/changelogs/unreleased/62713-fix-uninstalling-cluster-apps.yml b/changelogs/unreleased/62713-fix-uninstalling-cluster-apps.yml new file mode 100644 index 00000000000..45fa668ae85 --- /dev/null +++ b/changelogs/unreleased/62713-fix-uninstalling-cluster-apps.yml @@ -0,0 +1,5 @@ +--- +title: Fix connection to Tiller error while uninstalling +merge_request: 29131 +author: +type: fixed diff --git a/lib/gitlab/kubernetes/helm/api.rb b/lib/gitlab/kubernetes/helm/api.rb index ff1dadf9247..978cafae9ac 100644 --- a/lib/gitlab/kubernetes/helm/api.rb +++ b/lib/gitlab/kubernetes/helm/api.rb @@ -24,6 +24,7 @@ module Gitlab def uninstall(command) namespace.ensure_exists! + create_config_map(command) delete_pod!(command.pod_name) kubeclient.create_pod(command.pod_resource) diff --git a/spec/lib/gitlab/kubernetes/helm/api_spec.rb b/spec/lib/gitlab/kubernetes/helm/api_spec.rb index 24ce397ec3d..0de809833e6 100644 --- a/spec/lib/gitlab/kubernetes/helm/api_spec.rb +++ b/spec/lib/gitlab/kubernetes/helm/api_spec.rb @@ -36,6 +36,8 @@ describe Gitlab::Kubernetes::Helm::Api do describe '#uninstall' do before do allow(client).to receive(:create_pod).and_return(nil) + allow(client).to receive(:get_config_map).and_return(nil) + allow(client).to receive(:create_config_map).and_return(nil) allow(client).to receive(:delete_pod).and_return(nil) allow(namespace).to receive(:ensure_exists!).once end @@ -53,6 +55,28 @@ describe Gitlab::Kubernetes::Helm::Api do subject.uninstall(command) end + + context 'with a ConfigMap' do + let(:resource) { Gitlab::Kubernetes::ConfigMap.new(application_name, files).generate } + + it 'creates a ConfigMap on kubeclient' do + expect(client).to receive(:create_config_map).with(resource).once + + subject.install(command) + end + + context 'config map already exists' do + before do + expect(client).to receive(:get_config_map).with("values-content-configuration-#{application_name}", gitlab_namespace).and_return(resource) + end + + it 'updates the config map' do + expect(client).to receive(:update_config_map).with(resource).once + + subject.install(command) + end + end + end end describe '#install' do