@@ -15,12 +15,18 @@ local defaults = {
1515 },
1616
1717 kubeRbacProxyMain:: {
18+ ports: [
19+ { name: 'http-metrics' , containerPort: 8443 },
20+ ],
1821 resources+: {
1922 limits+: { cpu: '40m' },
2023 requests+: { cpu: '20m' },
2124 },
2225 },
2326 kubeRbacProxySelf:: {
27+ ports: [
28+ { name: 'telemetry' , containerPort: 9443 },
29+ ],
2430 resources+: {
2531 limits+: { cpu: '20m' },
2632 requests+: { cpu: '10m' },
@@ -46,6 +52,8 @@ local defaults = {
4652 runbookURLPattern: 'https://runbooks.prometheus-operator.dev/runbooks/kube-state-metrics/%s' ,
4753 },
4854 },
55+ // `enableProbes` allows users to opt-into upstream definitions for health probes.
56+ enableProbes:: false ,
4957};
5058
5159function (params) (import 'github.com/kubernetes/kube-state-metrics/jsonnet/kube-state-metrics/kube-state-metrics.libsonnet' ) {
@@ -91,14 +99,14 @@ function(params) (import 'github.com/kubernetes/kube-state-metrics/jsonnet/kube-
9199 spec+: {
92100 ports: [
93101 {
94- name: 'https-main' ,
95- port: 8443 ,
96- targetPort: 'https-main' ,
102+ name: defaults.kubeRbacProxyMain.ports[ 0 ].name ,
103+ port: defaults.kubeRbacProxyMain.ports[ 0 ].containerPort ,
104+ targetPort: defaults.kubeRbacProxyMain.ports[ 0 ].name ,
97105 },
98106 {
99- name: 'https-self' ,
100- port: 9443 ,
101- targetPort: 'https-self' ,
107+ name: defaults.kubeRbacProxySelf.ports[ 0 ].name ,
108+ port: defaults.kubeRbacProxySelf.ports[ 0 ].containerPort ,
109+ targetPort: defaults.kubeRbacProxySelf.ports[ 0 ].name ,
102110 },
103111 ],
104112 },
@@ -107,21 +115,19 @@ function(params) (import 'github.com/kubernetes/kube-state-metrics/jsonnet/kube-
107115 local kubeRbacProxyMain = krp(ksm._config.kubeRbacProxyMain {
108116 name: 'kube-rbac-proxy-main' ,
109117 upstream: 'http://127.0.0.1:8081/' ,
110- secureListenAddress: ':8443' ,
111- ports: [
112- { name: 'https-main' , containerPort: 8443 },
113- ],
118+ secureListenAddress: ':' + std.toString (defaults.kubeRbacProxyMain.ports[0 ].containerPort),
114119 image: ksm._config.kubeRbacProxyImage,
120+ // When enabling probes, kube-rbac-proxy needs to always allow the /livez endpoint.
121+ ignorePaths: if ksm._config.enableProbes then ['/livez' ] else super .ignorePaths,
115122 }),
116123
117124 local kubeRbacProxySelf = krp(ksm._config.kubeRbacProxySelf {
118125 name: 'kube-rbac-proxy-self' ,
119126 upstream: 'http://127.0.0.1:8082/' ,
120- secureListenAddress: ':9443' ,
121- ports: [
122- { name: 'https-self' , containerPort: 9443 },
123- ],
127+ secureListenAddress: ':' + std.toString (defaults.kubeRbacProxySelf.ports[0 ].containerPort),
124128 image: ksm._config.kubeRbacProxyImage,
129+ // When enabling probes, kube-rbac-proxy needs to always allow the /readyz endpoint.
130+ ignorePaths: if ksm._config.enableProbes then ['/readyz' ] else super .ignorePaths,
125131 }),
126132
127133 networkPolicy: {
@@ -161,14 +167,31 @@ function(params) (import 'github.com/kubernetes/kube-state-metrics/jsonnet/kube-
161167 spec+: {
162168 automountServiceAccountToken: true ,
163169 containers: std.map (function (c) c {
164- ports:: null ,
165- livenessProbe:: null ,
166- readinessProbe:: null ,
167170 securityContext+: {
168171 runAsGroup: 65534 ,
169172 },
170173 args: ['--host=127.0.0.1' , '--port=8081' , '--telemetry-host=127.0.0.1' , '--telemetry-port=8082' ],
171174 resources: ksm._config.resources,
175+ } + if !ksm._config.enableProbes then {
176+ ports:: null ,
177+ livenessProbe:: null ,
178+ readinessProbe:: null ,
179+ } else {
180+ ports: defaults.kubeRbacProxyMain.ports + defaults.kubeRbacProxySelf.ports,
181+ livenessProbe: {
182+ httpGet: {
183+ path: '/livez' ,
184+ port: defaults.kubeRbacProxyMain.ports[0 ].name,
185+ scheme: 'HTTPS' ,
186+ },
187+ },
188+ readinessProbe: {
189+ httpGet: {
190+ path: '/readyz' ,
191+ port: defaults.kubeRbacProxySelf.ports[0 ].name,
192+ scheme: 'HTTPS' ,
193+ },
194+ },
172195 }, super .containers) + [kubeRbacProxyMain, kubeRbacProxySelf],
173196 },
174197 },
0 commit comments