Merge branch 'pl-fix-k8s-ns-query-variables' into 'master'
Use correct k8s namespace in Prometheus queries See merge request gitlab-org/gitlab-ce!27812
This commit is contained in:
commit
56c8b35b84
|
@ -76,6 +76,10 @@ module Clusters
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def namespace_for(project)
|
||||||
|
cluster.find_or_initialize_kubernetes_namespace_for_project(project).namespace
|
||||||
|
end
|
||||||
|
|
||||||
def predefined_variables(project:)
|
def predefined_variables(project:)
|
||||||
Gitlab::Ci::Variables::Collection.new.tap do |variables|
|
Gitlab::Ci::Variables::Collection.new.tap do |variables|
|
||||||
variables.append(key: 'KUBE_URL', value: api_url)
|
variables.append(key: 'KUBE_URL', value: api_url)
|
||||||
|
|
|
@ -94,6 +94,10 @@ class KubernetesService < DeploymentService
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def namespace_for(project)
|
||||||
|
actual_namespace
|
||||||
|
end
|
||||||
|
|
||||||
# Check we can connect to the Kubernetes API
|
# Check we can connect to the Kubernetes API
|
||||||
def test(*args)
|
def test(*args)
|
||||||
kubeclient = build_kube_client!
|
kubeclient = build_kube_client!
|
||||||
|
|
|
@ -4,9 +4,13 @@ module Gitlab
|
||||||
module Prometheus
|
module Prometheus
|
||||||
module QueryVariables
|
module QueryVariables
|
||||||
def self.call(environment)
|
def self.call(environment)
|
||||||
|
deployment_platform = environment.deployment_platform
|
||||||
|
namespace = deployment_platform&.namespace_for(environment.project) ||
|
||||||
|
deployment_platform&.actual_namespace || ''
|
||||||
|
|
||||||
{
|
{
|
||||||
ci_environment_slug: environment.slug,
|
ci_environment_slug: environment.slug,
|
||||||
kube_namespace: environment.deployment_platform&.actual_namespace || '',
|
kube_namespace: namespace,
|
||||||
environment_filter: %{container_name!="POD",environment="#{environment.slug}"}
|
environment_filter: %{container_name!="POD",environment="#{environment.slug}"}
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
|
@ -4,6 +4,7 @@ require 'spec_helper'
|
||||||
|
|
||||||
describe Gitlab::Prometheus::QueryVariables do
|
describe Gitlab::Prometheus::QueryVariables do
|
||||||
describe '.call' do
|
describe '.call' do
|
||||||
|
let(:project) { environment.project }
|
||||||
let(:environment) { create(:environment) }
|
let(:environment) { create(:environment) }
|
||||||
let(:slug) { environment.slug }
|
let(:slug) { environment.slug }
|
||||||
|
|
||||||
|
@ -21,13 +22,32 @@ describe Gitlab::Prometheus::QueryVariables do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with deployment platform' do
|
context 'with deployment platform' do
|
||||||
let(:kube_namespace) { environment.deployment_platform.actual_namespace }
|
context 'with project cluster' do
|
||||||
|
let(:kube_namespace) { environment.deployment_platform.actual_namespace }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
create(:cluster, :provided_by_user, projects: [environment.project])
|
create(:cluster, :project, :provided_by_user, projects: [project])
|
||||||
|
end
|
||||||
|
|
||||||
|
it { is_expected.to include(kube_namespace: kube_namespace) }
|
||||||
end
|
end
|
||||||
|
|
||||||
it { is_expected.to include(kube_namespace: kube_namespace) }
|
context 'with group cluster' do
|
||||||
|
let(:cluster) { create(:cluster, :group, :provided_by_user, groups: [group]) }
|
||||||
|
let(:group) { create(:group) }
|
||||||
|
let(:project2) { create(:project) }
|
||||||
|
let(:kube_namespace) { k8s_ns.namespace }
|
||||||
|
|
||||||
|
let!(:k8s_ns) { create(:cluster_kubernetes_namespace, cluster: cluster, project: project) }
|
||||||
|
let!(:k8s_ns2) { create(:cluster_kubernetes_namespace, cluster: cluster, project: project2) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
group.projects << project
|
||||||
|
group.projects << project2
|
||||||
|
end
|
||||||
|
|
||||||
|
it { is_expected.to include(kube_namespace: kube_namespace) }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue