67 lines
2.7 KiB
YAML
67 lines
2.7 KiB
YAML
|
apiVersion: batch/v1
|
||
|
kind: Job
|
||
|
metadata:
|
||
|
name: grafana-import-dashboards
|
||
|
namespace: monitoring
|
||
|
labels:
|
||
|
app: grafana
|
||
|
component: import-dashboards
|
||
|
spec:
|
||
|
template:
|
||
|
metadata:
|
||
|
name: grafana-import-dashboards
|
||
|
labels:
|
||
|
app: grafana
|
||
|
component: import-dashboards
|
||
|
annotations:
|
||
|
pod.beta.kubernetes.io/init-containers: '[
|
||
|
{
|
||
|
"name": "wait-for-endpoints",
|
||
|
"image": "sz-pg-oam-docker-hub-001.tendcloud.com/library/giantswarm-tiny-tools",
|
||
|
"imagePullPolicy": "IfNotPresent",
|
||
|
"command": ["fish", "-c", "echo \"waiting for endpoints...\"; while true; set endpoints (curl -s --cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt --header \"Authorization: Bearer \"(cat /var/run/secrets/kubernetes.io/serviceaccount/token) https://kubernetes.default/api/v1/namespaces/monitoring/endpoints/grafana); echo $endpoints | jq \".\"; if test (echo $endpoints | jq -r \".subsets[]?.addresses // [] | length\") -gt 0; exit 0; end; echo \"waiting...\";sleep 1; end"],
|
||
|
"args": ["monitoring", "grafana"]
|
||
|
}
|
||
|
]'
|
||
|
spec:
|
||
|
serviceAccountName: prometheus-k8s
|
||
|
containers:
|
||
|
- name: grafana-import-dashboards
|
||
|
image: sz-pg-oam-docker-hub-001.tendcloud.com/library/giantswarm-tiny-tools
|
||
|
command: ["/bin/sh", "-c"]
|
||
|
workingDir: /opt/grafana-import-dashboards
|
||
|
args:
|
||
|
- >
|
||
|
for file in *-datasource.json ; do
|
||
|
if [ -e "$file" ] ; then
|
||
|
echo "importing $file" &&
|
||
|
curl --silent --fail --show-error \
|
||
|
--request POST http://admin:admin@grafana:3000/api/datasources \
|
||
|
--header "Content-Type: application/json" \
|
||
|
--data-binary "@$file" ;
|
||
|
echo "" ;
|
||
|
fi
|
||
|
done ;
|
||
|
for file in *-dashboard.json ; do
|
||
|
if [ -e "$file" ] ; then
|
||
|
echo "importing $file" &&
|
||
|
( echo '{"dashboard":'; \
|
||
|
cat "$file"; \
|
||
|
echo ',"overwrite":true,"inputs":[{"name":"DS_PROMETHEUS","type":"datasource","pluginId":"prometheus","value":"prometheus"}]}' ) \
|
||
|
| jq -c '.' \
|
||
|
| curl --silent --fail --show-error \
|
||
|
--request POST http://admin:admin@grafana:3000/api/dashboards/import \
|
||
|
--header "Content-Type: application/json" \
|
||
|
--data-binary "@-" ;
|
||
|
echo "" ;
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
volumeMounts:
|
||
|
- name: config-volume
|
||
|
mountPath: /opt/grafana-import-dashboards
|
||
|
restartPolicy: Never
|
||
|
volumes:
|
||
|
- name: config-volume
|
||
|
configMap:
|
||
|
name: grafana-import-dashboards
|