Skip to content

Commit 3a0df09

Browse files
zyjjayopenshift-merge-bot[bot]
authored andcommitted
Use controller-runtime to protect metrics endpoint
Use the new `FilterProvider` and `SecureServing` fields to authenticate and authorize requests to the metrics endpoint ref: https://issues.redhat.com/browse/ACM-8346 Signed-off-by: Jason Zhang <jaszhang@redhat.com>
1 parent 89cb697 commit 3a0df09

File tree

6 files changed

+109
-10
lines changed

6 files changed

+109
-10
lines changed

controllers/propagator/metric.go

+2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import (
88
"sigs.k8s.io/controller-runtime/pkg/metrics"
99
)
1010

11+
//+kubebuilder:rbac:groups=authorization.k8s.io,resources=tokenreviews,verbs=create
12+
1113
var (
1214
hubTemplateActiveWatchesMetric = prometheus.NewGauge(
1315
prometheus.GaugeOpts{

deploy/operator.yaml

+6
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,12 @@ rules:
5656
- subjectaccessreviews
5757
verbs:
5858
- create
59+
- apiGroups:
60+
- authorization.k8s.io
61+
resources:
62+
- tokenreviews
63+
verbs:
64+
- create
5965
- apiGroups:
6066
- cluster.open-cluster-management.io
6167
resources:

deploy/rbac/role.yaml

+6
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ rules:
2626
- subjectaccessreviews
2727
verbs:
2828
- create
29+
- apiGroups:
30+
- authorization.k8s.io
31+
resources:
32+
- tokenreviews
33+
verbs:
34+
- create
2935
- apiGroups:
3036
- cluster.open-cluster-management.io
3137
resources:

go.mod

+24-2
Original file line numberDiff line numberDiff line change
@@ -30,24 +30,31 @@ require (
3030
github.com/Masterminds/goutils v1.1.1 // indirect
3131
github.com/Masterminds/semver/v3 v3.2.1 // indirect
3232
github.com/Masterminds/sprig/v3 v3.2.3 // indirect
33+
github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df // indirect
3334
github.com/beorn7/perks v1.0.1 // indirect
35+
github.com/blang/semver/v4 v4.0.0 // indirect
36+
github.com/cenkalti/backoff/v4 v4.2.1 // indirect
3437
github.com/cespare/xxhash/v2 v2.3.0 // indirect
3538
github.com/davecgh/go-spew v1.1.1 // indirect
3639
github.com/emicklei/go-restful/v3 v3.12.0 // indirect
37-
github.com/evanphx/json-patch v5.9.0+incompatible // indirect
40+
github.com/evanphx/json-patch v5.6.0+incompatible // indirect
3841
github.com/evanphx/json-patch/v5 v5.9.0 // indirect
42+
github.com/felixge/httpsnoop v1.0.4 // indirect
3943
github.com/fsnotify/fsnotify v1.7.0 // indirect
4044
github.com/go-logr/logr v1.4.2 // indirect
45+
github.com/go-logr/stdr v1.2.2 // indirect
4146
github.com/go-openapi/jsonpointer v0.21.0 // indirect
4247
github.com/go-openapi/jsonreference v0.21.0 // indirect
4348
github.com/go-openapi/swag v0.23.0 // indirect
4449
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
4550
github.com/gogo/protobuf v1.3.2 // indirect
4651
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
4752
github.com/golang/protobuf v1.5.4 // indirect
53+
github.com/google/cel-go v0.17.7 // indirect
4854
github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 // indirect
4955
github.com/google/gofuzz v1.2.0 // indirect
5056
github.com/google/pprof v0.0.0-20240528025155-186aa0362fba // indirect
57+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect
5158
github.com/hashicorp/errwrap v1.1.0 // indirect
5259
github.com/hashicorp/go-multierror v1.1.1 // indirect
5360
github.com/huandu/xstrings v1.4.0 // indirect
@@ -66,28 +73,43 @@ require (
6673
github.com/prometheus/procfs v0.15.0 // indirect
6774
github.com/shopspring/decimal v1.4.0 // indirect
6875
github.com/spf13/cast v1.6.0 // indirect
69-
go.uber.org/atomic v1.11.0 // indirect
76+
github.com/stoewer/go-strcase v1.2.0 // indirect
77+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect
78+
go.opentelemetry.io/otel v1.21.0 // indirect
79+
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 // indirect
80+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 // indirect
81+
go.opentelemetry.io/otel/metric v1.21.0 // indirect
82+
go.opentelemetry.io/otel/sdk v1.21.0 // indirect
83+
go.opentelemetry.io/otel/trace v1.21.0 // indirect
84+
go.opentelemetry.io/proto/otlp v1.0.0 // indirect
85+
go.uber.org/atomic v1.10.0 // indirect
7086
go.uber.org/multierr v1.11.0 // indirect
7187
go.uber.org/zap v1.27.0 // indirect
7288
golang.org/x/crypto v0.23.0 // indirect
7389
golang.org/x/exp v0.0.0-20240525044651-4c93da0ed11d // indirect
7490
golang.org/x/net v0.25.0 // indirect
7591
golang.org/x/oauth2 v0.20.0 // indirect
92+
golang.org/x/sync v0.7.0 // indirect
7693
golang.org/x/sys v0.20.0 // indirect
7794
golang.org/x/term v0.20.0 // indirect
7895
golang.org/x/text v0.15.0 // indirect
7996
golang.org/x/time v0.5.0 // indirect
8097
golang.org/x/tools v0.21.0 // indirect
8198
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
99+
google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b // indirect
100+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240108191215-35c7eff3a6b1 // indirect
101+
google.golang.org/grpc v1.60.1 // indirect
82102
google.golang.org/protobuf v1.34.1 // indirect
83103
gopkg.in/inf.v0 v0.9.1 // indirect
84104
gopkg.in/yaml.v2 v2.4.0 // indirect
85105
gopkg.in/yaml.v3 v3.0.1 // indirect
86106
k8s.io/apiextensions-apiserver v0.29.5 // indirect
107+
k8s.io/apiserver v0.29.5 // indirect
87108
k8s.io/component-base v0.29.5 // indirect
88109
k8s.io/klog v1.0.0 // indirect
89110
k8s.io/kube-openapi v0.0.0-20240521193020-835d969ad83a // indirect
90111
k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 // indirect
112+
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.28.0 // indirect
91113
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
92114
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
93115
sigs.k8s.io/yaml v1.4.0 // indirect

go.sum

+51-4
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,14 @@ github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj
99
github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM=
1010
github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
1111
github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=
12+
github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df h1:7RFfzj4SSt6nnvCPbCqijJi1nWCd+TqAT3bYCStRC18=
13+
github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM=
1214
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
1315
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
16+
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
17+
github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
18+
github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM=
19+
github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
1420
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
1521
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
1622
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -30,19 +36,24 @@ github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4
3036
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
3137
github.com/emicklei/go-restful/v3 v3.12.0 h1:y2DdzBAURM29NFF94q6RaY4vjIH1rtwDapwQtU84iWk=
3238
github.com/emicklei/go-restful/v3 v3.12.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
33-
github.com/evanphx/json-patch v5.9.0+incompatible h1:fBXyNpNMuTTDdquAq/uisOr2lShz4oaXpDTX2bLe7ls=
34-
github.com/evanphx/json-patch v5.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
39+
github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U=
40+
github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
3541
github.com/evanphx/json-patch/v5 v5.9.0 h1:kcBlZQbplgElYIlo/n1hJbls2z/1awpXxpRi0/FOJfg=
3642
github.com/evanphx/json-patch/v5 v5.9.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ=
43+
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
44+
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
3745
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
3846
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
3947
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
4048
github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
4149
github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 h1:Mn26/9ZMNWSw9C9ERFA1PUxfmGpolnw2v0bKOREu5ew=
4250
github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I=
4351
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
52+
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
4453
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
4554
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
55+
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
56+
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
4657
github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
4758
github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
4859
github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
@@ -57,10 +68,14 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
5768
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
5869
github.com/golang-migrate/migrate/v4 v4.17.1 h1:4zQ6iqL6t6AiItphxJctQb3cFqWiSpMnX7wLTPnnYO4=
5970
github.com/golang-migrate/migrate/v4 v4.17.1/go.mod h1:m8hinFyWBn0SA4QKHuKh175Pm9wjmxj3S2Mia7dbXzM=
71+
github.com/golang/glog v1.1.2 h1:DVjP2PbBOzHyzA+dn3WhHIq4NdVu3Q+pvivFICf/7fo=
72+
github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ=
6073
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
6174
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
6275
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
6376
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
77+
github.com/google/cel-go v0.17.7 h1:6ebJFzu1xO2n7TLtN+UBqShGBhlD85bhvglh5DpcfqQ=
78+
github.com/google/cel-go v0.17.7/go.mod h1:HXZKzB0LXqer5lHHgfWAnlYwJaQBDKMjxjulNQzhwhY=
6479
github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 h1:0VpGH+cDhbDtdcweoyCVsF3fhN8kejK6rFe/2FFX2nU=
6580
github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49/go.mod h1:BkkQ4L1KS1xMt2aWSPStnn55ChGC0DPOn2FQYj+f25M=
6681
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
@@ -74,6 +89,8 @@ github.com/google/pprof v0.0.0-20240528025155-186aa0362fba/go.mod h1:K1liHPHnj73
7489
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
7590
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
7691
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
92+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms=
93+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg=
7794
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
7895
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
7996
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
@@ -146,6 +163,8 @@ github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0=
146163
github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
147164
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
148165
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
166+
github.com/stoewer/go-strcase v1.2.0 h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ainaU=
167+
github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
149168
github.com/stolostron/go-log-utils v0.1.2 h1:7l1aJWvBqU2+DUyimcslT5SJpdygVY/clRDmX5sO29c=
150169
github.com/stolostron/go-log-utils v0.1.2/go.mod h1:8zrB8UJmp1rXhv3Ck9bBl5SpNfKk3SApeElbo96YRtQ=
151170
github.com/stolostron/go-template-utils/v4 v4.3.0 h1:Y+cPU2W1p+AaFeo2+XmbfW/3f0cT2pLjIvwkLhtlSXg=
@@ -163,8 +182,24 @@ github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8
163182
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
164183
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
165184
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
166-
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
167-
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
185+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24=
186+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo=
187+
go.opentelemetry.io/otel v1.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc=
188+
go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo=
189+
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 h1:cl5P5/GIfFh4t6xyruOgJP5QiA1pw4fYYdv6nc6CBWw=
190+
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0/go.mod h1:zgBdWWAu7oEEMC06MMKc5NLbA/1YDXV1sMpSqEeLQLg=
191+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 h1:tIqheXEFWAZ7O8A7m+J0aPTmpJN3YQ7qetUAdkkkKpk=
192+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0/go.mod h1:nUeKExfxAQVbiVFn32YXpXZZHZ61Cc3s3Rn1pDBGAb0=
193+
go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4=
194+
go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM=
195+
go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8=
196+
go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E=
197+
go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc=
198+
go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ=
199+
go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I=
200+
go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
201+
go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ=
202+
go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
168203
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
169204
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
170205
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
@@ -238,6 +273,14 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T
238273
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
239274
gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
240275
gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
276+
google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917 h1:nz5NESFLZbJGPFxDT/HCn+V1mZ8JGNoY4nUpmW/Y2eg=
277+
google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917/go.mod h1:pZqR+glSb11aJ+JQcczCvgf47+duRuzNSKqE8YAQnV0=
278+
google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b h1:CIC2YMXmIhYw6evmhPxBKJ4fmLbOFtXQN/GV3XOZR8k=
279+
google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:IBQ646DjkDkvUIsVq/cc03FUFQ9wbZu7yE396YcL870=
280+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240108191215-35c7eff3a6b1 h1:gphdwh0npgs8elJ4T6J+DQJHPVF7RsuJHCfwztUb4J4=
281+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240108191215-35c7eff3a6b1/go.mod h1:daQN87bsDqDoe316QbbvX60nMoJQa4r6Ds0ZuoAe5yA=
282+
google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU=
283+
google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM=
241284
google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
242285
google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
243286
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@@ -258,6 +301,8 @@ k8s.io/apiextensions-apiserver v0.29.5 h1:njDywexhE6n+1NEl3A4axT0TMQHREnndrk3/zt
258301
k8s.io/apiextensions-apiserver v0.29.5/go.mod h1:pfIvij+MH9a8NQKtW7MD4EFnzvUjJ1ZQsDL8wuP8fnc=
259302
k8s.io/apimachinery v0.29.5 h1:Hofa2BmPfpoT+IyDTlcPdCHSnHtEQMoJYGVoQpRTfv4=
260303
k8s.io/apimachinery v0.29.5/go.mod h1:i3FJVwhvSp/6n8Fl4K97PJEP8C+MM+aoDq4+ZJBf70Y=
304+
k8s.io/apiserver v0.29.5 h1:223C+JkRnGmudEU00GfpX6quDSrzwwP0DuXOYTyUYb0=
305+
k8s.io/apiserver v0.29.5/go.mod h1:zN9xdatz5g7XwL1Xoz9hD4QQON1GN0c+1kV5e/NHejM=
261306
k8s.io/client-go v0.29.5 h1:nlASXmPQy190qTteaVP31g3c/wi2kycznkTP7Sv1zPc=
262307
k8s.io/client-go v0.29.5/go.mod h1:aY5CnqUUvXYccJhm47XHoPcRyX6vouHdIBHaKZGTbK4=
263308
k8s.io/component-base v0.29.5 h1:Ptj8AzG+p8c2a839XriHwxakDpZH9uvIgYz+o1agjg8=
@@ -274,6 +319,8 @@ open-cluster-management.io/api v0.13.0 h1:dlcJEZlNlE0DmSDctK2s7iWKg9l+Tgb0V78Z04
274319
open-cluster-management.io/api v0.13.0/go.mod h1:CuCPEzXDvOyxBB0H1d1eSeajbHqaeGEKq9c63vQc63w=
275320
open-cluster-management.io/multicloud-operators-subscription v0.13.0 h1:U09tdlnwfNcxrCc6ToSvnqH/YMK8xO3X/8oWsiOTS8I=
276321
open-cluster-management.io/multicloud-operators-subscription v0.13.0/go.mod h1:iBQn5nABh2IpHGgJ4iN0JMiaUQ9iyr7qY8Y3yYnsujk=
322+
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.28.0 h1:TgtAeesdhpm2SGwkQasmbeqDo8th5wOBA5h/AjTKA4I=
323+
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.28.0/go.mod h1:VHVDI/KrK4fjnV61bE2g3sA7tiETLn8sooImelsCx3Y=
277324
sigs.k8s.io/controller-runtime v0.17.5 h1:1FI9Lm7NiOOmBsgTV36/s2XrEFXnO2C4sbg/Zme72Rw=
278325
sigs.k8s.io/controller-runtime v0.17.5/go.mod h1:N0jpP5Lo7lMTF9aL56Z/B2oWBJjey6StQM0jRbKQXtY=
279326
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=

main.go

+20-4
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import (
4444
"sigs.k8s.io/controller-runtime/pkg/client/config"
4545
"sigs.k8s.io/controller-runtime/pkg/event"
4646
"sigs.k8s.io/controller-runtime/pkg/healthz"
47+
"sigs.k8s.io/controller-runtime/pkg/metrics/filters"
4748
"sigs.k8s.io/controller-runtime/pkg/metrics/server"
4849
"sigs.k8s.io/controller-runtime/pkg/source"
4950

@@ -111,6 +112,7 @@ func main() {
111112

112113
var (
113114
metricsAddr string
115+
secureMetrics bool
114116
enableLeaderElection bool
115117
probeAddr string
116118
keyRotationDays uint
@@ -128,6 +130,12 @@ func main() {
128130
)
129131

130132
pflag.StringVar(&metricsAddr, "metrics-bind-address", ":8383", "The address the metric endpoint binds to.")
133+
pflag.BoolVar(
134+
&secureMetrics,
135+
"secure-metrics",
136+
false,
137+
"Enable secure metrics endpoint with certificates at /var/run/metrics-cert",
138+
)
131139
pflag.StringVar(&probeAddr, "health-probe-bind-address", ":8081", "The address the probe endpoint binds to.")
132140
pflag.BoolVar(&enableLeaderElection, "leader-elect", true,
133141
"Enable leader election for controller manager. "+
@@ -257,12 +265,20 @@ func main() {
257265
}
258266
}
259267

268+
metricsOptions := server.Options{
269+
BindAddress: metricsAddr,
270+
}
271+
272+
if secureMetrics {
273+
metricsOptions.FilterProvider = filters.WithAuthenticationAndAuthorization
274+
metricsOptions.SecureServing = true
275+
metricsOptions.CertDir = "/var/run/metrics-cert"
276+
}
277+
260278
// Set default manager options
261279
options := ctrl.Options{
262-
Scheme: scheme,
263-
Metrics: server.Options{
264-
BindAddress: metricsAddr,
265-
},
280+
Scheme: scheme,
281+
Metrics: metricsOptions,
266282
HealthProbeBindAddress: probeAddr,
267283
LeaderElection: enableLeaderElection,
268284
LeaderElectionID: "policy-propagator.open-cluster-management.io",

0 commit comments

Comments
 (0)