Skip to content

Instantly share code, notes, and snippets.

@jeroenr
Created July 1, 2019 11:15
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save jeroenr/42922a3d31e25774614237a1147cd578 to your computer and use it in GitHub Desktop.
Save jeroenr/42922a3d31e25774614237a1147cd578 to your computer and use it in GitHub Desktop.
apiVersion: v1
kind: ConfigMap
metadata:
labels:
app: prometheus
name: prometheus
data:
prometheus.yml: |
global:
evaluation_interval: 1m
scrape_interval: 1m
scrape_timeout: 10s
rule_files:
- /etc/config/rules
- /etc/config/alerts
scrape_configs:
- job_name: prometheus
static_configs:
- targets:
- localhost:9090
- job_name: kubernetes-services
kubernetes_sd_configs:
- role: service
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
api_server: https://kubernetes.default.svc
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
namespaces:
names:
- playground
metrics_path: /probe
params:
module:
- http_2xx
relabel_configs:
- action: keep
regex: true
source_labels:
- __meta_kubernetes_service_annotation_prometheus_io_probe
- source_labels:
- __address__
target_label: __param_target
- replacement: blackbox
target_label: __address__
- source_labels:
- __param_target
target_label: instance
- action: labelmap
regex: __meta_kubernetes_service_label_(.+)
- source_labels:
- __meta_kubernetes_namespace
target_label: kubernetes_namespace
- source_labels:
- __meta_kubernetes_service_name
target_label: kubernetes_name
- job_name: kubernetes-pods
kubernetes_sd_configs:
- role: pod
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
api_server: https://kubernetes.default.svc
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
namespaces:
names:
- playground
relabel_configs:
- action: keep
regex: true
source_labels:
- __meta_kubernetes_pod_annotation_prometheus_io_scrape
- source_labels:
- __meta_kubernetes_pod_container_port_name
action: keep
regex: metrics
- action: replace
regex: (.+)
source_labels:
- __meta_kubernetes_pod_annotation_prometheus_io_path
target_label: __metrics_path__
- action: replace
regex: ([^:]+)(?::\d+)?;(\d+)
replacement: $1:$2
source_labels:
- __address__
- __meta_kubernetes_pod_annotation_prometheus_io_port
target_label: __address__
- action: labelmap
regex: __meta_kubernetes_pod_label_(.+)
- action: replace
source_labels:
- __meta_kubernetes_namespace
target_label: kubernetes_namespace
- action: replace
source_labels:
- __meta_kubernetes_pod_name
target_label: kubernetes_pod_name
---
kind: ServiceAccount
apiVersion: v1
metadata:
name: prometheus
namespace: playground
labels:
app: prometheus
kubernetes.io/cluster-service: "true"
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: prometheus
labels:
kubernetes.io/cluster-service: "true"
rules:
- apiGroups:
- ""
resources:
- nodes
- nodes/metrics
- services
- endpoints
- pods
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- configmaps
verbs:
- get
- nonResourceURLs:
- "/metrics"
verbs:
- get
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: prometheus
labels:
kubernetes.io/cluster-service: "true"
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: prometheus
subjects:
- kind: ServiceAccount
name: prometheus
namespace: playground
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: prometheus
spec:
template:
metadata:
labels:
name: prometheus
annotations:
prometheus.io/scrape: 'true'
prometheus.io/port: '9913'
spec:
dnsPolicy: ClusterFirst
restartPolicy: Always
terminationGracePeriodSeconds: 5
serviceAccountName: prometheus
containers:
- name: prometheus
image: prom/prometheus:v2.9.0
imagePullPolicy: "IfNotPresent"
args:
- --config.file=/etc/config/prometheus.yml
- --storage.tsdb.path=/prometheus-data
- --web.console.libraries=/etc/prometheus/console_libraries
- --web.console.templates=/etc/prometheus/consoles
- --web.enable-lifecycle
ports:
- containerPort: 9090
protocol: TCP
resources:
requests:
memory: "256Mi"
limits:
memory: "1Gi"
readinessProbe:
httpGet:
path: /-/ready
port: 9090
initialDelaySeconds: 30
timeoutSeconds: 30
livenessProbe:
httpGet:
path: /-/healthy
port: 9090
initialDelaySeconds: 30
timeoutSeconds: 30
volumeMounts:
- name: config-volume
mountPath: /etc/config
- name: prometheus-data
mountPath: /prometheus-data
volumes:
- name: config-volume
configMap:
name: prometheus
- name: prometheus-data
emptyDir: {}
replicas: 1
selector:
matchLabels:
name: prometheus
---
apiVersion: v1
kind: Service
metadata:
name: prometheus
labels:
name: prometheus
spec:
ports:
- name: "prometheus"
protocol: TCP
port: 9090
targetPort: 9090
selector:
name: prometheus
sessionAffinity: None
type: ClusterIP
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment