config/recipes/elastic-agent/ksm-sharding.yaml (469 lines of code) (raw):
apiVersion: agent.k8s.elastic.co/v1alpha1
kind: Agent
metadata:
name: elastic-agent
spec:
version: 8.17.0
elasticsearchRefs:
- name: elasticsearch
statefulSet:
podTemplate:
metadata:
labels:
app.kubernetes.io/name: kube-state-metrics
spec:
automountServiceAccountToken: true
serviceAccountName: elastic-agent
containers:
- image: registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.10.0
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 5
timeoutSeconds: 5
name: kube-state-metrics
args:
- --pod=$(POD_NAME)
- --pod-namespace=$(POD_NAMESPACE)
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
ports:
- containerPort: 8080
name: http-metrics
- containerPort: 8081
name: telemetry
readinessProbe:
httpGet:
path: /
port: 8081
initialDelaySeconds: 5
timeoutSeconds: 5
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 65534
seccompProfile:
type: RuntimeDefault
- name: agent
securityContext:
runAsUser: 0
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
config:
agent:
monitoring:
namespace: default
use_output: default
enabled: true
logs: true
metrics: true
providers:
kubernetes_leaderelection:
enabled: false
inputs:
- id: kubernetes/metrics-kube-state-metrics
type: kubernetes/metrics
data_stream:
namespace: default
use_output: default
streams:
- id: kubernetes/metrics-kubernetes.state_container
data_stream:
type: metrics
dataset: kubernetes.state_container
metricsets:
- state_container
add_metadata: true
hosts:
- "localhost:8080"
period: 10s
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
- id: kubernetes/metrics-kubernetes.state_cronjob
data_stream:
type: metrics
dataset: kubernetes.state_cronjob
metricsets:
- state_cronjob
add_metadata: true
hosts:
- "localhost:8080"
period: 10s
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
- id: kubernetes/metrics-kubernetes.state_daemonset
data_stream:
type: metrics
dataset: kubernetes.state_daemonset
metricsets:
- state_daemonset
add_metadata: true
hosts:
- "localhost:8080"
period: 10s
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
- id: kubernetes/metrics-kubernetes.state_deployment
data_stream:
type: metrics
dataset: kubernetes.state_deployment
metricsets:
- state_deployment
add_metadata: true
hosts:
- "localhost:8080"
period: 10s
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
- id: kubernetes/metrics-kubernetes.state_job
data_stream:
type: metrics
dataset: kubernetes.state_job
metricsets:
- state_job
add_metadata: true
hosts:
- "localhost:8080"
period: 10s
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
- id: kubernetes/metrics-kubernetes.state_node
data_stream:
type: metrics
dataset: kubernetes.state_node
metricsets:
- state_node
add_metadata: true
hosts:
- "localhost:8080"
period: 10s
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
- id: kubernetes/metrics-kubernetes.state_persistentvolume
data_stream:
type: metrics
dataset: kubernetes.state_persistentvolume
metricsets:
- state_persistentvolume
add_metadata: true
hosts:
- "localhost:8080"
period: 10s
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
- id: kubernetes/metrics-kubernetes.state_persistentvolumeclaim
data_stream:
type: metrics
dataset: kubernetes.state_persistentvolumeclaim
metricsets:
- state_persistentvolumeclaim
add_metadata: true
hosts:
- "localhost:8080"
period: 10s
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
- id: kubernetes/metrics-kubernetes.state_pod
data_stream:
type: metrics
dataset: kubernetes.state_pod
metricsets:
- state_pod
add_metadata: true
hosts:
- "localhost:8080"
period: 10s
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
- id: kubernetes/metrics-kubernetes.state_replicaset
data_stream:
type: metrics
dataset: kubernetes.state_replicaset
metricsets:
- state_replicaset
add_metadata: true
hosts:
- "localhost:8080"
period: 10s
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
- id: kubernetes/metrics-kubernetes.state_resourcequota
data_stream:
type: metrics
dataset: kubernetes.state_resourcequota
metricsets:
- state_resourcequota
add_metadata: true
hosts:
- "localhost:8080"
period: 10s
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
- id: kubernetes/metrics-kubernetes.state_service
data_stream:
type: metrics
dataset: kubernetes.state_service
metricsets:
- state_service
add_metadata: true
hosts:
- "localhost:8080"
period: 10s
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
- id: kubernetes/metrics-kubernetes.state_statefulset
data_stream:
type: metrics
dataset: kubernetes.state_statefulset
metricsets:
- state_statefulset
add_metadata: true
hosts:
- "localhost:8080"
period: 10s
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
- id: kubernetes/metrics-kubernetes.state_storageclass
data_stream:
type: metrics
dataset: kubernetes.state_storageclass
metricsets:
- state_storageclass
add_metadata: true
hosts:
- "localhost:8080"
period: 10s
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
meta:
package:
name: kubernetes
version: 1.51.0
---
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/component: exporter
app.kubernetes.io/name: kube-state-metrics
app.kubernetes.io/version: 2.10.0
name: kube-state-metrics
namespace: kube-system
spec:
clusterIP: None
ports:
- name: http-metrics
port: 8080
targetPort: http-metrics
- name: telemetry
port: 8081
targetPort: telemetry
selector:
app.kubernetes.io/name: kube-state-metrics
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: elastic-agent
rules:
- apiGroups: [""] # "" indicates the core API group
resources:
- namespaces
- pods
- persistentvolumes
- persistentvolumeclaims
- persistentvolumeclaims/status
- nodes
- nodes/metrics
- nodes/proxy
- nodes/stats
- services
- events
- configmaps
- secrets
- nodes
- pods
- services
- serviceaccounts
- resourcequotas
- replicationcontrollers
- limitranges
- endpoints
verbs:
- get
- watch
- list
- apiGroups:
- autoscaling
resources:
- horizontalpodautoscalers
verbs:
- get
- list
- watch
- apiGroups:
- authentication.k8s.io
resources:
- tokenreviews
verbs:
- create
- apiGroups:
- authorization.k8s.io
resources:
- subjectaccessreviews
verbs:
- create
- apiGroups:
- policy
resources:
- poddisruptionbudgets
verbs:
- get
- list
- watch
- apiGroups:
- certificates.k8s.io
resources:
- certificatesigningrequests
verbs:
- get
- list
- watch
- apiGroups:
- discovery.k8s.io
resources:
- endpointslices
verbs:
- list
- watch
- apiGroups:
- storage.k8s.io
resources:
- storageclasses
- volumeattachments
verbs:
- get
- watch
- list
- nonResourceURLs:
- /metrics
verbs:
- get
- watch
- list
- nonResourceURLs:
- /healthz
- /healthz/*
- /livez
- /livez/*
- /metrics
- /metrics/slis
- /readyz
- /readyz/*
verbs:
- get
- apiGroups: ["apps"]
resources:
- replicasets
- deployments
- daemonsets
- statefulsets
verbs:
- get
- list
- watch
- apiGroups: ["batch"]
resources:
- jobs
- cronjobs
verbs:
- get
- list
- watch
- apiGroups:
- admissionregistration.k8s.io
resources:
- mutatingwebhookconfigurations
- validatingwebhookconfigurations
verbs:
- get
- list
- watch
- apiGroups:
- networking.k8s.io
resources:
- networkpolicies
- ingressclasses
- ingresses
verbs:
- get
- list
- watch
- apiGroups:
- coordination.k8s.io
resources:
- leases
verbs:
- create
- update
- get
- list
- watch
- apiGroups:
- rbac.authorization.k8s.io
resources:
- clusterrolebindings
- clusterroles
- rolebindings
- roles
verbs:
- get
- list
- watch
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: elastic-agent
namespace: default
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: elastic-agent
subjects:
- kind: ServiceAccount
name: elastic-agent
namespace: default
roleRef:
kind: ClusterRole
name: elastic-agent
apiGroup: rbac.authorization.k8s.io
---
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
name: elasticsearch
spec:
version: 8.17.0
nodeSets:
- name: default
count: 3
config:
node.store.allow_mmap: false
---
apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
name: kibana
spec:
version: 8.17.0
count: 1
elasticsearchRef:
name: elasticsearch
...