Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThong Kuah <tkuah@gitlab.com>2019-02-08 00:40:55 +0300
committerDouglas Barbosa Alexandre <dbalexandre@gmail.com>2019-02-08 00:40:55 +0300
commitf67fc237271bc26557f29c60b3f5772a6e0d3e63 (patch)
tree1396323f70672257c2c190a5a7edb606eefac4c6 /lib/gitlab/kubernetes
parente2966a6d8c5d26b8f7d71bfbacb54162bfa6567f (diff)
Upgrade cluster applications, starting with runner
Diffstat (limited to 'lib/gitlab/kubernetes')
-rw-r--r--lib/gitlab/kubernetes/helm/api.rb11
-rw-r--r--lib/gitlab/kubernetes/helm/install_command.rb34
-rw-r--r--lib/gitlab/kubernetes/helm/upgrade_command.rb65
3 files changed, 26 insertions, 84 deletions
diff --git a/lib/gitlab/kubernetes/helm/api.rb b/lib/gitlab/kubernetes/helm/api.rb
index b9903e37f40..7dfd9ed4f35 100644
--- a/lib/gitlab/kubernetes/helm/api.rb
+++ b/lib/gitlab/kubernetes/helm/api.rb
@@ -20,14 +20,7 @@ module Gitlab
kubeclient.create_pod(command.pod_resource)
end
- def update(command)
- namespace.ensure_exists!
-
- update_config_map(command)
-
- delete_pod!(command.pod_name)
- kubeclient.create_pod(command.pod_resource)
- end
+ alias_method :update, :install
##
# Returns Pod phase
@@ -62,6 +55,8 @@ module Gitlab
def create_config_map(command)
command.config_map_resource.tap do |config_map_resource|
+ break unless config_map_resource
+
if config_map_exists?(config_map_resource)
kubeclient.update_config_map(config_map_resource)
else
diff --git a/lib/gitlab/kubernetes/helm/install_command.rb b/lib/gitlab/kubernetes/helm/install_command.rb
index a1ab5e048ac..f931248b747 100644
--- a/lib/gitlab/kubernetes/helm/install_command.rb
+++ b/lib/gitlab/kubernetes/helm/install_command.rb
@@ -42,8 +42,17 @@ module Gitlab
'helm repo update' if repository
end
+ # Uses `helm upgrade --install` which means we can use this for both
+ # installation and uprade of applications
def install_command
- command = ['helm', 'install', chart] + install_command_flags
+ command = ['helm', 'upgrade', name, chart] +
+ install_flag +
+ reset_values_flag +
+ optional_tls_flags +
+ optional_version_flag +
+ rbac_create_flag +
+ namespace_flag +
+ value_flag
command.shelljoin
end
@@ -56,17 +65,20 @@ module Gitlab
postinstall.join("\n") if postinstall
end
- def install_command_flags
- name_flag = ['--name', name]
- namespace_flag = ['--namespace', Gitlab::Kubernetes::Helm::NAMESPACE]
- value_flag = ['-f', "/data/helm/#{name}/config/values.yaml"]
+ def install_flag
+ ['--install']
+ end
- name_flag +
- optional_tls_flags +
- optional_version_flag +
- rbac_create_flag +
- namespace_flag +
- value_flag
+ def reset_values_flag
+ ['--reset-values']
+ end
+
+ def value_flag
+ ['-f', "/data/helm/#{name}/config/values.yaml"]
+ end
+
+ def namespace_flag
+ ['--namespace', Gitlab::Kubernetes::Helm::NAMESPACE]
end
def rbac_create_flag
diff --git a/lib/gitlab/kubernetes/helm/upgrade_command.rb b/lib/gitlab/kubernetes/helm/upgrade_command.rb
deleted file mode 100644
index 9daffc138b5..00000000000
--- a/lib/gitlab/kubernetes/helm/upgrade_command.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-# frozen_string_literal: true
-
-module Gitlab
- module Kubernetes
- module Helm
- class UpgradeCommand
- include BaseCommand
- include ClientCommand
-
- attr_reader :name, :chart, :version, :repository, :files
-
- def initialize(name, chart:, files:, rbac:, version: nil, repository: nil)
- @name = name
- @chart = chart
- @rbac = rbac
- @version = version
- @files = files
- @repository = repository
- end
-
- def generate_script
- super + [
- init_command,
- wait_for_tiller_command,
- repository_command,
- script_command
- ].compact.join("\n")
- end
-
- def rbac?
- @rbac
- end
-
- def pod_name
- "upgrade-#{name}"
- end
-
- private
-
- def script_command
- upgrade_flags = "#{optional_version_flag}#{optional_tls_flags}" \
- " --reset-values" \
- " --install" \
- " --namespace #{::Gitlab::Kubernetes::Helm::NAMESPACE}" \
- " -f /data/helm/#{name}/config/values.yaml"
-
- "helm upgrade #{name} #{chart}#{upgrade_flags}"
- end
-
- def optional_version_flag
- " --version #{version}" if version
- end
-
- def optional_tls_flags
- return unless files.key?(:'ca.pem')
-
- " --tls" \
- " --tls-ca-cert #{files_dir}/ca.pem" \
- " --tls-cert #{files_dir}/cert.pem" \
- " --tls-key #{files_dir}/key.pem"
- end
- end
- end
- end
-end