Path: blob/main/production/operator/templates/agent-operator.yaml
4096 views
apiVersion: v11kind: ServiceAccount2metadata:3name: grafana-agent4namespace: ${NAMESPACE}5---6apiVersion: v17kind: ServiceAccount8metadata:9name: grafana-agent-operator10namespace: ${NAMESPACE}11---12apiVersion: v113automountServiceAccountToken: false14kind: ServiceAccount15metadata:16labels:17app.kubernetes.io/component: exporter18app.kubernetes.io/name: kube-state-metrics19app.kubernetes.io/version: 2.5.020name: kube-state-metrics21namespace: ${NAMESPACE}22---23apiVersion: v124data: {}25kind: Secret26metadata:27name: logs-secret28namespace: ${NAMESPACE}29stringData:30password: ${LOGS_KEY}31username: ${LOGS_USER}32type: Opaque33---34apiVersion: v135data: {}36kind: Secret37metadata:38name: metrics-secret39namespace: ${NAMESPACE}40stringData:41password: ${METRICS_KEY}42username: ${METRICS_USER}43type: Opaque44---45apiVersion: v146kind: PersistentVolumeClaim47metadata:48name: agent-eventhandler49namespace: ${NAMESPACE}50spec:51accessModes:52- ReadWriteOnce53resources:54requests:55storage: 1Gi56---57apiVersion: rbac.authorization.k8s.io/v158kind: ClusterRole59metadata:60name: grafana-agent61rules:62- apiGroups:63- ""64resources:65- nodes66- nodes/proxy67- nodes/metrics68- services69- endpoints70- pods71- events72verbs:73- get74- list75- watch76- apiGroups:77- networking.k8s.io78resources:79- ingresses80verbs:81- get82- list83- watch84- nonResourceURLs:85- /metrics86- /metrics/cadvisor87verbs:88- get89---90apiVersion: rbac.authorization.k8s.io/v191kind: ClusterRole92metadata:93name: grafana-agent-operator94rules:95- apiGroups:96- monitoring.grafana.com97resources:98- grafanaagents99- metricsinstances100- logsinstances101- podlogs102- integrations103verbs:104- get105- list106- watch107- apiGroups:108- monitoring.grafana.com109resources:110- grafanaagents/finalizers111- metricsinstances/finalizers112- logsinstances/finalizers113- podlogs/finalizers114- integrations/finalizers115verbs:116- get117- list118- watch119- update120- apiGroups:121- monitoring.coreos.com122resources:123- podmonitors124- probes125- servicemonitors126verbs:127- get128- list129- watch130- apiGroups:131- monitoring.coreos.com132resources:133- podmonitors/finalizers134- probes/finalizers135- servicemonitors/finalizers136verbs:137- get138- list139- watch140- update141- apiGroups:142- ""143resources:144- namespaces145- nodes146verbs:147- get148- list149- watch150- apiGroups:151- ""152resources:153- secrets154- services155- configmaps156- endpoints157verbs:158- get159- list160- watch161- create162- update163- patch164- delete165- apiGroups:166- apps167resources:168- statefulsets169- daemonsets170- deployments171verbs:172- get173- list174- watch175- create176- update177- patch178- delete179---180apiVersion: rbac.authorization.k8s.io/v1181kind: ClusterRole182metadata:183labels:184app.kubernetes.io/component: exporter185app.kubernetes.io/name: kube-state-metrics186app.kubernetes.io/version: 2.5.0187name: kube-state-metrics188rules:189- apiGroups:190- ""191resources:192- configmaps193- secrets194- nodes195- pods196- services197- resourcequotas198- replicationcontrollers199- limitranges200- persistentvolumeclaims201- persistentvolumes202- namespaces203- endpoints204verbs:205- list206- watch207- apiGroups:208- apps209resources:210- statefulsets211- daemonsets212- deployments213- replicasets214verbs:215- list216- watch217- apiGroups:218- batch219resources:220- cronjobs221- jobs222verbs:223- list224- watch225- apiGroups:226- autoscaling227resources:228- horizontalpodautoscalers229verbs:230- list231- watch232- apiGroups:233- authentication.k8s.io234resources:235- tokenreviews236verbs:237- create238- apiGroups:239- authorization.k8s.io240resources:241- subjectaccessreviews242verbs:243- create244- apiGroups:245- policy246resources:247- poddisruptionbudgets248verbs:249- list250- watch251- apiGroups:252- certificates.k8s.io253resources:254- certificatesigningrequests255verbs:256- list257- watch258- apiGroups:259- storage.k8s.io260resources:261- storageclasses262- volumeattachments263verbs:264- list265- watch266- apiGroups:267- admissionregistration.k8s.io268resources:269- mutatingwebhookconfigurations270- validatingwebhookconfigurations271verbs:272- list273- watch274- apiGroups:275- networking.k8s.io276resources:277- networkpolicies278- ingresses279verbs:280- list281- watch282- apiGroups:283- coordination.k8s.io284resources:285- leases286verbs:287- list288- watch289---290apiVersion: rbac.authorization.k8s.io/v1291kind: ClusterRoleBinding292metadata:293name: grafana-agent294roleRef:295apiGroup: rbac.authorization.k8s.io296kind: ClusterRole297name: grafana-agent298subjects:299- kind: ServiceAccount300name: grafana-agent301namespace: ${NAMESPACE}302---303apiVersion: rbac.authorization.k8s.io/v1304kind: ClusterRoleBinding305metadata:306name: grafana-agent-operator307roleRef:308apiGroup: rbac.authorization.k8s.io309kind: ClusterRole310name: grafana-agent-operator311subjects:312- kind: ServiceAccount313name: grafana-agent-operator314namespace: ${NAMESPACE}315---316apiVersion: rbac.authorization.k8s.io/v1317kind: ClusterRoleBinding318metadata:319labels:320app.kubernetes.io/component: exporter321app.kubernetes.io/name: kube-state-metrics322app.kubernetes.io/version: 2.5.0323name: kube-state-metrics324roleRef:325apiGroup: rbac.authorization.k8s.io326kind: ClusterRole327name: kube-state-metrics328subjects:329- kind: ServiceAccount330name: kube-state-metrics331namespace: ${NAMESPACE}332---333apiVersion: v1334kind: Service335metadata:336labels:337app.kubernetes.io/component: exporter338app.kubernetes.io/name: kube-state-metrics339app.kubernetes.io/version: 2.5.0340name: kube-state-metrics341namespace: ${NAMESPACE}342spec:343clusterIP: None344ports:345- name: http-metrics346port: 8080347targetPort: http-metrics348- name: telemetry349port: 8081350targetPort: telemetry351selector:352app.kubernetes.io/name: kube-state-metrics353---354apiVersion: apps/v1355kind: Deployment356metadata:357name: grafana-agent-operator358namespace: ${NAMESPACE}359spec:360minReadySeconds: 10361replicas: 1362revisionHistoryLimit: 10363selector:364matchLabels:365name: grafana-agent-operator366template:367metadata:368labels:369name: grafana-agent-operator370spec:371containers:372- args:373- --kubelet-service=default/kubelet374image: grafana/agent-operator:v0.33.2375imagePullPolicy: IfNotPresent376name: grafana-agent-operator377serviceAccount: grafana-agent-operator378---379apiVersion: apps/v1380kind: Deployment381metadata:382labels:383app.kubernetes.io/component: exporter384app.kubernetes.io/name: kube-state-metrics385app.kubernetes.io/version: 2.5.0386name: kube-state-metrics387namespace: ${NAMESPACE}388spec:389replicas: 1390selector:391matchLabels:392app.kubernetes.io/name: kube-state-metrics393template:394metadata:395labels:396app.kubernetes.io/component: exporter397app.kubernetes.io/name: kube-state-metrics398app.kubernetes.io/version: 2.5.0399spec:400automountServiceAccountToken: true401containers:402- image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.5.0403livenessProbe:404httpGet:405path: /healthz406port: 8080407initialDelaySeconds: 5408timeoutSeconds: 5409name: kube-state-metrics410ports:411- containerPort: 8080412name: http-metrics413- containerPort: 8081414name: telemetry415readinessProbe:416httpGet:417path: /418port: 8081419initialDelaySeconds: 5420timeoutSeconds: 5421securityContext:422allowPrivilegeEscalation: false423capabilities:424drop:425- ALL426readOnlyRootFilesystem: true427runAsUser: 65534428nodeSelector:429kubernetes.io/os: linux430serviceAccountName: kube-state-metrics431---432apiVersion: monitoring.grafana.com/v1alpha1433kind: GrafanaAgent434metadata:435name: grafana-agent436namespace: ${NAMESPACE}437spec:438image: grafana/agent:v0.33.2439integrations:440selector:441matchLabels:442agent: grafana-agent443logs:444instanceSelector:445matchLabels:446agent: grafana-agent447metrics:448externalLabels:449cluster: ${CLUSTER}450instanceSelector:451matchLabels:452agent: grafana-agent453serviceAccountName: grafana-agent454---455apiVersion: monitoring.grafana.com/v1alpha1456kind: Integration457metadata:458labels:459agent: grafana-agent460name: agent-eventhandler461namespace: ${NAMESPACE}462spec:463config:464cache_path: /etc/eventhandler/eventhandler.cache465logs_instance: ${NAMESPACE}/grafana-agent-logs466name: eventhandler467type:468unique: true469volumeMounts:470- mountPath: /etc/eventhandler471name: agent-eventhandler472volumes:473- name: agent-eventhandler474persistentVolumeClaim:475claimName: agent-eventhandler476---477apiVersion: monitoring.grafana.com/v1alpha1478kind: LogsInstance479metadata:480labels:481agent: grafana-agent482name: grafana-agent-logs483namespace: ${NAMESPACE}484spec:485clients:486- basicAuth:487password:488key: password489name: logs-secret490username:491key: username492name: logs-secret493externalLabels:494cluster: ${CLUSTER}495url: ${LOGS_URL}496podLogsNamespaceSelector: {}497podLogsSelector:498matchLabels:499instance: primary500---501apiVersion: monitoring.grafana.com/v1alpha1502kind: MetricsInstance503metadata:504labels:505agent: grafana-agent506name: grafana-agent-metrics507namespace: ${NAMESPACE}508spec:509remoteWrite:510- basicAuth:511password:512key: password513name: metrics-secret514username:515key: username516name: metrics-secret517url: ${METRICS_URL}518serviceMonitorNamespaceSelector: {}519serviceMonitorSelector:520matchLabels:521instance: primary522---523apiVersion: monitoring.grafana.com/v1alpha1524kind: PodLogs525metadata:526labels:527instance: primary528name: kubernetes-logs529namespace: ${NAMESPACE}530spec:531namespaceSelector:532any: true533pipelineStages:534- cri: {}535relabelings:536- sourceLabels:537- __meta_kubernetes_pod_node_name538targetLabel: __host__539- action: replace540sourceLabels:541- __meta_kubernetes_namespace542targetLabel: namespace543- action: replace544sourceLabels:545- __meta_kubernetes_pod_name546targetLabel: pod547- action: replace548sourceLabels:549- __meta_kubernetes_pod_container_name550targetLabel: container551- replacement: /var/log/pods/*$1/*.log552separator: /553sourceLabels:554- __meta_kubernetes_pod_uid555- __meta_kubernetes_pod_container_name556targetLabel: __path__557selector:558matchLabels: {}559---560apiVersion: monitoring.coreos.com/v1561kind: ServiceMonitor562metadata:563labels:564instance: primary565name: ksm-monitor566namespace: ${NAMESPACE}567spec:568endpoints:569- honorLabels: true570interval: 60s571path: /metrics572port: http-metrics573relabelings:574- action: replace575replacement: kube-state-metrics576targetLabel: job577namespaceSelector:578matchNames:579- ${NAMESPACE}580selector:581matchLabels:582app.kubernetes.io/name: kube-state-metrics583---584apiVersion: monitoring.coreos.com/v1585kind: ServiceMonitor586metadata:587labels:588instance: primary589name: kubelet-monitor590namespace: ${NAMESPACE}591spec:592endpoints:593- bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token594honorLabels: true595interval: 60s596path: /metrics597port: https-metrics598relabelings:599- sourceLabels:600- __metrics_path__601targetLabel: metrics_path602- action: replace603replacement: kubelet604targetLabel: job605scheme: https606tlsConfig:607insecureSkipVerify: true608namespaceSelector:609matchNames:610- ${NAMESPACE}611selector:612matchLabels:613app.kubernetes.io/name: kubelet614---615apiVersion: monitoring.coreos.com/v1616kind: ServiceMonitor617metadata:618labels:619instance: primary620name: cadvisor-monitor621namespace: default622spec:623endpoints:624- bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token625honorLabels: true626interval: 60s627path: /metrics/cadvisor628port: https-metrics629relabelings:630- sourceLabels:631- __metrics_path__632targetLabel: metrics_path633- action: replace634replacement: cadvisor635targetLabel: job636scheme: https637tlsConfig:638insecureSkipVerify: true639namespaceSelector:640matchNames:641- ${NAMESPACE}642selector:643matchLabels:644app.kubernetes.io/name: kubelet645646647