Skip to content

Commit 98622b9

Browse files
committed
feat: support extending label metric allowlist
1 parent 23a896a commit 98622b9

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

pkg/manifests/manifests.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ import (
4949
"k8s.io/apimachinery/pkg/util/sets"
5050
auditv1 "k8s.io/apiserver/pkg/apis/audit/v1"
5151
apiregistrationv1 "k8s.io/kube-aggregator/pkg/apis/apiregistration/v1"
52+
ksmpkg "k8s.io/kube-state-metrics/v2/pkg/options"
5253
"k8s.io/utils/ptr"
5354
k8syaml "sigs.k8s.io/yaml"
5455

@@ -767,6 +768,19 @@ func (f *Factory) KubeStateMetricsDeployment(enableCRSMetrics bool) (*appsv1.Dep
767768
if enableCRSMetrics {
768769
d.Spec.Template.Spec.Containers[i].Args = append(container.Args, flagCRSConfigFile)
769770
}
771+
additionalAllowList := f.config.ClusterMonitoringConfiguration.KubeStateMetricsConfig.AdditionalLabelsAllowList
772+
if additionalAllowList != nil && *additionalAllowList != "" {
773+
allowListValidator := ksmpkg.LabelsAllowList{}
774+
err = allowListValidator.Set(*additionalAllowList)
775+
if err != nil {
776+
return nil, fmt.Errorf("error parsing allowlist: %v", err)
777+
}
778+
for i = range container.Args {
779+
if strings.HasPrefix(container.Args[i], "--metric-labels-allowlist=") {
780+
container.Args[i] += "," + *additionalAllowList
781+
}
782+
}
783+
}
770784
}
771785
}
772786

pkg/manifests/types.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,9 @@ type KubeStateMetricsConfig struct {
175175
Tolerations []v1.Toleration `json:"tolerations,omitempty"`
176176
// Defines a pod's topology spread constraints.
177177
TopologySpreadConstraints []v1.TopologySpreadConstraint `json:"topologySpreadConstraints,omitempty"`
178+
// Defines any additional resource-based label-metrics' allow listing in addition to the default one.
179+
// Refer: https://pkg.go.dev/k8s.io/kube-state-metrics/[email protected]/pkg/options#LabelsAllowList
180+
AdditionalLabelsAllowList *string `json:"additionalLabelsAllowList,omitempty"`
178181
}
179182

180183
// The `PrometheusK8sConfig` resource defines settings for the Prometheus

0 commit comments

Comments
 (0)