Skip to content

Commit 9a401d5

Browse files
Merge pull request #1271 from DavidHurta/metrics-mtls
OCPBUGS-66898: Implement mTLS authentication and authorization for CVO metrics endpoint
2 parents 8e4d046 + 62f88dd commit 9a401d5

76 files changed

Lines changed: 7575 additions & 2743 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

cmd/cluster-version-operator/start.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,13 @@ func init() {
2929
},
3030
}
3131

32-
cmd.PersistentFlags().StringVar(&opts.ListenAddr, "listen", opts.ListenAddr, "Address to listen on for metrics")
32+
cmd.PersistentFlags().StringVar(&opts.MetricsOptions.ListenAddress, "listen", opts.MetricsOptions.ListenAddress, "Address to listen on for metrics")
3333
cmd.PersistentFlags().StringVar(&opts.Kubeconfig, "kubeconfig", opts.Kubeconfig, "Kubeconfig file to access a remote cluster (testing only)")
3434
cmd.PersistentFlags().StringVar(&opts.NodeName, "node-name", opts.NodeName, "kubernetes node name CVO is scheduled on.")
3535
cmd.PersistentFlags().BoolVar(&opts.EnableAutoUpdate, "enable-auto-update", opts.EnableAutoUpdate, "Enables the autoupdate controller.")
3636
cmd.PersistentFlags().StringVar(&opts.ReleaseImage, "release-image", opts.ReleaseImage, "The Openshift release image url.")
37-
cmd.PersistentFlags().StringVar(&opts.ServingCertFile, "serving-cert-file", opts.ServingCertFile, "The X.509 certificate file for serving metrics over HTTPS. You must set both --serving-cert-file and --serving-key-file unless you set --listen empty.")
38-
cmd.PersistentFlags().StringVar(&opts.ServingKeyFile, "serving-key-file", opts.ServingKeyFile, "The X.509 key file for serving metrics over HTTPS. You must set both --serving-cert-file and --serving-key-file unless you set --listen empty.")
37+
cmd.PersistentFlags().StringVar(&opts.MetricsOptions.ServingCertFile, "serving-cert-file", opts.MetricsOptions.ServingCertFile, "The X.509 certificate file for serving metrics over HTTPS. You must set both --serving-cert-file and --serving-key-file unless you set --listen empty.")
38+
cmd.PersistentFlags().StringVar(&opts.MetricsOptions.ServingKeyFile, "serving-key-file", opts.MetricsOptions.ServingKeyFile, "The X.509 key file for serving metrics over HTTPS. You must set both --serving-cert-file and --serving-key-file unless you set --listen empty.")
3939
cmd.PersistentFlags().StringVar(&opts.PromQLTarget.CABundleFile, "metrics-ca-bundle-file", opts.PromQLTarget.CABundleFile, "The service CA bundle file containing one or more X.509 certificate files for validating certificates generated from the service CA for the respective remote PromQL query service.")
4040
cmd.PersistentFlags().StringVar(&opts.PromQLTarget.BearerTokenFile, "metrics-token-file", opts.PromQLTarget.BearerTokenFile, "The bearer token file used to access the remote PromQL query service.")
4141
cmd.PersistentFlags().StringVar(&opts.PromQLTarget.KubeSvc.Namespace, "metrics-namespace", opts.PromQLTarget.KubeSvc.Namespace, "The name of the namespace where the the remote PromQL query service resides. Must be specified when --use-dns-for-services is disabled.")

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ require (
2424
golang.org/x/crypto v0.45.0
2525
golang.org/x/net v0.47.0
2626
golang.org/x/time v0.9.0
27-
gopkg.in/fsnotify.v1 v1.4.7
2827
k8s.io/api v0.34.1
2928
k8s.io/apiextensions-apiserver v0.34.1
3029
k8s.io/apimachinery v0.34.1
30+
k8s.io/apiserver v0.34.1
3131
k8s.io/client-go v0.34.1
3232
k8s.io/klog/v2 v2.130.1
3333
k8s.io/kube-aggregator v0.34.1
@@ -40,6 +40,7 @@ require (
4040
github.com/beorn7/perks v1.0.1 // indirect
4141
github.com/cespare/xxhash/v2 v2.3.0 // indirect
4242
github.com/emicklei/go-restful/v3 v3.12.2 // indirect
43+
github.com/fsnotify/fsnotify v1.9.0 // indirect
4344
github.com/fxamacker/cbor/v2 v2.9.0 // indirect
4445
github.com/go-openapi/jsonpointer v0.21.0 // indirect
4546
github.com/go-openapi/jsonreference v0.20.2 // indirect
@@ -82,7 +83,6 @@ require (
8283
gopkg.in/inf.v0 v0.9.1 // indirect
8384
gopkg.in/yaml.v2 v2.4.0 // indirect
8485
gopkg.in/yaml.v3 v3.0.1 // indirect
85-
k8s.io/apiserver v0.34.1 // indirect
8686
k8s.io/component-base v0.34.1 // indirect
8787
k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect
8888
sigs.k8s.io/controller-runtime v0.12.1 // indirect

go.sum

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,6 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntN
205205
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
206206
gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4=
207207
gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M=
208-
gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=
209-
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
210208
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
211209
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
212210
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=

install/0000_90_cluster-version-operator_02_servicemonitor.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,14 @@ metadata:
1111
include.release.openshift.io/self-managed-high-availability: "true"
1212
spec:
1313
endpoints:
14-
- bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
15-
interval: 30s
14+
- interval: 30s
1615
port: metrics
1716
scheme: https
1817
tlsConfig:
1918
caFile: /etc/prometheus/configmaps/serving-certs-ca-bundle/service-ca.crt
2019
serverName: cluster-version-operator.openshift-cluster-version.svc
20+
certFile: /etc/prometheus/secrets/metrics-client-certs/tls.crt
21+
keyFile: /etc/prometheus/secrets/metrics-client-certs/tls.key
2122
namespaceSelector:
2223
matchNames:
2324
- openshift-cluster-version

0 commit comments

Comments
 (0)