Skip to content

Commit e3cef3a

Browse files
committed
add istio related addon
1 parent 38cb0c2 commit e3cef3a

File tree

5 files changed

+436
-0
lines changed

5 files changed

+436
-0
lines changed

addon/istio/grafana.yaml

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
---
2+
apiVersion: v1
3+
kind: Service
4+
metadata:
5+
name: grafana
6+
namespace: istio-system
7+
spec:
8+
ports:
9+
- port: 3000
10+
protocol: TCP
11+
name: http
12+
selector:
13+
app: grafana
14+
---
15+
apiVersion: extensions/v1beta1
16+
kind: Deployment
17+
metadata:
18+
name: grafana
19+
namespace: istio-system
20+
spec:
21+
replicas: 1
22+
template:
23+
metadata:
24+
labels:
25+
app: grafana
26+
annotations:
27+
sidecar.istio.io/inject: "false"
28+
spec:
29+
serviceAccountName: grafana
30+
containers:
31+
- name: grafana
32+
image: docker.io/istio/grafana:0.6.0
33+
imagePullPolicy: IfNotPresent
34+
ports:
35+
- containerPort: 3000
36+
env:
37+
# Only put environment related config here. Generic Istio config
38+
# should go in addons/grafana/grafana.ini.
39+
- name: GF_PATHS_DATA
40+
value: /data/grafana
41+
volumeMounts:
42+
- mountPath: /data/grafana
43+
name: grafana-data
44+
volumes:
45+
- name: grafana-data
46+
emptyDir: {}
47+
---
48+
apiVersion: v1
49+
kind: ServiceAccount
50+
metadata:
51+
name: grafana
52+
namespace: istio-system
53+
---

addon/istio/ingress.yaml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
apiVersion: extensions/v1beta1
2+
kind: Ingress
3+
metadata:
4+
name: istio-ingress
5+
namespace: istio-system
6+
spec:
7+
rules:
8+
- host: grafana.istio.jimmysong.io
9+
http:
10+
paths:
11+
- path: /
12+
backend:
13+
serviceName: grafana
14+
servicePort: 3000
15+
- host: servicegraph.istio.jimmysong.io
16+
http:
17+
paths:
18+
- path: /
19+
backend:
20+
serviceName: servicegraph
21+
servicePort: 8080
22+
- host: zipkin.istio.jimmysong.io
23+
http:
24+
paths:
25+
- path: /
26+
backend:
27+
serviceName: zipkin
28+
servicePort: 9411

addon/istio/prometheus.yaml

Lines changed: 279 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,279 @@
1+
---
2+
apiVersion: v1
3+
kind: ConfigMap
4+
metadata:
5+
name: prometheus
6+
namespace: istio-system
7+
data:
8+
prometheus.yml: |-
9+
global:
10+
scrape_interval: 15s
11+
scrape_configs:
12+
13+
- job_name: 'istio-mesh'
14+
# Override the global default and scrape targets from this job every 5 seconds.
15+
scrape_interval: 5s
16+
17+
kubernetes_sd_configs:
18+
- role: endpoints
19+
20+
relabel_configs:
21+
- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
22+
action: keep
23+
regex: istio-system;istio-mixer;prometheus
24+
25+
- job_name: 'envoy'
26+
# Override the global default and scrape targets from this job every 5 seconds.
27+
scrape_interval: 5s
28+
# metrics_path defaults to '/metrics'
29+
# scheme defaults to 'http'.
30+
31+
kubernetes_sd_configs:
32+
- role: endpoints
33+
34+
relabel_configs:
35+
- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
36+
action: keep
37+
regex: istio-system;istio-mixer;statsd-prom
38+
39+
- job_name: 'mixer'
40+
# Override the global default and scrape targets from this job every 5 seconds.
41+
scrape_interval: 5s
42+
# metrics_path defaults to '/metrics'
43+
# scheme defaults to 'http'.
44+
45+
kubernetes_sd_configs:
46+
- role: endpoints
47+
48+
relabel_configs:
49+
- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
50+
action: keep
51+
regex: istio-system;istio-mixer;http-monitoring
52+
53+
- job_name: 'pilot'
54+
# Override the global default and scrape targets from this job every 5 seconds.
55+
scrape_interval: 5s
56+
# metrics_path defaults to '/metrics'
57+
# scheme defaults to 'http'.
58+
59+
kubernetes_sd_configs:
60+
- role: endpoints
61+
62+
relabel_configs:
63+
- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
64+
action: keep
65+
regex: istio-system;istio-pilot;http-monitoring
66+
67+
# scrape config for API servers
68+
- job_name: 'kubernetes-apiservers'
69+
kubernetes_sd_configs:
70+
- role: endpoints
71+
scheme: https
72+
tls_config:
73+
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
74+
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
75+
relabel_configs:
76+
- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
77+
action: keep
78+
regex: default;kubernetes;https
79+
80+
# scrape config for nodes (kubelet)
81+
- job_name: 'kubernetes-nodes'
82+
scheme: https
83+
tls_config:
84+
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
85+
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
86+
kubernetes_sd_configs:
87+
- role: node
88+
relabel_configs:
89+
- action: labelmap
90+
regex: __meta_kubernetes_node_label_(.+)
91+
- target_label: __address__
92+
replacement: kubernetes.default.svc:443
93+
- source_labels: [__meta_kubernetes_node_name]
94+
regex: (.+)
95+
target_label: __metrics_path__
96+
replacement: /api/v1/nodes/${1}/proxy/metrics
97+
98+
# Scrape config for Kubelet cAdvisor.
99+
#
100+
# This is required for Kubernetes 1.7.3 and later, where cAdvisor metrics
101+
# (those whose names begin with 'container_') have been removed from the
102+
# Kubelet metrics endpoint. This job scrapes the cAdvisor endpoint to
103+
# retrieve those metrics.
104+
#
105+
# In Kubernetes 1.7.0-1.7.2, these metrics are only exposed on the cAdvisor
106+
# HTTP endpoint; use "replacement: /api/v1/nodes/${1}:4194/proxy/metrics"
107+
# in that case (and ensure cAdvisor's HTTP server hasn't been disabled with
108+
# the --cadvisor-port=0 Kubelet flag).
109+
#
110+
# This job is not necessary and should be removed in Kubernetes 1.6 and
111+
# earlier versions, or it will cause the metrics to be scraped twice.
112+
- job_name: 'kubernetes-cadvisor'
113+
scheme: https
114+
tls_config:
115+
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
116+
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
117+
kubernetes_sd_configs:
118+
- role: node
119+
relabel_configs:
120+
- action: labelmap
121+
regex: __meta_kubernetes_node_label_(.+)
122+
- target_label: __address__
123+
replacement: kubernetes.default.svc:443
124+
- source_labels: [__meta_kubernetes_node_name]
125+
regex: (.+)
126+
target_label: __metrics_path__
127+
replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor
128+
129+
# scrape config for service endpoints.
130+
- job_name: 'kubernetes-service-endpoints'
131+
kubernetes_sd_configs:
132+
- role: endpoints
133+
relabel_configs:
134+
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]
135+
action: keep
136+
regex: true
137+
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
138+
action: replace
139+
target_label: __scheme__
140+
regex: (https?)
141+
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]
142+
action: replace
143+
target_label: __metrics_path__
144+
regex: (.+)
145+
- source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]
146+
action: replace
147+
target_label: __address__
148+
regex: ([^:]+)(?::\d+)?;(\d+)
149+
replacement: $1:$2
150+
- action: labelmap
151+
regex: __meta_kubernetes_service_label_(.+)
152+
- source_labels: [__meta_kubernetes_namespace]
153+
action: replace
154+
target_label: kubernetes_namespace
155+
- source_labels: [__meta_kubernetes_service_name]
156+
action: replace
157+
target_label: kubernetes_name
158+
159+
# Example scrape config for pods
160+
- job_name: 'kubernetes-pods'
161+
kubernetes_sd_configs:
162+
- role: pod
163+
164+
relabel_configs:
165+
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
166+
action: keep
167+
regex: true
168+
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
169+
action: replace
170+
target_label: __metrics_path__
171+
regex: (.+)
172+
- source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
173+
action: replace
174+
regex: ([^:]+)(?::\d+)?;(\d+)
175+
replacement: $1:$2
176+
target_label: __address__
177+
- action: labelmap
178+
regex: __meta_kubernetes_pod_label_(.+)
179+
- source_labels: [__meta_kubernetes_namespace]
180+
action: replace
181+
target_label: namespace
182+
- source_labels: [__meta_kubernetes_pod_name]
183+
action: replace
184+
target_label: pod_name
185+
186+
---
187+
apiVersion: v1
188+
kind: Service
189+
metadata:
190+
annotations:
191+
prometheus.io/scrape: 'true'
192+
labels:
193+
name: prometheus
194+
name: prometheus
195+
namespace: istio-system
196+
spec:
197+
selector:
198+
app: prometheus
199+
ports:
200+
- name: prometheus
201+
protocol: TCP
202+
port: 9090
203+
---
204+
apiVersion: extensions/v1beta1
205+
kind: Deployment
206+
metadata:
207+
name: prometheus
208+
namespace: istio-system
209+
spec:
210+
replicas: 1
211+
selector:
212+
matchLabels:
213+
app: prometheus
214+
template:
215+
metadata:
216+
name: prometheus
217+
labels:
218+
app: prometheus
219+
annotations:
220+
sidecar.istio.io/inject: "false"
221+
spec:
222+
serviceAccountName: prometheus
223+
containers:
224+
- name: prometheus
225+
image: docker.io/prom/prometheus:v2.0.0
226+
imagePullPolicy: IfNotPresent
227+
args:
228+
- '--storage.tsdb.retention=6h'
229+
- '--config.file=/etc/prometheus/prometheus.yml'
230+
ports:
231+
- name: web
232+
containerPort: 9090
233+
volumeMounts:
234+
- name: config-volume
235+
mountPath: /etc/prometheus
236+
volumes:
237+
- name: config-volume
238+
configMap:
239+
name: prometheus
240+
---
241+
apiVersion: v1
242+
kind: ServiceAccount
243+
metadata:
244+
name: prometheus
245+
namespace: istio-system
246+
---
247+
apiVersion: rbac.authorization.k8s.io/v1beta1
248+
kind: ClusterRole
249+
metadata:
250+
name: prometheus
251+
rules:
252+
- apiGroups: [""]
253+
resources:
254+
- nodes
255+
- services
256+
- endpoints
257+
- pods
258+
- nodes/proxy
259+
verbs: ["get", "list", "watch"]
260+
- apiGroups: [""]
261+
resources:
262+
- configmaps
263+
verbs: ["get"]
264+
- nonResourceURLs: ["/metrics"]
265+
verbs: ["get"]
266+
---
267+
apiVersion: rbac.authorization.k8s.io/v1beta1
268+
kind: ClusterRoleBinding
269+
metadata:
270+
name: prometheus
271+
roleRef:
272+
apiGroup: rbac.authorization.k8s.io
273+
kind: ClusterRole
274+
name: prometheus
275+
subjects:
276+
- kind: ServiceAccount
277+
name: prometheus
278+
namespace: istio-system
279+
---

addon/istio/servicegraph.yaml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
apiVersion: extensions/v1beta1
3+
kind: Deployment
4+
metadata:
5+
name: servicegraph
6+
namespace: istio-system
7+
spec:
8+
replicas: 1
9+
template:
10+
metadata:
11+
labels:
12+
app: servicegraph
13+
annotations:
14+
sidecar.istio.io/inject: "false"
15+
spec:
16+
containers:
17+
- name: servicegraph
18+
image: docker.io/istio/servicegraph:0.6.0
19+
imagePullPolicy: IfNotPresent
20+
ports:
21+
- containerPort: 8088
22+
args:
23+
- --prometheusAddr=http://prometheus:9090
24+
---
25+
apiVersion: v1
26+
kind: Service
27+
metadata:
28+
name: servicegraph
29+
namespace: istio-system
30+
spec:
31+
ports:
32+
- name: http
33+
port: 8088
34+
selector:
35+
app: servicegraph
36+
---

0 commit comments

Comments
 (0)