diff --git a/app/models/clusters/applications/helm.rb b/app/models/clusters/applications/helm.rb index a18a3f87bc47d73b7972d6d65273e1006814ad26..c35db143205e4a76152ecb3f8436d616395648b6 100644 --- a/app/models/clusters/applications/helm.rb +++ b/app/models/clusters/applications/helm.rb @@ -9,7 +9,7 @@ module Clusters belongs_to :cluster, class_name: 'Clusters::Cluster', foreign_key: :cluster_id - default_value_for :version, Gitlab::Clusters::Helm::HELM_VERSION + default_value_for :version, Gitlab::Kubernetes::Helm::HELM_VERSION def name NAME diff --git a/app/services/clusters/base_helm_service.rb b/app/services/clusters/base_helm_service.rb index c7f7e2d0877b407c59d121d34389a3d602e28b23..dd717a0bb58992be9bc477114ae4f18daba6d9e4 100644 --- a/app/services/clusters/base_helm_service.rb +++ b/app/services/clusters/base_helm_service.rb @@ -17,7 +17,7 @@ module Clusters end def helm_api - @helm ||= Gitlab::Clusters::Helm.new(kubeclient) + @helm ||= Gitlab::Kubernetes::Helm.new(kubeclient) end end end diff --git a/app/services/clusters/install_app_service.rb b/app/services/clusters/install_app_service.rb index 496af2495fd8810dc1cfdbad8b1ade8173d09788..a72cfa0a17f29fbf9dd09b4377b1ff20a4fa3ad3 100644 --- a/app/services/clusters/install_app_service.rb +++ b/app/services/clusters/install_app_service.rb @@ -15,7 +15,6 @@ module Clusters rescue KubeException => ke app.make_errored!("Kubernetes error: #{ke.message}") rescue StandardError => e - Rails.logger.warn(e.message) app.make_errored!("Can't start installation process") end end diff --git a/app/services/clusters/install_tiller_service.rb b/app/services/clusters/install_tiller_service.rb deleted file mode 100644 index ac77a7ea3c2db11d8140284b0ea6f5ce3f416973..0000000000000000000000000000000000000000 --- a/app/services/clusters/install_tiller_service.rb +++ /dev/null @@ -1,24 +0,0 @@ -module Clusters - class InstallTillerService < BaseService - def execute - ensure_namespace - install - end - - private - - def kubernetes_service - return @kubernetes_service if defined?(@kubernetes_service) - - @kubernetes_service = project&.kubernetes_service - end - - def ensure_namespace - kubernetes_service&.ensure_namespace! - end - - def install - kubernetes_service&.helm_client&.init! - end - end -end diff --git a/db/migrate/20171031100710_create_clusters_kubernetes_helm_apps.rb b/db/migrate/20171031100710_create_clusters_kubernetes_helm_apps.rb index 1035adfe2b52ecd006b245fffb9678115d6419d3..ef2e7e07a41f81d37894e127132f78d63a8123f0 100644 --- a/db/migrate/20171031100710_create_clusters_kubernetes_helm_apps.rb +++ b/db/migrate/20171031100710_create_clusters_kubernetes_helm_apps.rb @@ -1,4 +1,8 @@ class CreateClustersKubernetesHelmApps < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + def change create_table :clusters_applications_helm do |t| t.references :cluster, null: false, unique: true, foreign_key: { on_delete: :cascade } diff --git a/lib/gitlab/clusters/helm.rb b/lib/gitlab/kubernetes/helm.rb similarity index 84% rename from lib/gitlab/clusters/helm.rb rename to lib/gitlab/kubernetes/helm.rb index 9c75fe2be964f36b82929a442e5e4ce5cb27e7ed..76bb14a06095fd360180e63797b10047df41b868 100644 --- a/lib/gitlab/clusters/helm.rb +++ b/lib/gitlab/kubernetes/helm.rb @@ -1,7 +1,6 @@ module Gitlab - module Clusters + module Kubernetes class Helm - Error = Class.new(StandardError) HELM_VERSION = '2.7.0'.freeze NAMESPACE = 'gitlab-managed-apps'.freeze COMMAND_SCRIPT = <<-EOS.freeze @@ -18,12 +17,11 @@ module Gitlab end def init! - ensure_namespace! - @kubeclient.create_pod(pod_resource(OpenStruct.new(name: 'helm'))) + install(OpenStruct.new(name: 'helm')) end def install(app) - ensure_namespace! + create_namespace! unless has_namespace? @kubeclient.create_pod(pod_resource(app)) end @@ -86,18 +84,24 @@ module Gitlab "install #{app.chart} --name #{app.name} --namespace #{NAMESPACE}" end - def ensure_namespace! + def has_namespace? + return @has_namespace if defined?(@has_namespace) + begin @kubeclient.get_namespace(NAMESPACE) + @has_namespace = true rescue KubeException => ke raise ke unless ke.error_code == 404 + false + end + end - namespace_resource = ::Kubeclient::Resource.new - namespace_resource.metadata = {} - namespace_resource.metadata.name = NAMESPACE + def create_namespace! + namespace_resource = ::Kubeclient::Resource.new + namespace_resource.metadata = {} + namespace_resource.metadata.name = NAMESPACE - @kubeclient.create_namespace(namespace_resource) - end + @kubeclient.create_namespace(namespace_resource) end end end