diff --git a/jsonnet/kube-prometheus/kube-prometheus-custom-metrics.libsonnet b/jsonnet/kube-prometheus/kube-prometheus-custom-metrics.libsonnet index bbbd7a69767068e53283a2f7f02a8c6de82ebea7..110ace440bf3a068b166be360a80633ab6afe9aa 100644 --- a/jsonnet/kube-prometheus/kube-prometheus-custom-metrics.libsonnet +++ b/jsonnet/kube-prometheus/kube-prometheus-custom-metrics.libsonnet @@ -1,5 +1,3 @@ -local k = import 'github.com/ksonnet/ksonnet-lib/ksonnet.beta.4/k.libsonnet'; - // Custom metrics API allows the HPA v2 to scale based on arbirary metrics. // For more details on usage visit https://github.com/DirectXMan12/k8s-prometheus-adapter#quick-links @@ -14,19 +12,12 @@ local k = import 'github.com/ksonnet/ksonnet-lib/ksonnet.beta.4/k.libsonnet'; seriesFilters: [], resources: { overrides: { - namespace: { - resource: 'namespace' - }, - pod: { - resource: 'pod' - } + namespace: { resource: 'namespace' }, + pod: { resource: 'pod' }, }, }, - name: { - matches: '^container_(.*)_seconds_total$', - as: "" - }, - metricsQuery: 'sum(rate(<<.Series>>{<<.LabelMatchers>>,container!="POD"}[1m])) by (<<.GroupBy>>)' + name: { matches: '^container_(.*)_seconds_total$', as: '' }, + metricsQuery: 'sum(rate(<<.Series>>{<<.LabelMatchers>>,container!="POD"}[1m])) by (<<.GroupBy>>)', }, { seriesQuery: '{__name__=~"^container_.*",container!="POD",namespace!="",pod!=""}', @@ -35,19 +26,12 @@ local k = import 'github.com/ksonnet/ksonnet-lib/ksonnet.beta.4/k.libsonnet'; ], resources: { overrides: { - namespace: { - resource: 'namespace' - }, - pod: { - resource: 'pod' - } + namespace: { resource: 'namespace' }, + pod: { resource: 'pod' }, }, }, - name: { - matches: '^container_(.*)_total$', - as: '' - }, - metricsQuery: 'sum(rate(<<.Series>>{<<.LabelMatchers>>,container!="POD"}[1m])) by (<<.GroupBy>>)' + name: { matches: '^container_(.*)_total$', as: '' }, + metricsQuery: 'sum(rate(<<.Series>>{<<.LabelMatchers>>,container!="POD"}[1m])) by (<<.GroupBy>>)', }, { seriesQuery: '{__name__=~"^container_.*",container!="POD",namespace!="",pod!=""}', @@ -56,60 +40,38 @@ local k = import 'github.com/ksonnet/ksonnet-lib/ksonnet.beta.4/k.libsonnet'; ], resources: { overrides: { - namespace: { - resource: 'namespace' - }, - pod: { - resource: 'pod' - } + namespace: { resource: 'namespace' }, + pod: { resource: 'pod' }, }, }, - name: { - matches: '^container_(.*)$', - as: '' - }, - metricsQuery: 'sum(<<.Series>>{<<.LabelMatchers>>,container!="POD"}) by (<<.GroupBy>>)' + name: { matches: '^container_(.*)$', as: '' }, + metricsQuery: 'sum(<<.Series>>{<<.LabelMatchers>>,container!="POD"}) by (<<.GroupBy>>)', }, { seriesQuery: '{namespace!="",__name__!~"^container_.*"}', seriesFilters: [ { isNot: '.*_total$' }, ], - resources: { - template: '<<.Resource>>' - }, - name: { - matches: '', - as: '' - }, - metricsQuery: 'sum(<<.Series>>{<<.LabelMatchers>>}) by (<<.GroupBy>>)' + resources: { template: '<<.Resource>>' }, + name: { matches: '', as: '' }, + metricsQuery: 'sum(<<.Series>>{<<.LabelMatchers>>}) by (<<.GroupBy>>)', }, { seriesQuery: '{namespace!="",__name__!~"^container_.*"}', seriesFilters: [ { isNot: '.*_seconds_total' }, ], - resources: { - template: '<<.Resource>>' - }, - name: { - matches: '^(.*)_total$', - as: '' - }, - metricsQuery: 'sum(rate(<<.Series>>{<<.LabelMatchers>>}[1m])) by (<<.GroupBy>>)' + resources: { template: '<<.Resource>>' }, + name: { matches: '^(.*)_total$', as: '' }, + metricsQuery: 'sum(rate(<<.Series>>{<<.LabelMatchers>>}[1m])) by (<<.GroupBy>>)', }, { seriesQuery: '{namespace!="",__name__!~"^container_.*"}', seriesFilters: [], - resources: { - template: '<<.Resource>>' - }, - name: { - matches: '^(.*)_seconds_total$', - as: '' - }, - metricsQuery: 'sum(rate(<<.Series>>{<<.LabelMatchers>>}[1m])) by (<<.GroupBy>>)' - } + resources: { template: '<<.Resource>>' }, + name: { matches: '^(.*)_seconds_total$', as: '' }, + metricsQuery: 'sum(rate(<<.Series>>{<<.LabelMatchers>>}[1m])) by (<<.GroupBy>>)', + }, ], }, }, @@ -152,46 +114,53 @@ local k = import 'github.com/ksonnet/ksonnet-lib/ksonnet.beta.4/k.libsonnet'; versionPriority: 200, }, }, - customMetricsClusterRoleServerResources: - local clusterRole = k.rbac.v1.clusterRole; - local policyRule = clusterRole.rulesType; - - local rules = - policyRule.new() + - policyRule.withApiGroups(['custom.metrics.k8s.io']) + - policyRule.withResources(['*']) + - policyRule.withVerbs(['*']); - - clusterRole.new() + - clusterRole.mixin.metadata.withName('custom-metrics-server-resources') + - clusterRole.withRules(rules), - - customMetricsClusterRoleBindingServerResources: - local clusterRoleBinding = k.rbac.v1.clusterRoleBinding; + customMetricsClusterRoleServerResources: { + apiVersion: 'rbac.authorization.k8s.io/v1', + kind: 'ClusterRole', + metadata: { + name: 'custom-metrics-server-resources', + }, + rules: [{ + apiGroups: ['custom.metrics.k8s.io'], + resources: ['*'], + verbs: ['*'], + }], + }, + customMetricsClusterRoleBindingServerResources: { + apiVersion: 'rbac.authorization.k8s.io/v1', + kind: 'ClusterRoleBinding', + metadata: { + name: 'custom-metrics-server-resources', + }, - clusterRoleBinding.new() + - clusterRoleBinding.mixin.metadata.withName('custom-metrics-server-resources') + - clusterRoleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') + - clusterRoleBinding.mixin.roleRef.withName('custom-metrics-server-resources') + - clusterRoleBinding.mixin.roleRef.mixinInstance({ kind: 'ClusterRole' }) + - clusterRoleBinding.withSubjects([{ + roleRef: { + apiGroup: 'rbac.authorization.k8s.io', + kind: 'ClusterRole', + name: 'custom-metrics-server-resources', + }, + subjects: [{ kind: 'ServiceAccount', name: $.prometheusAdapter.serviceAccount.metadata.name, namespace: $._config.namespace, - }]), - - customMetricsClusterRoleBindingHPA: - local clusterRoleBinding = k.rbac.v1.clusterRoleBinding; + }], + }, + customMetricsClusterRoleBindingHPA: { + apiVersion: 'rbac.authorization.k8s.io/v1', + kind: 'ClusterRoleBinding', + metadata: { + name: 'hpa-controller-custom-metrics', + }, - clusterRoleBinding.new() + - clusterRoleBinding.mixin.metadata.withName('hpa-controller-custom-metrics') + - clusterRoleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io') + - clusterRoleBinding.mixin.roleRef.withName('custom-metrics-server-resources') + - clusterRoleBinding.mixin.roleRef.mixinInstance({ kind: 'ClusterRole' }) + - clusterRoleBinding.withSubjects([{ + roleRef: { + apiGroup: 'rbac.authorization.k8s.io', + kind: 'ClusterRole', + name: 'custom-metrics-server-resources', + }, + subjects: [{ kind: 'ServiceAccount', name: 'horizontal-pod-autoscaler', namespace: 'kube-system', - }]), - } + }], + }, + }, }