-
Notifications
You must be signed in to change notification settings - Fork 1
/
prometheus-deployment.yaml
154 lines (148 loc) · 3.88 KB
/
prometheus-deployment.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
---
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
name: prometheus
spec:
maxUnavailable: 1
selector:
matchLabels:
app: prometheus
---
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: prometheus
spec:
serviceName: prometheus
updateStrategy:
type: RollingUpdate
replicas: 2
selector:
matchLabels:
app: prometheus
template:
metadata:
name: prometheus
labels:
app: prometheus
spec:
serviceAccountName: prometheus
terminationGracePeriodSeconds: 10
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: "app"
operator: In
values:
- prometheus
topologyKey: "kubernetes.io/hostname"
podAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
podAffinityTerm:
labelSelector:
matchExpressions:
- key: "app"
operator: In
values:
- prometheus
topologyKey: "kubernetes.io/hostname"
securityContext:
fsGroup: 2000
runAsUser: 1000
runAsNonRoot: true
initContainers:
- name: init
image: quay.io/prometheus/prometheus
imagePullPolicy: Always
command:
- sh
args:
- /bootstrap/init.sh
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
volumeMounts:
- name: bootstrap
mountPath: /bootstrap
readOnly: false
containers:
- name: prometheus
image: quay.io/prometheus/prometheus
imagePullPolicy: Always
args:
- '--storage.tsdb.retention=96h'
- '--storage.tsdb.path=/prometheus/data'
- '--config.file=/etc/prometheus/prometheus.yml'
- '--web.console.libraries=/usr/share/prometheus/console_libraries'
- '--web.console.templates=/usr/share/prometheus/consoles'
- '--web.enable-lifecycle'
- '--log.level=info'
ports:
- name: web
containerPort: 9090
livenessProbe:
httpGet:
path: /-/healthy
port: web
initialDelaySeconds: 600
timeoutSeconds: 5
readinessProbe:
httpGet:
path: /-/ready
port: web
initialDelaySeconds: 600
timeoutSeconds: 30
resources:
requests:
cpu: 0.5
memory: 1Gi
limits:
cpu: 1
memory: 1Gi
volumeMounts:
- name: config-volume
mountPath: "/etc/prometheus"
- name: prometheus-storage
mountPath: "/prometheus/data"
- name: configmap-reload
image: jimmidyson/configmap-reload
imagePullPolicy: Always
args:
- --volume-dir=/etc/prometheus
- --webhook-url=http://localhost:9090/-/reload
volumeMounts:
- name: config-volume
mountPath: "/etc/prometheus"
readOnly: true
volumes:
- name: config-volume
configMap:
name: prometheus
items:
- key: prometheus.yml
path: prometheus.yml
- name: bootstrap
configMap:
name: prometheus
items:
- key: init.sh
path: init.sh
volumeClaimTemplates:
- metadata:
name: prometheus-storage
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 100Gi
storageClassName: standard