Replace current chart with new contents

pull/1307/head
Arvind Iyengar 2021-06-25 17:47:58 -07:00
parent 391d444a9c
commit 66476b807e
No known key found for this signature in database
GPG Key ID: A8DD9BFD6C811498
55 changed files with 275 additions and 89 deletions

View File

@ -5,7 +5,7 @@ annotations:
catalog.rancher.io/namespace: cattle-monitoring-system catalog.rancher.io/namespace: cattle-monitoring-system
catalog.rancher.io/release-name: rancher-grafana catalog.rancher.io/release-name: rancher-grafana
apiVersion: v2 apiVersion: v2
appVersion: 7.4.5 appVersion: 7.5.8
description: The leading tool for querying and visualizing time series and metrics. description: The leading tool for querying and visualizing time series and metrics.
home: https://grafana.net home: https://grafana.net
icon: https://raw.githubusercontent.com/grafana/grafana/master/public/img/logo_transparent_400x.png icon: https://raw.githubusercontent.com/grafana/grafana/master/public/img/logo_transparent_400x.png
@ -25,4 +25,4 @@ name: rancher-grafana
sources: sources:
- https://github.com/grafana/grafana - https://github.com/grafana/grafana
type: application type: application
version: 100.0.0+up6.6.4 version: 100.0.0+up6.11.0

View File

@ -63,6 +63,7 @@ This version requires Helm >= 3.1.0.
| `image.sha` | Image sha (optional) | `2b56f6106ddc376bb46d974230d530754bf65a640dfbc5245191d72d3b49efc6` | | `image.sha` | Image sha (optional) | `2b56f6106ddc376bb46d974230d530754bf65a640dfbc5245191d72d3b49efc6` |
| `image.pullPolicy` | Image pull policy | `IfNotPresent` | | `image.pullPolicy` | Image pull policy | `IfNotPresent` |
| `image.pullSecrets` | Image pull secrets | `{}` | | `image.pullSecrets` | Image pull secrets | `{}` |
| `service.enabled` | Enable grafana service | `true` |
| `service.type` | Kubernetes service type | `ClusterIP` | | `service.type` | Kubernetes service type | `ClusterIP` |
| `service.port` | Kubernetes port where service is exposed | `80` | | `service.port` | Kubernetes port where service is exposed | `80` |
| `service.portName` | Name of the port on the service | `service` | | `service.portName` | Name of the port on the service | `service` |
@ -82,7 +83,7 @@ This version requires Helm >= 3.1.0.
| `ingress.path` | Ingress accepted path | `/` | | `ingress.path` | Ingress accepted path | `/` |
| `ingress.pathType` | Ingress type of path | `Prefix` | | `ingress.pathType` | Ingress type of path | `Prefix` |
| `ingress.hosts` | Ingress accepted hostnames | `["chart-example.local"]` | | `ingress.hosts` | Ingress accepted hostnames | `["chart-example.local"]` |
| `ingress.extraPaths` | Ingress extra paths to prepend to every host configuration. Useful when configuring [custom actions with AWS ALB Ingress Controller](https://kubernetes-sigs.github.io/aws-alb-ingress-controller/guide/ingress/annotation/#actions). | `[]` | | `ingress.extraPaths` | Ingress extra paths to prepend to every host configuration. Useful when configuring [custom actions with AWS ALB Ingress Controller](https://kubernetes-sigs.github.io/aws-alb-ingress-controller/guide/ingress/annotation/#actions). Requires `ingress.hosts` to have one or more host entries. | `[]` |
| `ingress.tls` | Ingress TLS configuration | `[]` | | `ingress.tls` | Ingress TLS configuration | `[]` |
| `resources` | CPU/Memory resource requests/limits | `{}` | | `resources` | CPU/Memory resource requests/limits | `{}` |
| `nodeSelector` | Node labels for pod assignment | `{}` | | `nodeSelector` | Node labels for pod assignment | `{}` |
@ -157,13 +158,16 @@ This version requires Helm >= 3.1.0.
| `sidecar.dashboards.folderAnnotation` | The annotation the sidecar will look for in configmaps to override the destination folder for files | `nil` | | `sidecar.dashboards.folderAnnotation` | The annotation the sidecar will look for in configmaps to override the destination folder for files | `nil` |
| `sidecar.dashboards.defaultFolderName` | The default folder name, it will create a subfolder under the `sidecar.dashboards.folder` and put dashboards in there instead | `nil` | | `sidecar.dashboards.defaultFolderName` | The default folder name, it will create a subfolder under the `sidecar.dashboards.folder` and put dashboards in there instead | `nil` |
| `sidecar.dashboards.searchNamespace` | If specified, the sidecar will search for dashboard config-maps inside this namespace. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces | `nil` | | `sidecar.dashboards.searchNamespace` | If specified, the sidecar will search for dashboard config-maps inside this namespace. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces | `nil` |
| `sidecar.dashboards.resource` | Should the sidecar looks into secrets, configmaps or both. | `both` |
| `sidecar.datasources.enabled` | Enables the cluster wide search for datasources and adds/updates/deletes them in grafana |`false` | | `sidecar.datasources.enabled` | Enables the cluster wide search for datasources and adds/updates/deletes them in grafana |`false` |
| `sidecar.datasources.label` | Label that config maps with datasources should have to be added | `grafana_datasource` | | `sidecar.datasources.label` | Label that config maps with datasources should have to be added | `grafana_datasource` |
| `sidecar.datasources.labelValue` | Label value that config maps with datasources should have to be added | `nil` | | `sidecar.datasources.labelValue` | Label value that config maps with datasources should have to be added | `nil` |
| `sidecar.datasources.searchNamespace` | If specified, the sidecar will search for datasources config-maps inside this namespace. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces | `nil` | | `sidecar.datasources.searchNamespace` | If specified, the sidecar will search for datasources config-maps inside this namespace. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces | `nil` |
| `sidecar.datasources.resource` | Should the sidecar looks into secrets, configmaps or both. | `both` |
| `sidecar.notifiers.enabled` | Enables the cluster wide search for notifiers and adds/updates/deletes them in grafana | `false` | | `sidecar.notifiers.enabled` | Enables the cluster wide search for notifiers and adds/updates/deletes them in grafana | `false` |
| `sidecar.notifiers.label` | Label that config maps with notifiers should have to be added | `grafana_notifier` | | `sidecar.notifiers.label` | Label that config maps with notifiers should have to be added | `grafana_notifier` |
| `sidecar.notifiers.searchNamespace` | If specified, the sidecar will search for notifiers config-maps (or secrets) inside this namespace. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces | `nil` | | `sidecar.notifiers.searchNamespace` | If specified, the sidecar will search for notifiers config-maps (or secrets) inside this namespace. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces | `nil` |
| `sidecar.notifiers.resource` | Should the sidecar looks into secrets, configmaps or both. | `both` |
| `smtp.existingSecret` | The name of an existing secret containing the SMTP credentials. | `""` | | `smtp.existingSecret` | The name of an existing secret containing the SMTP credentials. | `""` |
| `smtp.userKey` | The key in the existing SMTP secret containing the username. | `"user"` | | `smtp.userKey` | The key in the existing SMTP secret containing the username. | `"user"` |
| `smtp.passwordKey` | The key in the existing SMTP secret containing the password. | `"password"` | | `smtp.passwordKey` | The key in the existing SMTP secret containing the password. | `"password"` |
@ -215,6 +219,7 @@ This version requires Helm >= 3.1.0.
| `imageRenderer.securityContext` | image-renderer deployment securityContext | `{}` | | `imageRenderer.securityContext` | image-renderer deployment securityContext | `{}` |
| `imageRenderer.hostAliases` | image-renderer deployment Host Aliases | `[]` | | `imageRenderer.hostAliases` | image-renderer deployment Host Aliases | `[]` |
| `imageRenderer.priorityClassName` | image-renderer deployment priority class | `''` | | `imageRenderer.priorityClassName` | image-renderer deployment priority class | `''` |
| `imageRenderer.service.enabled` | Enable the image-renderer service | `true` |
| `imageRenderer.service.portName` | image-renderer service port name | `'http'` | | `imageRenderer.service.portName` | image-renderer service port name | `'http'` |
| `imageRenderer.service.port` | image-renderer service port used by both service and deployment | `8081` | | `imageRenderer.service.port` | image-renderer service port used by both service and deployment | `8081` |
| `imageRenderer.grafanaSubPath` | Grafana sub path to use for image renderer callback url | `''` | | `imageRenderer.grafanaSubPath` | Grafana sub path to use for image renderer callback url | `''` |
@ -242,6 +247,9 @@ ingress:
### Example of extraVolumeMounts ### Example of extraVolumeMounts
Volume can be type persistentVolumeClaim or hostPath but not both at same time.
If none existingClaim or hostPath argument is givent then type is emptyDir.
```yaml ```yaml
- extraVolumeMounts: - extraVolumeMounts:
- name: plugins - name: plugins
@ -249,6 +257,10 @@ ingress:
subPath: configs/grafana/plugins subPath: configs/grafana/plugins
existingClaim: existing-grafana-claim existingClaim: existing-grafana-claim
readOnly: false readOnly: false
- name: dashboards
mountPath: /var/lib/grafana/dashboards
hostPath: /usr/shared/grafana/dashboards
readOnly: false
``` ```
## Import dashboards ## Import dashboards

View File

@ -143,3 +143,16 @@ Return the appropriate apiVersion for rbac.
{{- print "rbac.authorization.k8s.io/v1beta1" -}} {{- print "rbac.authorization.k8s.io/v1beta1" -}}
{{- end -}} {{- end -}}
{{- end -}} {{- 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 -}}

View File

@ -100,7 +100,7 @@ initContainers:
- name: FOLDER - name: FOLDER
value: "/etc/grafana/provisioning/datasources" value: "/etc/grafana/provisioning/datasources"
- name: RESOURCE - name: RESOURCE
value: "both" value: {{ quote .Values.sidecar.datasources.resource }}
{{- if .Values.sidecar.enableUniqueFilenames }} {{- if .Values.sidecar.enableUniqueFilenames }}
- name: UNIQUE_FILENAMES - name: UNIQUE_FILENAMES
value: "{{ .Values.sidecar.enableUniqueFilenames }}" value: "{{ .Values.sidecar.enableUniqueFilenames }}"
@ -135,7 +135,7 @@ initContainers:
- name: FOLDER - name: FOLDER
value: "/etc/grafana/provisioning/notifiers" value: "/etc/grafana/provisioning/notifiers"
- name: RESOURCE - name: RESOURCE
value: "both" value: {{ quote .Values.sidecar.notifiers.resource }}
{{- if .Values.sidecar.enableUniqueFilenames }} {{- if .Values.sidecar.enableUniqueFilenames }}
- name: UNIQUE_FILENAMES - name: UNIQUE_FILENAMES
value: "{{ .Values.sidecar.enableUniqueFilenames }}" value: "{{ .Values.sidecar.enableUniqueFilenames }}"
@ -184,7 +184,7 @@ containers:
- name: FOLDER - name: FOLDER
value: "{{ .Values.sidecar.dashboards.folder }}{{- with .Values.sidecar.dashboards.defaultFolderName }}/{{ . }}{{- end }}" value: "{{ .Values.sidecar.dashboards.folder }}{{- with .Values.sidecar.dashboards.defaultFolderName }}/{{ . }}{{- end }}"
- name: RESOURCE - name: RESOURCE
value: "both" value: {{ quote .Values.sidecar.dashboards.resource }}
{{- if .Values.sidecar.enableUniqueFilenames }} {{- if .Values.sidecar.enableUniqueFilenames }}
- name: UNIQUE_FILENAMES - name: UNIQUE_FILENAMES
value: "{{ .Values.sidecar.enableUniqueFilenames }}" value: "{{ .Values.sidecar.enableUniqueFilenames }}"
@ -317,14 +317,14 @@ containers:
containerPort: 3000 containerPort: 3000
protocol: TCP protocol: TCP
env: env:
{{- if not .Values.env.GF_SECURITY_ADMIN_USER }} {{- if and (not .Values.env.GF_SECURITY_ADMIN_USER) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}
- name: GF_SECURITY_ADMIN_USER - name: GF_SECURITY_ADMIN_USER
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: {{ .Values.admin.existingSecret | default (include "grafana.fullname" .) }} name: {{ .Values.admin.existingSecret | default (include "grafana.fullname" .) }}
key: {{ .Values.admin.userKey | default "admin-user" }} key: {{ .Values.admin.userKey | default "admin-user" }}
{{- end }} {{- end }}
{{- if and (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) }} {{- if and (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}
- name: GF_SECURITY_ADMIN_PASSWORD - name: GF_SECURITY_ADMIN_PASSWORD
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
@ -356,6 +356,14 @@ containers:
- name: GF_RENDERING_CALLBACK_URL - name: GF_RENDERING_CALLBACK_URL
value: http://{{ template "grafana.fullname" . }}.{{ template "grafana.namespace" . }}:{{ .Values.service.port }}/{{ .Values.imageRenderer.grafanaSubPath }} value: http://{{ template "grafana.fullname" . }}.{{ template "grafana.namespace" . }}:{{ .Values.service.port }}/{{ .Values.imageRenderer.grafanaSubPath }}
{{ end }} {{ end }}
- name: GF_PATHS_DATA
value: {{ (get .Values "grafana.ini").paths.data }}
- name: GF_PATHS_LOGS
value: {{ (get .Values "grafana.ini").paths.logs }}
- name: GF_PATHS_PLUGINS
value: {{ (get .Values "grafana.ini").paths.plugins }}
- name: GF_PATHS_PROVISIONING
value: {{ (get .Values "grafana.ini").paths.provisioning }}
{{- range $key, $value := .Values.envValueFrom }} {{- range $key, $value := .Values.envValueFrom }}
- name: {{ $key | quote }} - name: {{ $key | quote }}
valueFrom: valueFrom:
@ -483,8 +491,15 @@ volumes:
{{- end }} {{- end }}
{{- range .Values.extraVolumeMounts }} {{- range .Values.extraVolumeMounts }}
- name: {{ .name }} - name: {{ .name }}
{{- if .existingClaim }}
persistentVolumeClaim: persistentVolumeClaim:
claimName: {{ .existingClaim }} claimName: {{ .existingClaim }}
{{- else if .hostPath }}
hostPath:
path: {{ .hostPath }}
{{- else }}
emptyDir: {}
{{- end }}
{{- end }} {{- end }}
{{- range .Values.extraEmptyDirMounts }} {{- range .Values.extraEmptyDirMounts }}
- name: {{ .name }} - name: {{ .name }}

View File

@ -19,8 +19,10 @@ data:
{{- range $elem, $elemVal := $value }} {{- range $elem, $elemVal := $value }}
{{- if kindIs "invalid" $elemVal }} {{- if kindIs "invalid" $elemVal }}
{{ $elem }} = {{ $elem }} =
{{- else if kindIs "string" $elemVal }}
{{ $elem }} = {{ tpl $elemVal $ }}
{{- else }} {{- else }}
{{ $elem }} = {{ tpl (toYaml $elemVal) $ }} {{ $elem }} = {{ $elemVal }}
{{- end }} {{- end }}
{{- end }} {{- end }}
{{- end }} {{- end }}

View File

@ -14,7 +14,9 @@ metadata:
{{ toYaml . | indent 4 }} {{ toYaml . | indent 4 }}
{{- end }} {{- end }}
spec: spec:
{{- if not .Values.autoscaling.enabled }}
replicas: {{ .Values.replicas }} replicas: {{ .Values.replicas }}
{{- end }}
revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
selector: selector:
matchLabels: matchLabels:
@ -34,7 +36,7 @@ spec:
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
checksum/dashboards-json-config: {{ include (print $.Template.BasePath "/dashboards-json-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 }} checksum/sc-dashboard-provider-config: {{ include (print $.Template.BasePath "/configmap-dashboard-provider.yaml") . | sha256sum }}
{{- if 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)) }} {{- 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 }} checksum/secret: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }}
{{- end }} {{- end }}
{{- if .Values.envRenderSecret }} {{- if .Values.envRenderSecret }}

View File

@ -0,0 +1,20 @@
{{- if .Values.autoscaling.enabled }}
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: {{ template "grafana.fullname" . }}
labels:
app.kubernetes.io/name: {{ template "grafana.name" . }}
helm.sh/chart: {{ template "grafana.chart" . }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: {{ template "grafana.fullname" . }}
minReplicas: {{ .Values.autoscaling.minReplicas }}
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
metrics:
{{ toYaml .Values.autoscaling.metrics | indent 4 }}
{{- end }}

View File

@ -1,4 +1,5 @@
{{ if .Values.imageRenderer.enabled }} {{ if .Values.imageRenderer.enabled }}
{{ if .Values.imageRenderer.service.enabled }}
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
metadata: metadata:
@ -26,3 +27,4 @@ spec:
selector: selector:
{{- include "grafana.imageRenderer.selectorLabels" . | nindent 4 }} {{- include "grafana.imageRenderer.selectorLabels" . | nindent 4 }}
{{ end }} {{ end }}
{{ end }}

View File

@ -13,19 +13,8 @@ spec:
privileged: false privileged: false
allowPrivilegeEscalation: false allowPrivilegeEscalation: false
requiredDropCapabilities: requiredDropCapabilities:
# Default set from Docker, without DAC_OVERRIDE or CHOWN # Default set from Docker, with DAC_OVERRIDE and CHOWN
- FOWNER - ALL
- FSETID
- KILL
- SETGID
- SETUID
- SETPCAP
- NET_BIND_SERVICE
- NET_RAW
- SYS_CHROOT
- MKNOD
- AUDIT_WRITE
- SETFCAP
volumes: volumes:
- 'configMap' - 'configMap'
- 'emptyDir' - 'emptyDir'
@ -38,12 +27,20 @@ spec:
hostIPC: false hostIPC: false
hostPID: false hostPID: false
runAsUser: runAsUser:
rule: 'RunAsAny' rule: 'MustRunAsNonRoot'
seLinux: seLinux:
rule: 'RunAsAny' rule: 'RunAsAny'
supplementalGroups: supplementalGroups:
rule: 'RunAsAny' rule: 'MustRunAs'
ranges:
# Forbid adding the root group.
- min: 1
max: 65535
fsGroup: fsGroup:
rule: 'RunAsAny' rule: 'MustRunAs'
ranges:
# Forbid adding the root group.
- min: 1
max: 65535
readOnlyRootFilesystem: false readOnlyRootFilesystem: false
{{- end }} {{- end }}

View File

@ -1,4 +1,4 @@
{{- if 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)) }} {{- 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) }}
apiVersion: v1 apiVersion: v1
kind: Secret kind: Secret
metadata: metadata:
@ -6,6 +6,10 @@ metadata:
namespace: {{ template "grafana.namespace" . }} namespace: {{ template "grafana.namespace" . }}
labels: labels:
{{- include "grafana.labels" . | nindent 4 }} {{- include "grafana.labels" . | nindent 4 }}
{{- with .Values.annotations }}
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
type: Opaque type: Opaque
data: data:
{{- if and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) }} {{- if and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) }}
@ -13,7 +17,7 @@ data:
{{- if .Values.adminPassword }} {{- if .Values.adminPassword }}
admin-password: {{ .Values.adminPassword | b64enc | quote }} admin-password: {{ .Values.adminPassword | b64enc | quote }}
{{- else }} {{- else }}
admin-password: {{ randAlphaNum 40 | b64enc | quote }} admin-password: {{ template "grafana.password" . }}
{{- end }} {{- end }}
{{- end }} {{- end }}
{{- if not .Values.ldap.existingSecret }} {{- if not .Values.ldap.existingSecret }}

View File

@ -1,3 +1,4 @@
{{ if .Values.service.enabled }}
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
metadata: metadata:
@ -47,4 +48,4 @@ spec:
{{- end }} {{- end }}
selector: selector:
{{- include "grafana.selectorLabels" . | nindent 4 }} {{- include "grafana.selectorLabels" . | nindent 4 }}
{{ end }}

View File

@ -27,7 +27,7 @@ spec:
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
checksum/dashboards-json-config: {{ include (print $.Template.BasePath "/dashboards-json-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 }} checksum/sc-dashboard-provider-config: {{ include (print $.Template.BasePath "/configmap-dashboard-provider.yaml") . | sha256sum }}
{{- if 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)) }} {{- 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 }} checksum/secret: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }}
{{- end }} {{- end }}
{{- with .Values.podAnnotations }} {{- with .Values.podAnnotations }}

View File

@ -38,6 +38,22 @@ serviceAccount:
replicas: 1 replicas: 1
## Create HorizontalPodAutoscaler object for deployment type
#
autoscaling:
enabled: false
# minReplicas: 1
# maxReplicas: 10
# metrics:
# - type: Resource
# resource:
# name: cpu
# targetAverageUtilization: 60
# - type: Resource
# resource:
# name: memory
# targetAverageUtilization: 60
## See `kubectl explain poddisruptionbudget.spec` for more ## See `kubectl explain poddisruptionbudget.spec` for more
## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/ ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
podDisruptionBudget: {} podDisruptionBudget: {}
@ -69,7 +85,7 @@ livenessProbe:
image: image:
repository: rancher/mirrored-grafana-grafana repository: rancher/mirrored-grafana-grafana
tag: 7.4.5 tag: 7.5.8
sha: "" sha: ""
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
@ -119,7 +135,7 @@ extraLabels: {}
downloadDashboardsImage: downloadDashboardsImage:
repository: rancher/mirrored-curlimages-curl repository: rancher/mirrored-curlimages-curl
tag: 7.73.0 tag: 7.77.0
sha: "" sha: ""
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
@ -144,6 +160,7 @@ podPortName: grafana
## ref: http://kubernetes.io/docs/user-guide/services/ ## ref: http://kubernetes.io/docs/user-guide/services/
## ##
service: service:
enabled: true
type: ClusterIP type: ClusterIP
port: 80 port: 80
targetPort: 3000 targetPort: 3000
@ -420,10 +437,14 @@ extraSecretMounts: []
## Additional grafana server volume mounts ## Additional grafana server volume mounts
# Defines additional volume mounts. # Defines additional volume mounts.
extraVolumeMounts: [] extraVolumeMounts: []
# - name: extra-volume # - name: extra-volume-0
# mountPath: /mnt/volume # mountPath: /mnt/volume0
# readOnly: true # readOnly: true
# existingClaim: volume-claim # existingClaim: volume-claim
# - name: extra-volume-1
# mountPath: /mnt/volume1
# readOnly: true
# hostPath: /usr/shared/
## Pass the plugins you want installed as a list. ## Pass the plugins you want installed as a list.
## ##
@ -530,7 +551,7 @@ dashboardsConfigMaps: {}
## ##
grafana.ini: grafana.ini:
paths: paths:
data: /var/lib/grafana/data data: /var/lib/grafana/
logs: /var/log/grafana logs: /var/log/grafana
plugins: /var/lib/grafana/plugins plugins: /var/lib/grafana/plugins
provisioning: /etc/grafana/provisioning provisioning: /etc/grafana/provisioning
@ -601,7 +622,7 @@ smtp:
sidecar: sidecar:
image: image:
repository: rancher/mirrored-kiwigrid-k8s-sidecar repository: rancher/mirrored-kiwigrid-k8s-sidecar
tag: 1.10.7 tag: 1.12.2
sha: "" sha: ""
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
resources: {} resources: {}
@ -629,6 +650,8 @@ sidecar:
# Otherwise the namespace in which the sidecar is running will be used. # Otherwise the namespace in which the sidecar is running will be used.
# It's also possible to specify ALL to search in all namespaces # It's also possible to specify ALL to search in all namespaces
searchNamespace: null searchNamespace: null
# search in configmap, secret or both
resource: both
# If specified, the sidecar will look for annotation with this name to create folder and put graph here. # If specified, the sidecar will look for annotation with this name to create folder and put graph here.
# You can use this parameter together with `provider.foldersFromFilesStructure`to annotate configmaps and create folder structure. # You can use this parameter together with `provider.foldersFromFilesStructure`to annotate configmaps and create folder structure.
folderAnnotation: null folderAnnotation: null
@ -658,10 +681,8 @@ sidecar:
# Otherwise the namespace in which the sidecar is running will be used. # Otherwise the namespace in which the sidecar is running will be used.
# It's also possible to specify ALL to search in all namespaces # It's also possible to specify ALL to search in all namespaces
searchNamespace: null searchNamespace: null
# search in configmap, secret or both
## The name of a secret in the same kubernetes namespace which contain values to be added to the environment resource: both
## This can be useful for database passwords, etc. Value is templated.
envFromSecret: ""
notifiers: notifiers:
enabled: false enabled: false
# label that the configmaps with notifiers are marked with # label that the configmaps with notifiers are marked with
@ -670,6 +691,8 @@ sidecar:
# Otherwise the namespace in which the sidecar is running will be used. # Otherwise the namespace in which the sidecar is running will be used.
# It's also possible to specify ALL to search in all namespaces # It's also possible to specify ALL to search in all namespaces
searchNamespace: null searchNamespace: null
# search in configmap, secret or both
resource: both
## Override the deployment namespace ## Override the deployment namespace
## ##
@ -688,7 +711,7 @@ imageRenderer:
# image-renderer Image repository # image-renderer Image repository
repository: rancher/mirrored-grafana-grafana-image-renderer repository: rancher/mirrored-grafana-grafana-image-renderer
# image-renderer Image tag # image-renderer Image tag
tag: 2.0.1 tag: 3.0.1
# image-renderer Image sha (optional) # image-renderer Image sha (optional)
sha: "" sha: ""
# image-renderer ImagePullPolicy # image-renderer ImagePullPolicy
@ -707,6 +730,8 @@ imageRenderer:
# image-renderer deployment priority class # image-renderer deployment priority class
priorityClassName: '' priorityClassName: ''
service: service:
# Enable the image-renderer service
enabled: true
# image-renderer service port name # image-renderer service port name
portName: 'http' portName: 'http'
# image-renderer service port used by both service and deployment # image-renderer service port used by both service and deployment

View File

@ -5,7 +5,7 @@ annotations:
catalog.rancher.io/namespace: cattle-monitoring-system catalog.rancher.io/namespace: cattle-monitoring-system
catalog.rancher.io/release-name: rancher-grafana catalog.rancher.io/release-name: rancher-grafana
apiVersion: v2 apiVersion: v2
appVersion: 7.4.5 appVersion: 7.5.8
description: The leading tool for querying and visualizing time series and metrics. description: The leading tool for querying and visualizing time series and metrics.
home: https://grafana.net home: https://grafana.net
icon: https://raw.githubusercontent.com/grafana/grafana/master/public/img/logo_transparent_400x.png icon: https://raw.githubusercontent.com/grafana/grafana/master/public/img/logo_transparent_400x.png
@ -25,4 +25,4 @@ name: grafana
sources: sources:
- https://github.com/grafana/grafana - https://github.com/grafana/grafana
type: application type: application
version: 6.6.4 version: 6.11.0

View File

@ -63,6 +63,7 @@ This version requires Helm >= 3.1.0.
| `image.sha` | Image sha (optional) | `2b56f6106ddc376bb46d974230d530754bf65a640dfbc5245191d72d3b49efc6` | | `image.sha` | Image sha (optional) | `2b56f6106ddc376bb46d974230d530754bf65a640dfbc5245191d72d3b49efc6` |
| `image.pullPolicy` | Image pull policy | `IfNotPresent` | | `image.pullPolicy` | Image pull policy | `IfNotPresent` |
| `image.pullSecrets` | Image pull secrets | `{}` | | `image.pullSecrets` | Image pull secrets | `{}` |
| `service.enabled` | Enable grafana service | `true` |
| `service.type` | Kubernetes service type | `ClusterIP` | | `service.type` | Kubernetes service type | `ClusterIP` |
| `service.port` | Kubernetes port where service is exposed | `80` | | `service.port` | Kubernetes port where service is exposed | `80` |
| `service.portName` | Name of the port on the service | `service` | | `service.portName` | Name of the port on the service | `service` |
@ -82,7 +83,7 @@ This version requires Helm >= 3.1.0.
| `ingress.path` | Ingress accepted path | `/` | | `ingress.path` | Ingress accepted path | `/` |
| `ingress.pathType` | Ingress type of path | `Prefix` | | `ingress.pathType` | Ingress type of path | `Prefix` |
| `ingress.hosts` | Ingress accepted hostnames | `["chart-example.local"]` | | `ingress.hosts` | Ingress accepted hostnames | `["chart-example.local"]` |
| `ingress.extraPaths` | Ingress extra paths to prepend to every host configuration. Useful when configuring [custom actions with AWS ALB Ingress Controller](https://kubernetes-sigs.github.io/aws-alb-ingress-controller/guide/ingress/annotation/#actions). | `[]` | | `ingress.extraPaths` | Ingress extra paths to prepend to every host configuration. Useful when configuring [custom actions with AWS ALB Ingress Controller](https://kubernetes-sigs.github.io/aws-alb-ingress-controller/guide/ingress/annotation/#actions). Requires `ingress.hosts` to have one or more host entries. | `[]` |
| `ingress.tls` | Ingress TLS configuration | `[]` | | `ingress.tls` | Ingress TLS configuration | `[]` |
| `resources` | CPU/Memory resource requests/limits | `{}` | | `resources` | CPU/Memory resource requests/limits | `{}` |
| `nodeSelector` | Node labels for pod assignment | `{}` | | `nodeSelector` | Node labels for pod assignment | `{}` |
@ -157,13 +158,16 @@ This version requires Helm >= 3.1.0.
| `sidecar.dashboards.folderAnnotation` | The annotation the sidecar will look for in configmaps to override the destination folder for files | `nil` | | `sidecar.dashboards.folderAnnotation` | The annotation the sidecar will look for in configmaps to override the destination folder for files | `nil` |
| `sidecar.dashboards.defaultFolderName` | The default folder name, it will create a subfolder under the `sidecar.dashboards.folder` and put dashboards in there instead | `nil` | | `sidecar.dashboards.defaultFolderName` | The default folder name, it will create a subfolder under the `sidecar.dashboards.folder` and put dashboards in there instead | `nil` |
| `sidecar.dashboards.searchNamespace` | If specified, the sidecar will search for dashboard config-maps inside this namespace. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces | `nil` | | `sidecar.dashboards.searchNamespace` | If specified, the sidecar will search for dashboard config-maps inside this namespace. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces | `nil` |
| `sidecar.dashboards.resource` | Should the sidecar looks into secrets, configmaps or both. | `both` |
| `sidecar.datasources.enabled` | Enables the cluster wide search for datasources and adds/updates/deletes them in grafana |`false` | | `sidecar.datasources.enabled` | Enables the cluster wide search for datasources and adds/updates/deletes them in grafana |`false` |
| `sidecar.datasources.label` | Label that config maps with datasources should have to be added | `grafana_datasource` | | `sidecar.datasources.label` | Label that config maps with datasources should have to be added | `grafana_datasource` |
| `sidecar.datasources.labelValue` | Label value that config maps with datasources should have to be added | `nil` | | `sidecar.datasources.labelValue` | Label value that config maps with datasources should have to be added | `nil` |
| `sidecar.datasources.searchNamespace` | If specified, the sidecar will search for datasources config-maps inside this namespace. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces | `nil` | | `sidecar.datasources.searchNamespace` | If specified, the sidecar will search for datasources config-maps inside this namespace. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces | `nil` |
| `sidecar.datasources.resource` | Should the sidecar looks into secrets, configmaps or both. | `both` |
| `sidecar.notifiers.enabled` | Enables the cluster wide search for notifiers and adds/updates/deletes them in grafana | `false` | | `sidecar.notifiers.enabled` | Enables the cluster wide search for notifiers and adds/updates/deletes them in grafana | `false` |
| `sidecar.notifiers.label` | Label that config maps with notifiers should have to be added | `grafana_notifier` | | `sidecar.notifiers.label` | Label that config maps with notifiers should have to be added | `grafana_notifier` |
| `sidecar.notifiers.searchNamespace` | If specified, the sidecar will search for notifiers config-maps (or secrets) inside this namespace. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces | `nil` | | `sidecar.notifiers.searchNamespace` | If specified, the sidecar will search for notifiers config-maps (or secrets) inside this namespace. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces | `nil` |
| `sidecar.notifiers.resource` | Should the sidecar looks into secrets, configmaps or both. | `both` |
| `smtp.existingSecret` | The name of an existing secret containing the SMTP credentials. | `""` | | `smtp.existingSecret` | The name of an existing secret containing the SMTP credentials. | `""` |
| `smtp.userKey` | The key in the existing SMTP secret containing the username. | `"user"` | | `smtp.userKey` | The key in the existing SMTP secret containing the username. | `"user"` |
| `smtp.passwordKey` | The key in the existing SMTP secret containing the password. | `"password"` | | `smtp.passwordKey` | The key in the existing SMTP secret containing the password. | `"password"` |
@ -215,6 +219,7 @@ This version requires Helm >= 3.1.0.
| `imageRenderer.securityContext` | image-renderer deployment securityContext | `{}` | | `imageRenderer.securityContext` | image-renderer deployment securityContext | `{}` |
| `imageRenderer.hostAliases` | image-renderer deployment Host Aliases | `[]` | | `imageRenderer.hostAliases` | image-renderer deployment Host Aliases | `[]` |
| `imageRenderer.priorityClassName` | image-renderer deployment priority class | `''` | | `imageRenderer.priorityClassName` | image-renderer deployment priority class | `''` |
| `imageRenderer.service.enabled` | Enable the image-renderer service | `true` |
| `imageRenderer.service.portName` | image-renderer service port name | `'http'` | | `imageRenderer.service.portName` | image-renderer service port name | `'http'` |
| `imageRenderer.service.port` | image-renderer service port used by both service and deployment | `8081` | | `imageRenderer.service.port` | image-renderer service port used by both service and deployment | `8081` |
| `imageRenderer.grafanaSubPath` | Grafana sub path to use for image renderer callback url | `''` | | `imageRenderer.grafanaSubPath` | Grafana sub path to use for image renderer callback url | `''` |
@ -242,6 +247,9 @@ ingress:
### Example of extraVolumeMounts ### Example of extraVolumeMounts
Volume can be type persistentVolumeClaim or hostPath but not both at same time.
If none existingClaim or hostPath argument is givent then type is emptyDir.
```yaml ```yaml
- extraVolumeMounts: - extraVolumeMounts:
- name: plugins - name: plugins
@ -249,6 +257,10 @@ ingress:
subPath: configs/grafana/plugins subPath: configs/grafana/plugins
existingClaim: existing-grafana-claim existingClaim: existing-grafana-claim
readOnly: false readOnly: false
- name: dashboards
mountPath: /var/lib/grafana/dashboards
hostPath: /usr/shared/grafana/dashboards
readOnly: false
``` ```
## Import dashboards ## Import dashboards

View File

@ -143,3 +143,16 @@ Return the appropriate apiVersion for rbac.
{{- print "rbac.authorization.k8s.io/v1beta1" -}} {{- print "rbac.authorization.k8s.io/v1beta1" -}}
{{- end -}} {{- end -}}
{{- end -}} {{- 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 -}}

View File

@ -100,7 +100,7 @@ initContainers:
- name: FOLDER - name: FOLDER
value: "/etc/grafana/provisioning/datasources" value: "/etc/grafana/provisioning/datasources"
- name: RESOURCE - name: RESOURCE
value: "both" value: {{ quote .Values.sidecar.datasources.resource }}
{{- if .Values.sidecar.enableUniqueFilenames }} {{- if .Values.sidecar.enableUniqueFilenames }}
- name: UNIQUE_FILENAMES - name: UNIQUE_FILENAMES
value: "{{ .Values.sidecar.enableUniqueFilenames }}" value: "{{ .Values.sidecar.enableUniqueFilenames }}"
@ -135,7 +135,7 @@ initContainers:
- name: FOLDER - name: FOLDER
value: "/etc/grafana/provisioning/notifiers" value: "/etc/grafana/provisioning/notifiers"
- name: RESOURCE - name: RESOURCE
value: "both" value: {{ quote .Values.sidecar.notifiers.resource }}
{{- if .Values.sidecar.enableUniqueFilenames }} {{- if .Values.sidecar.enableUniqueFilenames }}
- name: UNIQUE_FILENAMES - name: UNIQUE_FILENAMES
value: "{{ .Values.sidecar.enableUniqueFilenames }}" value: "{{ .Values.sidecar.enableUniqueFilenames }}"
@ -184,7 +184,7 @@ containers:
- name: FOLDER - name: FOLDER
value: "{{ .Values.sidecar.dashboards.folder }}{{- with .Values.sidecar.dashboards.defaultFolderName }}/{{ . }}{{- end }}" value: "{{ .Values.sidecar.dashboards.folder }}{{- with .Values.sidecar.dashboards.defaultFolderName }}/{{ . }}{{- end }}"
- name: RESOURCE - name: RESOURCE
value: "both" value: {{ quote .Values.sidecar.dashboards.resource }}
{{- if .Values.sidecar.enableUniqueFilenames }} {{- if .Values.sidecar.enableUniqueFilenames }}
- name: UNIQUE_FILENAMES - name: UNIQUE_FILENAMES
value: "{{ .Values.sidecar.enableUniqueFilenames }}" value: "{{ .Values.sidecar.enableUniqueFilenames }}"
@ -317,14 +317,14 @@ containers:
containerPort: 3000 containerPort: 3000
protocol: TCP protocol: TCP
env: env:
{{- if not .Values.env.GF_SECURITY_ADMIN_USER }} {{- if and (not .Values.env.GF_SECURITY_ADMIN_USER) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}
- name: GF_SECURITY_ADMIN_USER - name: GF_SECURITY_ADMIN_USER
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: {{ .Values.admin.existingSecret | default (include "grafana.fullname" .) }} name: {{ .Values.admin.existingSecret | default (include "grafana.fullname" .) }}
key: {{ .Values.admin.userKey | default "admin-user" }} key: {{ .Values.admin.userKey | default "admin-user" }}
{{- end }} {{- end }}
{{- if and (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) }} {{- if and (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_DISABLE_INITIAL_ADMIN_CREATION) }}
- name: GF_SECURITY_ADMIN_PASSWORD - name: GF_SECURITY_ADMIN_PASSWORD
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
@ -356,6 +356,14 @@ containers:
- name: GF_RENDERING_CALLBACK_URL - name: GF_RENDERING_CALLBACK_URL
value: http://{{ template "grafana.fullname" . }}.{{ template "grafana.namespace" . }}:{{ .Values.service.port }}/{{ .Values.imageRenderer.grafanaSubPath }} value: http://{{ template "grafana.fullname" . }}.{{ template "grafana.namespace" . }}:{{ .Values.service.port }}/{{ .Values.imageRenderer.grafanaSubPath }}
{{ end }} {{ end }}
- name: GF_PATHS_DATA
value: {{ (get .Values "grafana.ini").paths.data }}
- name: GF_PATHS_LOGS
value: {{ (get .Values "grafana.ini").paths.logs }}
- name: GF_PATHS_PLUGINS
value: {{ (get .Values "grafana.ini").paths.plugins }}
- name: GF_PATHS_PROVISIONING
value: {{ (get .Values "grafana.ini").paths.provisioning }}
{{- range $key, $value := .Values.envValueFrom }} {{- range $key, $value := .Values.envValueFrom }}
- name: {{ $key | quote }} - name: {{ $key | quote }}
valueFrom: valueFrom:
@ -483,8 +491,15 @@ volumes:
{{- end }} {{- end }}
{{- range .Values.extraVolumeMounts }} {{- range .Values.extraVolumeMounts }}
- name: {{ .name }} - name: {{ .name }}
{{- if .existingClaim }}
persistentVolumeClaim: persistentVolumeClaim:
claimName: {{ .existingClaim }} claimName: {{ .existingClaim }}
{{- else if .hostPath }}
hostPath:
path: {{ .hostPath }}
{{- else }}
emptyDir: {}
{{- end }}
{{- end }} {{- end }}
{{- range .Values.extraEmptyDirMounts }} {{- range .Values.extraEmptyDirMounts }}
- name: {{ .name }} - name: {{ .name }}

View File

@ -19,8 +19,10 @@ data:
{{- range $elem, $elemVal := $value }} {{- range $elem, $elemVal := $value }}
{{- if kindIs "invalid" $elemVal }} {{- if kindIs "invalid" $elemVal }}
{{ $elem }} = {{ $elem }} =
{{- else if kindIs "string" $elemVal }}
{{ $elem }} = {{ tpl $elemVal $ }}
{{- else }} {{- else }}
{{ $elem }} = {{ tpl (toYaml $elemVal) $ }} {{ $elem }} = {{ $elemVal }}
{{- end }} {{- end }}
{{- end }} {{- end }}
{{- end }} {{- end }}

View File

@ -14,7 +14,9 @@ metadata:
{{ toYaml . | indent 4 }} {{ toYaml . | indent 4 }}
{{- end }} {{- end }}
spec: spec:
{{- if not .Values.autoscaling.enabled }}
replicas: {{ .Values.replicas }} replicas: {{ .Values.replicas }}
{{- end }}
revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
selector: selector:
matchLabels: matchLabels:
@ -34,7 +36,7 @@ spec:
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
checksum/dashboards-json-config: {{ include (print $.Template.BasePath "/dashboards-json-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 }} checksum/sc-dashboard-provider-config: {{ include (print $.Template.BasePath "/configmap-dashboard-provider.yaml") . | sha256sum }}
{{- if 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)) }} {{- 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 }} checksum/secret: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }}
{{- end }} {{- end }}
{{- if .Values.envRenderSecret }} {{- if .Values.envRenderSecret }}

View File

@ -0,0 +1,20 @@
{{- if .Values.autoscaling.enabled }}
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: {{ template "grafana.fullname" . }}
labels:
app.kubernetes.io/name: {{ template "grafana.name" . }}
helm.sh/chart: {{ template "grafana.chart" . }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: {{ template "grafana.fullname" . }}
minReplicas: {{ .Values.autoscaling.minReplicas }}
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
metrics:
{{ toYaml .Values.autoscaling.metrics | indent 4 }}
{{- end }}

View File

@ -1,4 +1,5 @@
{{ if .Values.imageRenderer.enabled }} {{ if .Values.imageRenderer.enabled }}
{{ if .Values.imageRenderer.service.enabled }}
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
metadata: metadata:
@ -26,3 +27,4 @@ spec:
selector: selector:
{{- include "grafana.imageRenderer.selectorLabels" . | nindent 4 }} {{- include "grafana.imageRenderer.selectorLabels" . | nindent 4 }}
{{ end }} {{ end }}
{{ end }}

View File

@ -13,19 +13,8 @@ spec:
privileged: false privileged: false
allowPrivilegeEscalation: false allowPrivilegeEscalation: false
requiredDropCapabilities: requiredDropCapabilities:
# Default set from Docker, without DAC_OVERRIDE or CHOWN # Default set from Docker, with DAC_OVERRIDE and CHOWN
- FOWNER - ALL
- FSETID
- KILL
- SETGID
- SETUID
- SETPCAP
- NET_BIND_SERVICE
- NET_RAW
- SYS_CHROOT
- MKNOD
- AUDIT_WRITE
- SETFCAP
volumes: volumes:
- 'configMap' - 'configMap'
- 'emptyDir' - 'emptyDir'
@ -38,12 +27,20 @@ spec:
hostIPC: false hostIPC: false
hostPID: false hostPID: false
runAsUser: runAsUser:
rule: 'RunAsAny' rule: 'MustRunAsNonRoot'
seLinux: seLinux:
rule: 'RunAsAny' rule: 'RunAsAny'
supplementalGroups: supplementalGroups:
rule: 'RunAsAny' rule: 'MustRunAs'
ranges:
# Forbid adding the root group.
- min: 1
max: 65535
fsGroup: fsGroup:
rule: 'RunAsAny' rule: 'MustRunAs'
ranges:
# Forbid adding the root group.
- min: 1
max: 65535
readOnlyRootFilesystem: false readOnlyRootFilesystem: false
{{- end }} {{- end }}

View File

@ -1,4 +1,4 @@
{{- if 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)) }} {{- 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) }}
apiVersion: v1 apiVersion: v1
kind: Secret kind: Secret
metadata: metadata:
@ -6,6 +6,10 @@ metadata:
namespace: {{ template "grafana.namespace" . }} namespace: {{ template "grafana.namespace" . }}
labels: labels:
{{- include "grafana.labels" . | nindent 4 }} {{- include "grafana.labels" . | nindent 4 }}
{{- with .Values.annotations }}
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
type: Opaque type: Opaque
data: data:
{{- if and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) }} {{- if and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) }}
@ -13,7 +17,7 @@ data:
{{- if .Values.adminPassword }} {{- if .Values.adminPassword }}
admin-password: {{ .Values.adminPassword | b64enc | quote }} admin-password: {{ .Values.adminPassword | b64enc | quote }}
{{- else }} {{- else }}
admin-password: {{ randAlphaNum 40 | b64enc | quote }} admin-password: {{ template "grafana.password" . }}
{{- end }} {{- end }}
{{- end }} {{- end }}
{{- if not .Values.ldap.existingSecret }} {{- if not .Values.ldap.existingSecret }}

View File

@ -1,3 +1,4 @@
{{ if .Values.service.enabled }}
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
metadata: metadata:
@ -47,4 +48,4 @@ spec:
{{- end }} {{- end }}
selector: selector:
{{- include "grafana.selectorLabels" . | nindent 4 }} {{- include "grafana.selectorLabels" . | nindent 4 }}
{{ end }}

View File

@ -27,7 +27,7 @@ spec:
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
checksum/dashboards-json-config: {{ include (print $.Template.BasePath "/dashboards-json-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 }} checksum/sc-dashboard-provider-config: {{ include (print $.Template.BasePath "/configmap-dashboard-provider.yaml") . | sha256sum }}
{{- if 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)) }} {{- 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 }} checksum/secret: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }}
{{- end }} {{- end }}
{{- with .Values.podAnnotations }} {{- with .Values.podAnnotations }}

View File

@ -38,6 +38,22 @@ serviceAccount:
replicas: 1 replicas: 1
## Create HorizontalPodAutoscaler object for deployment type
#
autoscaling:
enabled: false
# minReplicas: 1
# maxReplicas: 10
# metrics:
# - type: Resource
# resource:
# name: cpu
# targetAverageUtilization: 60
# - type: Resource
# resource:
# name: memory
# targetAverageUtilization: 60
## See `kubectl explain poddisruptionbudget.spec` for more ## See `kubectl explain poddisruptionbudget.spec` for more
## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/ ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
podDisruptionBudget: {} podDisruptionBudget: {}
@ -69,7 +85,7 @@ livenessProbe:
image: image:
repository: rancher/mirrored-grafana-grafana repository: rancher/mirrored-grafana-grafana
tag: 7.4.5 tag: 7.5.8
sha: "" sha: ""
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
@ -119,7 +135,7 @@ extraLabels: {}
downloadDashboardsImage: downloadDashboardsImage:
repository: rancher/mirrored-curlimages-curl repository: rancher/mirrored-curlimages-curl
tag: 7.73.0 tag: 7.77.0
sha: "" sha: ""
pullPolicy: IfNotPresent pullPolicy: IfNotPresent
@ -144,6 +160,7 @@ podPortName: grafana
## ref: http://kubernetes.io/docs/user-guide/services/ ## ref: http://kubernetes.io/docs/user-guide/services/
## ##
service: service:
enabled: true
type: ClusterIP type: ClusterIP
port: 80 port: 80
targetPort: 3000 targetPort: 3000
@ -420,10 +437,14 @@ extraSecretMounts: []
## Additional grafana server volume mounts ## Additional grafana server volume mounts
# Defines additional volume mounts. # Defines additional volume mounts.
extraVolumeMounts: [] extraVolumeMounts: []
# - name: extra-volume # - name: extra-volume-0
# mountPath: /mnt/volume # mountPath: /mnt/volume0
# readOnly: true # readOnly: true
# existingClaim: volume-claim # existingClaim: volume-claim
# - name: extra-volume-1
# mountPath: /mnt/volume1
# readOnly: true
# hostPath: /usr/shared/
## Pass the plugins you want installed as a list. ## Pass the plugins you want installed as a list.
## ##
@ -530,7 +551,7 @@ dashboardsConfigMaps: {}
## ##
grafana.ini: grafana.ini:
paths: paths:
data: /var/lib/grafana/data data: /var/lib/grafana/
logs: /var/log/grafana logs: /var/log/grafana
plugins: /var/lib/grafana/plugins plugins: /var/lib/grafana/plugins
provisioning: /etc/grafana/provisioning provisioning: /etc/grafana/provisioning
@ -601,7 +622,7 @@ smtp:
sidecar: sidecar:
image: image:
repository: rancher/mirrored-kiwigrid-k8s-sidecar repository: rancher/mirrored-kiwigrid-k8s-sidecar
tag: 1.10.7 tag: 1.12.2
sha: "" sha: ""
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
resources: {} resources: {}
@ -629,6 +650,8 @@ sidecar:
# Otherwise the namespace in which the sidecar is running will be used. # Otherwise the namespace in which the sidecar is running will be used.
# It's also possible to specify ALL to search in all namespaces # It's also possible to specify ALL to search in all namespaces
searchNamespace: null searchNamespace: null
# search in configmap, secret or both
resource: both
# If specified, the sidecar will look for annotation with this name to create folder and put graph here. # If specified, the sidecar will look for annotation with this name to create folder and put graph here.
# You can use this parameter together with `provider.foldersFromFilesStructure`to annotate configmaps and create folder structure. # You can use this parameter together with `provider.foldersFromFilesStructure`to annotate configmaps and create folder structure.
folderAnnotation: null folderAnnotation: null
@ -658,10 +681,8 @@ sidecar:
# Otherwise the namespace in which the sidecar is running will be used. # Otherwise the namespace in which the sidecar is running will be used.
# It's also possible to specify ALL to search in all namespaces # It's also possible to specify ALL to search in all namespaces
searchNamespace: null searchNamespace: null
# search in configmap, secret or both
## The name of a secret in the same kubernetes namespace which contain values to be added to the environment resource: both
## This can be useful for database passwords, etc. Value is templated.
envFromSecret: ""
notifiers: notifiers:
enabled: false enabled: false
# label that the configmaps with notifiers are marked with # label that the configmaps with notifiers are marked with
@ -670,6 +691,8 @@ sidecar:
# Otherwise the namespace in which the sidecar is running will be used. # Otherwise the namespace in which the sidecar is running will be used.
# It's also possible to specify ALL to search in all namespaces # It's also possible to specify ALL to search in all namespaces
searchNamespace: null searchNamespace: null
# search in configmap, secret or both
resource: both
## Override the deployment namespace ## Override the deployment namespace
## ##
@ -688,7 +711,7 @@ imageRenderer:
# image-renderer Image repository # image-renderer Image repository
repository: rancher/mirrored-grafana-grafana-image-renderer repository: rancher/mirrored-grafana-grafana-image-renderer
# image-renderer Image tag # image-renderer Image tag
tag: 2.0.1 tag: 3.0.1
# image-renderer Image sha (optional) # image-renderer Image sha (optional)
sha: "" sha: ""
# image-renderer ImagePullPolicy # image-renderer ImagePullPolicy
@ -707,6 +730,8 @@ imageRenderer:
# image-renderer deployment priority class # image-renderer deployment priority class
priorityClassName: '' priorityClassName: ''
service: service:
# Enable the image-renderer service
enabled: true
# image-renderer service port name # image-renderer service port name
portName: 'http' portName: 'http'
# image-renderer service port used by both service and deployment # image-renderer service port used by both service and deployment

View File

@ -1684,10 +1684,10 @@ entries:
catalog.rancher.io/namespace: cattle-monitoring-system catalog.rancher.io/namespace: cattle-monitoring-system
catalog.rancher.io/release-name: rancher-grafana catalog.rancher.io/release-name: rancher-grafana
apiVersion: v2 apiVersion: v2
appVersion: 7.4.5 appVersion: 7.5.8
created: "2021-06-23T08:47:16.868264-07:00" created: "2021-06-25T17:45:08.728864-07:00"
description: The leading tool for querying and visualizing time series and metrics. description: The leading tool for querying and visualizing time series and metrics.
digest: cf3211c911960f7b8eff1d5757e765d7f86e099822b796ed8b1286981a76f025 digest: e7d034ec2026d9fc0706a52570add8465d4daa2b0d78dc8fe3d3902a1ce5dad0
home: https://grafana.net home: https://grafana.net
icon: https://raw.githubusercontent.com/grafana/grafana/master/public/img/logo_transparent_400x.png icon: https://raw.githubusercontent.com/grafana/grafana/master/public/img/logo_transparent_400x.png
kubeVersion: ^1.8.0-0 kubeVersion: ^1.8.0-0
@ -1707,8 +1707,8 @@ entries:
- https://github.com/grafana/grafana - https://github.com/grafana/grafana
type: application type: application
urls: urls:
- assets/rancher-grafana/rancher-grafana-100.0.0+up6.6.4.tgz - assets/rancher-grafana/rancher-grafana-100.0.0+up6.11.0.tgz
version: 100.0.0+up6.6.4 version: 100.0.0+up6.11.0
- annotations: - annotations:
catalog.cattle.io/hidden: "true" catalog.cattle.io/hidden: "true"
catalog.cattle.io/os: linux catalog.cattle.io/os: linux