configmap.yaml 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. {{- if .Values.createConfigmap }}
  2. apiVersion: v1
  3. kind: ConfigMap
  4. metadata:
  5. name: {{ template "grafana.fullname" . }}
  6. namespace: {{ template "grafana.namespace" . }}
  7. labels:
  8. {{- include "grafana.labels" . | nindent 4 }}
  9. {{- with .Values.annotations }}
  10. annotations:
  11. {{ toYaml . | indent 4 }}
  12. {{- end }}
  13. data:
  14. {{- if .Values.plugins }}
  15. plugins: {{ join "," .Values.plugins }}
  16. {{- end }}
  17. grafana.ini: |
  18. {{- range $elem, $elemVal := index .Values "grafana.ini" }}
  19. {{- if not (kindIs "map" $elemVal) }}
  20. {{- if kindIs "invalid" $elemVal }}
  21. {{ $elem }} =
  22. {{- else if kindIs "string" $elemVal }}
  23. {{ $elem }} = {{ tpl $elemVal $ }}
  24. {{- else }}
  25. {{ $elem }} = {{ $elemVal }}
  26. {{- end }}
  27. {{- end }}
  28. {{- end }}
  29. {{- range $key, $value := index .Values "grafana.ini" }}
  30. {{- if kindIs "map" $value }}
  31. [{{ $key }}]
  32. {{- range $elem, $elemVal := $value }}
  33. {{- if kindIs "invalid" $elemVal }}
  34. {{ $elem }} =
  35. {{- else if kindIs "string" $elemVal }}
  36. {{ $elem }} = {{ tpl $elemVal $ }}
  37. {{- else }}
  38. {{ $elem }} = {{ $elemVal }}
  39. {{- end }}
  40. {{- end }}
  41. {{- end }}
  42. {{- end }}
  43. {{- if .Values.datasources }}
  44. {{ $root := . }}
  45. {{- range $key, $value := .Values.datasources }}
  46. {{ $key }}: |
  47. {{ tpl (toYaml $value | indent 4) $root }}
  48. {{- end -}}
  49. {{- end -}}
  50. {{- if .Values.notifiers }}
  51. {{- range $key, $value := .Values.notifiers }}
  52. {{ $key }}: |
  53. {{ toYaml $value | indent 4 }}
  54. {{- end -}}
  55. {{- end -}}
  56. {{- if .Values.alerting }}
  57. {{ $root := . }}
  58. {{- range $key, $value := .Values.alerting }}
  59. {{ $key }}: |
  60. {{ tpl (toYaml $value | indent 4) $root }}
  61. {{- end -}}
  62. {{- end -}}
  63. {{- if .Values.dashboardProviders }}
  64. {{- range $key, $value := .Values.dashboardProviders }}
  65. {{ $key }}: |
  66. {{ toYaml $value | indent 4 }}
  67. {{- end -}}
  68. {{- end -}}
  69. {{- if .Values.dashboards }}
  70. download_dashboards.sh: |
  71. #!/usr/bin/env sh
  72. set -euf
  73. {{- if .Values.dashboardProviders }}
  74. {{- range $key, $value := .Values.dashboardProviders }}
  75. {{- range $value.providers }}
  76. mkdir -p {{ .options.path }}
  77. {{- end }}
  78. {{- end }}
  79. {{- end }}
  80. {{ $dashboardProviders := .Values.dashboardProviders }}
  81. {{- range $provider, $dashboards := .Values.dashboards }}
  82. {{- range $key, $value := $dashboards }}
  83. {{- if (or (hasKey $value "gnetId") (hasKey $value "url")) }}
  84. curl -skf \
  85. --connect-timeout 60 \
  86. --max-time 60 \
  87. {{- if not $value.b64content }}
  88. -H "Accept: application/json" \
  89. {{- if $value.token }}
  90. -H "Authorization: token {{ $value.token }}" \
  91. {{- end }}
  92. {{- if $value.bearerToken }}
  93. -H "Authorization: Bearer {{ $value.bearerToken }}" \
  94. {{- end }}
  95. {{- if $value.gitlabToken }}
  96. -H "PRIVATE-TOKEN: {{ $value.gitlabToken }}" \
  97. {{- end }}
  98. -H "Content-Type: application/json;charset=UTF-8" \
  99. {{- end -}}
  100. {{- $dpPath := "" -}}
  101. {{- range $kd := (index $dashboardProviders "dashboardproviders.yaml").providers -}}
  102. {{- if eq $kd.name $provider -}}
  103. {{- $dpPath = $kd.options.path -}}
  104. {{- end -}}
  105. {{- end -}}
  106. {{- if $value.url }}
  107. "{{ $value.url }}" \
  108. {{- else }}
  109. "https://grafana.com/api/dashboards/{{ $value.gnetId }}/revisions/{{- if $value.revision -}}{{ $value.revision }}{{- else -}}1{{- end -}}/download" \
  110. {{- end -}}
  111. {{- if $value.datasource }}
  112. {{- if kindIs "string" $value.datasource }}
  113. | sed '/-- .* --/! s/"datasource":.*,/"datasource": "{{ $value.datasource }}",/g' \
  114. {{- end -}}
  115. {{- if kindIs "slice" $value.datasource -}}
  116. {{- range $value.datasource }}
  117. | sed '/-- .* --/! s/${{"{"}}{{ .name }}}/{{ .value }}/g' \
  118. {{- end -}}
  119. {{- end -}}
  120. {{- end -}}
  121. {{- if $value.b64content }}
  122. | base64 -d \
  123. {{- end }}
  124. > "{{- if $dpPath -}}{{ $dpPath }}{{- else -}}/var/lib/grafana/dashboards/{{ $provider }}{{- end -}}/{{ $key }}.json"
  125. {{ end }}
  126. {{- end -}}
  127. {{- end }}
  128. {{- end }}
  129. {{- end }}