clusterloader2/pkg/prometheus/manifests/prometheus-prometheus.yaml (80 lines of code) (raw):
{{$PROMETHEUS_SCRAPE_KUBELETS := DefaultParam .PROMETHEUS_SCRAPE_KUBELETS false}}
{{$PROMETHEUS_SCRAPE_WINDOWS_NODES := DefaultParam .PROMETHEUS_SCRAPE_WINDOWS_NODES false}}
{{$PROMETHEUS_CPU_SCALE_FACTOR := DefaultParam .CL2_PROMETHEUS_CPU_SCALE_FACTOR 1}}
{{$PROMETHEUS_MEMORY_LIMIT_FACTOR := DefaultParam .CL2_PROMETHEUS_MEMORY_LIMIT_FACTOR 2}}
{{$PROMETHEUS_MEMORY_SCALE_FACTOR := DefaultParam .CL2_PROMETHEUS_MEMORY_SCALE_FACTOR $PROMETHEUS_MEMORY_LIMIT_FACTOR}}
{{$PROMETHEUS_NODE_SELECTOR := DefaultParam .CL2_PROMETHEUS_NODE_SELECTOR ""}}
{{$PROMETHEUS_TOLERATE_MASTER := DefaultParam .CL2_PROMETHEUS_TOLERATE_MASTER false}}
{{$PROMETHEUS_PVC_STORAGE_CLASS := DefaultParam .PROMETHEUS_PVC_STORAGE_CLASS "ssd"}}
{{$PROMETHEUS_MEMORY_REQUEST := DefaultParam .PROMETHEUS_MEMORY_REQUEST "10Gi"}}
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
labels:
prometheus: k8s
name: k8s
namespace: monitoring
spec:
logLevel: debug
enableAdminAPI: true
baseImage: gcr.io/k8s-testimages/quay.io/prometheus/prometheus
nodeSelector:
kubernetes.io/os: linux
{{$PROMETHEUS_NODE_SELECTOR}}
replicas: 1
resources:
requests:
cpu: {{AddInt 200 (MultiplyInt $PROMETHEUS_CPU_SCALE_FACTOR 500 (DivideInt .Nodes 1000))}}m
{{if $PROMETHEUS_SCRAPE_KUBELETS}}
memory: {{$PROMETHEUS_MEMORY_REQUEST}}
{{else}}
# Start with 2Gi and add 2Gi for each 1K nodes.
memory: {{MultiplyInt $PROMETHEUS_MEMORY_SCALE_FACTOR (AddInt 1 (DivideInt .Nodes 1000))}}Gi
{{end}}
limits:
{{if $PROMETHEUS_SCRAPE_KUBELETS}}
memory: 10Gi
{{else}}
# Default: Start with 2Gi and add 2Gi for each 1K nodes.
memory: {{MultiplyInt $PROMETHEUS_MEMORY_SCALE_FACTOR (AddInt 1 (DivideInt .Nodes 1000))}}Gi
{{end}}
ruleSelector:
matchLabels:
prometheus: k8s
securityContext:
fsGroup: 2000
runAsNonRoot: true
runAsUser: 1000
tolerations:
- key: "monitoring"
operator: "Exists"
effect: "NoSchedule"
{{if $PROMETHEUS_TOLERATE_MASTER}}
- key: node-role.kubernetes.io/master
operator: Exists
effect: NoSchedule
- key: node-role.kubernetes.io/control-plane
operator: Exists
effect: NoSchedule
{{end}}
serviceAccountName: prometheus-k8s
serviceMonitorNamespaceSelector: {}
serviceMonitorSelector: {}
podMonitorNamespaceSelector: {}
podMonitorSelector: {}
version: v2.25.0
retention: 7d
{{if not $PROMETHEUS_TOLERATE_MASTER}}
# We add node tolerations for control-plane nodes in Azure Windows test jobs which do not support Google PD
storage:
volumeClaimTemplate:
spec:
storageClassName: {{$PROMETHEUS_PVC_STORAGE_CLASS}}
resources:
requests:
# Start with 10Gi, add 10Gi for each 1K nodes.
storage: {{MultiplyInt 10 (AddInt 1 (DivideInt .Nodes 1000))}}Gi
{{ end }}
query:
maxSamples: 100000000
{{if $PROMETHEUS_SCRAPE_WINDOWS_NODES}}
additionalScrapeConfigs:
name: windows-scrape-configs
key: windows-scrape-configs.yaml
{{end}}