Adding dependencies, binary autostart
This commit is contained in:
		
							
								
								
									
										55
									
								
								opencloud/charts/grafana/templates/NOTES.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								opencloud/charts/grafana/templates/NOTES.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,55 @@
 | 
			
		||||
1. Get your '{{ .Values.adminUser }}' user password by running:
 | 
			
		||||
 | 
			
		||||
   kubectl get secret --namespace {{ include "grafana.namespace" . }} {{ .Values.admin.existingSecret | default (include "grafana.fullname" .) }} -o jsonpath="{.data.{{ .Values.admin.passwordKey | default "admin-password" }}}" | base64 --decode ; echo
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
2. The Grafana server can be accessed via port {{ .Values.service.port }} on the following DNS name from within your cluster:
 | 
			
		||||
 | 
			
		||||
   {{ include "grafana.fullname" . }}.{{ include "grafana.namespace" . }}.svc.cluster.local
 | 
			
		||||
{{ if .Values.ingress.enabled }}
 | 
			
		||||
   If you bind grafana to 80, please update values in values.yaml and reinstall:
 | 
			
		||||
   ```
 | 
			
		||||
   securityContext:
 | 
			
		||||
     runAsUser: 0
 | 
			
		||||
     runAsGroup: 0
 | 
			
		||||
     fsGroup: 0
 | 
			
		||||
 | 
			
		||||
   command:
 | 
			
		||||
   - "setcap"
 | 
			
		||||
   - "'cap_net_bind_service=+ep'"
 | 
			
		||||
   - "/usr/sbin/grafana-server &&"
 | 
			
		||||
   - "sh"
 | 
			
		||||
   - "/run.sh"
 | 
			
		||||
   ```
 | 
			
		||||
   Details refer to https://grafana.com/docs/installation/configuration/#http-port.
 | 
			
		||||
   Or grafana would always crash.
 | 
			
		||||
 | 
			
		||||
   From outside the cluster, the server URL(s) are:
 | 
			
		||||
     {{- range .Values.ingress.hosts }}
 | 
			
		||||
     http://{{ . }}
 | 
			
		||||
     {{- end }}
 | 
			
		||||
{{- else }}
 | 
			
		||||
   Get the Grafana URL to visit by running these commands in the same shell:
 | 
			
		||||
   {{- if contains "NodePort" .Values.service.type }}
 | 
			
		||||
     export NODE_PORT=$(kubectl get --namespace {{ include "grafana.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "grafana.fullname" . }})
 | 
			
		||||
     export NODE_IP=$(kubectl get nodes --namespace {{ include "grafana.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}")
 | 
			
		||||
     echo http://$NODE_IP:$NODE_PORT
 | 
			
		||||
   {{- else if contains "LoadBalancer" .Values.service.type }}
 | 
			
		||||
   NOTE: It may take a few minutes for the LoadBalancer IP to be available.
 | 
			
		||||
        You can watch the status of by running 'kubectl get svc --namespace {{ include "grafana.namespace" . }} -w {{ include "grafana.fullname" . }}'
 | 
			
		||||
     export SERVICE_IP=$(kubectl get svc --namespace {{ include "grafana.namespace" . }} {{ include "grafana.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
 | 
			
		||||
     http://$SERVICE_IP:{{ .Values.service.port -}}
 | 
			
		||||
   {{- else if contains "ClusterIP"  .Values.service.type }}
 | 
			
		||||
     export POD_NAME=$(kubectl get pods --namespace {{ include "grafana.namespace" . }} -l "app.kubernetes.io/name={{ include "grafana.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
 | 
			
		||||
     kubectl --namespace {{ include "grafana.namespace" . }} port-forward $POD_NAME 3000
 | 
			
		||||
   {{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
3. Login with the password from step 1 and the username: {{ .Values.adminUser }}
 | 
			
		||||
 | 
			
		||||
{{- if and (not .Values.persistence.enabled) (not .Values.persistence.disableWarning) }}
 | 
			
		||||
#################################################################################
 | 
			
		||||
######   WARNING: Persistence is disabled!!! You will lose your data when   #####
 | 
			
		||||
######            the Grafana pod is terminated.                            #####
 | 
			
		||||
#################################################################################
 | 
			
		||||
{{- end }}
 | 
			
		||||
							
								
								
									
										176
									
								
								opencloud/charts/grafana/templates/_config.tpl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										176
									
								
								opencloud/charts/grafana/templates/_config.tpl
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,176 @@
 | 
			
		||||
{{/*
 | 
			
		||||
 Generate config map data
 | 
			
		||||
 */}}
 | 
			
		||||
{{- define "grafana.configData" -}}
 | 
			
		||||
{{ include "grafana.assertNoLeakedSecrets" . }}
 | 
			
		||||
{{- $files := .Files }}
 | 
			
		||||
{{- $root := . -}}
 | 
			
		||||
{{- with .Values.plugins }}
 | 
			
		||||
plugins: {{ join "," . }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
grafana.ini: |
 | 
			
		||||
{{- range $elem, $elemVal := index .Values "grafana.ini" }}
 | 
			
		||||
  {{- if not (kindIs "map" $elemVal) }}
 | 
			
		||||
  {{- if kindIs "invalid" $elemVal }}
 | 
			
		||||
  {{ $elem }} =
 | 
			
		||||
  {{- else if kindIs "slice" $elemVal }}
 | 
			
		||||
  {{ $elem }} = {{ toJson $elemVal }}
 | 
			
		||||
  {{- else if kindIs "string" $elemVal }}
 | 
			
		||||
  {{ $elem }} = {{ tpl $elemVal $ }}
 | 
			
		||||
  {{- else }}
 | 
			
		||||
  {{ $elem }} = {{ $elemVal }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- range $key, $value := index .Values "grafana.ini" }}
 | 
			
		||||
  {{- if kindIs "map" $value }}
 | 
			
		||||
  [{{ $key }}]
 | 
			
		||||
  {{- range $elem, $elemVal := $value }}
 | 
			
		||||
  {{- if kindIs "invalid" $elemVal }}
 | 
			
		||||
  {{ $elem }} =
 | 
			
		||||
  {{- else if kindIs "slice" $elemVal }}
 | 
			
		||||
  {{ $elem }} = {{ toJson $elemVal }}
 | 
			
		||||
  {{- else if kindIs "string" $elemVal }}
 | 
			
		||||
  {{ $elem }} = {{ tpl $elemVal $ }}
 | 
			
		||||
  {{- else }}
 | 
			
		||||
  {{ $elem }} = {{ $elemVal }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{- range $key, $value := .Values.datasources }}
 | 
			
		||||
{{- if not (hasKey $value "secret") }}
 | 
			
		||||
{{ $key }}: |
 | 
			
		||||
  {{- tpl (toYaml $value | nindent 2) $root }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{- range $key, $value := .Values.notifiers }}
 | 
			
		||||
{{- if not (hasKey $value "secret") }}
 | 
			
		||||
{{ $key }}: |
 | 
			
		||||
  {{- toYaml $value | nindent 2 }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{- range $key, $value := .Values.alerting }}
 | 
			
		||||
{{- if (hasKey $value "file") }}
 | 
			
		||||
{{ $key }}:
 | 
			
		||||
{{- toYaml ( $files.Get $value.file ) | nindent 2 }}
 | 
			
		||||
{{- else if (or (hasKey $value "secret") (hasKey $value "secretFile"))}}
 | 
			
		||||
{{/*  will be stored inside secret generated by "configSecret.yaml"*/}}
 | 
			
		||||
{{- else }}
 | 
			
		||||
{{ $key }}: |
 | 
			
		||||
  {{- tpl (toYaml $value | nindent 2) $root }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{- range $key, $value := .Values.dashboardProviders }}
 | 
			
		||||
{{ $key }}: |
 | 
			
		||||
  {{- toYaml $value | nindent 2 }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{- if .Values.dashboards  }}
 | 
			
		||||
download_dashboards.sh: |
 | 
			
		||||
  #!/usr/bin/env sh
 | 
			
		||||
  set -euf
 | 
			
		||||
  {{- if .Values.dashboardProviders }}
 | 
			
		||||
    {{- range $key, $value := .Values.dashboardProviders }}
 | 
			
		||||
      {{- range $value.providers }}
 | 
			
		||||
  mkdir -p {{ .options.path }}
 | 
			
		||||
      {{- end }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
{{ $dashboardProviders := .Values.dashboardProviders }}
 | 
			
		||||
{{- range $provider, $dashboards := .Values.dashboards }}
 | 
			
		||||
  {{- range $key, $value := $dashboards }}
 | 
			
		||||
    {{- if (or (hasKey $value "gnetId") (hasKey $value "url")) }}
 | 
			
		||||
  curl -skf \
 | 
			
		||||
  --connect-timeout 60 \
 | 
			
		||||
  --max-time 60 \
 | 
			
		||||
    {{- if not $value.b64content }}
 | 
			
		||||
      {{- if not $value.acceptHeader }}
 | 
			
		||||
  -H "Accept: application/json" \
 | 
			
		||||
      {{- else }}
 | 
			
		||||
  -H "Accept: {{ $value.acceptHeader }}" \
 | 
			
		||||
      {{- end }}
 | 
			
		||||
      {{- if $value.token }}
 | 
			
		||||
  -H "Authorization: token {{ $value.token }}" \
 | 
			
		||||
      {{- end }}
 | 
			
		||||
      {{- if $value.bearerToken }}
 | 
			
		||||
  -H "Authorization: Bearer {{ $value.bearerToken }}" \
 | 
			
		||||
      {{- end }}
 | 
			
		||||
      {{- if $value.basic }}
 | 
			
		||||
  -H "Authorization: Basic {{ $value.basic }}" \
 | 
			
		||||
      {{- end }}
 | 
			
		||||
      {{- if $value.gitlabToken }}
 | 
			
		||||
  -H "PRIVATE-TOKEN: {{ $value.gitlabToken }}" \
 | 
			
		||||
      {{- end }}
 | 
			
		||||
  -H "Content-Type: application/json;charset=UTF-8" \
 | 
			
		||||
    {{- end }}
 | 
			
		||||
  {{- $dpPath := "" -}}
 | 
			
		||||
  {{- range $kd := (index $dashboardProviders "dashboardproviders.yaml").providers }}
 | 
			
		||||
    {{- if eq $kd.name $provider }}
 | 
			
		||||
    {{- $dpPath = $kd.options.path }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- if $value.url }}
 | 
			
		||||
    "{{ $value.url }}" \
 | 
			
		||||
  {{- else }}
 | 
			
		||||
    "https://grafana.com/api/dashboards/{{ $value.gnetId }}/revisions/{{- if $value.revision -}}{{ $value.revision }}{{- else -}}1{{- end -}}/download" \
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- if $value.datasource }}
 | 
			
		||||
    {{- if kindIs "string" $value.datasource }}
 | 
			
		||||
    | sed '/-- .* --/! s/"datasource":.*,/"datasource": "{{ $value.datasource }}",/g' \
 | 
			
		||||
    {{- end }}
 | 
			
		||||
    {{- if kindIs "slice" $value.datasource }}
 | 
			
		||||
      {{- range $value.datasource }}
 | 
			
		||||
        | sed '/-- .* --/! s/${{"{"}}{{ .name }}}/{{ .value }}/g' \
 | 
			
		||||
      {{- end }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- if $value.b64content }}
 | 
			
		||||
    | base64 -d \
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  > "{{- if $dpPath -}}{{ $dpPath }}{{- else -}}/var/lib/grafana/dashboards/{{ $provider }}{{- end -}}/{{ $key }}.json"
 | 
			
		||||
    {{ end }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end -}}
 | 
			
		||||
 | 
			
		||||
{{/*
 | 
			
		||||
 Generate dashboard json config map data
 | 
			
		||||
 */}}
 | 
			
		||||
{{- define "grafana.configDashboardProviderData" -}}
 | 
			
		||||
provider.yaml: |-
 | 
			
		||||
  apiVersion: 1
 | 
			
		||||
  providers:
 | 
			
		||||
    - name: '{{ .Values.sidecar.dashboards.provider.name }}'
 | 
			
		||||
      orgId: {{ .Values.sidecar.dashboards.provider.orgid }}
 | 
			
		||||
      {{- if not .Values.sidecar.dashboards.provider.foldersFromFilesStructure }}
 | 
			
		||||
      folder: '{{ .Values.sidecar.dashboards.provider.folder }}'
 | 
			
		||||
      folderUid: '{{ .Values.sidecar.dashboards.provider.folderUid }}'
 | 
			
		||||
      {{- end }}
 | 
			
		||||
      type: {{ .Values.sidecar.dashboards.provider.type }}
 | 
			
		||||
      disableDeletion: {{ .Values.sidecar.dashboards.provider.disableDelete }}
 | 
			
		||||
      allowUiUpdates: {{ .Values.sidecar.dashboards.provider.allowUiUpdates }}
 | 
			
		||||
      updateIntervalSeconds: {{ .Values.sidecar.dashboards.provider.updateIntervalSeconds | default 30 }}
 | 
			
		||||
      options:
 | 
			
		||||
        foldersFromFilesStructure: {{ .Values.sidecar.dashboards.provider.foldersFromFilesStructure }}
 | 
			
		||||
        path: {{ .Values.sidecar.dashboards.folder }}{{- with .Values.sidecar.dashboards.defaultFolderName }}/{{ . }}{{- end }}
 | 
			
		||||
{{- end -}}
 | 
			
		||||
 | 
			
		||||
{{- define "grafana.secretsData" -}}
 | 
			
		||||
{{- if and (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) }}
 | 
			
		||||
admin-user: {{ .Values.adminUser | b64enc | quote }}
 | 
			
		||||
{{- if .Values.adminPassword }}
 | 
			
		||||
admin-password: {{ .Values.adminPassword | b64enc | quote }}
 | 
			
		||||
{{- else }}
 | 
			
		||||
admin-password: {{ include "grafana.password" . }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- if not .Values.ldap.existingSecret }}
 | 
			
		||||
ldap-toml: {{ tpl .Values.ldap.config $ | b64enc | quote }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end -}}
 | 
			
		||||
							
								
								
									
										274
									
								
								opencloud/charts/grafana/templates/_helpers.tpl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										274
									
								
								opencloud/charts/grafana/templates/_helpers.tpl
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,274 @@
 | 
			
		||||
{{/* vim: set filetype=mustache: */}}
 | 
			
		||||
{{/*
 | 
			
		||||
Expand the name of the chart.
 | 
			
		||||
*/}}
 | 
			
		||||
{{- define "grafana.name" -}}
 | 
			
		||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{/*
 | 
			
		||||
Create a default fully qualified app name.
 | 
			
		||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
 | 
			
		||||
If release name contains chart name it will be used as a full name.
 | 
			
		||||
*/}}
 | 
			
		||||
{{- define "grafana.fullname" -}}
 | 
			
		||||
{{- if .Values.fullnameOverride }}
 | 
			
		||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
 | 
			
		||||
{{- else }}
 | 
			
		||||
{{- $name := default .Chart.Name .Values.nameOverride }}
 | 
			
		||||
{{- if contains $name .Release.Name }}
 | 
			
		||||
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
 | 
			
		||||
{{- else }}
 | 
			
		||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{/*
 | 
			
		||||
Create chart name and version as used by the chart label.
 | 
			
		||||
*/}}
 | 
			
		||||
{{- define "grafana.chart" -}}
 | 
			
		||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{/*
 | 
			
		||||
Create the name of the service account
 | 
			
		||||
*/}}
 | 
			
		||||
{{- define "grafana.serviceAccountName" -}}
 | 
			
		||||
{{- if .Values.serviceAccount.create }}
 | 
			
		||||
{{- default (include "grafana.fullname" .) .Values.serviceAccount.name }}
 | 
			
		||||
{{- else }}
 | 
			
		||||
{{- default "default" .Values.serviceAccount.name }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{- define "grafana.serviceAccountNameTest" -}}
 | 
			
		||||
{{- if .Values.serviceAccount.create }}
 | 
			
		||||
{{- default (print (include "grafana.fullname" .) "-test") .Values.serviceAccount.nameTest }}
 | 
			
		||||
{{- else }}
 | 
			
		||||
{{- default "default" .Values.serviceAccount.nameTest }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{/*
 | 
			
		||||
Allow the release namespace to be overridden for multi-namespace deployments in combined charts
 | 
			
		||||
*/}}
 | 
			
		||||
{{- define "grafana.namespace" -}}
 | 
			
		||||
{{- if .Values.namespaceOverride }}
 | 
			
		||||
{{- .Values.namespaceOverride }}
 | 
			
		||||
{{- else }}
 | 
			
		||||
{{- .Release.Namespace }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{/*
 | 
			
		||||
Common labels
 | 
			
		||||
*/}}
 | 
			
		||||
{{- define "grafana.labels" -}}
 | 
			
		||||
helm.sh/chart: {{ include "grafana.chart" . }}
 | 
			
		||||
{{ include "grafana.selectorLabels" . }}
 | 
			
		||||
{{- if or .Chart.AppVersion .Values.image.tag }}
 | 
			
		||||
app.kubernetes.io/version: {{ mustRegexReplaceAllLiteral "@sha.*" .Values.image.tag "" | default .Chart.AppVersion | trunc 63 | trimSuffix "-" | quote }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- with .Values.extraLabels }}
 | 
			
		||||
{{ toYaml . }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{/*
 | 
			
		||||
Selector labels
 | 
			
		||||
*/}}
 | 
			
		||||
{{- define "grafana.selectorLabels" -}}
 | 
			
		||||
app.kubernetes.io/name: {{ include "grafana.name" . }}
 | 
			
		||||
app.kubernetes.io/instance: {{ .Release.Name }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{/*
 | 
			
		||||
Common labels
 | 
			
		||||
*/}}
 | 
			
		||||
{{- define "grafana.imageRenderer.labels" -}}
 | 
			
		||||
helm.sh/chart: {{ include "grafana.chart" . }}
 | 
			
		||||
{{ include "grafana.imageRenderer.selectorLabels" . }}
 | 
			
		||||
{{- if or .Chart.AppVersion .Values.image.tag }}
 | 
			
		||||
app.kubernetes.io/version: {{ mustRegexReplaceAllLiteral "@sha.*" .Values.image.tag "" | default .Chart.AppVersion | trunc 63 | trimSuffix "-" | quote }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{/*
 | 
			
		||||
Selector labels ImageRenderer
 | 
			
		||||
*/}}
 | 
			
		||||
{{- define "grafana.imageRenderer.selectorLabels" -}}
 | 
			
		||||
app.kubernetes.io/name: {{ include "grafana.name" . }}-image-renderer
 | 
			
		||||
app.kubernetes.io/instance: {{ .Release.Name }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{/*
 | 
			
		||||
Looks if there's an existing secret and reuse its password. If not it generates
 | 
			
		||||
new password and use it.
 | 
			
		||||
*/}}
 | 
			
		||||
{{- define "grafana.password" -}}
 | 
			
		||||
{{- $secret := (lookup "v1" "Secret" (include "grafana.namespace" .) (include "grafana.fullname" .) ) }}
 | 
			
		||||
{{- if $secret }}
 | 
			
		||||
{{- index $secret "data" "admin-password" }}
 | 
			
		||||
{{- else }}
 | 
			
		||||
{{- (randAlphaNum 40) | b64enc | quote }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{/*
 | 
			
		||||
Return the appropriate apiVersion for rbac.
 | 
			
		||||
*/}}
 | 
			
		||||
{{- define "grafana.rbac.apiVersion" -}}
 | 
			
		||||
{{- if $.Capabilities.APIVersions.Has "rbac.authorization.k8s.io/v1" }}
 | 
			
		||||
{{- print "rbac.authorization.k8s.io/v1" }}
 | 
			
		||||
{{- else }}
 | 
			
		||||
{{- print "rbac.authorization.k8s.io/v1beta1" }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{/*
 | 
			
		||||
Return the appropriate apiVersion for ingress.
 | 
			
		||||
*/}}
 | 
			
		||||
{{- define "grafana.ingress.apiVersion" -}}
 | 
			
		||||
{{- if and ($.Capabilities.APIVersions.Has "networking.k8s.io/v1") (semverCompare ">= 1.19-0" .Capabilities.KubeVersion.Version) }}
 | 
			
		||||
{{- print "networking.k8s.io/v1" }}
 | 
			
		||||
{{- else if $.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" }}
 | 
			
		||||
{{- print "networking.k8s.io/v1beta1" }}
 | 
			
		||||
{{- else }}
 | 
			
		||||
{{- print "extensions/v1beta1" }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{/*
 | 
			
		||||
Return the appropriate apiVersion for Horizontal Pod Autoscaler.
 | 
			
		||||
*/}}
 | 
			
		||||
{{- define "grafana.hpa.apiVersion" -}}
 | 
			
		||||
{{- if .Capabilities.APIVersions.Has "autoscaling/v2" }}  
 | 
			
		||||
{{- print "autoscaling/v2" }}  
 | 
			
		||||
{{- else }}  
 | 
			
		||||
{{- print "autoscaling/v2beta2" }}  
 | 
			
		||||
{{- end }} 
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{/*
 | 
			
		||||
Return the appropriate apiVersion for podDisruptionBudget.
 | 
			
		||||
*/}}
 | 
			
		||||
{{- define "grafana.podDisruptionBudget.apiVersion" -}}
 | 
			
		||||
{{- if $.Values.podDisruptionBudget.apiVersion }}
 | 
			
		||||
{{- print $.Values.podDisruptionBudget.apiVersion }}
 | 
			
		||||
{{- else if $.Capabilities.APIVersions.Has "policy/v1/PodDisruptionBudget" }}
 | 
			
		||||
{{- print "policy/v1" }}
 | 
			
		||||
{{- else }}
 | 
			
		||||
{{- print "policy/v1beta1" }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{/*
 | 
			
		||||
Return if ingress is stable.
 | 
			
		||||
*/}}
 | 
			
		||||
{{- define "grafana.ingress.isStable" -}}
 | 
			
		||||
{{- eq (include "grafana.ingress.apiVersion" .) "networking.k8s.io/v1" }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{/*
 | 
			
		||||
Return if ingress supports ingressClassName.
 | 
			
		||||
*/}}
 | 
			
		||||
{{- define "grafana.ingress.supportsIngressClassName" -}}
 | 
			
		||||
{{- or (eq (include "grafana.ingress.isStable" .) "true") (and (eq (include "grafana.ingress.apiVersion" .) "networking.k8s.io/v1beta1") (semverCompare ">= 1.18-0" .Capabilities.KubeVersion.Version)) }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{/*
 | 
			
		||||
Return if ingress supports pathType.
 | 
			
		||||
*/}}
 | 
			
		||||
{{- define "grafana.ingress.supportsPathType" -}}
 | 
			
		||||
{{- or (eq (include "grafana.ingress.isStable" .) "true") (and (eq (include "grafana.ingress.apiVersion" .) "networking.k8s.io/v1beta1") (semverCompare ">= 1.18-0" .Capabilities.KubeVersion.Version)) }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{/*
 | 
			
		||||
Formats imagePullSecrets. Input is (dict "root" . "imagePullSecrets" .{specific imagePullSecrets})
 | 
			
		||||
*/}}
 | 
			
		||||
{{- define "grafana.imagePullSecrets" -}}
 | 
			
		||||
{{- $root := .root }}
 | 
			
		||||
{{- range (concat .root.Values.global.imagePullSecrets .imagePullSecrets) }}
 | 
			
		||||
{{- if eq (typeOf .) "map[string]interface {}" }}
 | 
			
		||||
- {{ toYaml (dict "name" (tpl .name $root)) | trim }}
 | 
			
		||||
{{- else }}
 | 
			
		||||
- name: {{ tpl . $root }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
{{/*
 | 
			
		||||
 Checks whether or not the configSecret secret has to be created
 | 
			
		||||
 */}}
 | 
			
		||||
{{- define "grafana.shouldCreateConfigSecret" -}}
 | 
			
		||||
{{- $secretFound := false -}}
 | 
			
		||||
{{- range $key, $value := .Values.datasources }}
 | 
			
		||||
  {{- if hasKey $value "secret" }}
 | 
			
		||||
    {{- $secretFound = true}}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- range $key, $value := .Values.notifiers }}
 | 
			
		||||
  {{- if hasKey $value "secret" }}
 | 
			
		||||
    {{- $secretFound = true}}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- range $key, $value := .Values.alerting }}
 | 
			
		||||
  {{- if (or (hasKey $value "secret") (hasKey $value "secretFile")) }}
 | 
			
		||||
    {{- $secretFound = true}}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- $secretFound}}
 | 
			
		||||
{{- end -}}
 | 
			
		||||
 | 
			
		||||
{{/*
 | 
			
		||||
    Checks whether the user is attempting to store secrets in plaintext
 | 
			
		||||
    in the grafana.ini configmap
 | 
			
		||||
*/}}
 | 
			
		||||
{{/* grafana.assertNoLeakedSecrets checks for sensitive keys in values */}}
 | 
			
		||||
{{- define "grafana.assertNoLeakedSecrets" -}}
 | 
			
		||||
      {{- $sensitiveKeysYaml := `
 | 
			
		||||
sensitiveKeys:
 | 
			
		||||
- path: ["database", "password"]
 | 
			
		||||
- path: ["smtp", "password"]
 | 
			
		||||
- path: ["security", "secret_key"]
 | 
			
		||||
- path: ["security", "admin_password"]
 | 
			
		||||
- path: ["auth.basic", "password"]
 | 
			
		||||
- path: ["auth.ldap", "bind_password"]
 | 
			
		||||
- path: ["auth.google", "client_secret"]
 | 
			
		||||
- path: ["auth.github", "client_secret"]
 | 
			
		||||
- path: ["auth.gitlab", "client_secret"]
 | 
			
		||||
- path: ["auth.generic_oauth", "client_secret"]
 | 
			
		||||
- path: ["auth.okta", "client_secret"]
 | 
			
		||||
- path: ["auth.azuread", "client_secret"]
 | 
			
		||||
- path: ["auth.grafana_com", "client_secret"]
 | 
			
		||||
- path: ["auth.grafananet", "client_secret"]
 | 
			
		||||
- path: ["azure", "user_identity_client_secret"]
 | 
			
		||||
- path: ["unified_alerting", "ha_redis_password"]
 | 
			
		||||
- path: ["metrics", "basic_auth_password"]
 | 
			
		||||
- path: ["external_image_storage.s3", "secret_key"]
 | 
			
		||||
- path: ["external_image_storage.webdav", "password"]
 | 
			
		||||
- path: ["external_image_storage.azure_blob", "account_key"]
 | 
			
		||||
` | fromYaml -}}
 | 
			
		||||
  {{- if $.Values.assertNoLeakedSecrets -}}
 | 
			
		||||
      {{- $grafanaIni := index .Values "grafana.ini" -}}
 | 
			
		||||
      {{- range $_, $secret := $sensitiveKeysYaml.sensitiveKeys -}}
 | 
			
		||||
        {{- $currentMap := $grafanaIni -}}
 | 
			
		||||
        {{- $shouldContinue := true -}}
 | 
			
		||||
        {{- range $index, $elem := $secret.path -}}
 | 
			
		||||
          {{- if and $shouldContinue (hasKey $currentMap $elem) -}}
 | 
			
		||||
            {{- if eq (len $secret.path) (add1 $index) -}}
 | 
			
		||||
              {{- if not (regexMatch "\\$(?:__(?:env|file|vault))?{[^}]+}" (index $currentMap $elem)) -}}
 | 
			
		||||
                {{- fail (printf "Sensitive key '%s' should not be defined explicitly in values. Use variable expansion instead. You can disable this client-side validation by changing the value of assertNoLeakedSecrets." (join "." $secret.path)) -}}
 | 
			
		||||
              {{- end -}}
 | 
			
		||||
            {{- else -}}
 | 
			
		||||
              {{- $currentMap = index $currentMap $elem -}}
 | 
			
		||||
            {{- end -}}
 | 
			
		||||
          {{- else -}}
 | 
			
		||||
              {{- $shouldContinue = false -}}
 | 
			
		||||
          {{- end -}}
 | 
			
		||||
        {{- end -}}
 | 
			
		||||
      {{- end -}}
 | 
			
		||||
  {{- end -}}
 | 
			
		||||
{{- end -}}
 | 
			
		||||
							
								
								
									
										1389
									
								
								opencloud/charts/grafana/templates/_pod.tpl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1389
									
								
								opencloud/charts/grafana/templates/_pod.tpl
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										25
									
								
								opencloud/charts/grafana/templates/clusterrole.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								opencloud/charts/grafana/templates/clusterrole.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
			
		||||
{{- if and .Values.rbac.create (or (not .Values.rbac.namespaced) .Values.rbac.extraClusterRoleRules) (not .Values.rbac.useExistingClusterRole) }}
 | 
			
		||||
kind: ClusterRole
 | 
			
		||||
apiVersion: rbac.authorization.k8s.io/v1
 | 
			
		||||
metadata:
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
  {{- with .Values.annotations }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}-clusterrole
 | 
			
		||||
{{- if or .Values.sidecar.dashboards.enabled .Values.rbac.extraClusterRoleRules .Values.sidecar.datasources.enabled .Values.sidecar.plugins.enabled .Values.sidecar.alerts.enabled }}
 | 
			
		||||
rules:
 | 
			
		||||
  {{- if or .Values.sidecar.dashboards.enabled .Values.sidecar.datasources.enabled .Values.sidecar.plugins.enabled .Values.sidecar.alerts.enabled }}
 | 
			
		||||
  - apiGroups: [""] # "" indicates the core API group
 | 
			
		||||
    resources: ["configmaps", "secrets"]
 | 
			
		||||
    verbs: ["get", "watch", "list"]
 | 
			
		||||
  {{- end}}
 | 
			
		||||
  {{- with .Values.rbac.extraClusterRoleRules }}
 | 
			
		||||
  {{- toYaml . | nindent 2 }}
 | 
			
		||||
  {{- end}}
 | 
			
		||||
{{- else }}
 | 
			
		||||
rules: []
 | 
			
		||||
{{- end}}
 | 
			
		||||
{{- end}}
 | 
			
		||||
							
								
								
									
										24
									
								
								opencloud/charts/grafana/templates/clusterrolebinding.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								opencloud/charts/grafana/templates/clusterrolebinding.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
{{- if and .Values.rbac.create (or (not .Values.rbac.namespaced) .Values.rbac.extraClusterRoleRules) }}
 | 
			
		||||
kind: ClusterRoleBinding
 | 
			
		||||
apiVersion: rbac.authorization.k8s.io/v1
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}-clusterrolebinding
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
  {{- with .Values.annotations }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
subjects:
 | 
			
		||||
  - kind: ServiceAccount
 | 
			
		||||
    name: {{ include "grafana.serviceAccountName" . }}
 | 
			
		||||
    namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
roleRef:
 | 
			
		||||
  kind: ClusterRole
 | 
			
		||||
  {{- if .Values.rbac.useExistingClusterRole }}
 | 
			
		||||
  name: {{ .Values.rbac.useExistingClusterRole }}
 | 
			
		||||
  {{- else }}
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}-clusterrole
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  apiGroup: rbac.authorization.k8s.io
 | 
			
		||||
{{- end }}
 | 
			
		||||
							
								
								
									
										43
									
								
								opencloud/charts/grafana/templates/configSecret.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								opencloud/charts/grafana/templates/configSecret.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
			
		||||
{{- $createConfigSecret := eq (include "grafana.shouldCreateConfigSecret" .) "true" -}}
 | 
			
		||||
{{- if and .Values.createConfigmap $createConfigSecret }}
 | 
			
		||||
{{- $files := .Files }}
 | 
			
		||||
{{- $root := . -}}
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Secret
 | 
			
		||||
metadata:
 | 
			
		||||
  name: "{{ include "grafana.fullname" . }}-config-secret"
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  labels:
 | 
			
		||||
      {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
  {{- with .Values.annotations }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
data:
 | 
			
		||||
{{- range $key, $value := .Values.alerting }}
 | 
			
		||||
  {{- if (hasKey $value "secretFile") }}
 | 
			
		||||
  {{- $key | nindent 2 }}:
 | 
			
		||||
    {{- toYaml ( $files.Get $value.secretFile ) | b64enc | nindent 4}}
 | 
			
		||||
  {{/* as of https://helm.sh/docs/chart_template_guide/accessing_files/ this will only work if you fork this chart and add files to it*/}}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
stringData:
 | 
			
		||||
{{- range $key, $value := .Values.datasources }}
 | 
			
		||||
{{- if (hasKey $value "secret") }}
 | 
			
		||||
{{- $key | nindent 2 }}: |
 | 
			
		||||
  {{- tpl (toYaml $value.secret | nindent 4) $root }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- range $key, $value := .Values.notifiers }}
 | 
			
		||||
{{- if (hasKey $value "secret") }}
 | 
			
		||||
{{- $key | nindent 2 }}: |
 | 
			
		||||
  {{- tpl (toYaml $value.secret | nindent 4) $root }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- range $key, $value := .Values.alerting }}
 | 
			
		||||
{{ if (hasKey $value "secret") }}
 | 
			
		||||
  {{- $key | nindent 2 }}: |
 | 
			
		||||
    {{- tpl (toYaml $value.secret | nindent 4) $root }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
@@ -0,0 +1,15 @@
 | 
			
		||||
{{- if and .Values.sidecar.dashboards.enabled .Values.sidecar.dashboards.SCProvider }}
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: ConfigMap
 | 
			
		||||
metadata:
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
  {{- with .Values.annotations }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}-config-dashboards
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
data:
 | 
			
		||||
  {{- include "grafana.configDashboardProviderData" . | nindent 2 }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
							
								
								
									
										20
									
								
								opencloud/charts/grafana/templates/configmap.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								opencloud/charts/grafana/templates/configmap.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
{{- if .Values.createConfigmap }}
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: ConfigMap
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
  {{- if or .Values.configMapAnnotations .Values.annotations }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    {{- with .Values.annotations }}
 | 
			
		||||
      {{- toYaml . | nindent 4 }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
    {{- with .Values.configMapAnnotations }}
 | 
			
		||||
      {{- toYaml . | nindent 4 }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
data:
 | 
			
		||||
  {{- include "grafana.configData" . | nindent 2 }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
@@ -0,0 +1,35 @@
 | 
			
		||||
{{- if .Values.dashboards }}
 | 
			
		||||
{{ $files := .Files }}
 | 
			
		||||
{{- range $provider, $dashboards := .Values.dashboards }}
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: ConfigMap
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" $ }}-dashboards-{{ $provider }}
 | 
			
		||||
  namespace: {{ include "grafana.namespace" $ }}
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" $ | nindent 4 }}
 | 
			
		||||
    dashboard-provider: {{ $provider }}
 | 
			
		||||
{{- if $dashboards }}
 | 
			
		||||
data:
 | 
			
		||||
{{- $dashboardFound := false }}
 | 
			
		||||
{{- range $key, $value := $dashboards }}
 | 
			
		||||
{{- if (or (hasKey $value "json") (hasKey $value "file")) }}
 | 
			
		||||
{{- $dashboardFound = true }}
 | 
			
		||||
  {{- print $key | nindent 2 }}.json:
 | 
			
		||||
    {{- if hasKey $value "json" }}
 | 
			
		||||
    |-
 | 
			
		||||
      {{- $value.json | nindent 6 }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
    {{- if hasKey $value "file" }}
 | 
			
		||||
    {{- toYaml ( $files.Get $value.file ) | nindent 4}}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- if not $dashboardFound }}
 | 
			
		||||
  {}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
---
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{- end }}
 | 
			
		||||
							
								
								
									
										53
									
								
								opencloud/charts/grafana/templates/deployment.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								opencloud/charts/grafana/templates/deployment.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
			
		||||
{{- if (and (not .Values.useStatefulSet) (or (not .Values.persistence.enabled) (eq .Values.persistence.type "pvc"))) }}
 | 
			
		||||
apiVersion: apps/v1
 | 
			
		||||
kind: Deployment
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
    {{- with .Values.labels }}
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
  {{- with .Values.annotations }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
spec:
 | 
			
		||||
  {{- if (not .Values.autoscaling.enabled) }}
 | 
			
		||||
  replicas: {{ .Values.replicas }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      {{- include "grafana.selectorLabels" . | nindent 6 }}
 | 
			
		||||
  {{- with .Values.deploymentStrategy }}
 | 
			
		||||
  strategy:
 | 
			
		||||
    {{- toYaml . | trim | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      labels:
 | 
			
		||||
        {{- include "grafana.labels" . | nindent 8 }}
 | 
			
		||||
        {{- with .Values.podLabels }}
 | 
			
		||||
        {{- toYaml . | nindent 8 }}
 | 
			
		||||
        {{- end }}
 | 
			
		||||
      annotations:
 | 
			
		||||
        checksum/config: {{ include "grafana.configData" . | sha256sum }}
 | 
			
		||||
        {{- if .Values.dashboards }}
 | 
			
		||||
        checksum/dashboards-json-config: {{ include (print $.Template.BasePath "/dashboards-json-configmap.yaml") . | sha256sum }}
 | 
			
		||||
        {{- end }}
 | 
			
		||||
        checksum/sc-dashboard-provider-config: {{ include "grafana.configDashboardProviderData" . | sha256sum }}
 | 
			
		||||
        {{- if and (or (and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD)) (and .Values.ldap.enabled (not .Values.ldap.existingSecret))) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}
 | 
			
		||||
        checksum/secret: {{ include "grafana.secretsData" . | sha256sum }}
 | 
			
		||||
        {{- end }}
 | 
			
		||||
        {{- if .Values.envRenderSecret }}
 | 
			
		||||
        checksum/secret-env: {{ tpl (toYaml .Values.envRenderSecret) . | sha256sum }}
 | 
			
		||||
        {{- end }}
 | 
			
		||||
        kubectl.kubernetes.io/default-container: {{ .Chart.Name }}
 | 
			
		||||
        {{- with .Values.podAnnotations }}
 | 
			
		||||
        {{- toYaml . | nindent 8 }}
 | 
			
		||||
        {{- end }}
 | 
			
		||||
    spec:
 | 
			
		||||
      {{- include "grafana.pod" . | nindent 6 }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
							
								
								
									
										4
									
								
								opencloud/charts/grafana/templates/extra-manifests.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								opencloud/charts/grafana/templates/extra-manifests.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
{{ range .Values.extraObjects }}
 | 
			
		||||
---
 | 
			
		||||
{{ tpl (toYaml .) $ }}
 | 
			
		||||
{{ end }}
 | 
			
		||||
							
								
								
									
										22
									
								
								opencloud/charts/grafana/templates/headless-service.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								opencloud/charts/grafana/templates/headless-service.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
{{- $sts := list "sts" "StatefulSet" "statefulset" -}}
 | 
			
		||||
{{- if or .Values.headlessService (and .Values.persistence.enabled (not .Values.persistence.existingClaim) (has .Values.persistence.type $sts)) }}
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Service
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}-headless
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
  {{- with .Values.annotations }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
spec:
 | 
			
		||||
  clusterIP: None
 | 
			
		||||
  selector:
 | 
			
		||||
    {{- include "grafana.selectorLabels" . | nindent 4 }}
 | 
			
		||||
  type: ClusterIP
 | 
			
		||||
  ports:
 | 
			
		||||
  - name: {{ .Values.gossipPortName }}-tcp
 | 
			
		||||
    port: 9094
 | 
			
		||||
{{- end }}
 | 
			
		||||
							
								
								
									
										51
									
								
								opencloud/charts/grafana/templates/hpa.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								opencloud/charts/grafana/templates/hpa.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,51 @@
 | 
			
		||||
{{- $sts := list "sts" "StatefulSet" "statefulset" -}}
 | 
			
		||||
{{- if .Values.autoscaling.enabled }}
 | 
			
		||||
apiVersion: {{ include "grafana.hpa.apiVersion" . }}
 | 
			
		||||
kind: HorizontalPodAutoscaler
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  labels:
 | 
			
		||||
    app.kubernetes.io/name: {{ include "grafana.name" . }}
 | 
			
		||||
    helm.sh/chart: {{ include "grafana.chart" . }}
 | 
			
		||||
    app.kubernetes.io/instance: {{ .Release.Name }}
 | 
			
		||||
spec:
 | 
			
		||||
  scaleTargetRef:
 | 
			
		||||
    apiVersion: apps/v1
 | 
			
		||||
    {{- if has .Values.persistence.type $sts }}
 | 
			
		||||
    kind: StatefulSet
 | 
			
		||||
    {{- else }}
 | 
			
		||||
    kind: Deployment
 | 
			
		||||
    {{- end }}
 | 
			
		||||
    name: {{ include "grafana.fullname" . }}
 | 
			
		||||
  minReplicas: {{ .Values.autoscaling.minReplicas }}
 | 
			
		||||
  maxReplicas: {{ .Values.autoscaling.maxReplicas }}
 | 
			
		||||
  metrics:
 | 
			
		||||
    {{- if .Values.autoscaling.targetMemory }}
 | 
			
		||||
    - type: Resource
 | 
			
		||||
      resource:
 | 
			
		||||
        name: memory
 | 
			
		||||
        {{- if eq (include "grafana.hpa.apiVersion" .) "autoscaling/v2beta1" }}
 | 
			
		||||
        targetAverageUtilization: {{ .Values.autoscaling.targetMemory }}
 | 
			
		||||
        {{- else }}
 | 
			
		||||
        target:
 | 
			
		||||
          type: Utilization
 | 
			
		||||
          averageUtilization: {{ .Values.autoscaling.targetMemory }}
 | 
			
		||||
        {{- end }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
    {{- if .Values.autoscaling.targetCPU }}
 | 
			
		||||
    - type: Resource
 | 
			
		||||
      resource:
 | 
			
		||||
        name: cpu
 | 
			
		||||
        {{- if eq (include "grafana.hpa.apiVersion" .) "autoscaling/v2beta1" }}
 | 
			
		||||
        targetAverageUtilization: {{ .Values.autoscaling.targetCPU }}
 | 
			
		||||
        {{- else }}
 | 
			
		||||
        target:
 | 
			
		||||
          type: Utilization
 | 
			
		||||
          averageUtilization: {{ .Values.autoscaling.targetCPU }}
 | 
			
		||||
        {{- end }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
  {{- if .Values.autoscaling.behavior }}
 | 
			
		||||
  behavior: {{ toYaml .Values.autoscaling.behavior | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
@@ -0,0 +1,199 @@
 | 
			
		||||
{{ if .Values.imageRenderer.enabled }}
 | 
			
		||||
{{- $root := . -}}
 | 
			
		||||
apiVersion: apps/v1
 | 
			
		||||
kind: Deployment
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}-image-renderer
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.imageRenderer.labels" . | nindent 4 }}
 | 
			
		||||
    {{- with .Values.imageRenderer.labels }}
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
  {{- with .Values.imageRenderer.annotations }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
spec:
 | 
			
		||||
  {{- if and (not .Values.imageRenderer.autoscaling.enabled) (.Values.imageRenderer.replicas) }}
 | 
			
		||||
  replicas: {{ .Values.imageRenderer.replicas }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  revisionHistoryLimit: {{ .Values.imageRenderer.revisionHistoryLimit }}
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      {{- include "grafana.imageRenderer.selectorLabels" . | nindent 6 }}
 | 
			
		||||
 | 
			
		||||
  {{- with .Values.imageRenderer.deploymentStrategy }}
 | 
			
		||||
  strategy:
 | 
			
		||||
    {{- toYaml . | trim | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      labels:
 | 
			
		||||
        {{- include "grafana.imageRenderer.selectorLabels" . | nindent 8 }}
 | 
			
		||||
        {{- with .Values.imageRenderer.podLabels }}
 | 
			
		||||
        {{- toYaml . | nindent 8 }}
 | 
			
		||||
        {{- end }}
 | 
			
		||||
      annotations:
 | 
			
		||||
        checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
 | 
			
		||||
        {{- with .Values.imageRenderer.podAnnotations }}
 | 
			
		||||
        {{- toYaml . | nindent 8 }}
 | 
			
		||||
        {{- end }}
 | 
			
		||||
    spec:
 | 
			
		||||
      {{- with .Values.imageRenderer.schedulerName }}
 | 
			
		||||
      schedulerName: "{{ . }}"
 | 
			
		||||
      {{- end }}
 | 
			
		||||
      {{- with .Values.imageRenderer.serviceAccountName }}
 | 
			
		||||
      serviceAccountName: "{{ . }}"
 | 
			
		||||
      {{- end }}
 | 
			
		||||
      {{- with .Values.imageRenderer.securityContext }}
 | 
			
		||||
      securityContext:
 | 
			
		||||
        {{- toYaml . | nindent 8 }}
 | 
			
		||||
      {{- end }}
 | 
			
		||||
      {{- with .Values.imageRenderer.hostAliases }}
 | 
			
		||||
      hostAliases:
 | 
			
		||||
        {{- toYaml . | nindent 8 }}
 | 
			
		||||
      {{- end }}
 | 
			
		||||
      {{- with .Values.imageRenderer.priorityClassName }}
 | 
			
		||||
      priorityClassName: {{ . }}
 | 
			
		||||
      {{- end }}
 | 
			
		||||
      {{- with .Values.imageRenderer.image.pullSecrets }}
 | 
			
		||||
      imagePullSecrets:
 | 
			
		||||
        {{- range . }}
 | 
			
		||||
        - name: {{ tpl . $root }}
 | 
			
		||||
        {{- end}}
 | 
			
		||||
      {{- end }}
 | 
			
		||||
      containers:
 | 
			
		||||
        - name: {{ .Chart.Name }}-image-renderer
 | 
			
		||||
          {{- $registry := .Values.global.imageRegistry | default .Values.imageRenderer.image.registry -}}
 | 
			
		||||
          {{- if .Values.imageRenderer.image.sha }}
 | 
			
		||||
          image: "{{ $registry }}/{{ .Values.imageRenderer.image.repository }}:{{ .Values.imageRenderer.image.tag }}@sha256:{{ .Values.imageRenderer.image.sha }}"
 | 
			
		||||
          {{- else }}
 | 
			
		||||
          image: "{{ $registry }}/{{ .Values.imageRenderer.image.repository }}:{{ .Values.imageRenderer.image.tag }}"
 | 
			
		||||
          {{- end }}
 | 
			
		||||
          imagePullPolicy: {{ .Values.imageRenderer.image.pullPolicy }}
 | 
			
		||||
          {{- if .Values.imageRenderer.command }}
 | 
			
		||||
          command:
 | 
			
		||||
            {{- range .Values.imageRenderer.command }}
 | 
			
		||||
            - {{ . }}
 | 
			
		||||
            {{- end }}
 | 
			
		||||
          {{- end}}
 | 
			
		||||
          ports:
 | 
			
		||||
            - name: {{ .Values.imageRenderer.service.portName }}
 | 
			
		||||
              containerPort: {{ .Values.imageRenderer.service.targetPort }}
 | 
			
		||||
              protocol: TCP
 | 
			
		||||
          livenessProbe:
 | 
			
		||||
            httpGet:
 | 
			
		||||
              path: /
 | 
			
		||||
              port: {{ .Values.imageRenderer.service.portName }}
 | 
			
		||||
          env:
 | 
			
		||||
            - name: HTTP_PORT
 | 
			
		||||
              value: {{ .Values.imageRenderer.service.targetPort | quote }}
 | 
			
		||||
          {{- if .Values.imageRenderer.serviceMonitor.enabled }}
 | 
			
		||||
            - name: ENABLE_METRICS
 | 
			
		||||
              value: "true"
 | 
			
		||||
          {{- end }}
 | 
			
		||||
          {{- range $key, $value := .Values.imageRenderer.envValueFrom }}
 | 
			
		||||
            - name: {{ $key | quote }}
 | 
			
		||||
              valueFrom:
 | 
			
		||||
                {{- tpl (toYaml $value) $ | nindent 16 }}
 | 
			
		||||
          {{- end }}
 | 
			
		||||
          {{- range $key, $value := .Values.imageRenderer.env }}
 | 
			
		||||
            - name: {{ $key | quote }}
 | 
			
		||||
              value: {{ $value | quote }}
 | 
			
		||||
          {{- end }}
 | 
			
		||||
          {{- with .Values.imageRenderer.containerSecurityContext }}
 | 
			
		||||
          securityContext:
 | 
			
		||||
            {{- toYaml . | nindent 12 }}
 | 
			
		||||
          {{- end }}
 | 
			
		||||
          volumeMounts:
 | 
			
		||||
            - mountPath: /tmp
 | 
			
		||||
              name: image-renderer-tmpfs
 | 
			
		||||
            {{- range .Values.imageRenderer.extraConfigmapMounts }}
 | 
			
		||||
            - name: {{ tpl .name $root }}
 | 
			
		||||
              mountPath: {{ tpl .mountPath $root }}
 | 
			
		||||
              subPath: {{ tpl (.subPath | default "") $root }}
 | 
			
		||||
              readOnly: {{ .readOnly }}
 | 
			
		||||
            {{- end }}
 | 
			
		||||
            {{- range .Values.imageRenderer.extraSecretMounts }}
 | 
			
		||||
            - name: {{ .name }}
 | 
			
		||||
              mountPath: {{ .mountPath }}
 | 
			
		||||
              readOnly: {{ .readOnly }}
 | 
			
		||||
              subPath: {{ .subPath | default "" }}
 | 
			
		||||
            {{- end }}
 | 
			
		||||
            {{- range .Values.imageRenderer.extraVolumeMounts }}
 | 
			
		||||
            - name: {{ .name }}
 | 
			
		||||
              mountPath: {{ .mountPath }}
 | 
			
		||||
              subPath: {{ .subPath | default "" }}
 | 
			
		||||
              readOnly: {{ .readOnly }}
 | 
			
		||||
            {{- end }}
 | 
			
		||||
          {{- with .Values.imageRenderer.resources }}
 | 
			
		||||
          resources:
 | 
			
		||||
            {{- toYaml . | nindent 12 }}
 | 
			
		||||
          {{- end }}
 | 
			
		||||
      {{- with .Values.imageRenderer.nodeSelector }}
 | 
			
		||||
      nodeSelector:
 | 
			
		||||
        {{- toYaml . | nindent 8 }}
 | 
			
		||||
      {{- end }}
 | 
			
		||||
      {{- with .Values.imageRenderer.affinity }}
 | 
			
		||||
      affinity:
 | 
			
		||||
        {{- tpl (toYaml .) $root | nindent 8 }}
 | 
			
		||||
      {{- end }}
 | 
			
		||||
      {{- with .Values.imageRenderer.tolerations }}
 | 
			
		||||
      tolerations:
 | 
			
		||||
        {{- toYaml . | nindent 8 }}
 | 
			
		||||
      {{- end }}
 | 
			
		||||
      volumes:
 | 
			
		||||
        - name: image-renderer-tmpfs
 | 
			
		||||
          emptyDir: {}
 | 
			
		||||
        {{- range .Values.imageRenderer.extraConfigmapMounts }}
 | 
			
		||||
        - name: {{ tpl .name $root }}
 | 
			
		||||
          configMap:
 | 
			
		||||
            name: {{ tpl .configMap $root }}
 | 
			
		||||
            {{- with .items }}
 | 
			
		||||
            items:
 | 
			
		||||
              {{- toYaml . | nindent 14 }}
 | 
			
		||||
            {{- end }}
 | 
			
		||||
        {{- end }}
 | 
			
		||||
        {{- range .Values.imageRenderer.extraSecretMounts }}
 | 
			
		||||
        {{- if .secretName }}
 | 
			
		||||
        - name: {{ .name }}
 | 
			
		||||
          secret:
 | 
			
		||||
            secretName: {{ .secretName }}
 | 
			
		||||
            defaultMode: {{ .defaultMode }}
 | 
			
		||||
            {{- with .items }}
 | 
			
		||||
            items:
 | 
			
		||||
              {{- toYaml . | nindent 14 }}
 | 
			
		||||
            {{- end }}
 | 
			
		||||
        {{- else if .projected }}
 | 
			
		||||
        - name: {{ .name }}
 | 
			
		||||
          projected:
 | 
			
		||||
            {{- toYaml .projected | nindent 12 }}
 | 
			
		||||
        {{- else if .csi }}
 | 
			
		||||
        - name: {{ .name }}
 | 
			
		||||
          csi:
 | 
			
		||||
            {{- toYaml .csi | nindent 12 }}
 | 
			
		||||
        {{- end }}
 | 
			
		||||
        {{- end }}
 | 
			
		||||
        {{- range .Values.imageRenderer.extraVolumes }}
 | 
			
		||||
        - name: {{ .name }}
 | 
			
		||||
          {{- if .existingClaim }}
 | 
			
		||||
          persistentVolumeClaim:
 | 
			
		||||
            claimName: {{ .existingClaim }}
 | 
			
		||||
          {{- else if .hostPath }}
 | 
			
		||||
          hostPath:
 | 
			
		||||
            {{ toYaml .hostPath | nindent 12 }}
 | 
			
		||||
          {{- else if .csi }}
 | 
			
		||||
          csi:
 | 
			
		||||
            {{- toYaml .csi | nindent 12 }}
 | 
			
		||||
          {{- else if .configMap }}
 | 
			
		||||
          configMap:
 | 
			
		||||
            {{- toYaml .configMap | nindent 12 }}
 | 
			
		||||
          {{- else if .emptyDir }}
 | 
			
		||||
          emptyDir:
 | 
			
		||||
            {{- toYaml .emptyDir | nindent 12 }}
 | 
			
		||||
          {{- else }}
 | 
			
		||||
          emptyDir: {}
 | 
			
		||||
          {{- end }}
 | 
			
		||||
        {{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
							
								
								
									
										46
									
								
								opencloud/charts/grafana/templates/image-renderer-hpa.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								opencloud/charts/grafana/templates/image-renderer-hpa.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,46 @@
 | 
			
		||||
{{- if and .Values.imageRenderer.enabled .Values.imageRenderer.autoscaling.enabled }}
 | 
			
		||||
apiVersion: {{ include "grafana.hpa.apiVersion" . }}
 | 
			
		||||
kind: HorizontalPodAutoscaler
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}-image-renderer
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  labels:
 | 
			
		||||
    app.kubernetes.io/name: {{ include "grafana.name" . }}-image-renderer
 | 
			
		||||
    helm.sh/chart: {{ include "grafana.chart" . }}
 | 
			
		||||
    app.kubernetes.io/instance: {{ .Release.Name }}
 | 
			
		||||
spec:
 | 
			
		||||
  scaleTargetRef:
 | 
			
		||||
    apiVersion: apps/v1
 | 
			
		||||
    kind: Deployment
 | 
			
		||||
    name: {{ include "grafana.fullname" . }}-image-renderer
 | 
			
		||||
  minReplicas: {{ .Values.imageRenderer.autoscaling.minReplicas }}
 | 
			
		||||
  maxReplicas: {{ .Values.imageRenderer.autoscaling.maxReplicas }}
 | 
			
		||||
  metrics:
 | 
			
		||||
    {{- if .Values.imageRenderer.autoscaling.targetMemory }}
 | 
			
		||||
    - type: Resource
 | 
			
		||||
      resource:
 | 
			
		||||
        name: memory
 | 
			
		||||
        {{- if eq (include "grafana.hpa.apiVersion" .) "autoscaling/v2beta1" }}
 | 
			
		||||
        targetAverageUtilization: {{ .Values.imageRenderer.autoscaling.targetMemory }}
 | 
			
		||||
        {{- else }}
 | 
			
		||||
        target:
 | 
			
		||||
          type: Utilization
 | 
			
		||||
          averageUtilization: {{ .Values.imageRenderer.autoscaling.targetMemory }}
 | 
			
		||||
        {{- end }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
    {{- if .Values.imageRenderer.autoscaling.targetCPU }}
 | 
			
		||||
    - type: Resource
 | 
			
		||||
      resource:
 | 
			
		||||
        name: cpu
 | 
			
		||||
        {{- if eq (include "grafana.hpa.apiVersion" .) "autoscaling/v2beta1" }}
 | 
			
		||||
        targetAverageUtilization: {{ .Values.imageRenderer.autoscaling.targetCPU }}
 | 
			
		||||
        {{- else }}
 | 
			
		||||
        target:
 | 
			
		||||
          type: Utilization
 | 
			
		||||
          averageUtilization: {{ .Values.imageRenderer.autoscaling.targetCPU }}
 | 
			
		||||
        {{- end }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
  {{- if .Values.imageRenderer.autoscaling.behavior }}
 | 
			
		||||
  behavior: {{ toYaml .Values.imageRenderer.autoscaling.behavior | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
@@ -0,0 +1,79 @@
 | 
			
		||||
{{- if and .Values.imageRenderer.enabled .Values.imageRenderer.networkPolicy.limitIngress }}
 | 
			
		||||
---
 | 
			
		||||
apiVersion: networking.k8s.io/v1
 | 
			
		||||
kind: NetworkPolicy
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}-image-renderer-ingress
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    comment: Limit image-renderer ingress traffic from grafana
 | 
			
		||||
spec:
 | 
			
		||||
  podSelector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      {{- include "grafana.imageRenderer.selectorLabels" . | nindent 6 }}
 | 
			
		||||
      {{- with .Values.imageRenderer.podLabels }}
 | 
			
		||||
      {{- toYaml . | nindent 6 }}
 | 
			
		||||
      {{- end }}
 | 
			
		||||
 | 
			
		||||
  policyTypes:
 | 
			
		||||
    - Ingress
 | 
			
		||||
  ingress:
 | 
			
		||||
    - ports:
 | 
			
		||||
        - port: {{ .Values.imageRenderer.service.targetPort }}
 | 
			
		||||
          protocol: TCP
 | 
			
		||||
      from:
 | 
			
		||||
        - namespaceSelector:
 | 
			
		||||
            matchLabels:
 | 
			
		||||
              kubernetes.io/metadata.name: {{ include "grafana.namespace" . }}
 | 
			
		||||
          podSelector:
 | 
			
		||||
            matchLabels:
 | 
			
		||||
              {{- include "grafana.selectorLabels" . | nindent 14 }}
 | 
			
		||||
              {{- with .Values.podLabels }}
 | 
			
		||||
              {{- toYaml . | nindent 14 }}
 | 
			
		||||
              {{- end }}
 | 
			
		||||
        {{- with .Values.imageRenderer.networkPolicy.extraIngressSelectors -}}
 | 
			
		||||
        {{ toYaml . | nindent 8 }}
 | 
			
		||||
        {{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
 | 
			
		||||
{{- if and .Values.imageRenderer.enabled .Values.imageRenderer.networkPolicy.limitEgress }}
 | 
			
		||||
---
 | 
			
		||||
apiVersion: networking.k8s.io/v1
 | 
			
		||||
kind: NetworkPolicy
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}-image-renderer-egress
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    comment: Limit image-renderer egress traffic to grafana
 | 
			
		||||
spec:
 | 
			
		||||
  podSelector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      {{- include "grafana.imageRenderer.selectorLabels" . | nindent 6 }}
 | 
			
		||||
      {{- with .Values.imageRenderer.podLabels }}
 | 
			
		||||
      {{- toYaml . | nindent 6 }}
 | 
			
		||||
      {{- end }}
 | 
			
		||||
 | 
			
		||||
  policyTypes:
 | 
			
		||||
    - Egress
 | 
			
		||||
  egress:
 | 
			
		||||
    # allow dns resolution
 | 
			
		||||
    - ports:
 | 
			
		||||
        - port: 53
 | 
			
		||||
          protocol: UDP
 | 
			
		||||
        - port: 53
 | 
			
		||||
          protocol: TCP
 | 
			
		||||
    # talk only to grafana
 | 
			
		||||
    - ports:
 | 
			
		||||
        - port: {{ .Values.service.targetPort }}
 | 
			
		||||
          protocol: TCP
 | 
			
		||||
      to:
 | 
			
		||||
        - namespaceSelector:
 | 
			
		||||
            matchLabels:
 | 
			
		||||
              kubernetes.io/metadata.name: {{ include "grafana.namespace" . }}
 | 
			
		||||
          podSelector:
 | 
			
		||||
            matchLabels:
 | 
			
		||||
              {{- include "grafana.selectorLabels" . | nindent 14 }}
 | 
			
		||||
              {{- with .Values.podLabels }}
 | 
			
		||||
              {{- toYaml . | nindent 14 }}
 | 
			
		||||
              {{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
@@ -0,0 +1,31 @@
 | 
			
		||||
{{- if and .Values.imageRenderer.enabled .Values.imageRenderer.service.enabled }}
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Service
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}-image-renderer
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.imageRenderer.labels" . | nindent 4 }}
 | 
			
		||||
    {{- with .Values.imageRenderer.service.labels }}
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
  {{- with .Values.imageRenderer.service.annotations }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
spec:
 | 
			
		||||
  type: ClusterIP
 | 
			
		||||
  {{- with .Values.imageRenderer.service.clusterIP }}
 | 
			
		||||
  clusterIP: {{ . }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  ports:
 | 
			
		||||
    - name: {{ .Values.imageRenderer.service.portName }}
 | 
			
		||||
      port: {{ .Values.imageRenderer.service.port }}
 | 
			
		||||
      protocol: TCP
 | 
			
		||||
      targetPort: {{ .Values.imageRenderer.service.targetPort }}
 | 
			
		||||
      {{- with .Values.imageRenderer.appProtocol }}
 | 
			
		||||
      appProtocol: {{ . }}
 | 
			
		||||
      {{- end }}
 | 
			
		||||
  selector:
 | 
			
		||||
    {{- include "grafana.imageRenderer.selectorLabels" . | nindent 4 }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
@@ -0,0 +1,48 @@
 | 
			
		||||
{{- if .Values.imageRenderer.serviceMonitor.enabled }}
 | 
			
		||||
---
 | 
			
		||||
apiVersion: monitoring.coreos.com/v1
 | 
			
		||||
kind: ServiceMonitor
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}-image-renderer
 | 
			
		||||
  {{- if .Values.imageRenderer.serviceMonitor.namespace }}
 | 
			
		||||
  namespace: {{ tpl .Values.imageRenderer.serviceMonitor.namespace . }}
 | 
			
		||||
  {{- else }}
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.imageRenderer.labels" . | nindent 4 }}
 | 
			
		||||
    {{- with .Values.imageRenderer.serviceMonitor.labels }}
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
spec:
 | 
			
		||||
  endpoints:
 | 
			
		||||
  - port: {{ .Values.imageRenderer.service.portName }}
 | 
			
		||||
    {{- with .Values.imageRenderer.serviceMonitor.interval }}
 | 
			
		||||
    interval: {{ . }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
    {{- with .Values.imageRenderer.serviceMonitor.scrapeTimeout }}
 | 
			
		||||
    scrapeTimeout: {{ . }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
    honorLabels: true
 | 
			
		||||
    path: {{ .Values.imageRenderer.serviceMonitor.path }}
 | 
			
		||||
    scheme: {{ .Values.imageRenderer.serviceMonitor.scheme }}
 | 
			
		||||
    {{- with .Values.imageRenderer.serviceMonitor.tlsConfig }}
 | 
			
		||||
    tlsConfig:
 | 
			
		||||
      {{- toYaml . | nindent 6 }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
    {{- with .Values.imageRenderer.serviceMonitor.relabelings }}
 | 
			
		||||
    relabelings:
 | 
			
		||||
      {{- toYaml . | nindent 6 }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
  jobLabel: "{{ .Release.Name }}-image-renderer"
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      {{- include "grafana.imageRenderer.selectorLabels" . | nindent 6 }}
 | 
			
		||||
  namespaceSelector:
 | 
			
		||||
    matchNames:
 | 
			
		||||
      - {{ include "grafana.namespace" . }}
 | 
			
		||||
  {{- with .Values.imageRenderer.serviceMonitor.targetLabels }}
 | 
			
		||||
  targetLabels:
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
							
								
								
									
										78
									
								
								opencloud/charts/grafana/templates/ingress.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								opencloud/charts/grafana/templates/ingress.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,78 @@
 | 
			
		||||
{{- if .Values.ingress.enabled -}}
 | 
			
		||||
{{- $ingressApiIsStable := eq (include "grafana.ingress.isStable" .) "true" -}}
 | 
			
		||||
{{- $ingressSupportsIngressClassName := eq (include "grafana.ingress.supportsIngressClassName" .) "true" -}}
 | 
			
		||||
{{- $ingressSupportsPathType := eq (include "grafana.ingress.supportsPathType" .) "true" -}}
 | 
			
		||||
{{- $fullName := include "grafana.fullname" . -}}
 | 
			
		||||
{{- $servicePort := .Values.service.port -}}
 | 
			
		||||
{{- $ingressPath := .Values.ingress.path -}}
 | 
			
		||||
{{- $ingressPathType := .Values.ingress.pathType -}}
 | 
			
		||||
{{- $extraPaths := .Values.ingress.extraPaths -}}
 | 
			
		||||
apiVersion: {{ include "grafana.ingress.apiVersion" . }}
 | 
			
		||||
kind: Ingress
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ $fullName }}
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
    {{- with .Values.ingress.labels }}
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
  {{- with .Values.ingress.annotations }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    {{- range $key, $value := . }}
 | 
			
		||||
    {{ $key }}: {{ tpl $value $ | quote }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
spec:
 | 
			
		||||
  {{- if and $ingressSupportsIngressClassName .Values.ingress.ingressClassName }}
 | 
			
		||||
  ingressClassName: {{ .Values.ingress.ingressClassName }}
 | 
			
		||||
  {{- end -}}
 | 
			
		||||
  {{- with .Values.ingress.tls }}
 | 
			
		||||
  tls:
 | 
			
		||||
    {{- tpl (toYaml .) $ | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  rules:
 | 
			
		||||
  {{- if .Values.ingress.hosts  }}
 | 
			
		||||
  {{- range .Values.ingress.hosts }}
 | 
			
		||||
    - host: {{ tpl . $ | quote }}
 | 
			
		||||
      http:
 | 
			
		||||
        paths:
 | 
			
		||||
          {{- with $extraPaths }}
 | 
			
		||||
          {{- toYaml . | nindent 10 }}
 | 
			
		||||
          {{- end }}
 | 
			
		||||
          - path: {{ $ingressPath }}
 | 
			
		||||
            {{- if $ingressSupportsPathType }}
 | 
			
		||||
            pathType: {{ $ingressPathType }}
 | 
			
		||||
            {{- end }}
 | 
			
		||||
            backend:
 | 
			
		||||
              {{- if $ingressApiIsStable }}
 | 
			
		||||
              service:
 | 
			
		||||
                name: {{ $fullName }}
 | 
			
		||||
                port:
 | 
			
		||||
                  number: {{ $servicePort }}
 | 
			
		||||
              {{- else }}
 | 
			
		||||
              serviceName: {{ $fullName }}
 | 
			
		||||
              servicePort: {{ $servicePort }}
 | 
			
		||||
              {{- end }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- else }}
 | 
			
		||||
    - http:
 | 
			
		||||
        paths:
 | 
			
		||||
          - backend:
 | 
			
		||||
              {{- if $ingressApiIsStable }}
 | 
			
		||||
              service:
 | 
			
		||||
                name: {{ $fullName }}
 | 
			
		||||
                port:
 | 
			
		||||
                  number: {{ $servicePort }}
 | 
			
		||||
              {{- else }}
 | 
			
		||||
              serviceName: {{ $fullName }}
 | 
			
		||||
              servicePort: {{ $servicePort }}
 | 
			
		||||
              {{- end }}
 | 
			
		||||
            {{- with $ingressPath }}
 | 
			
		||||
            path: {{ . }}
 | 
			
		||||
            {{- end }}
 | 
			
		||||
            {{- if $ingressSupportsPathType }}
 | 
			
		||||
            pathType: {{ $ingressPathType }}
 | 
			
		||||
            {{- end }}
 | 
			
		||||
  {{- end -}}
 | 
			
		||||
{{- end }}
 | 
			
		||||
							
								
								
									
										61
									
								
								opencloud/charts/grafana/templates/networkpolicy.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								opencloud/charts/grafana/templates/networkpolicy.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,61 @@
 | 
			
		||||
{{- if .Values.networkPolicy.enabled }}
 | 
			
		||||
apiVersion: networking.k8s.io/v1
 | 
			
		||||
kind: NetworkPolicy
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
    {{- with .Values.labels }}
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
  {{- with .Values.annotations }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
spec:
 | 
			
		||||
  policyTypes:
 | 
			
		||||
    {{- if .Values.networkPolicy.ingress }}
 | 
			
		||||
    - Ingress
 | 
			
		||||
    {{- end }}
 | 
			
		||||
    {{- if .Values.networkPolicy.egress.enabled }}
 | 
			
		||||
    - Egress
 | 
			
		||||
    {{- end }}
 | 
			
		||||
  podSelector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      {{- include "grafana.selectorLabels" . | nindent 6 }}
 | 
			
		||||
 | 
			
		||||
  {{- if .Values.networkPolicy.egress.enabled }}
 | 
			
		||||
  egress:
 | 
			
		||||
    {{- if not .Values.networkPolicy.egress.blockDNSResolution }}
 | 
			
		||||
    - ports:
 | 
			
		||||
        - port: 53
 | 
			
		||||
          protocol: UDP
 | 
			
		||||
    {{- end }}
 | 
			
		||||
    - ports:
 | 
			
		||||
        {{ .Values.networkPolicy.egress.ports | toJson }}
 | 
			
		||||
      {{- with .Values.networkPolicy.egress.to }}
 | 
			
		||||
      to:
 | 
			
		||||
        {{- toYaml . | nindent 12 }}
 | 
			
		||||
      {{- end }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- if .Values.networkPolicy.ingress }}
 | 
			
		||||
  ingress:
 | 
			
		||||
    - ports:
 | 
			
		||||
      - port: {{ .Values.service.targetPort }}
 | 
			
		||||
      {{- if not .Values.networkPolicy.allowExternal }}
 | 
			
		||||
      from:
 | 
			
		||||
        - podSelector:
 | 
			
		||||
            matchLabels:
 | 
			
		||||
              {{ include "grafana.fullname" . }}-client: "true"
 | 
			
		||||
        {{- with .Values.networkPolicy.explicitNamespacesSelector }}
 | 
			
		||||
        - namespaceSelector:
 | 
			
		||||
            {{- toYaml . | nindent 12 }}
 | 
			
		||||
        {{- end }}
 | 
			
		||||
        - podSelector:
 | 
			
		||||
            matchLabels:
 | 
			
		||||
              {{- include "grafana.labels" . | nindent 14 }}
 | 
			
		||||
              role: read
 | 
			
		||||
      {{- end }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
							
								
								
									
										22
									
								
								opencloud/charts/grafana/templates/poddisruptionbudget.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								opencloud/charts/grafana/templates/poddisruptionbudget.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
{{- if .Values.podDisruptionBudget }}
 | 
			
		||||
apiVersion: {{ include "grafana.podDisruptionBudget.apiVersion" . }}
 | 
			
		||||
kind: PodDisruptionBudget
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
    {{- with .Values.labels }}
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
spec:
 | 
			
		||||
  {{- with .Values.podDisruptionBudget.minAvailable }}
 | 
			
		||||
  minAvailable: {{ . }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- with .Values.podDisruptionBudget.maxUnavailable }}
 | 
			
		||||
  maxUnavailable: {{ . }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      {{- include "grafana.selectorLabels" . | nindent 6 }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
							
								
								
									
										49
									
								
								opencloud/charts/grafana/templates/podsecuritypolicy.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								opencloud/charts/grafana/templates/podsecuritypolicy.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
			
		||||
{{- if and .Values.rbac.pspEnabled (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }}
 | 
			
		||||
apiVersion: policy/v1beta1
 | 
			
		||||
kind: PodSecurityPolicy
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default,runtime/default'
 | 
			
		||||
    seccomp.security.alpha.kubernetes.io/defaultProfileName:  'docker/default'
 | 
			
		||||
    {{- if .Values.rbac.pspUseAppArmor }}
 | 
			
		||||
    apparmor.security.beta.kubernetes.io/allowedProfileNames: 'runtime/default'
 | 
			
		||||
    apparmor.security.beta.kubernetes.io/defaultProfileName:  'runtime/default'
 | 
			
		||||
    {{- end }}
 | 
			
		||||
spec:
 | 
			
		||||
  privileged: false
 | 
			
		||||
  allowPrivilegeEscalation: false
 | 
			
		||||
  requiredDropCapabilities:
 | 
			
		||||
    # Default set from Docker, with DAC_OVERRIDE and CHOWN
 | 
			
		||||
      - ALL
 | 
			
		||||
  volumes:
 | 
			
		||||
    - 'configMap'
 | 
			
		||||
    - 'emptyDir'
 | 
			
		||||
    - 'projected'
 | 
			
		||||
    - 'csi'
 | 
			
		||||
    - 'secret'
 | 
			
		||||
    - 'downwardAPI'
 | 
			
		||||
    - 'persistentVolumeClaim'
 | 
			
		||||
  hostNetwork: false
 | 
			
		||||
  hostIPC: false
 | 
			
		||||
  hostPID: false
 | 
			
		||||
  runAsUser:
 | 
			
		||||
    rule: 'RunAsAny'
 | 
			
		||||
  seLinux:
 | 
			
		||||
    rule: 'RunAsAny'
 | 
			
		||||
  supplementalGroups:
 | 
			
		||||
    rule: 'MustRunAs'
 | 
			
		||||
    ranges:
 | 
			
		||||
      # Forbid adding the root group.
 | 
			
		||||
      - min: 1
 | 
			
		||||
        max: 65535
 | 
			
		||||
  fsGroup:
 | 
			
		||||
    rule: 'MustRunAs'
 | 
			
		||||
    ranges:
 | 
			
		||||
      # Forbid adding the root group.
 | 
			
		||||
      - min: 1
 | 
			
		||||
        max: 65535
 | 
			
		||||
  readOnlyRootFilesystem: false
 | 
			
		||||
{{- end }}
 | 
			
		||||
							
								
								
									
										39
									
								
								opencloud/charts/grafana/templates/pvc.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								opencloud/charts/grafana/templates/pvc.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
{{- if and (not .Values.useStatefulSet) .Values.persistence.enabled (not .Values.persistence.existingClaim) (eq .Values.persistence.type "pvc")}}
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: PersistentVolumeClaim
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
    {{- with .Values.persistence.extraPvcLabels }}
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
  {{- with .Values.persistence.annotations  }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- with .Values.persistence.finalizers  }}
 | 
			
		||||
  finalizers:
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
spec:
 | 
			
		||||
  accessModes:
 | 
			
		||||
    {{- range .Values.persistence.accessModes }}
 | 
			
		||||
    - {{ . | quote }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
  resources:
 | 
			
		||||
    requests:
 | 
			
		||||
      storage: {{ .Values.persistence.size | quote }}
 | 
			
		||||
  {{- if and (.Values.persistence.lookupVolumeName) (lookup "v1" "PersistentVolumeClaim" (include "grafana.namespace" .) (include "grafana.fullname" .)) }}
 | 
			
		||||
  volumeName: {{ (lookup "v1" "PersistentVolumeClaim" (include "grafana.namespace" .) (include "grafana.fullname" .)).spec.volumeName }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- with .Values.persistence.storageClassName }}
 | 
			
		||||
  storageClassName: {{ . }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- with .Values.persistence.selectorLabels }}
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
    {{- toYaml . | nindent 6 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
							
								
								
									
										32
									
								
								opencloud/charts/grafana/templates/role.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								opencloud/charts/grafana/templates/role.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
{{- if and .Values.rbac.create (not .Values.rbac.useExistingRole) -}}
 | 
			
		||||
apiVersion: rbac.authorization.k8s.io/v1
 | 
			
		||||
kind: Role
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
  {{- with .Values.annotations }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
{{- if or .Values.rbac.pspEnabled (and .Values.rbac.namespaced (or .Values.sidecar.dashboards.enabled .Values.sidecar.datasources.enabled .Values.sidecar.plugins.enabled .Values.rbac.extraRoleRules)) }}
 | 
			
		||||
rules:
 | 
			
		||||
  {{- if and .Values.rbac.pspEnabled (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") }}
 | 
			
		||||
  - apiGroups:      ['extensions']
 | 
			
		||||
    resources:      ['podsecuritypolicies']
 | 
			
		||||
    verbs:          ['use']
 | 
			
		||||
    resourceNames:  [{{ include "grafana.fullname" . }}]
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- if and .Values.rbac.namespaced (or .Values.sidecar.dashboards.enabled .Values.sidecar.datasources.enabled .Values.sidecar.plugins.enabled) }}
 | 
			
		||||
  - apiGroups: [""] # "" indicates the core API group
 | 
			
		||||
    resources: ["configmaps", "secrets"]
 | 
			
		||||
    verbs: ["get", "watch", "list"]
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- with .Values.rbac.extraRoleRules }}
 | 
			
		||||
  {{- toYaml . | nindent 2 }}
 | 
			
		||||
  {{- end}}
 | 
			
		||||
{{- else }}
 | 
			
		||||
rules: []
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
							
								
								
									
										25
									
								
								opencloud/charts/grafana/templates/rolebinding.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								opencloud/charts/grafana/templates/rolebinding.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
			
		||||
{{- if .Values.rbac.create }}
 | 
			
		||||
apiVersion: rbac.authorization.k8s.io/v1
 | 
			
		||||
kind: RoleBinding
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
  {{- with .Values.annotations }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
roleRef:
 | 
			
		||||
  apiGroup: rbac.authorization.k8s.io
 | 
			
		||||
  kind: Role
 | 
			
		||||
  {{- if .Values.rbac.useExistingRole }}
 | 
			
		||||
  name: {{ .Values.rbac.useExistingRole }}
 | 
			
		||||
  {{- else }}
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
subjects:
 | 
			
		||||
- kind: ServiceAccount
 | 
			
		||||
  name: {{ include "grafana.serviceAccountName" . }}
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
							
								
								
									
										44
									
								
								opencloud/charts/grafana/templates/route.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								opencloud/charts/grafana/templates/route.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,44 @@
 | 
			
		||||
{{- range $name, $route := .Values.route }}
 | 
			
		||||
  {{- if $route.enabled -}}
 | 
			
		||||
---
 | 
			
		||||
apiVersion: {{ $route.apiVersion | default "gateway.networking.k8s.io/v1" }}
 | 
			
		||||
kind: {{ $route.kind | default "HTTPRoute" }}
 | 
			
		||||
metadata:
 | 
			
		||||
  {{- with $route.annotations }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  name: {{ template "grafana.fullname" $ }}{{ if ne $name "main" }}-{{ $name }}{{ end }}
 | 
			
		||||
  namespace: {{ template "grafana.namespace" $ }}
 | 
			
		||||
  labels:
 | 
			
		||||
    app: {{ template "grafana.name" $ }}-prometheus
 | 
			
		||||
    {{- include "grafana.labels" $ | nindent 4 }}
 | 
			
		||||
    {{- with $route.labels }}
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
spec:
 | 
			
		||||
  {{- with $route.parentRefs }}
 | 
			
		||||
  parentRefs:
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- with $route.hostnames }}
 | 
			
		||||
  hostnames:
 | 
			
		||||
    {{- tpl (toYaml .) $ | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  rules:
 | 
			
		||||
    {{- if $route.additionalRules }}
 | 
			
		||||
    {{- tpl (toYaml $route.additionalRules) $ | nindent 4 }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
    - backendRefs:
 | 
			
		||||
        - name: {{ include "grafana.fullname" $ }}
 | 
			
		||||
          port: {{ $.Values.service.port }}
 | 
			
		||||
      {{- with $route.filters }}
 | 
			
		||||
      filters:
 | 
			
		||||
        {{- toYaml . | nindent 8 }}
 | 
			
		||||
      {{- end }}
 | 
			
		||||
      {{- with $route.matches }}
 | 
			
		||||
      matches:
 | 
			
		||||
        {{- toYaml . | nindent 8 }}
 | 
			
		||||
      {{- end }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
							
								
								
									
										14
									
								
								opencloud/charts/grafana/templates/secret-env.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								opencloud/charts/grafana/templates/secret-env.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
{{- if .Values.envRenderSecret }}
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Secret
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}-env
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
type: Opaque
 | 
			
		||||
data:
 | 
			
		||||
{{- range $key, $val := .Values.envRenderSecret }}
 | 
			
		||||
  {{ $key }}: {{ tpl ($val | toString) $ | b64enc | quote }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
							
								
								
									
										16
									
								
								opencloud/charts/grafana/templates/secret.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								opencloud/charts/grafana/templates/secret.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
{{- if or (and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION)) (and .Values.ldap.enabled (not .Values.ldap.existingSecret)) }}
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Secret
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
  {{- with .Values.annotations }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
type: Opaque
 | 
			
		||||
data:
 | 
			
		||||
  {{- include "grafana.secretsData" . | nindent 2 }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
							
								
								
									
										67
									
								
								opencloud/charts/grafana/templates/service.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								opencloud/charts/grafana/templates/service.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,67 @@
 | 
			
		||||
{{- if .Values.service.enabled }}
 | 
			
		||||
{{- $root := . }}
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Service
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
    {{- with .Values.service.labels }}
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
  {{- with .Values.service.annotations }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    {{- tpl (toYaml . | nindent 4) $root }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
spec:
 | 
			
		||||
  {{- if (or (eq .Values.service.type "ClusterIP") (empty .Values.service.type)) }}
 | 
			
		||||
  type: ClusterIP
 | 
			
		||||
  {{- with .Values.service.clusterIP }}
 | 
			
		||||
  clusterIP: {{ . }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- else if eq .Values.service.type "LoadBalancer" }}
 | 
			
		||||
  type: LoadBalancer
 | 
			
		||||
  {{- with .Values.service.loadBalancerIP }}
 | 
			
		||||
  loadBalancerIP: {{ . }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- with .Values.service.loadBalancerClass }}
 | 
			
		||||
  loadBalancerClass: {{ . }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- with .Values.service.loadBalancerSourceRanges }}
 | 
			
		||||
  loadBalancerSourceRanges:
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- else }}
 | 
			
		||||
  type: {{ .Values.service.type }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- if .Values.service.ipFamilyPolicy }}
 | 
			
		||||
  ipFamilyPolicy: {{ .Values.service.ipFamilyPolicy }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- if .Values.service.ipFamilies }}
 | 
			
		||||
  ipFamilies: {{ .Values.service.ipFamilies | toYaml | nindent 2 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- with .Values.service.externalIPs }}
 | 
			
		||||
  externalIPs:
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- with .Values.service.externalTrafficPolicy }}
 | 
			
		||||
  externalTrafficPolicy: {{ . }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  ports:
 | 
			
		||||
    - name: {{ .Values.service.portName }}
 | 
			
		||||
      port: {{ .Values.service.port }}
 | 
			
		||||
      protocol: TCP
 | 
			
		||||
      targetPort: {{ .Values.service.targetPort }}
 | 
			
		||||
      {{- with .Values.service.appProtocol }}
 | 
			
		||||
      appProtocol: {{ . }}
 | 
			
		||||
      {{- end }}
 | 
			
		||||
      {{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePort))) }}
 | 
			
		||||
      nodePort: {{ .Values.service.nodePort }}
 | 
			
		||||
      {{- end }}
 | 
			
		||||
      {{- with .Values.extraExposePorts }}
 | 
			
		||||
      {{- tpl (toYaml . | nindent 4) $root }}
 | 
			
		||||
      {{- end }}
 | 
			
		||||
  selector:
 | 
			
		||||
    {{- include "grafana.selectorLabels" . | nindent 4 }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
							
								
								
									
										17
									
								
								opencloud/charts/grafana/templates/serviceaccount.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								opencloud/charts/grafana/templates/serviceaccount.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
{{- if .Values.serviceAccount.create }}
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: ServiceAccount
 | 
			
		||||
automountServiceAccountToken: {{ .Values.serviceAccount.autoMount | default .Values.serviceAccount.automountServiceAccountToken }}
 | 
			
		||||
metadata:
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
    {{- with .Values.serviceAccount.labels }}
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
  {{- with .Values.serviceAccount.annotations }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    {{- tpl (toYaml . | nindent 4) $ }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  name: {{ include "grafana.serviceAccountName" . }}
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
							
								
								
									
										52
									
								
								opencloud/charts/grafana/templates/servicemonitor.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								opencloud/charts/grafana/templates/servicemonitor.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,52 @@
 | 
			
		||||
{{- if .Values.serviceMonitor.enabled }}
 | 
			
		||||
---
 | 
			
		||||
apiVersion: monitoring.coreos.com/v1
 | 
			
		||||
kind: ServiceMonitor
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}
 | 
			
		||||
  {{- if .Values.serviceMonitor.namespace }}
 | 
			
		||||
  namespace: {{ tpl .Values.serviceMonitor.namespace . }}
 | 
			
		||||
  {{- else }}
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
    {{- with .Values.serviceMonitor.labels }}
 | 
			
		||||
    {{- tpl (toYaml . | nindent 4) $ }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
spec:
 | 
			
		||||
  endpoints:
 | 
			
		||||
  - port: {{ .Values.service.portName }}
 | 
			
		||||
    {{- with .Values.serviceMonitor.interval }}
 | 
			
		||||
    interval: {{ . }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
    {{- with .Values.serviceMonitor.scrapeTimeout }}
 | 
			
		||||
    scrapeTimeout: {{ . }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
    honorLabels: true
 | 
			
		||||
    path: {{ .Values.serviceMonitor.path }}
 | 
			
		||||
    scheme: {{ .Values.serviceMonitor.scheme }}
 | 
			
		||||
    {{- with .Values.serviceMonitor.tlsConfig }}
 | 
			
		||||
    tlsConfig:
 | 
			
		||||
      {{- toYaml . | nindent 6 }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
    {{- with .Values.serviceMonitor.relabelings }}
 | 
			
		||||
    relabelings:
 | 
			
		||||
      {{- toYaml . | nindent 6 }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
    {{- with .Values.serviceMonitor.metricRelabelings }}
 | 
			
		||||
    metricRelabelings:
 | 
			
		||||
      {{- toYaml . | nindent 6 }}
 | 
			
		||||
    {{- end }}
 | 
			
		||||
  jobLabel: "{{ .Release.Name }}"
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      {{- include "grafana.selectorLabels" . | nindent 6 }}
 | 
			
		||||
  namespaceSelector:
 | 
			
		||||
    matchNames:
 | 
			
		||||
      - {{ include "grafana.namespace" . }}
 | 
			
		||||
  {{- with .Values.serviceMonitor.targetLabels }}
 | 
			
		||||
  targetLabels:
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
							
								
								
									
										58
									
								
								opencloud/charts/grafana/templates/statefulset.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								opencloud/charts/grafana/templates/statefulset.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
{{- $sts := list "sts" "StatefulSet" "statefulset" -}}
 | 
			
		||||
{{- if (or (.Values.useStatefulSet) (and .Values.persistence.enabled (not .Values.persistence.existingClaim) (has .Values.persistence.type $sts)))}}
 | 
			
		||||
apiVersion: apps/v1
 | 
			
		||||
kind: StatefulSet
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
  {{- with .Values.annotations }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
spec:
 | 
			
		||||
  replicas: {{ .Values.replicas }}
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      {{- include "grafana.selectorLabels" . | nindent 6 }}
 | 
			
		||||
  serviceName: {{ include "grafana.fullname" . }}-headless
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      labels:
 | 
			
		||||
        {{- include "grafana.labels" . | nindent 8 }}
 | 
			
		||||
        {{- with .Values.podLabels }}
 | 
			
		||||
        {{- toYaml . | nindent 8 }}
 | 
			
		||||
        {{- end }}
 | 
			
		||||
      annotations:
 | 
			
		||||
        checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
 | 
			
		||||
        checksum/dashboards-json-config: {{ include (print $.Template.BasePath "/dashboards-json-configmap.yaml") . | sha256sum }}
 | 
			
		||||
        checksum/sc-dashboard-provider-config: {{ include (print $.Template.BasePath "/configmap-dashboard-provider.yaml") . | sha256sum }}
 | 
			
		||||
        {{- if and (or (and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD)) (and .Values.ldap.enabled (not .Values.ldap.existingSecret))) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}
 | 
			
		||||
        checksum/secret: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }}
 | 
			
		||||
        {{- end }}
 | 
			
		||||
        kubectl.kubernetes.io/default-container: {{ .Chart.Name }}
 | 
			
		||||
        {{- with .Values.podAnnotations }}
 | 
			
		||||
        {{- toYaml . | nindent 8 }}
 | 
			
		||||
        {{- end }}
 | 
			
		||||
    spec:
 | 
			
		||||
      {{- include "grafana.pod" . | nindent 6 }}
 | 
			
		||||
  {{- if .Values.persistence.enabled}}
 | 
			
		||||
  volumeClaimTemplates:
 | 
			
		||||
  - apiVersion: v1
 | 
			
		||||
    kind: PersistentVolumeClaim
 | 
			
		||||
    metadata:
 | 
			
		||||
      name: storage
 | 
			
		||||
    spec:
 | 
			
		||||
      accessModes: {{ .Values.persistence.accessModes }}
 | 
			
		||||
      storageClassName: {{ .Values.persistence.storageClassName }}
 | 
			
		||||
      resources:
 | 
			
		||||
        requests:
 | 
			
		||||
          storage: {{ .Values.persistence.size }}
 | 
			
		||||
      {{- with .Values.persistence.selectorLabels }}
 | 
			
		||||
      selector:
 | 
			
		||||
        matchLabels:
 | 
			
		||||
          {{- toYaml . | nindent 10 }}
 | 
			
		||||
      {{- end }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
							
								
								
									
										20
									
								
								opencloud/charts/grafana/templates/tests/test-configmap.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								opencloud/charts/grafana/templates/tests/test-configmap.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
{{- if .Values.testFramework.enabled }}
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: ConfigMap
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}-test
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    "helm.sh/hook": {{ .Values.testFramework.hookType | default "test" }}
 | 
			
		||||
    "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded"
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
data:
 | 
			
		||||
  run.sh: |-
 | 
			
		||||
    @test "Test Health" {
 | 
			
		||||
      url="http://{{ include "grafana.fullname" . }}/api/health"
 | 
			
		||||
 | 
			
		||||
      code=$(wget --server-response --spider --timeout 90 --tries 10 ${url} 2>&1 | awk '/^  HTTP/{print $2}')
 | 
			
		||||
      [ "$code" == "200" ]
 | 
			
		||||
    }
 | 
			
		||||
{{- end }}
 | 
			
		||||
@@ -0,0 +1,32 @@
 | 
			
		||||
{{- if and (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") .Values.testFramework.enabled .Values.rbac.pspEnabled }}
 | 
			
		||||
apiVersion: policy/v1beta1
 | 
			
		||||
kind: PodSecurityPolicy
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}-test
 | 
			
		||||
  annotations:
 | 
			
		||||
    "helm.sh/hook": {{ .Values.testFramework.hookType | default "test" }}
 | 
			
		||||
    "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded"
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
spec:
 | 
			
		||||
  allowPrivilegeEscalation: true
 | 
			
		||||
  privileged: false
 | 
			
		||||
  hostNetwork: false
 | 
			
		||||
  hostIPC: false
 | 
			
		||||
  hostPID: false
 | 
			
		||||
  fsGroup:
 | 
			
		||||
    rule: RunAsAny
 | 
			
		||||
  seLinux:
 | 
			
		||||
    rule: RunAsAny
 | 
			
		||||
  supplementalGroups:
 | 
			
		||||
    rule: RunAsAny
 | 
			
		||||
  runAsUser:
 | 
			
		||||
    rule: RunAsAny
 | 
			
		||||
  volumes:
 | 
			
		||||
    - configMap
 | 
			
		||||
    - downwardAPI
 | 
			
		||||
    - emptyDir
 | 
			
		||||
    - projected
 | 
			
		||||
    - csi
 | 
			
		||||
    - secret
 | 
			
		||||
{{- end }}
 | 
			
		||||
							
								
								
									
										17
									
								
								opencloud/charts/grafana/templates/tests/test-role.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								opencloud/charts/grafana/templates/tests/test-role.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
{{- if and (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") .Values.testFramework.enabled .Values.rbac.pspEnabled }}
 | 
			
		||||
apiVersion: rbac.authorization.k8s.io/v1
 | 
			
		||||
kind: Role
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}-test
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    "helm.sh/hook": {{ .Values.testFramework.hookType | default "test" }}
 | 
			
		||||
    "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded"
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
rules:
 | 
			
		||||
  - apiGroups:      ['policy']
 | 
			
		||||
    resources:      ['podsecuritypolicies']
 | 
			
		||||
    verbs:          ['use']
 | 
			
		||||
    resourceNames:  [{{ include "grafana.fullname" . }}-test]
 | 
			
		||||
{{- end }}
 | 
			
		||||
@@ -0,0 +1,20 @@
 | 
			
		||||
{{- if and (.Capabilities.APIVersions.Has "policy/v1beta1/PodSecurityPolicy") .Values.testFramework.enabled .Values.rbac.pspEnabled }}
 | 
			
		||||
apiVersion: rbac.authorization.k8s.io/v1
 | 
			
		||||
kind: RoleBinding
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}-test
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    "helm.sh/hook": {{ .Values.testFramework.hookType | default "test" }}
 | 
			
		||||
    "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded"
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
roleRef:
 | 
			
		||||
  apiGroup: rbac.authorization.k8s.io
 | 
			
		||||
  kind: Role
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}-test
 | 
			
		||||
subjects:
 | 
			
		||||
  - kind: ServiceAccount
 | 
			
		||||
    name: {{ include "grafana.serviceAccountNameTest" . }}
 | 
			
		||||
    namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
{{- end }}
 | 
			
		||||
@@ -0,0 +1,12 @@
 | 
			
		||||
{{- if and .Values.testFramework.enabled .Values.serviceAccount.create }}
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: ServiceAccount
 | 
			
		||||
metadata:
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
  name: {{ include "grafana.serviceAccountNameTest" . }}
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    "helm.sh/hook": {{ .Values.testFramework.hookType | default "test" }}
 | 
			
		||||
    "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded"
 | 
			
		||||
{{- end }}
 | 
			
		||||
							
								
								
									
										53
									
								
								opencloud/charts/grafana/templates/tests/test.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								opencloud/charts/grafana/templates/tests/test.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
			
		||||
{{- if .Values.testFramework.enabled }}
 | 
			
		||||
{{- $root := . }}
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Pod
 | 
			
		||||
metadata:
 | 
			
		||||
  name: {{ include "grafana.fullname" . }}-test
 | 
			
		||||
  labels:
 | 
			
		||||
    {{- include "grafana.labels" . | nindent 4 }}
 | 
			
		||||
  annotations:
 | 
			
		||||
    "helm.sh/hook": {{ .Values.testFramework.hookType | default "test" }}
 | 
			
		||||
    "helm.sh/hook-delete-policy": "before-hook-creation,hook-succeeded"
 | 
			
		||||
  namespace: {{ include "grafana.namespace" . }}
 | 
			
		||||
spec:
 | 
			
		||||
  serviceAccountName: {{ include "grafana.serviceAccountNameTest" . }}
 | 
			
		||||
  {{- with .Values.testFramework.securityContext }}
 | 
			
		||||
  securityContext:
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- if or .Values.image.pullSecrets .Values.global.imagePullSecrets }}
 | 
			
		||||
  imagePullSecrets:
 | 
			
		||||
    {{- include "grafana.imagePullSecrets" (dict "root" $root "imagePullSecrets" .Values.image.pullSecrets) | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- with .Values.nodeSelector }}
 | 
			
		||||
  nodeSelector:
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- with .Values.affinity }}
 | 
			
		||||
  affinity:
 | 
			
		||||
    {{- tpl (toYaml .) $root | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  {{- with .Values.tolerations }}
 | 
			
		||||
  tolerations:
 | 
			
		||||
    {{- toYaml . | nindent 4 }}
 | 
			
		||||
  {{- end }}
 | 
			
		||||
  containers:
 | 
			
		||||
    - name: {{ .Release.Name }}-test
 | 
			
		||||
      image: "{{ .Values.global.imageRegistry | default .Values.testFramework.image.registry }}/{{ .Values.testFramework.image.repository }}:{{ .Values.testFramework.image.tag }}"
 | 
			
		||||
      imagePullPolicy: "{{ .Values.testFramework.imagePullPolicy}}"
 | 
			
		||||
      command: ["/opt/bats/bin/bats", "-t", "/tests/run.sh"]
 | 
			
		||||
      volumeMounts:
 | 
			
		||||
        - mountPath: /tests
 | 
			
		||||
          name: tests
 | 
			
		||||
          readOnly: true
 | 
			
		||||
      {{- with .Values.testFramework.resources }}
 | 
			
		||||
      resources:
 | 
			
		||||
        {{- toYaml . | nindent 8 }}
 | 
			
		||||
      {{- end }}
 | 
			
		||||
  volumes:
 | 
			
		||||
    - name: tests
 | 
			
		||||
      configMap:
 | 
			
		||||
        name: {{ include "grafana.fullname" . }}-test
 | 
			
		||||
  restartPolicy: Never
 | 
			
		||||
{{- end }}
 | 
			
		||||
		Reference in New Issue
	
	Block a user