Skip to content

Commit b046d56

Browse files
authored
Leverege leader election in agent k8s manifests (elastic#25016)
1 parent c24fb8e commit b046d56

4 files changed

Lines changed: 274 additions & 440 deletions

File tree

deploy/kubernetes/elastic-agent-standalone-kubernetes.yaml

Lines changed: 137 additions & 221 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,143 @@ data:
2525
node: ${NODE_NAME}
2626
scope: node
2727
inputs:
28+
- name: kubernetes-cluster-metrics
29+
condition: ${kubernetes_leaderelection.leader} == true
30+
type: kubernetes/metrics
31+
use_output: default
32+
meta:
33+
package:
34+
name: kubernetes
35+
version: 0.2.8
36+
data_stream:
37+
namespace: default
38+
streams:
39+
- data_stream:
40+
dataset: kubernetes.apiserver
41+
type: metrics
42+
metricsets:
43+
- apiserver
44+
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
45+
hosts:
46+
- 'https://${env.KUBERNETES_SERVICE_HOST}:${env.KUBERNETES_SERVICE_PORT}'
47+
period: 30s
48+
ssl.certificate_authorities:
49+
- /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
50+
- data_stream:
51+
dataset: kubernetes.event
52+
type: metrics
53+
metricsets:
54+
- event
55+
period: 10s
56+
add_metadata: true
57+
- data_stream:
58+
dataset: kubernetes.state_container
59+
type: metrics
60+
metricsets:
61+
- state_container
62+
add_metadata: true
63+
hosts:
64+
- 'kube-state-metrics:8080'
65+
period: 10s
66+
- data_stream:
67+
dataset: kubernetes.state_cronjob
68+
type: metrics
69+
metricsets:
70+
- state_cronjob
71+
add_metadata: true
72+
hosts:
73+
- 'kube-state-metrics:8080'
74+
period: 10s
75+
- data_stream:
76+
dataset: kubernetes.state_deployment
77+
type: metrics
78+
metricsets:
79+
- state_deployment
80+
add_metadata: true
81+
hosts:
82+
- 'kube-state-metrics:8080'
83+
period: 10s
84+
- data_stream:
85+
dataset: kubernetes.state_node
86+
type: metrics
87+
metricsets:
88+
- state_node
89+
add_metadata: true
90+
hosts:
91+
- 'kube-state-metrics:8080'
92+
period: 10s
93+
- data_stream:
94+
dataset: kubernetes.state_persistentvolume
95+
type: metrics
96+
metricsets:
97+
- state_persistentvolume
98+
add_metadata: true
99+
hosts:
100+
- 'kube-state-metrics:8080'
101+
period: 10s
102+
- data_stream:
103+
dataset: kubernetes.state_persistentvolumeclaim
104+
type: metrics
105+
metricsets:
106+
- state_persistentvolumeclaim
107+
add_metadata: true
108+
hosts:
109+
- 'kube-state-metrics:8080'
110+
period: 10s
111+
- data_stream:
112+
dataset: kubernetes.state_pod
113+
type: metrics
114+
metricsets:
115+
- state_pod
116+
add_metadata: true
117+
hosts:
118+
- 'kube-state-metrics:8080'
119+
period: 10s
120+
- data_stream:
121+
dataset: kubernetes.state_replicaset
122+
type: metrics
123+
metricsets:
124+
- state_replicaset
125+
add_metadata: true
126+
hosts:
127+
- 'kube-state-metrics:8080'
128+
period: 10s
129+
- data_stream:
130+
dataset: kubernetes.state_resourcequota
131+
type: metrics
132+
metricsets:
133+
- state_resourcequota
134+
add_metadata: true
135+
hosts:
136+
- 'kube-state-metrics:8080'
137+
period: 10s
138+
- data_stream:
139+
dataset: kubernetes.state_service
140+
type: metrics
141+
metricsets:
142+
- state_service
143+
add_metadata: true
144+
hosts:
145+
- 'kube-state-metrics:8080'
146+
period: 10s
147+
- data_stream:
148+
dataset: kubernetes.state_statefulset
149+
type: metrics
150+
metricsets:
151+
- state_statefulset
152+
add_metadata: true
153+
hosts:
154+
- 'kube-state-metrics:8080'
155+
period: 10s
156+
- data_stream:
157+
dataset: kubernetes.state_storageclass
158+
type: metrics
159+
metricsets:
160+
- state_storageclass
161+
add_metadata: true
162+
hosts:
163+
- 'kube-state-metrics:8080'
164+
period: 10s
28165
- name: system-logs
29166
type: logfile
30167
use_output: default
@@ -384,227 +521,6 @@ spec:
384521
hostPath:
385522
path: /var/log
386523
---
387-
apiVersion: v1
388-
kind: ConfigMap
389-
metadata:
390-
name: agent-deployment-datastreams
391-
namespace: kube-system
392-
labels:
393-
k8s-app: elastic-agent
394-
data:
395-
# This part requires `kube-state-metrics` up and running under `kube-system` namespace
396-
agent.yml: |-
397-
outputs:
398-
default:
399-
type: elasticsearch
400-
hosts:
401-
- >-
402-
${ES_HOST}
403-
username: ${ES_USERNAME}
404-
password: ${ES_PASSWORD}
405-
agent:
406-
monitoring:
407-
enabled: true
408-
use_output: default
409-
logs: true
410-
metrics: true
411-
inputs:
412-
- name: kubernetes-cluster-metrics
413-
type: kubernetes/metrics
414-
use_output: default
415-
meta:
416-
package:
417-
name: kubernetes
418-
version: 0.2.8
419-
data_stream:
420-
namespace: default
421-
streams:
422-
- data_stream:
423-
dataset: kubernetes.apiserver
424-
type: metrics
425-
metricsets:
426-
- apiserver
427-
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
428-
hosts:
429-
- 'https://${env.KUBERNETES_SERVICE_HOST}:${env.KUBERNETES_SERVICE_PORT}'
430-
period: 30s
431-
ssl.certificate_authorities:
432-
- /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
433-
- data_stream:
434-
dataset: kubernetes.event
435-
type: metrics
436-
metricsets:
437-
- event
438-
period: 10s
439-
add_metadata: true
440-
- data_stream:
441-
dataset: kubernetes.state_container
442-
type: metrics
443-
metricsets:
444-
- state_container
445-
add_metadata: true
446-
hosts:
447-
- 'kube-state-metrics:8080'
448-
period: 10s
449-
- data_stream:
450-
dataset: kubernetes.state_cronjob
451-
type: metrics
452-
metricsets:
453-
- state_cronjob
454-
add_metadata: true
455-
hosts:
456-
- 'kube-state-metrics:8080'
457-
period: 10s
458-
- data_stream:
459-
dataset: kubernetes.state_deployment
460-
type: metrics
461-
metricsets:
462-
- state_deployment
463-
add_metadata: true
464-
hosts:
465-
- 'kube-state-metrics:8080'
466-
period: 10s
467-
- data_stream:
468-
dataset: kubernetes.state_node
469-
type: metrics
470-
metricsets:
471-
- state_node
472-
add_metadata: true
473-
hosts:
474-
- 'kube-state-metrics:8080'
475-
period: 10s
476-
- data_stream:
477-
dataset: kubernetes.state_persistentvolume
478-
type: metrics
479-
metricsets:
480-
- state_persistentvolume
481-
add_metadata: true
482-
hosts:
483-
- 'kube-state-metrics:8080'
484-
period: 10s
485-
- data_stream:
486-
dataset: kubernetes.state_persistentvolumeclaim
487-
type: metrics
488-
metricsets:
489-
- state_persistentvolumeclaim
490-
add_metadata: true
491-
hosts:
492-
- 'kube-state-metrics:8080'
493-
period: 10s
494-
- data_stream:
495-
dataset: kubernetes.state_pod
496-
type: metrics
497-
metricsets:
498-
- state_pod
499-
add_metadata: true
500-
hosts:
501-
- 'kube-state-metrics:8080'
502-
period: 10s
503-
- data_stream:
504-
dataset: kubernetes.state_replicaset
505-
type: metrics
506-
metricsets:
507-
- state_replicaset
508-
add_metadata: true
509-
hosts:
510-
- 'kube-state-metrics:8080'
511-
period: 10s
512-
- data_stream:
513-
dataset: kubernetes.state_resourcequota
514-
type: metrics
515-
metricsets:
516-
- state_resourcequota
517-
add_metadata: true
518-
hosts:
519-
- 'kube-state-metrics:8080'
520-
period: 10s
521-
- data_stream:
522-
dataset: kubernetes.state_service
523-
type: metrics
524-
metricsets:
525-
- state_service
526-
add_metadata: true
527-
hosts:
528-
- 'kube-state-metrics:8080'
529-
period: 10s
530-
- data_stream:
531-
dataset: kubernetes.state_statefulset
532-
type: metrics
533-
metricsets:
534-
- state_statefulset
535-
add_metadata: true
536-
hosts:
537-
- 'kube-state-metrics:8080'
538-
period: 10s
539-
- data_stream:
540-
dataset: kubernetes.state_storageclass
541-
type: metrics
542-
metricsets:
543-
- state_storageclass
544-
add_metadata: true
545-
hosts:
546-
- 'kube-state-metrics:8080'
547-
period: 10s
548-
---
549-
apiVersion: apps/v1
550-
kind: Deployment
551-
metadata:
552-
name: elastic-agent
553-
namespace: kube-system
554-
labels:
555-
app: elastic-agent
556-
spec:
557-
selector:
558-
matchLabels:
559-
app: elastic-agent
560-
template:
561-
metadata:
562-
labels:
563-
app: elastic-agent
564-
spec:
565-
serviceAccountName: elastic-agent
566-
containers:
567-
- name: elastic-agent
568-
image: docker.elastic.co/beats/elastic-agent:8.0.0
569-
args: [
570-
"-c", "/etc/agent.yml",
571-
"-e",
572-
]
573-
env:
574-
- name: ES_USERNAME
575-
value: "elastic"
576-
- name: ES_PASSWORD
577-
value: ""
578-
- name: ES_HOST
579-
value: ""
580-
- name: NODE_NAME
581-
valueFrom:
582-
fieldRef:
583-
fieldPath: spec.nodeName
584-
# this is needed because we cannot use hostNetwork
585-
- name: HOSTNAME
586-
valueFrom:
587-
fieldRef:
588-
fieldPath: spec.nodeName
589-
securityContext:
590-
runAsUser: 0
591-
resources:
592-
limits:
593-
memory: 200Mi
594-
requests:
595-
cpu: 100m
596-
memory: 100Mi
597-
volumeMounts:
598-
- name: datastreams
599-
mountPath: /etc/agent.yml
600-
readOnly: true
601-
subPath: agent.yml
602-
volumes:
603-
- name: datastreams
604-
configMap:
605-
defaultMode: 0640
606-
name: agent-deployment-datastreams
607-
---
608524
apiVersion: rbac.authorization.k8s.io/v1
609525
kind: ClusterRoleBinding
610526
metadata:

0 commit comments

Comments
 (0)