Skip to content
This repository was archived by the owner on Apr 18, 2024. It is now read-only.

Commit 171f634

Browse files
author
Vibhor Dabas
committed
fix: add flag to disable kube-state-metrics deployment
1 parent 0143aa4 commit 171f634

File tree

3 files changed

+301
-13
lines changed

3 files changed

+301
-13
lines changed
Lines changed: 276 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,276 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRole
3+
metadata:
4+
name: kube-state-metrics
5+
rules:
6+
- apiGroups:
7+
- ""
8+
resources:
9+
- configmaps
10+
- secrets
11+
- nodes
12+
- pods
13+
- services
14+
- resourcequotas
15+
- replicationcontrollers
16+
- limitranges
17+
- persistentvolumeclaims
18+
- persistentvolumes
19+
- namespaces
20+
- endpoints
21+
verbs:
22+
- list
23+
- watch
24+
- apiGroups:
25+
- extensions
26+
resources:
27+
- daemonsets
28+
- deployments
29+
- replicasets
30+
- ingresses
31+
verbs:
32+
- list
33+
- watch
34+
- apiGroups:
35+
- apps
36+
resources:
37+
- statefulsets
38+
- daemonsets
39+
- deployments
40+
- replicasets
41+
verbs:
42+
- list
43+
- watch
44+
- apiGroups:
45+
- batch
46+
resources:
47+
- cronjobs
48+
- jobs
49+
verbs:
50+
- list
51+
- watch
52+
- apiGroups:
53+
- autoscaling
54+
resources:
55+
- horizontalpodautoscalers
56+
verbs:
57+
- list
58+
- watch
59+
- apiGroups:
60+
- authentication.k8s.io
61+
resources:
62+
- tokenreviews
63+
verbs:
64+
- create
65+
- apiGroups:
66+
- authorization.k8s.io
67+
resources:
68+
- subjectaccessreviews
69+
verbs:
70+
- create
71+
- apiGroups:
72+
- policy
73+
resources:
74+
- poddisruptionbudgets
75+
verbs:
76+
- list
77+
- watch
78+
- apiGroups:
79+
- certificates.k8s.io
80+
resources:
81+
- certificatesigningrequests
82+
verbs:
83+
- list
84+
- watch
85+
- apiGroups:
86+
- storage.k8s.io
87+
resources:
88+
- storageclasses
89+
verbs:
90+
- list
91+
- watch
92+
---
93+
apiVersion: rbac.authorization.k8s.io/v1
94+
kind: ClusterRoleBinding
95+
metadata:
96+
name: kube-state-metrics
97+
roleRef:
98+
apiGroup: rbac.authorization.k8s.io
99+
kind: ClusterRole
100+
name: kube-state-metrics
101+
subjects:
102+
- kind: ServiceAccount
103+
name: kube-state-metrics
104+
namespace: monitoring
105+
---
106+
apiVersion: apps/v1
107+
kind: Deployment
108+
metadata:
109+
labels:
110+
app: kube-state-metrics
111+
name: kube-state-metrics
112+
namespace: monitoring
113+
spec:
114+
replicas: 1
115+
selector:
116+
matchLabels:
117+
app: kube-state-metrics
118+
template:
119+
metadata:
120+
labels:
121+
app: kube-state-metrics
122+
spec:
123+
containers:
124+
- args:
125+
- --logtostderr
126+
- --secure-listen-address=:8443
127+
- --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
128+
- --upstream=http://127.0.0.1:8081/
129+
image: quay.io/brancz/kube-rbac-proxy:v0.11.0
130+
name: kube-rbac-proxy-main
131+
ports:
132+
- containerPort: 8443
133+
name: https-main
134+
resources:
135+
limits:
136+
memory: 40Mi
137+
requests:
138+
cpu: 10m
139+
memory: 20Mi
140+
- args:
141+
- --logtostderr
142+
- --secure-listen-address=:9443
143+
- --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
144+
- --upstream=http://127.0.0.1:8082/
145+
image: quay.io/brancz/kube-rbac-proxy:v0.11.0
146+
name: kube-rbac-proxy-self
147+
ports:
148+
- containerPort: 9443
149+
name: https-self
150+
resources:
151+
limits:
152+
memory: 40Mi
153+
requests:
154+
cpu: 10m
155+
memory: 20Mi
156+
- args:
157+
- --host=127.0.0.1
158+
- --port=8081
159+
- --telemetry-host=127.0.0.1
160+
- --telemetry-port=8082
161+
- --metric-annotations-allowlist=pods=[CapacityProvisioned]
162+
image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.5.0
163+
name: kube-state-metrics
164+
resources:
165+
limits:
166+
cpu: 500m
167+
memory: 150Mi
168+
requests:
169+
cpu: 100m
170+
memory: 64Mi
171+
nodeSelector:
172+
kubernetes.io/os: linux
173+
securityContext:
174+
runAsNonRoot: true
175+
runAsUser: 65534
176+
serviceAccountName: kube-state-metrics
177+
---
178+
apiVersion: rbac.authorization.k8s.io/v1
179+
kind: Role
180+
metadata:
181+
name: kube-state-metrics
182+
namespace: monitoring
183+
rules:
184+
- apiGroups:
185+
- ""
186+
resources:
187+
- pods
188+
verbs:
189+
- get
190+
- apiGroups:
191+
- extensions
192+
resourceNames:
193+
- kube-state-metrics
194+
resources:
195+
- deployments
196+
verbs:
197+
- get
198+
- update
199+
- apiGroups:
200+
- apps
201+
resourceNames:
202+
- kube-state-metrics
203+
resources:
204+
- deployments
205+
verbs:
206+
- get
207+
- update
208+
---
209+
apiVersion: rbac.authorization.k8s.io/v1
210+
kind: RoleBinding
211+
metadata:
212+
name: kube-state-metrics
213+
namespace: monitoring
214+
roleRef:
215+
apiGroup: rbac.authorization.k8s.io
216+
kind: Role
217+
name: kube-state-metrics
218+
subjects:
219+
- kind: ServiceAccount
220+
name: kube-state-metrics
221+
---
222+
apiVersion: v1
223+
kind: Service
224+
metadata:
225+
labels:
226+
k8s-app: kube-state-metrics
227+
name: kube-state-metrics
228+
namespace: monitoring
229+
spec:
230+
clusterIP: None
231+
ports:
232+
- name: https-main
233+
port: 8443
234+
targetPort: https-main
235+
- name: https-self
236+
port: 9443
237+
targetPort: https-self
238+
selector:
239+
app: kube-state-metrics
240+
---
241+
apiVersion: v1
242+
kind: ServiceAccount
243+
metadata:
244+
name: kube-state-metrics
245+
namespace: monitoring
246+
---
247+
apiVersion: monitoring.coreos.com/v1
248+
kind: ServiceMonitor
249+
metadata:
250+
labels:
251+
k8s-app: kube-state-metrics
252+
name: kube-state-metrics
253+
namespace: monitoring
254+
spec:
255+
endpoints:
256+
- bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
257+
honorLabels: true
258+
interval: 30s
259+
port: https-main
260+
relabelings:
261+
- action: labeldrop
262+
regex: (pod|service|endpoint|namespace)
263+
scheme: https
264+
scrapeTimeout: 30s
265+
tlsConfig:
266+
insecureSkipVerify: true
267+
- bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
268+
interval: 30s
269+
port: https-self
270+
scheme: https
271+
tlsConfig:
272+
insecureSkipVerify: true
273+
jobLabel: k8s-app
274+
selector:
275+
matchLabels:
276+
k8s-app: kube-state-metrics

pkg/phases/monitoring/monitoring.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ var specs = []string{
3535
"grafana-operator.yaml",
3636
"kube-prometheus.yaml",
3737
"prometheus-adapter.yaml",
38+
"kube-state-metrics.yaml",
3839
"pushgateway.yaml",
3940
"unmanaged/alertmanager-rules.yaml.raw",
4041
"unmanaged/service-monitors.yaml",
@@ -66,6 +67,15 @@ func Install(p *platform.Platform) error {
6667
return nil
6768
}
6869

70+
if p.Monitoring.DisableKubeStateMetrics {
71+
for i, v := range specs {
72+
if v == "kube-state-metrics.yaml" {
73+
specs = append(specs[:i], specs[i+1:]...)
74+
break
75+
}
76+
}
77+
}
78+
6979
if p.Monitoring.Karma.Version == "" {
7080
p.Monitoring.Karma.Version = "v0.63"
7181
}

pkg/types/types.go

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -506,19 +506,21 @@ func (dns DynamicDNS) IsEnabled() bool {
506506
}
507507

508508
type Monitoring struct {
509-
Disabled Boolean `yaml:"disabled,omitempty" json:"disabled,omitempty"`
510-
AlertEmail string `yaml:"alert_email,omitempty" json:"alert_email,omitempty"`
511-
Version string `yaml:"version,omitempty" json:"version,omitempty"`
512-
Prometheus Prometheus `yaml:"prometheus,omitempty" json:"prometheus,omitempty"`
513-
Karma Karma `yaml:"karma,omitempty" json:"karma,omitempty"`
514-
Grafana Grafana `yaml:"grafana,omitempty" json:"grafana,omitempty"`
515-
AlertManager AlertManager `yaml:"alertmanager,omitempty" json:"alertManager,omitempty"`
516-
KubeRbacProxy string `yaml:"kubeRbacProxy,omitempty" json:"kubeRbacProxy,omitempty"`
517-
NodeExporter string `yaml:"nodeExporter,omitempty" json:"nodeExporter,omitempty"`
518-
AddonResizer string `yaml:"addonResizer,omitempty" json:"addonResizer,omitempty"`
519-
ExcludeAlerts []string `yaml:"excludeAlerts,omitempty" json:"excludeAlerts,omitempty"`
520-
PushGateway PushGateway `yaml:"pushGateway,omitempty" json:"pushGateway,omitempty"`
521-
E2E MonitoringE2E `yaml:"e2e,omitempty" json:"e2e,omitempty"`
509+
Disabled Boolean `yaml:"disabled,omitempty" json:"disabled,omitempty"`
510+
AlertEmail string `yaml:"alert_email,omitempty" json:"alert_email,omitempty"`
511+
Version string `yaml:"version,omitempty" json:"version,omitempty"`
512+
Prometheus Prometheus `yaml:"prometheus,omitempty" json:"prometheus,omitempty"`
513+
Karma Karma `yaml:"karma,omitempty" json:"karma,omitempty"`
514+
Grafana Grafana `yaml:"grafana,omitempty" json:"grafana,omitempty"`
515+
AlertManager AlertManager `yaml:"alertmanager,omitempty" json:"alertManager,omitempty"`
516+
KubeStateMetrics string `yaml:"kubeStateMetrics,omitempty" json:"kubeStateMetrics,omitempty"`
517+
DisableKubeStateMetrics Boolean `yaml:"disableKubeStateMetrics,omitempty" json:"disableKubeStateMetrics,omitempty"`
518+
KubeRbacProxy string `yaml:"kubeRbacProxy,omitempty" json:"kubeRbacProxy,omitempty"`
519+
NodeExporter string `yaml:"nodeExporter,omitempty" json:"nodeExporter,omitempty"`
520+
AddonResizer string `yaml:"addonResizer,omitempty" json:"addonResizer,omitempty"`
521+
ExcludeAlerts []string `yaml:"excludeAlerts,omitempty" json:"excludeAlerts,omitempty"`
522+
PushGateway PushGateway `yaml:"pushGateway,omitempty" json:"pushGateway,omitempty"`
523+
E2E MonitoringE2E `yaml:"e2e,omitempty" json:"e2e,omitempty"`
522524
}
523525

524526
func (m Monitoring) IsDisabled() bool {

0 commit comments

Comments
 (0)