summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-08-10 03:09:44 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-08-10 03:09:44 +0000
commita544d1da18a96411ed19ca820038833caa87208b (patch)
treeb1a39c0596744b475880b0f97308270107d7543e
parent54763b367cd828086a6f4a9956484ce0229ae1b7 (diff)
downloadgitlab-ce-a544d1da18a96411ed19ca820038833caa87208b.tar.gz
Add latest changes from gitlab-org/gitlab@master
-rw-r--r--app/assets/javascripts/clusters/components/applications.vue63
-rw-r--r--app/assets/javascripts/vue_shared/components/toggle_button.vue20
-rw-r--r--app/assets/stylesheets/framework/toggle.scss51
-rw-r--r--app/assets/stylesheets/framework/variables.scss4
-rw-r--r--app/controllers/clusters/base_controller.rb4
-rw-r--r--app/models/clusters/applications/cert_manager.rb6
-rw-r--r--app/models/clusters/applications/crossplane.rb3
-rw-r--r--app/models/clusters/applications/elastic_stack.rb9
-rw-r--r--app/models/clusters/applications/fluentd.rb3
-rw-r--r--app/models/clusters/applications/helm.rb6
-rw-r--r--app/models/clusters/applications/ingress.rb3
-rw-r--r--app/models/clusters/applications/jupyter.rb3
-rw-r--r--app/models/clusters/applications/knative.rb6
-rw-r--r--app/models/clusters/applications/prometheus.rb9
-rw-r--r--app/models/clusters/applications/runner.rb3
-rw-r--r--app/models/clusters/cluster.rb4
-rw-r--r--app/models/clusters/concerns/application_core.rb2
-rw-r--r--app/models/clusters/concerns/application_data.rb17
-rw-r--r--app/models/clusters/concerns/application_status.rb18
-rw-r--r--app/views/projects/pages_domains/_certificate.html.haml4
-rw-r--r--app/views/shared/buttons/_project_feature_toggle.html.haml4
-rw-r--r--changelogs/unreleased/27767-fix-the-following-style-lint-errors-and-warnings-for-app-assets-sty.yml5
-rw-r--r--changelogs/unreleased/remove-local-tiller-feature-flag.yml5
-rw-r--r--doc/user/clusters/applications.md36
-rw-r--r--lib/gitlab/kubernetes/helm/base_command.rb7
-rw-r--r--lib/gitlab/kubernetes/helm/client_command.rb29
-rw-r--r--lib/gitlab/kubernetes/helm/delete_command.rb5
-rw-r--r--lib/gitlab/kubernetes/helm/install_command.rb2
-rw-r--r--lib/gitlab/kubernetes/helm/patch_command.rb2
-rw-r--r--locale/gitlab.pot8
-rw-r--r--spec/features/clusters/installing_applications_shared_examples.rb60
-rw-r--r--spec/frontend/clusters/components/applications_spec.js38
-rw-r--r--spec/frontend/vue_shared/components/toggle_button_spec.js2
-rw-r--r--spec/lib/gitlab/kubernetes/helm/api_spec.rb5
-rw-r--r--spec/lib/gitlab/kubernetes/helm/base_command_spec.rb3
-rw-r--r--spec/lib/gitlab/kubernetes/helm/delete_command_spec.rb47
-rw-r--r--spec/lib/gitlab/kubernetes/helm/init_command_spec.rb2
-rw-r--r--spec/lib/gitlab/kubernetes/helm/install_command_spec.rb44
-rw-r--r--spec/lib/gitlab/kubernetes/helm/patch_command_spec.rb40
-rw-r--r--spec/lib/gitlab/kubernetes/helm/reset_command_spec.rb2
-rw-r--r--spec/support/shared_examples/models/cluster_application_helm_cert_shared_examples.rb38
-rw-r--r--spec/support/shared_examples/models/cluster_application_initial_status_shared_examples.rb42
-rw-r--r--spec/support/shared_examples/models/cluster_application_status_shared_examples.rb136
43 files changed, 129 insertions, 671 deletions
diff --git a/app/assets/javascripts/clusters/components/applications.vue b/app/assets/javascripts/clusters/components/applications.vue
index 556eaccb385..039237042ea 100644
--- a/app/assets/javascripts/clusters/components/applications.vue
+++ b/app/assets/javascripts/clusters/components/applications.vue
@@ -1,8 +1,6 @@
<script>
-import helmInstallIllustration from '@gitlab/svgs/dist/illustrations/kubernetes-installation.svg';
import { GlLoadingIcon, GlSprintf, GlLink } from '@gitlab/ui';
import gitlabLogo from 'images/cluster_app_logos/gitlab.png';
-import helmLogo from 'images/cluster_app_logos/helm.png';
import jupyterhubLogo from 'images/cluster_app_logos/jupyterhub.png';
import kubernetesLogo from 'images/cluster_app_logos/kubernetes.png';
import certManagerLogo from 'images/cluster_app_logos/cert_manager.png';
@@ -95,16 +93,6 @@ export default {
},
},
computed: {
- managedAppsLocalTillerEnabled() {
- return Boolean(gon.features?.managedAppsLocalTiller);
- },
- helmInstalled() {
- return (
- this.managedAppsLocalTillerEnabled ||
- this.applications.helm.status === APPLICATION_STATUS.INSTALLED ||
- this.applications.helm.status === APPLICATION_STATUS.UPDATED
- );
- },
ingressId() {
return INGRESS;
},
@@ -162,7 +150,6 @@ export default {
},
logos: {
gitlabLogo,
- helmLogo,
jupyterhubLogo,
kubernetesLogo,
certManagerLogo,
@@ -172,7 +159,6 @@ export default {
elasticStackLogo,
fluentdLogo,
},
- helmInstallIllustration,
};
</script>
@@ -180,47 +166,13 @@ export default {
<section id="cluster-applications">
<p class="gl-mb-0">
{{
- s__(`ClusterIntegration|Choose which applications to install on your Kubernetes cluster.
- Helm Tiller is required to install any of the following applications.`)
+ s__(`ClusterIntegration|Choose which applications to install on your Kubernetes cluster.`)
}}
<gl-link :href="helpPath">{{ __('More information') }}</gl-link>
</p>
<div class="cluster-application-list gl-mt-3">
<application-row
- v-if="!managedAppsLocalTillerEnabled"
- id="helm"
- :logo-url="$options.logos.helmLogo"
- :title="applications.helm.title"
- :status="applications.helm.status"
- :status-reason="applications.helm.statusReason"
- :request-status="applications.helm.requestStatus"
- :request-reason="applications.helm.requestReason"
- :installed="applications.helm.installed"
- :install-failed="applications.helm.installFailed"
- :uninstallable="applications.helm.uninstallable"
- :uninstall-successful="applications.helm.uninstallSuccessful"
- :uninstall-failed="applications.helm.uninstallFailed"
- class="rounded-top"
- title-link="https://docs.helm.sh/"
- >
- <template #description>
- {{
- s__(`ClusterIntegration|Helm streamlines installing
- and managing Kubernetes applications.
- Tiller runs inside of your Kubernetes Cluster,
- and manages releases of your charts.`)
- }}
- </template>
- </application-row>
- <div v-show="!helmInstalled" class="cluster-application-warning">
- <div class="svg-container" v-html="$options.helmInstallIllustration"></div>
- {{
- s__(`ClusterIntegration|You must first install Helm Tiller before
- installing the applications below`)
- }}
- </div>
- <application-row
:id="ingressId"
:logo-url="$options.logos.kubernetesLogo"
:title="applications.ingress.title"
@@ -237,7 +189,6 @@ export default {
:uninstallable="applications.ingress.uninstallable"
:uninstall-successful="applications.ingress.uninstallSuccessful"
:uninstall-failed="applications.ingress.uninstallFailed"
- :disabled="!helmInstalled"
:updateable="false"
title-link="https://kubernetes.io/docs/concepts/services-networking/ingress/"
>
@@ -340,7 +291,6 @@ export default {
:uninstallable="applications.cert_manager.uninstallable"
:uninstall-successful="applications.cert_manager.uninstallSuccessful"
:uninstall-failed="applications.cert_manager.uninstallFailed"
- :disabled="!helmInstalled"
title-link="https://cert-manager.readthedocs.io/en/latest/#"
>
<template #description>
@@ -398,7 +348,6 @@ export default {
:uninstallable="applications.prometheus.uninstallable"
:uninstall-successful="applications.prometheus.uninstallSuccessful"
:uninstall-failed="applications.prometheus.uninstallFailed"
- :disabled="!helmInstalled"
title-link="https://prometheus.io/docs/introduction/overview/"
>
<template #description>
@@ -438,7 +387,6 @@ export default {
:uninstallable="applications.runner.uninstallable"
:uninstall-successful="applications.runner.uninstallSuccessful"
:uninstall-failed="applications.runner.uninstallFailed"
- :disabled="!helmInstalled"
title-link="https://docs.gitlab.com/runner/"
>
<template #description>
@@ -464,7 +412,6 @@ export default {
:uninstall-successful="applications.crossplane.uninstallSuccessful"
:uninstall-failed="applications.crossplane.uninstallFailed"
:install-application-request-params="{ stack: applications.crossplane.stack }"
- :disabled="!helmInstalled"
title-link="https://crossplane.io"
>
<template #description>
@@ -509,7 +456,6 @@ export default {
:uninstall-successful="applications.jupyter.uninstallSuccessful"
:uninstall-failed="applications.jupyter.uninstallFailed"
:install-application-request-params="{ hostname: applications.jupyter.hostname }"
- :disabled="!helmInstalled"
title-link="https://jupyterhub.readthedocs.io/en/stable/"
>
<template #description>
@@ -575,7 +521,6 @@ export default {
:uninstall-successful="applications.knative.uninstallSuccessful"
:uninstall-failed="applications.knative.uninstallFailed"
:updateable="false"
- :disabled="!helmInstalled"
v-bind="applications.knative"
title-link="https://github.com/knative/docs"
>
@@ -597,7 +542,7 @@ export default {
</p>
<knative-domain-editor
- v-if="(knative.installed || (helmInstalled && rbac)) && !preInstalledKnative"
+ v-if="(knative.installed || rbac) && !preInstalledKnative"
:knative="knative"
:ingress-dns-help-path="ingressDnsHelpPath"
@save="saveKnativeDomain"
@@ -634,7 +579,6 @@ export default {
:uninstallable="applications.elastic_stack.uninstallable"
:uninstall-successful="applications.elastic_stack.uninstallSuccessful"
:uninstall-failed="applications.elastic_stack.uninstallFailed"
- :disabled="!helmInstalled"
title-link="https://gitlab.com/gitlab-org/charts/elastic-stack"
>
<template #description>
@@ -668,7 +612,6 @@ export default {
:uninstallable="applications.fluentd.uninstallable"
:uninstall-successful="applications.fluentd.uninstallSuccessful"
:uninstall-failed="applications.fluentd.uninstallFailed"
- :disabled="!helmInstalled"
:updateable="false"
title-link="https://github.com/helm/charts/tree/master/stable/fluentd"
>
@@ -694,7 +637,7 @@ export default {
</application-row>
<div class="gl-mt-7 gl-border-1 gl-border-t-solid gl-border-gray-100">
- <!-- This empty div serves as a separator between applications that have a dependency on Helm and those that can be enabled without Helm. -->
+ <!-- This empty div serves as a separator. The applications below can be externally installed using a cluster-management project. -->
</div>
<application-row
diff --git a/app/assets/javascripts/vue_shared/components/toggle_button.vue b/app/assets/javascripts/vue_shared/components/toggle_button.vue
index 1de866bed37..540edc9f61c 100644
--- a/app/assets/javascripts/vue_shared/components/toggle_button.vue
+++ b/app/assets/javascripts/vue_shared/components/toggle_button.vue
@@ -1,7 +1,6 @@
<script>
-import { GlLoadingIcon } from '@gitlab/ui';
+import { GlLoadingIcon, GlIcon } from '@gitlab/ui';
import { s__ } from '../../locale';
-import icon from './icon.vue';
const ICON_ON = 'status_success_borderless';
const ICON_OFF = 'status_failed_borderless';
@@ -10,7 +9,7 @@ const LABEL_OFF = s__('ToggleButton|Toggle Status: OFF');
export default {
components: {
- icon,
+ GlIcon,
GlLoadingIcon,
},
@@ -63,18 +62,27 @@ export default {
<label class="toggle-wrapper">
<input v-if="name" :name="name" :value="value" type="hidden" />
<button
+ type="button"
+ role="switch"
+ class="project-feature-toggle"
:aria-label="ariaLabel"
+ :aria-checked="value"
:class="{
'is-checked': value,
+ 'gl-blue-500': value,
'is-disabled': disabledInput,
'is-loading': isLoading,
}"
- type="button"
- class="project-feature-toggle"
@click="toggleFeature"
>
<gl-loading-icon class="loading-icon" />
- <span class="toggle-icon"> <icon :name="toggleIcon" class="toggle-icon-svg" /> </span>
+ <span class="toggle-icon">
+ <gl-icon
+ :size="18"
+ :name="toggleIcon"
+ :class="value ? 'gl-text-blue-500' : 'gl-text-gray-400'"
+ />
+ </span>
</button>
</label>
</template>
diff --git a/app/assets/stylesheets/framework/toggle.scss b/app/assets/stylesheets/framework/toggle.scss
index 8b131f59cfc..054280f3321 100644
--- a/app/assets/stylesheets/framework/toggle.scss
+++ b/app/assets/stylesheets/framework/toggle.scss
@@ -31,7 +31,7 @@
height: 24px;
cursor: pointer;
user-select: none;
- background: $gl-gray-400;
+ background: $gray-400;
border-radius: 12px;
padding: 3px;
transition: all 0.4s ease;
@@ -51,26 +51,10 @@
display: block;
left: 0;
border-radius: 9px;
- background: $feature-toggle-color;
+ background: $white;
transition: all 0.2s ease;
-
- &,
- .toggle-icon-svg {
- width: $default-icon-size;
- height: $default-icon-size;
- }
-
- .toggle-icon-svg {
- fill: $gl-gray-400;
- }
-
- .toggle-status-checked {
- display: none;
- }
-
- .toggle-status-unchecked {
- display: inline;
- }
+ width: $default-icon-size;
+ height: $default-icon-size;
}
.loading-icon {
@@ -84,10 +68,6 @@
}
&.is-loading {
- .toggle-icon {
- display: none;
- }
-
.loading-icon {
display: block;
@@ -101,23 +81,22 @@
}
&.is-checked {
- background: $feature-toggle-color-enabled;
+ background: $blue-400;
.toggle-icon {
left: calc(100% - 18px);
+ }
+ }
- .toggle-icon-svg {
- fill: $feature-toggle-color-enabled;
- }
-
- .toggle-status-checked {
- display: inline;
- }
+ &.is-checked .toggle-icon .toggle-status-checked,
+ .toggle-icon .toggle-status-unchecked {
+ display: inline;
+ }
- .toggle-status-unchecked {
- display: none;
- }
- }
+ &.is-checked .toggle-icon .toggle-status-unchecked,
+ &.is-loading .toggle-icon,
+ .toggle-icon .toggle-status-checked {
+ display: none;
}
&.is-disabled {
diff --git a/app/assets/stylesheets/framework/variables.scss b/app/assets/stylesheets/framework/variables.scss
index f5524404461..48c6db51103 100644
--- a/app/assets/stylesheets/framework/variables.scss
+++ b/app/assets/stylesheets/framework/variables.scss
@@ -751,10 +751,6 @@ $login-brand-holder-color: #888;
$project-option-descr-color: #54565b;
$project-network-controls-color: #888;
-$feature-toggle-color: #fff;
-$feature-toggle-text-color: #fff;
-$feature-toggle-color-enabled: #4a8bee;
-
/*
* Monitor Charts
*/
diff --git a/app/controllers/clusters/base_controller.rb b/app/controllers/clusters/base_controller.rb
index c79a0bb01bc..188805c6106 100644
--- a/app/controllers/clusters/base_controller.rb
+++ b/app/controllers/clusters/base_controller.rb
@@ -6,10 +6,6 @@ class Clusters::BaseController < ApplicationController
skip_before_action :authenticate_user!
before_action :authorize_read_cluster!
- before_action do
- push_frontend_feature_flag(:managed_apps_local_tiller, clusterable, default_enabled: true)
- end
-
helper_method :clusterable
private
diff --git a/app/models/clusters/applications/cert_manager.rb b/app/models/clusters/applications/cert_manager.rb
index 53c90fa56d5..1efa44c39c5 100644
--- a/app/models/clusters/applications/cert_manager.rb
+++ b/app/models/clusters/applications/cert_manager.rb
@@ -38,8 +38,7 @@ module Clusters
chart: chart,
files: files.merge(cluster_issuer_file),
preinstall: pre_install_script,
- postinstall: post_install_script,
- local_tiller_enabled: cluster.local_tiller_enabled?
+ postinstall: post_install_script
)
end
@@ -48,8 +47,7 @@ module Clusters
name: 'certmanager',
rbac: cluster.platform_kubernetes_rbac?,
files: files,
- postdelete: post_delete_script,
- local_tiller_enabled: cluster.local_tiller_enabled?
+ postdelete: post_delete_script
)
end
diff --git a/app/models/clusters/applications/crossplane.rb b/app/models/clusters/applications/crossplane.rb
index 2e5a8210b3c..420e56c1742 100644
--- a/app/models/clusters/applications/crossplane.rb
+++ b/app/models/clusters/applications/crossplane.rb
@@ -35,8 +35,7 @@ module Clusters
version: VERSION,
rbac: cluster.platform_kubernetes_rbac?,
chart: chart,
- files: files,
- local_tiller_enabled: cluster.local_tiller_enabled?
+ files: files
)
end
diff --git a/app/models/clusters/applications/elastic_stack.rb b/app/models/clusters/applications/elastic_stack.rb
index 58ac0c1f188..77996748b81 100644
--- a/app/models/clusters/applications/elastic_stack.rb
+++ b/app/models/clusters/applications/elastic_stack.rb
@@ -34,8 +34,7 @@ module Clusters
repository: repository,
files: files,
preinstall: migrate_to_3_script,
- postinstall: post_install_script,
- local_tiller_enabled: cluster.local_tiller_enabled?
+ postinstall: post_install_script
)
end
@@ -44,8 +43,7 @@ module Clusters
name: 'elastic-stack',
rbac: cluster.platform_kubernetes_rbac?,
files: files,
- postdelete: post_delete_script,
- local_tiller_enabled: cluster.local_tiller_enabled?
+ postdelete: post_delete_script
)
end
@@ -121,8 +119,7 @@ module Clusters
Gitlab::Kubernetes::Helm::DeleteCommand.new(
name: 'elastic-stack',
rbac: cluster.platform_kubernetes_rbac?,
- files: files,
- local_tiller_enabled: cluster.local_tiller_enabled?
+ files: files
).delete_command,
Gitlab::Kubernetes::KubectlCmd.delete("pvc", "--selector", "release=elastic-stack", "--namespace", Gitlab::Kubernetes::Helm::NAMESPACE)
]
diff --git a/app/models/clusters/applications/fluentd.rb b/app/models/clusters/applications/fluentd.rb
index 1bcd39618f6..3fd6e870edc 100644
--- a/app/models/clusters/applications/fluentd.rb
+++ b/app/models/clusters/applications/fluentd.rb
@@ -32,8 +32,7 @@ module Clusters
version: VERSION,
rbac: cluster.platform_kubernetes_rbac?,
chart: chart,
- files: files,
- local_tiller_enabled: cluster.local_tiller_enabled?
+ files: files
)
end
diff --git a/app/models/clusters/applications/helm.rb b/app/models/clusters/applications/helm.rb
index 226a9c26db0..4a1bcac4bb7 100644
--- a/app/models/clusters/applications/helm.rb
+++ b/app/models/clusters/applications/helm.rb
@@ -52,8 +52,7 @@ module Clusters
Gitlab::Kubernetes::Helm::InitCommand.new(
name: name,
files: files,
- rbac: cluster.platform_kubernetes_rbac?,
- local_tiller_enabled: cluster.local_tiller_enabled?
+ rbac: cluster.platform_kubernetes_rbac?
)
end
@@ -61,8 +60,7 @@ module Clusters
Gitlab::Kubernetes::Helm::ResetCommand.new(
name: name,
files: files,
- rbac: cluster.platform_kubernetes_rbac?,
- local_tiller_enabled: cluster.local_tiller_enabled?
+ rbac: cluster.platform_kubernetes_rbac?
)
end
diff --git a/app/models/clusters/applications/ingress.rb b/app/models/clusters/applications/ingress.rb
index f71c3e40cad..1d08f38a2f1 100644
--- a/app/models/clusters/applications/ingress.rb
+++ b/app/models/clusters/applications/ingress.rb
@@ -63,8 +63,7 @@ module Clusters
version: VERSION,
rbac: cluster.platform_kubernetes_rbac?,
chart: chart,
- files: files,
- local_tiller_enabled: cluster.local_tiller_enabled?
+ files: files
)
end
diff --git a/app/models/clusters/applications/jupyter.rb b/app/models/clusters/applications/jupyter.rb
index b737f0f962f..056ea355de6 100644
--- a/app/models/clusters/applications/jupyter.rb
+++ b/app/models/clusters/applications/jupyter.rb
@@ -45,8 +45,7 @@ module Clusters
rbac: cluster.platform_kubernetes_rbac?,
chart: chart,
files: files,
- repository: repository,
- local_tiller_enabled: cluster.local_tiller_enabled?
+ repository: repository
)
end
diff --git a/app/models/clusters/applications/knative.rb b/app/models/clusters/applications/knative.rb
index b55fc3c45fc..3047da12dd9 100644
--- a/app/models/clusters/applications/knative.rb
+++ b/app/models/clusters/applications/knative.rb
@@ -77,8 +77,7 @@ module Clusters
chart: chart,
files: files,
repository: REPOSITORY,
- postinstall: install_knative_metrics,
- local_tiller_enabled: cluster.local_tiller_enabled?
+ postinstall: install_knative_metrics
)
end
@@ -100,8 +99,7 @@ module Clusters
rbac: cluster.platform_kubernetes_rbac?,
files: files,
predelete: delete_knative_services_and_metrics,
- postdelete: delete_knative_istio_leftovers,
- local_tiller_enabled: cluster.local_tiller_enabled?
+ postdelete: delete_knative_istio_leftovers
)
end
diff --git a/app/models/clusters/applications/prometheus.rb b/app/models/clusters/applications/prometheus.rb
index 101d782db3a..216bbbc1c5a 100644
--- a/app/models/clusters/applications/prometheus.rb
+++ b/app/models/clusters/applications/prometheus.rb
@@ -69,8 +69,7 @@ module Clusters
rbac: cluster.platform_kubernetes_rbac?,
chart: chart,
files: files,
- postinstall: install_knative_metrics,
- local_tiller_enabled: cluster.local_tiller_enabled?
+ postinstall: install_knative_metrics
)
end
@@ -80,8 +79,7 @@ module Clusters
version: version,
rbac: cluster.platform_kubernetes_rbac?,
chart: chart,
- files: files_with_replaced_values(values),
- local_tiller_enabled: cluster.local_tiller_enabled?
+ files: files_with_replaced_values(values)
)
end
@@ -90,8 +88,7 @@ module Clusters
name: name,
rbac: cluster.platform_kubernetes_rbac?,
files: files,
- predelete: delete_knative_istio_metrics,
- local_tiller_enabled: cluster.local_tiller_enabled?
+ predelete: delete_knative_istio_metrics
)
end
diff --git a/app/models/clusters/applications/runner.rb b/app/models/clusters/applications/runner.rb
index 2935ba46666..c041f605e6c 100644
--- a/app/models/clusters/applications/runner.rb
+++ b/app/models/clusters/applications/runner.rb
@@ -36,8 +36,7 @@ module Clusters
rbac: cluster.platform_kubernetes_rbac?,
chart: chart,
files: files,
- repository: repository,
- local_tiller_enabled: cluster.local_tiller_enabled?
+ repository: repository
)
end
diff --git a/app/models/clusters/cluster.rb b/app/models/clusters/cluster.rb
index 874b0bc9646..63aebdf1bdb 100644
--- a/app/models/clusters/cluster.rb
+++ b/app/models/clusters/cluster.rb
@@ -357,10 +357,6 @@ module Clusters
end
end
- def local_tiller_enabled?
- Feature.enabled?(:managed_apps_local_tiller, clusterable, default_enabled: true)
- end
-
def prometheus_adapter
application_prometheus
end
diff --git a/app/models/clusters/concerns/application_core.rb b/app/models/clusters/concerns/application_core.rb
index c1f63758906..760576ea1eb 100644
--- a/app/models/clusters/concerns/application_core.rb
+++ b/app/models/clusters/concerns/application_core.rb
@@ -15,7 +15,7 @@ module Clusters
def set_initial_status
return unless not_installable?
- self.status = status_states[:installable] if cluster&.application_helm_available? || cluster&.local_tiller_enabled?
+ self.status = status_states[:installable]
end
def can_uninstall?
diff --git a/app/models/clusters/concerns/application_data.rb b/app/models/clusters/concerns/application_data.rb
index ade27e69642..22e597e9747 100644
--- a/app/models/clusters/concerns/application_data.rb
+++ b/app/models/clusters/concerns/application_data.rb
@@ -7,8 +7,7 @@ module Clusters
Gitlab::Kubernetes::Helm::DeleteCommand.new(
name: name,
rbac: cluster.platform_kubernetes_rbac?,
- files: files,
- local_tiller_enabled: cluster.local_tiller_enabled?
+ files: files
)
end
@@ -21,23 +20,11 @@ module Clusters
end
def files
- @files ||= begin
- files = { 'values.yaml': values }
-
- files.merge!(certificate_files) if use_tiller_ssl?
-
- files
- end
+ @files ||= { 'values.yaml': values }
end
private
- def use_tiller_ssl?
- return false if cluster.local_tiller_enabled?
-
- cluster.application_helm.has_ssl?
- end
-
def certificate_files
{
'ca.pem': ca_cert,
diff --git a/app/models/clusters/concerns/application_status.rb b/app/models/clusters/concerns/application_status.rb
index ee6290e613e..95ac95448dd 100644
--- a/app/models/clusters/concerns/application_status.rb
+++ b/app/models/clusters/concerns/application_status.rb
@@ -97,24 +97,6 @@ module Clusters
application.status_reason = status_reason if status_reason
end
- before_transition any => [:installed, :updated] do |application, transition|
- unless application.cluster.local_tiller_enabled? || application.is_a?(Clusters::Applications::Helm)
- if transition.event == :make_externally_installed
- # If an application is externally installed
- # We assume the helm application is externally installed too
- helm = application.cluster.application_helm || application.cluster.build_application_helm
-
- helm.make_externally_installed!
- else
- # When installing any application we are also performing an update
- # of tiller (see Gitlab::Kubernetes::Helm::ClientCommand) so
- # therefore we need to reflect that in the database.
-
- application.cluster.application_helm.update!(version: Gitlab::Kubernetes::Helm::HELM_VERSION)
- end
- end
- end
-
after_transition any => [:uninstalling], :use_transactions => false do |application, _|
application.prepare_uninstall
end
diff --git a/app/views/projects/pages_domains/_certificate.html.haml b/app/views/projects/pages_domains/_certificate.html.haml
index 11c7e4a950b..16d949c416b 100644
--- a/app/views/projects/pages_domains/_certificate.html.haml
+++ b/app/views/projects/pages_domains/_certificate.html.haml
@@ -19,8 +19,8 @@
"aria-label": _("Automatic certificate management using Let's Encrypt") }
= f.hidden_field :auto_ssl_enabled?, class: "js-project-feature-toggle-input"
%span.toggle-icon
- = sprite_icon("status_success_borderless", size: 16, css_class: "toggle-icon-svg toggle-status-checked")
- = sprite_icon("status_failed_borderless", size: 16, css_class: "toggle-icon-svg toggle-status-unchecked")
+ = sprite_icon("status_success_borderless", size: 18, css_class: "gl-text-blue-500 toggle-status-checked")
+ = sprite_icon("status_failed_borderless", size: 18, css_class: "gl-text-gray-400 toggle-status-unchecked")
%p.text-secondary.mt-3
- docs_link_url = help_page_path("user/project/pages/custom_domains_ssl_tls_certification/lets_encrypt_integration.md")
- docs_link_start = "<a href=\"%{docs_link_url}\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-nowrap\">".html_safe % { docs_link_url: docs_link_url }
diff --git a/app/views/shared/buttons/_project_feature_toggle.html.haml b/app/views/shared/buttons/_project_feature_toggle.html.haml
index 0f630786455..321fbee1b35 100644
--- a/app/views/shared/buttons/_project_feature_toggle.html.haml
+++ b/app/views/shared/buttons/_project_feature_toggle.html.haml
@@ -12,5 +12,5 @@
- if yield.present?
= yield
%span.toggle-icon
- = sprite_icon('status_success_borderless', size: 16, css_class: 'toggle-icon-svg toggle-status-checked')
- = sprite_icon('status_failed_borderless', size: 16, css_class: 'toggle-icon-svg toggle-status-unchecked')
+ = sprite_icon('status_success_borderless', size: 18, css_class: 'gl-text-blue-500 toggle-status-checked')
+ = sprite_icon('status_failed_borderless', size: 18, css_class: 'gl-text-gray-400 toggle-status-unchecked')
diff --git a/changelogs/unreleased/27767-fix-the-following-style-lint-errors-and-warnings-for-app-assets-sty.yml b/changelogs/unreleased/27767-fix-the-following-style-lint-errors-and-warnings-for-app-assets-sty.yml
new file mode 100644
index 00000000000..1ea236ef266
--- /dev/null
+++ b/changelogs/unreleased/27767-fix-the-following-style-lint-errors-and-warnings-for-app-assets-sty.yml
@@ -0,0 +1,5 @@
+---
+title: Update color and vertical alignment of project feature toggle
+merge_request: 38537
+author:
+type: changed
diff --git a/changelogs/unreleased/remove-local-tiller-feature-flag.yml b/changelogs/unreleased/remove-local-tiller-feature-flag.yml
new file mode 100644
index 00000000000..9ad37c5cdfe
--- /dev/null
+++ b/changelogs/unreleased/remove-local-tiller-feature-flag.yml
@@ -0,0 +1,5 @@
+---
+title: Remove feature flag managed_apps_local_tiller
+merge_request: 37641
+author:
+type: changed
diff --git a/doc/user/clusters/applications.md b/doc/user/clusters/applications.md
index 4e8d1f27e09..96d05fdc455 100644
--- a/doc/user/clusters/applications.md
+++ b/doc/user/clusters/applications.md
@@ -69,47 +69,23 @@ can lead to confusion during deployments.
> - Introduced in GitLab 10.2 for project-level clusters.
> - Introduced in GitLab 11.6 for group-level clusters.
-> - A local Tiller option was [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/209736) in GitLab 13.2 behind a feature flag, enabled by default.
-> - The feature flag for local Tiller is enabled on GitLab.com.
+> - [Uses a local Tiller](https://gitlab.com/gitlab-org/gitlab/-/issues/209736) since GitLab 13.2.
[Helm](https://helm.sh/docs/) is a package manager for Kubernetes and is
used to install the GitLab-managed apps. GitLab runs each `helm` command
in a pod within the `gitlab-managed-apps` namespace inside the cluster.
-As of GitLab 13.2, the integration uses a local
-[Tiller](https://v2.helm.sh/docs/glossary/#tiller) by default. When using a
-local Tiller, the Helm application does not need to be installed and will not
-be shown in the list of applications.
+GitLab's integration uses Helm 2 with a local
+[Tiller](https://v2.helm.sh/docs/glossary/#tiller) server for managing
+applications. Prior to [GitLab 13.2](https://gitlab.com/gitlab-org/gitlab/-/issues/209736),
+GitLab used an in-cluster Tiller server in the `gitlab-managed-apps`
+namespace. This server can now be safely removed.
NOTE: **Note:**
GitLab's Helm integration does not support installing applications behind a proxy,
but a [workaround](../../topics/autodevops/index.md#install-applications-behind-a-proxy)
is available.
-### Enable or disable local Tiller **(CORE ONLY)**
-
-> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/209736) in GitLab 13.2
-> - The option to disable local Tiller is [planned for removal](https://gitlab.com/gitlab-org/gitlab/-/issues/209736) in GitLab 13.3
-
-Local Tiller is under development, but is ready for production use. It is
-deployed behind a feature flag that is **enabled by default**.
-[GitLab administrators with access to the GitLab Rails console](../../administration/feature_flags.md)
-can enable it for your instance.
-
-To enable it:
-
-```ruby
-# Instance-wide
-Feature.enable(:managed_apps_local_tiller)
-```
-
-To disable it:
-
-```ruby
-# Instance-wide
-Feature.disable(:managed_apps_local_tiller)
-```
-
### cert-manager
> Introduced in GitLab 11.6 for project- and group-level clusters.
diff --git a/lib/gitlab/kubernetes/helm/base_command.rb b/lib/gitlab/kubernetes/helm/base_command.rb
index f27ad05599e..49d2969f7f3 100644
--- a/lib/gitlab/kubernetes/helm/base_command.rb
+++ b/lib/gitlab/kubernetes/helm/base_command.rb
@@ -6,21 +6,16 @@ module Gitlab
class BaseCommand
attr_reader :name, :files
- def initialize(rbac:, name:, files:, local_tiller_enabled:)
+ def initialize(rbac:, name:, files:)
@rbac = rbac
@name = name
@files = files
- @local_tiller_enabled = local_tiller_enabled
end
def rbac?
@rbac
end
- def local_tiller_enabled?
- @local_tiller_enabled
- end
-
def pod_resource
pod_service_account_name = rbac? ? service_account_name : nil
diff --git a/lib/gitlab/kubernetes/helm/client_command.rb b/lib/gitlab/kubernetes/helm/client_command.rb
index 24458e1b4b3..a9e93c0c90e 100644
--- a/lib/gitlab/kubernetes/helm/client_command.rb
+++ b/lib/gitlab/kubernetes/helm/client_command.rb
@@ -5,30 +5,11 @@ module Gitlab
module Helm
module ClientCommand
def init_command
- if local_tiller_enabled?
- <<~HEREDOC.chomp
+ <<~SHELL.chomp
export HELM_HOST="localhost:44134"
tiller -listen ${HELM_HOST} -alsologtostderr &
helm init --client-only
- HEREDOC
- else
- # Here we are always upgrading to the latest version of Tiller when
- # installing an app. We ensure the helm version stored in the
- # database is correct by also updating this after transition to
- # :installed,:updated in Clusters::Concerns::ApplicationStatus
- 'helm init --upgrade'
- end
- end
-
- def wait_for_tiller_command
- return if local_tiller_enabled?
-
- helm_check = ['helm', 'version', *optional_tls_flags].shelljoin
- # This is necessary to give Tiller time to restart after upgrade.
- # Ideally we'd be able to use --wait but cannot because of
- # https://github.com/helm/helm/issues/4855
-
- "for i in $(seq 1 30); do #{helm_check} && s=0 && break || s=$?; sleep 1s; echo \"Retrying ($i)...\"; done; (exit $s)"
+ SHELL
end
def repository_command
@@ -37,12 +18,6 @@ module Gitlab
private
- def tls_flags_if_remote_tiller
- return [] if local_tiller_enabled?
-
- optional_tls_flags
- end
-
def repository_update_command
'helm repo update'
end
diff --git a/lib/gitlab/kubernetes/helm/delete_command.rb b/lib/gitlab/kubernetes/helm/delete_command.rb
index 3bb41d09994..f8b9601bc98 100644
--- a/lib/gitlab/kubernetes/helm/delete_command.rb
+++ b/lib/gitlab/kubernetes/helm/delete_command.rb
@@ -17,7 +17,6 @@ module Gitlab
def generate_script
super + [
init_command,
- wait_for_tiller_command,
predelete,
delete_command,
postdelete
@@ -29,9 +28,7 @@ module Gitlab
end
def delete_command
- command = ['helm', 'delete', '--purge', name] + tls_flags_if_remote_tiller
-
- command.shelljoin
+ ['helm', 'delete', '--purge', name].shelljoin
end
end
end
diff --git a/lib/gitlab/kubernetes/helm/install_command.rb b/lib/gitlab/kubernetes/helm/install_command.rb
index cf6d993cad4..d166842fce6 100644
--- a/lib/gitlab/kubernetes/helm/install_command.rb
+++ b/lib/gitlab/kubernetes/helm/install_command.rb
@@ -21,7 +21,6 @@ module Gitlab
def generate_script
super + [
init_command,
- wait_for_tiller_command,
repository_command,
repository_update_command,
preinstall,
@@ -39,7 +38,6 @@ module Gitlab
install_flag +
rollback_support_flag +
reset_values_flag +
- tls_flags_if_remote_tiller +
optional_version_flag +
rbac_create_flag +
namespace_flag +
diff --git a/lib/gitlab/kubernetes/helm/patch_command.rb b/lib/gitlab/kubernetes/helm/patch_command.rb
index 1a5fab116bd..a33dbdac134 100644
--- a/lib/gitlab/kubernetes/helm/patch_command.rb
+++ b/lib/gitlab/kubernetes/helm/patch_command.rb
@@ -26,7 +26,6 @@ module Gitlab
def generate_script
super + [
init_command,
- wait_for_tiller_command,
repository_command,
repository_update_command,
upgrade_command
@@ -38,7 +37,6 @@ module Gitlab
def upgrade_command
command = ['helm', 'upgrade', name, chart] +
reuse_values_flag +
- tls_flags_if_remote_tiller +
version_flag +
namespace_flag +
value_flag
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index 25f6a05afd9..fda9b366d39 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -5177,7 +5177,7 @@ msgstr ""
msgid "ClusterIntegration|Choose the worker node %{startLink}instance type %{externalLinkIcon} %{endLink}."
msgstr ""
-msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster. Helm Tiller is required to install any of the following applications."
+msgid "ClusterIntegration|Choose which applications to install on your Kubernetes cluster."
msgstr ""
msgid "ClusterIntegration|Choose which of your environments will use this cluster."
@@ -5393,9 +5393,6 @@ msgstr ""
msgid "ClusterIntegration|Helm release failed to install"
msgstr ""
-msgid "ClusterIntegration|Helm streamlines installing and managing Kubernetes applications. Tiller runs inside of your Kubernetes Cluster, and manages releases of your charts."
-msgstr ""
-
msgid "ClusterIntegration|If you are setting up multiple clusters and are using Auto DevOps, %{help_link_start}read this first%{help_link_end}."
msgstr ""
@@ -5903,9 +5900,6 @@ msgstr ""
msgid "ClusterIntegration|You are about to update %{appTitle} on your cluster."
msgstr ""
-msgid "ClusterIntegration|You must first install Helm Tiller before installing the applications below"
-msgstr ""
-
msgid "ClusterIntegration|You must grant access to your organization’s AWS resources in order to create a new EKS cluster. To grant access, create a provision role using the account and external ID below and provide us the ARN."
msgstr ""
diff --git a/spec/features/clusters/installing_applications_shared_examples.rb b/spec/features/clusters/installing_applications_shared_examples.rb
index 74150c42519..c422aa2be72 100644
--- a/spec/features/clusters/installing_applications_shared_examples.rb
+++ b/spec/features/clusters/installing_applications_shared_examples.rb
@@ -1,12 +1,10 @@
# frozen_string_literal: true
-RSpec.shared_examples "installing applications for a cluster" do |managed_apps_local_tiller|
+RSpec.shared_examples "installing applications for a cluster" do
before do
# Reduce interval from 10 seconds which is too long for an automated test
stub_const("#{Clusters::ClustersController}::STATUS_POLLING_INTERVAL", 500)
- stub_feature_flags(managed_apps_local_tiller: managed_apps_local_tiller)
-
visit cluster_path
end
@@ -31,12 +29,7 @@ RSpec.shared_examples "installing applications for a cluster" do |managed_apps_l
it 'user can install applications' do
wait_for_requests
- application_row =
- if managed_apps_local_tiller
- '.js-cluster-application-row-ingress'
- else
- '.js-cluster-application-row-helm'
- end
+ application_row = '.js-cluster-application-row-ingress'
page.within(application_row) do
expect(page).not_to have_css('.js-cluster-application-install-button[disabled]')
@@ -44,50 +37,11 @@ RSpec.shared_examples "installing applications for a cluster" do |managed_apps_l
end
end
- if managed_apps_local_tiller
- it 'does not show the Helm application' do
- expect(page).not_to have_selector(:css, '.js-cluster-application-row-helm')
- end
- else
- context 'when user installs Helm' do
- before do
- allow(ClusterInstallAppWorker).to receive(:perform_async)
- wait_for_requests
-
- page.within('.js-cluster-application-row-helm') do
- page.find(:css, '.js-cluster-application-install-button').click
- end
-
- wait_for_requests
- end
-
- it 'shows the status transition' do
- page.within('.js-cluster-application-row-helm') do
- # FE sends request and gets the response, then the buttons is "Installing"
- expect(page).to have_css('.js-cluster-application-install-button[disabled]', exact_text: 'Installing')
-
- Clusters::Cluster.last.application_helm.make_installing!
-
- # FE starts polling and update the buttons to "Installing"
- expect(page).to have_css('.js-cluster-application-install-button[disabled]', exact_text: 'Installing')
-
- Clusters::Cluster.last.application_helm.make_installed!
-
- expect(page).not_to have_css('button', exact_text: 'Install', visible: :all)
- expect(page).not_to have_css('button', exact_text: 'Installing', visible: :all)
- expect(page).to have_css('.js-cluster-application-uninstall-button:not([disabled])', exact_text: 'Uninstall')
- end
-
- expect(page).to have_content('Helm Tiller was successfully installed on your Kubernetes cluster')
- end
- end
+ it 'does not show the Helm application' do
+ expect(page).not_to have_selector(:css, '.js-cluster-application-row-helm')
end
context 'when user installs Knative' do
- before do
- create(:clusters_applications_helm, :installed, cluster: cluster) unless managed_apps_local_tiller
- end
-
context 'on an abac cluster' do
let(:cluster) { create(:cluster, :provided_by_gcp, :rbac_disabled, *cluster_factory_args) }
@@ -166,8 +120,6 @@ RSpec.shared_examples "installing applications for a cluster" do |managed_apps_l
allow(ClusterInstallAppWorker).to receive(:perform_async)
allow(ClusterWaitForIngressIpAddressWorker).to receive(:perform_in)
allow(ClusterWaitForIngressIpAddressWorker).to receive(:perform_async)
-
- create(:clusters_applications_helm, :installed, cluster: cluster) unless managed_apps_local_tiller
end
it 'shows status transition' do
@@ -223,8 +175,6 @@ RSpec.shared_examples "installing applications for a cluster" do |managed_apps_l
before do
allow(ClusterInstallAppWorker).to receive(:perform_async)
- create(:clusters_applications_helm, :installed, cluster: cluster) unless managed_apps_local_tiller
-
page.within('.js-cluster-application-row-elastic_stack') do
click_button 'Install'
end
@@ -255,8 +205,6 @@ RSpec.shared_examples "installing applications for a cluster" do |managed_apps_l
allow(ClusterWaitForIngressIpAddressWorker).to receive(:perform_in)
allow(ClusterWaitForIngressIpAddressWorker).to receive(:perform_async)
- create(:clusters_applications_helm, :installed, cluster: cluster) unless managed_apps_local_tiller
-
page.within('.js-cluster-application-row-ingress') do
expect(page).to have_css('.js-cluster-application-install-button:not([disabled])')
page.find(:css, '.js-cluster-application-install-button').click
diff --git a/spec/frontend/clusters/components/applications_spec.js b/spec/frontend/clusters/components/applications_spec.js
index 4faf6814186..e0ccf36e868 100644
--- a/spec/frontend/clusters/components/applications_spec.js
+++ b/spec/frontend/clusters/components/applications_spec.js
@@ -14,7 +14,6 @@ describe('Applications', () => {
beforeEach(() => {
gon.features = gon.features || {};
- gon.features.managedAppsLocalTiller = false;
});
const createApp = ({ applications, type, props } = {}, isShallow) => {
@@ -41,10 +40,6 @@ describe('Applications', () => {
createApp({ type: CLUSTER_TYPE.PROJECT });
});
- it('renders a row for Helm Tiller', () => {
- expect(wrapper.find('.js-cluster-application-row-helm').exists()).toBe(true);
- });
-
it('renders a row for Ingress', () => {
expect(wrapper.find('.js-cluster-application-row-ingress').exists()).toBe(true);
});
@@ -90,10 +85,6 @@ describe('Applications', () => {
createApp({ type: CLUSTER_TYPE.GROUP });
});
- it('renders a row for Helm Tiller', () => {
- expect(wrapper.find('.js-cluster-application-row-helm').exists()).toBe(true);
- });
-
it('renders a row for Ingress', () => {
expect(wrapper.find('.js-cluster-application-row-ingress').exists()).toBe(true);
});
@@ -140,10 +131,6 @@ describe('Applications', () => {
createApp({ type: CLUSTER_TYPE.INSTANCE });
});
- it('renders a row for Helm Tiller', () => {
- expect(wrapper.find('.js-cluster-application-row-helm').exists()).toBe(true);
- });
-
it('renders a row for Ingress', () => {
expect(wrapper.find('.js-cluster-application-row-ingress').exists()).toBe(true);
});
@@ -186,15 +173,9 @@ describe('Applications', () => {
});
describe('Helm application', () => {
- describe('when managedAppsLocalTiller enabled', () => {
- beforeEach(() => {
- gon.features.managedAppsLocalTiller = true;
- });
-
- it('does not render a row for Helm Tiller', () => {
- createApp();
- expect(wrapper.find('.js-cluster-application-row-helm').exists()).toBe(false);
- });
+ it('does not render a row for Helm Tiller', () => {
+ createApp();
+ expect(wrapper.find('.js-cluster-application-row-helm').exists()).toBe(false);
});
});
@@ -252,7 +233,6 @@ describe('Applications', () => {
externalHostname: 'localhost.localdomain',
modsecurity_enabled: false,
},
- helm: { title: 'Helm Tiller' },
cert_manager: { title: 'Cert-Manager' },
crossplane: { title: 'Crossplane', stack: '' },
runner: { title: 'GitLab Runner' },
@@ -403,14 +383,6 @@ describe('Applications', () => {
false,
);
});
-
- it('renders disabled install button', () => {
- expect(
- wrapper
- .find('.js-cluster-application-row-jupyter .js-cluster-application-install-button')
- .attributes('disabled'),
- ).toEqual('disabled');
- });
});
});
@@ -530,7 +502,7 @@ describe('Applications', () => {
describe('Elastic Stack application', () => {
describe('with elastic stack installable', () => {
- it('renders hostname active input', () => {
+ it('renders the install button enabled', () => {
createApp();
expect(
@@ -539,7 +511,7 @@ describe('Applications', () => {
'.js-cluster-application-row-elastic_stack .js-cluster-application-install-button',
)
.attributes('disabled'),
- ).toEqual('disabled');
+ ).toBeUndefined();
});
});
diff --git a/spec/frontend/vue_shared/components/toggle_button_spec.js b/spec/frontend/vue_shared/components/toggle_button_spec.js
index 83bbb37a89a..f58647ff12b 100644
--- a/spec/frontend/vue_shared/components/toggle_button_spec.js
+++ b/spec/frontend/vue_shared/components/toggle_button_spec.js
@@ -32,7 +32,7 @@ describe('Toggle Button', () => {
it('renders input status icon', () => {
expect(vm.$el.querySelectorAll('span.toggle-icon').length).toEqual(1);
- expect(vm.$el.querySelectorAll('svg.s16.toggle-icon-svg').length).toEqual(1);
+ expect(vm.$el.querySelectorAll('svg.s18').length).toEqual(1);
});
});
diff --git a/spec/lib/gitlab/kubernetes/helm/api_spec.rb b/spec/lib/gitlab/kubernetes/helm/api_spec.rb
index dabbab27b13..bcc95bdbf2b 100644
--- a/spec/lib/gitlab/kubernetes/helm/api_spec.rb
+++ b/spec/lib/gitlab/kubernetes/helm/api_spec.rb
@@ -17,8 +17,7 @@ RSpec.describe Gitlab::Kubernetes::Helm::API do
name: application_name,
chart: 'chart-name',
rbac: rbac,
- files: files,
- local_tiller_enabled: true
+ files: files
)
end
@@ -143,7 +142,7 @@ RSpec.describe Gitlab::Kubernetes::Helm::API do
end
context 'with a service account' do
- let(:command) { Gitlab::Kubernetes::Helm::InitCommand.new(name: application_name, files: files, rbac: rbac, local_tiller_enabled: true) }
+ let(:command) { Gitlab::Kubernetes::Helm::InitCommand.new(name: application_name, files: files, rbac: rbac) }
context 'rbac-enabled cluster' do
let(:rbac) { true }
diff --git a/spec/lib/gitlab/kubernetes/helm/base_command_spec.rb b/spec/lib/gitlab/kubernetes/helm/base_command_spec.rb
index 57fafaebf98..a7abd6ab1bf 100644
--- a/spec/lib/gitlab/kubernetes/helm/base_command_spec.rb
+++ b/spec/lib/gitlab/kubernetes/helm/base_command_spec.rb
@@ -16,8 +16,7 @@ RSpec.describe Gitlab::Kubernetes::Helm::BaseCommand do
super(
name: 'test-class-name',
rbac: rbac,
- files: { some: 'value' },
- local_tiller_enabled: false
+ files: { some: 'value' }
)
end
end
diff --git a/spec/lib/gitlab/kubernetes/helm/delete_command_spec.rb b/spec/lib/gitlab/kubernetes/helm/delete_command_spec.rb
index 7b182478cc3..ff2c2d76f22 100644
--- a/spec/lib/gitlab/kubernetes/helm/delete_command_spec.rb
+++ b/spec/lib/gitlab/kubernetes/helm/delete_command_spec.rb
@@ -3,12 +3,11 @@
require 'spec_helper'
RSpec.describe Gitlab::Kubernetes::Helm::DeleteCommand do
- subject(:delete_command) { described_class.new(name: app_name, rbac: rbac, files: files, local_tiller_enabled: local_tiller_enabled) }
+ subject(:delete_command) { described_class.new(name: app_name, rbac: rbac, files: files) }
let(:app_name) { 'app-name' }
let(:rbac) { true }
let(:files) { {} }
- let(:local_tiller_enabled) { true }
it_behaves_like 'helm command generator' do
let(:commands) do
@@ -21,50 +20,6 @@ RSpec.describe Gitlab::Kubernetes::Helm::DeleteCommand do
end
end
- context 'tillerless feature disabled' do
- let(:local_tiller_enabled) { false }
-
- it_behaves_like 'helm command generator' do
- let(:commands) do
- <<~EOS
- helm init --upgrade
- for i in $(seq 1 30); do helm version && s=0 && break || s=$?; sleep 1s; echo \"Retrying ($i)...\"; done; (exit $s)
- helm delete --purge app-name
- EOS
- end
- end
-
- context 'when there is a ca.pem file' do
- let(:files) { { 'ca.pem': 'some file content' } }
-
- let(:tls_flags) do
- <<~EOS.squish
- --tls
- --tls-ca-cert /data/helm/app-name/config/ca.pem
- --tls-cert /data/helm/app-name/config/cert.pem
- --tls-key /data/helm/app-name/config/key.pem
- EOS
- end
-
- it_behaves_like 'helm command generator' do
- let(:commands) do
- <<~EOS
- helm init --upgrade
- for i in $(seq 1 30); do helm version #{tls_flags} && s=0 && break || s=$?; sleep 1s; echo \"Retrying ($i)...\"; done; (exit $s)
- #{helm_delete_command}
- EOS
- end
-
- let(:helm_delete_command) do
- <<~EOS.squish
- helm delete --purge app-name
- #{tls_flags}
- EOS
- end
- end
- end
- end
-
describe '#pod_name' do
subject { delete_command.pod_name }
diff --git a/spec/lib/gitlab/kubernetes/helm/init_command_spec.rb b/spec/lib/gitlab/kubernetes/helm/init_command_spec.rb
index c982a417682..d538ed12a07 100644
--- a/spec/lib/gitlab/kubernetes/helm/init_command_spec.rb
+++ b/spec/lib/gitlab/kubernetes/helm/init_command_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe Gitlab::Kubernetes::Helm::InitCommand do
- subject(:init_command) { described_class.new(name: application.name, files: files, rbac: rbac, local_tiller_enabled: false) }
+ subject(:init_command) { described_class.new(name: application.name, files: files, rbac: rbac) }
let(:application) { create(:clusters_applications_helm) }
let(:rbac) { false }
diff --git a/spec/lib/gitlab/kubernetes/helm/install_command_spec.rb b/spec/lib/gitlab/kubernetes/helm/install_command_spec.rb
index aad350256ec..6ed7323c96f 100644
--- a/spec/lib/gitlab/kubernetes/helm/install_command_spec.rb
+++ b/spec/lib/gitlab/kubernetes/helm/install_command_spec.rb
@@ -12,8 +12,7 @@ RSpec.describe Gitlab::Kubernetes::Helm::InstallCommand do
version: version,
repository: repository,
preinstall: preinstall,
- postinstall: postinstall,
- local_tiller_enabled: local_tiller_enabled
+ postinstall: postinstall
)
end
@@ -23,7 +22,6 @@ RSpec.describe Gitlab::Kubernetes::Helm::InstallCommand do
let(:version) { '1.2.3' }
let(:preinstall) { nil }
let(:postinstall) { nil }
- let(:local_tiller_enabled) { true }
it_behaves_like 'helm command generator' do
let(:commands) do
@@ -52,46 +50,6 @@ RSpec.describe Gitlab::Kubernetes::Helm::InstallCommand do
end
end
- context 'tillerless feature disabled' do
- let(:local_tiller_enabled) { false }
-
- let(:tls_flags) do
- <<~EOS.squish
- --tls
- --tls-ca-cert /data/helm/app-name/config/ca.pem
- --tls-cert /data/helm/app-name/config/cert.pem
- --tls-key /data/helm/app-name/config/key.pem
- EOS
- end
-
- it_behaves_like 'helm command generator' do
- let(:commands) do
- <<~EOS
- helm init --upgrade
- for i in $(seq 1 30); do helm version #{tls_flags} && s=0 && break || s=$?; sleep 1s; echo \"Retrying ($i)...\"; done; (exit $s)
- helm repo add app-name https://repository.example.com
- helm repo update
- #{helm_install_comand}
- EOS
- end
-
- let(:helm_install_comand) do
- <<~EOS.squish
- helm upgrade app-name chart-name
- --install
- --atomic
- --cleanup-on-fail
- --reset-values
- #{tls_flags}
- --version 1.2.3
- --set rbac.create\\=false,rbac.enabled\\=false
- --namespace gitlab-managed-apps
- -f /data/helm/app-name/config/values.yaml
- EOS
- end
- end
- end
-
context 'when rbac is true' do
let(:rbac) { true }
diff --git a/spec/lib/gitlab/kubernetes/helm/patch_command_spec.rb b/spec/lib/gitlab/kubernetes/helm/patch_command_spec.rb
index ea2ade18e37..487a38f286d 100644
--- a/spec/lib/gitlab/kubernetes/helm/patch_command_spec.rb
+++ b/spec/lib/gitlab/kubernetes/helm/patch_command_spec.rb
@@ -7,7 +7,6 @@ RSpec.describe Gitlab::Kubernetes::Helm::PatchCommand do
let(:repository) { 'https://repository.example.com' }
let(:rbac) { false }
let(:version) { '1.2.3' }
- let(:local_tiller_enabled) { true }
subject(:patch_command) do
described_class.new(
@@ -16,47 +15,10 @@ RSpec.describe Gitlab::Kubernetes::Helm::PatchCommand do
rbac: rbac,
files: files,
version: version,
- repository: repository,
- local_tiller_enabled: local_tiller_enabled
+ repository: repository
)
end
- context 'when local tiller feature is disabled' do
- let(:local_tiller_enabled) { false }
-
- let(:tls_flags) do
- <<~EOS.squish
- --tls
- --tls-ca-cert /data/helm/app-name/config/ca.pem
- --tls-cert /data/helm/app-name/config/cert.pem
- --tls-key /data/helm/app-name/config/key.pem
- EOS
- end
-
- it_behaves_like 'helm command generator' do
- let(:commands) do
- <<~EOS
- helm init --upgrade
- for i in $(seq 1 30); do helm version #{tls_flags} && s=0 && break || s=$?; sleep 1s; echo \"Retrying ($i)...\"; done; (exit $s)
- helm repo add app-name https://repository.example.com
- helm repo update
- #{helm_upgrade_comand}
- EOS
- end
-
- let(:helm_upgrade_comand) do
- <<~EOS.squish
- helm upgrade app-name chart-name
- --reuse-values
- #{tls_flags}
- --version 1.2.3
- --namespace gitlab-managed-apps
- -f /data/helm/app-name/config/values.yaml
- EOS
- end
- end
- end
-
it_behaves_like 'helm command generator' do
let(:commands) do
<<~EOS
diff --git a/spec/lib/gitlab/kubernetes/helm/reset_command_spec.rb b/spec/lib/gitlab/kubernetes/helm/reset_command_spec.rb
index 8d386d41ad5..5a3ba59b8c0 100644
--- a/spec/lib/gitlab/kubernetes/helm/reset_command_spec.rb
+++ b/spec/lib/gitlab/kubernetes/helm/reset_command_spec.rb
@@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe Gitlab::Kubernetes::Helm::ResetCommand do
- subject(:reset_command) { described_class.new(name: name, rbac: rbac, files: files, local_tiller_enabled: false) }
+ subject(:reset_command) { described_class.new(name: name, rbac: rbac, files: files) }
let(:rbac) { true }
let(:name) { 'helm' }
diff --git a/spec/support/shared_examples/models/cluster_application_helm_cert_shared_examples.rb b/spec/support/shared_examples/models/cluster_application_helm_cert_shared_examples.rb
index 239588d3b2f..394253fb699 100644
--- a/spec/support/shared_examples/models/cluster_application_helm_cert_shared_examples.rb
+++ b/spec/support/shared_examples/models/cluster_application_helm_cert_shared_examples.rb
@@ -28,46 +28,16 @@ RSpec.shared_examples 'cluster application helm specs' do |application_name|
describe '#files' do
subject { application.files }
- context 'managed_apps_local_tiller feature flag is disabled' do
- before do
- stub_feature_flags(managed_apps_local_tiller: false)
- end
-
- context 'when the helm application does not have a ca_cert' do
- before do
- application.cluster.application_helm.ca_cert = nil
- end
-
- it 'does not include cert files when there is no ca_cert entry' do
- expect(subject).not_to include(:'ca.pem', :'cert.pem', :'key.pem')
- end
- end
-
- it 'includes cert files when there is a ca_cert entry' do
- expect(subject).to include(:'ca.pem', :'cert.pem', :'key.pem')
- expect(subject[:'ca.pem']).to eq(application.cluster.application_helm.ca_cert)
-
- cert = OpenSSL::X509::Certificate.new(subject[:'cert.pem'])
- expect(cert.not_after).to be < 60.minutes.from_now
- end
+ it 'does not include cert files' do
+ expect(subject).not_to include(:'ca.pem', :'cert.pem', :'key.pem')
end
- context 'managed_apps_local_tiller feature flag is enabled' do
- before do
- stub_feature_flags(managed_apps_local_tiller: application.cluster.clusterable)
- end
+ context 'when cluster does not have helm installed' do
+ let(:application) { create(application_name, :no_helm_installed) }
it 'does not include cert files' do
expect(subject).not_to include(:'ca.pem', :'cert.pem', :'key.pem')
end
-
- context 'when cluster does not have helm installed' do
- let(:application) { create(application_name, :no_helm_installed) }
-
- it 'does not include cert files' do
- expect(subject).not_to include(:'ca.pem', :'cert.pem', :'key.pem')
- end
- end
end
end
end
diff --git a/spec/support/shared_examples/models/cluster_application_initial_status_shared_examples.rb b/spec/support/shared_examples/models/cluster_application_initial_status_shared_examples.rb
index 7f0c60d4204..55e458db512 100644
--- a/spec/support/shared_examples/models/cluster_application_initial_status_shared_examples.rb
+++ b/spec/support/shared_examples/models/cluster_application_initial_status_shared_examples.rb
@@ -6,46 +6,8 @@ RSpec.shared_examples 'cluster application initial status specs' do
subject { described_class.new(cluster: cluster) }
- context 'local tiller feature flag is disabled' do
- before do
- stub_feature_flags(managed_apps_local_tiller: false)
- end
-
- it 'sets a default status' do
- expect(subject.status_name).to be(:not_installable)
- end
- end
-
- context 'local tiller feature flag is enabled' do
- before do
- stub_feature_flags(managed_apps_local_tiller: cluster.clusterable)
- end
-
- it 'sets a default status' do
- expect(subject.status_name).to be(:installable)
- end
- end
-
- context 'when application helm is scheduled' do
- before do
- stub_feature_flags(managed_apps_local_tiller: false)
-
- create(:clusters_applications_helm, :scheduled, cluster: cluster)
- end
-
- it 'defaults to :not_installable' do
- expect(subject.status_name).to be(:not_installable)
- end
- end
-
- context 'when application helm is installed' do
- before do
- create(:clusters_applications_helm, :installed, cluster: cluster)
- end
-
- it 'sets a default status' do
- expect(subject.status_name).to be(:installable)
- end
+ it 'sets a default status' do
+ expect(subject.status_name).to be(:installable)
end
end
end
diff --git a/spec/support/shared_examples/models/cluster_application_status_shared_examples.rb b/spec/support/shared_examples/models/cluster_application_status_shared_examples.rb
index 2bc5566e137..7603787a54e 100644
--- a/spec/support/shared_examples/models/cluster_application_status_shared_examples.rb
+++ b/spec/support/shared_examples/models/cluster_application_status_shared_examples.rb
@@ -48,43 +48,21 @@ RSpec.shared_examples 'cluster application status specs' do |application_name|
expect(subject).to be_installed
end
- context 'managed_apps_local_tiller feature flag disabled' do
- before do
- stub_feature_flags(managed_apps_local_tiller: false)
- end
-
- it 'updates helm version' do
- subject.cluster.application_helm.update!(version: '1.2.3')
+ it 'does not update the helm version' do
+ subject.cluster.application_helm.update!(version: '1.2.3')
+ expect do
subject.make_installed!
subject.cluster.application_helm.reload
-
- expect(subject.cluster.application_helm.version).to eq(Gitlab::Kubernetes::Helm::HELM_VERSION)
- end
+ end.not_to change { subject.cluster.application_helm.version }
end
- context 'managed_apps_local_tiller feature flag enabled' do
- before do
- stub_feature_flags(managed_apps_local_tiller: subject.cluster.clusterable)
- end
-
- it 'does not update the helm version' do
- subject.cluster.application_helm.update!(version: '1.2.3')
-
- expect do
- subject.make_installed!
-
- subject.cluster.application_helm.reload
- end.not_to change { subject.cluster.application_helm.version }
- end
-
- context 'the cluster has no helm installed' do
- subject { create(application_name, :installing, :no_helm_installed) }
+ context 'the cluster has no helm installed' do
+ subject { create(application_name, :installing, :no_helm_installed) }
- it 'runs without errors' do
- expect { subject.make_installed! }.not_to raise_error
- end
+ it 'runs without errors' do
+ expect { subject.make_installed! }.not_to raise_error
end
end
@@ -97,43 +75,21 @@ RSpec.shared_examples 'cluster application status specs' do |application_name|
expect(subject).to be_updated
end
- context 'managed_apps_local_tiller feature flag disabled' do
- before do
- stub_feature_flags(managed_apps_local_tiller: false)
- end
-
- it 'updates helm version' do
- subject.cluster.application_helm.update!(version: '1.2.3')
+ it 'does not update the helm version' do
+ subject.cluster.application_helm.update!(version: '1.2.3')
+ expect do
subject.make_installed!
subject.cluster.application_helm.reload
-
- expect(subject.cluster.application_helm.version).to eq(Gitlab::Kubernetes::Helm::HELM_VERSION)
- end
+ end.not_to change { subject.cluster.application_helm.version }
end
- context 'managed_apps_local_tiller feature flag enabled' do
- before do
- stub_feature_flags(managed_apps_local_tiller: true)
- end
-
- it 'does not update the helm version' do
- subject.cluster.application_helm.update!(version: '1.2.3')
-
- expect do
- subject.make_installed!
-
- subject.cluster.application_helm.reload
- end.not_to change { subject.cluster.application_helm.version }
- end
-
- context 'the cluster has no helm installed' do
- subject { create(application_name, :updating, :no_helm_installed) }
+ context 'the cluster has no helm installed' do
+ subject { create(application_name, :updating, :no_helm_installed) }
- it 'runs without errors' do
- expect { subject.make_installed! }.not_to raise_error
- end
+ it 'runs without errors' do
+ expect { subject.make_installed! }.not_to raise_error
end
end
end
@@ -185,62 +141,26 @@ RSpec.shared_examples 'cluster application status specs' do |application_name|
expect(subject).to be_installed
end
- context 'local tiller flag enabled' do
- before do
- stub_feature_flags(managed_apps_local_tiller: true)
- end
-
- context 'helm record does not exist' do
- subject { build(application_name, :installing, :no_helm_installed) }
-
- it 'does not create a helm record' do
- subject.make_externally_installed!
-
- subject.cluster.reload
- expect(subject.cluster.application_helm).to be_nil
- end
- end
-
- context 'helm record exists' do
- subject { build(application_name, :installing, cluster: old_helm.cluster) }
+ context 'helm record does not exist' do
+ subject { build(application_name, :installing, :no_helm_installed) }
- it 'does not update helm version' do
- subject.make_externally_installed!
-
- subject.cluster.application_helm.reload
+ it 'does not create a helm record' do
+ subject.make_externally_installed!
- expect(subject.cluster.application_helm.version).to eq('1.2.3')
- end
+ subject.cluster.reload
+ expect(subject.cluster.application_helm).to be_nil
end
end
- context 'local tiller flag disabled' do
- before do
- stub_feature_flags(managed_apps_local_tiller: false)
- end
-
- context 'helm record does not exist' do
- subject { build(application_name, :installing, :no_helm_installed) }
+ context 'helm record exists' do
+ subject { build(application_name, :installing, cluster: old_helm.cluster) }
- it 'creates a helm record' do
- subject.make_externally_installed!
-
- subject.cluster.reload
- expect(subject.cluster.application_helm).to be_present
- expect(subject.cluster.application_helm).to be_persisted
- end
- end
-
- context 'helm record exists' do
- subject { build(application_name, :installing, cluster: old_helm.cluster) }
-
- it 'does not update helm version' do
- subject.make_externally_installed!
+ it 'does not update helm version' do
+ subject.make_externally_installed!
- subject.cluster.application_helm.reload
+ subject.cluster.application_helm.reload
- expect(subject.cluster.application_helm.version).to eq('1.2.3')
- end
+ expect(subject.cluster.application_helm.version).to eq('1.2.3')
end
end