-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathkube-prometheus-stack.sh
executable file
·129 lines (116 loc) · 3.46 KB
/
kube-prometheus-stack.sh
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
#!/usr/bin/env bash
set -e
# CONSTANTS
readonly DNSMASQ_DOMAIN=kind.cluster
# FUNCTIONS
log(){
echo "---------------------------------------------------------------------------------------"
echo $1
echo "---------------------------------------------------------------------------------------"
}
# RUN
# deploying kube-prometheus-stack with ArgoCD does not work (CRDs are to big)
# deploy kube-prometheus-stack
kube_prometheus_stack(){
log "KUBE PROMETHEUS STACK ..."
helm upgrade --install --wait --timeout 15m --namespace monitoring --create-namespace \
--repo https://prometheus-community.github.io/helm-charts kube-prometheus-stack kube-prometheus-stack \
--values - <<EOF
kubeEtcd:
service:
enabled: true
targetPort: 2381
kubeProxy:
enabled: false
defaultRules:
create: true
rules:
kubeProxy: false
alertmanager:
alertmanagerSpec:
alertmanagerConfigSelector:
matchLabels: {}
alertmanagerConfigNamespaceSelector:
matchLabels: {}
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: ca-issuer
hosts:
- alertmanager.$DNSMASQ_DOMAIN
tls:
- secretName: alertmanager.$DNSMASQ_DOMAIN
hosts:
- alertmanager.$DNSMASQ_DOMAIN
prometheus:
prometheusSpec:
ruleSelectorNilUsesHelmValues: false
serviceMonitorSelectorNilUsesHelmValues: false
podMonitorSelectorNilUsesHelmValues: false
probeSelectorNilUsesHelmValues: false
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: ca-issuer
hosts:
- prometheus.$DNSMASQ_DOMAIN
tls:
- secretName: prometheus.$DNSMASQ_DOMAIN
hosts:
- prometheus.$DNSMASQ_DOMAIN
grafana:
enabled: true
adminPassword: admin
extraVolumeMounts:
- name: opt-ca-certificates
mountPath: /opt/ca-certificates
readOnly: true
hostPath: /opt/ca-certificates
hostPathType: Directory
sidecar:
enableUniqueFilenames: true
dashboards:
enabled: true
searchNamespace: ALL
provider:
foldersFromFilesStructure: true
datasources:
enabled: true
searchNamespace: ALL
grafana.ini:
server:
root_url: https://grafana.$DNSMASQ_DOMAIN
auth.generic_oauth:
enabled: true
name: Keycloak
allow_sign_up: true
scopes: profile,email,groups
auth_url: https://keycloak.$DNSMASQ_DOMAIN/auth/realms/master/protocol/openid-connect/auth
token_url: https://keycloak.$DNSMASQ_DOMAIN/auth/realms/master/protocol/openid-connect/token
api_url: https://keycloak.$DNSMASQ_DOMAIN/auth/realms/master/protocol/openid-connect/userinfo
client_id: grafana
client_secret: grafana-client-secret
tls_client_ca: /opt/ca-certificates/root-ca.pem
role_attribute_path: contains(groups[*], 'grafana-admin') && 'Admin' || contains(groups[*], 'grafana-dev') && 'Editor' || 'Viewer'
ingress:
enabled: true
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: ca-issuer
hosts:
- grafana.$DNSMASQ_DOMAIN
tls:
- secretName: grafana.$DNSMASQ_DOMAIN
hosts:
- grafana.$DNSMASQ_DOMAIN
EOF
}
# RUN
kube_prometheus_stack
# DONE
log "KUBE PROMETHEUS STACK READY !"
echo "ALERT MANAGER: https://alertmanager.$DNSMASQ_DOMAIN"
echo "GRAFANA: https://grafana.$DNSMASQ_DOMAIN"
echo "PROMETHEUS: https://prometheus.$DNSMASQ_DOMAIN"