123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643 |
- rbac:
- create: true
- pspEnabled: true
- pspUseAppArmor: true
- namespaced: false
- extraRoleRules: []
- # - apiGroups: []
- # resources: []
- # verbs: []
- extraClusterRoleRules: []
- # - apiGroups: []
- # resources: []
- # verbs: []
- serviceAccount:
- create: true
- name:
- nameTest:
- # annotations:
- # eks.amazonaws.com/role-arn: arn:aws:iam::123456789000:role/iam-role-name-here
- replicas: 1
- ## See `kubectl explain poddisruptionbudget.spec` for more
- ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
- podDisruptionBudget: {}
- # minAvailable: 1
- # maxUnavailable: 1
- ## See `kubectl explain deployment.spec.strategy` for more
- ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
- deploymentStrategy:
- type: RollingUpdate
- readinessProbe:
- httpGet:
- path: /api/health
- port: 3000
- livenessProbe:
- httpGet:
- path: /api/health
- port: 3000
- initialDelaySeconds: 60
- timeoutSeconds: 30
- failureThreshold: 10
- ## Use an alternate scheduler, e.g. "stork".
- ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
- ##
- # schedulerName: "default-scheduler"
- image:
- repository: registry.cn-beijing.aliyuncs.com/dotbalo/grafana
- tag: 7.2.1
- sha: ""
- pullPolicy: IfNotPresent
- ## Optionally specify an array of imagePullSecrets.
- ## Secrets must be manually created in the namespace.
- ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
- ##
- # pullSecrets:
- # - myRegistrKeySecretName
- testFramework:
- enabled: true
- image: "bats/bats"
- tag: "v1.1.0"
- imagePullPolicy: IfNotPresent
- securityContext: {}
- securityContext:
- runAsUser: 472
- runAsGroup: 472
- fsGroup: 472
- extraConfigmapMounts: []
- # - name: certs-configmap
- # mountPath: /etc/grafana/ssl/
- # subPath: certificates.crt # (optional)
- # configMap: certs-configmap
- # readOnly: true
- extraEmptyDirMounts: []
- # - name: provisioning-notifiers
- # mountPath: /etc/grafana/provisioning/notifiers
- ## Assign a PriorityClassName to pods if set
- # priorityClassName:
- downloadDashboardsImage:
- repository: curlimages/curl
- tag: 7.70.0
- sha: ""
- pullPolicy: IfNotPresent
- downloadDashboards:
- env: {}
- resources: {}
- ## Pod Annotations
- # podAnnotations: {}
- ## Pod Labels
- # podLabels: {}
- podPortName: grafana
- ## Deployment annotations
- # annotations: {}
- ## Expose the grafana service to be accessed from outside the cluster (LoadBalancer service).
- ## or access it from within the cluster (ClusterIP service). Set the service type and the port to serve it.
- ## ref: http://kubernetes.io/docs/user-guide/services/
- ##
- service:
- type: ClusterIP
- port: 80
- targetPort: 3000
- # targetPort: 4181 To be used with a proxy extraContainer
- annotations: {}
- labels: {}
- portName: service
- serviceMonitor:
- ## If true, a ServiceMonitor CRD is created for a prometheus operator
- ## https://github.com/coreos/prometheus-operator
- ##
- enabled: false
- path: /metrics
- # namespace: monitoring (defaults to use the namespace this chart is deployed to)
- labels: {}
- interval: 1m
- scrapeTimeout: 30s
- relabelings: []
- extraExposePorts: []
- # - name: keycloak
- # port: 8080
- # targetPort: 8080
- # type: ClusterIP
- # overrides pod.spec.hostAliases in the grafana deployment's pods
- hostAliases: []
- # - ip: "1.2.3.4"
- # hostnames:
- # - "my.host.com"
- ingress:
- enabled: false
- # Values can be templated
- annotations: {}
- # kubernetes.io/ingress.class: nginx
- # kubernetes.io/tls-acme: "true"
- labels: {}
- path: /
- hosts:
- - chart-example.local
- ## Extra paths to prepend to every host configuration. This is useful when working with annotation based services.
- extraPaths: []
- # - path: /*
- # backend:
- # serviceName: ssl-redirect
- # servicePort: use-annotation
- tls: []
- # - secretName: chart-example-tls
- # hosts:
- # - chart-example.local
- resources: {}
- # limits:
- # cpu: 100m
- # memory: 128Mi
- # requests:
- # cpu: 100m
- # memory: 128Mi
- ## Node labels for pod assignment
- ## ref: https://kubernetes.io/docs/user-guide/node-selection/
- #
- nodeSelector: {}
- ## Tolerations for pod assignment
- ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
- ##
- tolerations: []
- ## Affinity for pod assignment
- ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
- ##
- affinity: {}
- extraInitContainers: []
- ## Enable an Specify container in extraContainers. This is meant to allow adding an authentication proxy to a grafana pod
- extraContainers: |
- # - name: proxy
- # image: quay.io/gambol99/keycloak-proxy:latest
- # args:
- # - -provider=github
- # - -client-id=
- # - -client-secret=
- # - -github-org=<ORG_NAME>
- # - -email-domain=*
- # - -cookie-secret=
- # - -http-address=http://0.0.0.0:4181
- # - -upstream-url=http://127.0.0.1:3000
- # ports:
- # - name: proxy-web
- # containerPort: 4181
- ## Volumes that can be used in init containers that will not be mounted to deployment pods
- extraContainerVolumes: []
- # - name: volume-from-secret
- # secret:
- # secretName: secret-to-mount
- # - name: empty-dir-volume
- # emptyDir: {}
- ## Enable persistence using Persistent Volume Claims
- ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
- ##
- persistence:
- type: pvc
- enabled: false
- # storageClassName: default
- accessModes:
- - ReadWriteOnce
- size: 10Gi
- # annotations: {}
- finalizers:
- - kubernetes.io/pvc-protection
- # subPath: ""
- # existingClaim:
- initChownData:
- ## If false, data ownership will not be reset at startup
- ## This allows the prometheus-server to be run with an arbitrary user
- ##
- enabled: true
- ## initChownData container image
- ##
- image:
- repository: busybox
- tag: "1.31.1"
- sha: ""
- pullPolicy: IfNotPresent
- ## initChownData resource requests and limits
- ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/
- ##
- resources: {}
- # limits:
- # cpu: 100m
- # memory: 128Mi
- # requests:
- # cpu: 100m
- # memory: 128Mi
- # Administrator credentials when not using an existing secret (see below)
- adminUser: admin
- # adminPassword: strongpassword
- # Use an existing secret for the admin user.
- admin:
- existingSecret: ""
- userKey: admin-user
- passwordKey: admin-password
- ## Define command to be executed at startup by grafana container
- ## Needed if using `vault-env` to manage secrets (ref: https://banzaicloud.com/blog/inject-secrets-into-pods-vault/)
- ## Default is "run.sh" as defined in grafana's Dockerfile
- # command:
- # - "sh"
- # - "/run.sh"
- ## Use an alternate scheduler, e.g. "stork".
- ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
- ##
- # schedulerName:
- ## Extra environment variables that will be pass onto deployment pods
- ##
- ## to provide grafana with access to CloudWatch on AWS EKS:
- ## 1. create an iam role of type "Web identity" with provider oidc.eks.* (note the provider for later)
- ## 2. edit the "Trust relationships" of the role, add a line inside the StringEquals clause using the
- ## same oidc eks provider as noted before (same as the existing line)
- ## also, replace NAMESPACE and prometheus-operator-grafana with the service account namespace and name
- ##
- ## "oidc.eks.us-east-1.amazonaws.com/id/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:sub": "system:serviceaccount:NAMESPACE:prometheus-operator-grafana",
- ##
- ## 3. attach a policy to the role, you can use a built in policy called CloudWatchReadOnlyAccess
- ## 4. use the following env: (replace 123456789000 and iam-role-name-here with your aws account number and role name)
- ##
- ## env:
- ## AWS_ROLE_ARN: arn:aws:iam::123456789000:role/iam-role-name-here
- ## AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token
- ## AWS_REGION: us-east-1
- ##
- ## 5. uncomment the EKS section in extraSecretMounts: below
- ## 6. uncomment the annotation section in the serviceAccount: above
- ## make sure to replace arn:aws:iam::123456789000:role/iam-role-name-here with your role arn
- env: {}
- ## "valueFrom" environment variable references that will be added to deployment pods
- ## ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#envvarsource-v1-core
- ## Renders in container spec as:
- ## env:
- ## ...
- ## - name: <key>
- ## valueFrom:
- ## <value rendered as YAML>
- envValueFrom: {}
- ## The name of a secret in the same kubernetes namespace which contain values to be added to the environment
- ## This can be useful for auth tokens, etc. Value is templated.
- envFromSecret: ""
- ## Sensible environment variables that will be rendered as new secret object
- ## This can be useful for auth tokens, etc
- envRenderSecret: {}
- ## Additional grafana server secret mounts
- # Defines additional mounts with secrets. Secrets must be manually created in the namespace.
- extraSecretMounts: []
- # - name: secret-files
- # mountPath: /etc/secrets
- # secretName: grafana-secret-files
- # readOnly: true
- # subPath: ""
- #
- # for AWS EKS (cloudwatch) use the following (see also instruction in env: above)
- # - name: aws-iam-token
- # mountPath: /var/run/secrets/eks.amazonaws.com/serviceaccount
- # readOnly: true
- # projected:
- # defaultMode: 420
- # sources:
- # - serviceAccountToken:
- # audience: sts.amazonaws.com
- # expirationSeconds: 86400
- # path: token
- ## Additional grafana server volume mounts
- # Defines additional volume mounts.
- extraVolumeMounts: []
- # - name: extra-volume
- # mountPath: /mnt/volume
- # readOnly: true
- # existingClaim: volume-claim
- ## Pass the plugins you want installed as a list.
- ##
- plugins: []
- # - digrich-bubblechart-panel
- # - grafana-clock-panel
- ## Configure grafana datasources
- ## ref: http://docs.grafana.org/administration/provisioning/#datasources
- ##
- datasources: {}
- # datasources.yaml:
- # apiVersion: 1
- # datasources:
- # - name: Prometheus
- # type: prometheus
- # url: http://prometheus-prometheus-server
- # access: proxy
- # isDefault: true
- # - name: CloudWatch
- # type: cloudwatch
- # access: proxy
- # uid: cloudwatch
- # editable: false
- # jsonData:
- # authType: credentials
- # defaultRegion: us-east-1
- ## Configure notifiers
- ## ref: http://docs.grafana.org/administration/provisioning/#alert-notification-channels
- ##
- notifiers: {}
- # notifiers.yaml:
- # notifiers:
- # - name: email-notifier
- # type: email
- # uid: email1
- # # either:
- # org_id: 1
- # # or
- # org_name: Main Org.
- # is_default: true
- # settings:
- # addresses: an_email_address@example.com
- # delete_notifiers:
- ## Configure grafana dashboard providers
- ## ref: http://docs.grafana.org/administration/provisioning/#dashboards
- ##
- ## `path` must be /var/lib/grafana/dashboards/<provider_name>
- ##
- dashboardProviders: {}
- # dashboardproviders.yaml:
- # apiVersion: 1
- # providers:
- # - name: 'default'
- # orgId: 1
- # folder: ''
- # type: file
- # disableDeletion: false
- # editable: true
- # options:
- # path: /var/lib/grafana/dashboards/default
- ## Configure grafana dashboard to import
- ## NOTE: To use dashboards you must also enable/configure dashboardProviders
- ## ref: https://grafana.com/dashboards
- ##
- ## dashboards per provider, use provider name as key.
- ##
- dashboards: {}
- # default:
- # some-dashboard:
- # json: |
- # $RAW_JSON
- # custom-dashboard:
- # file: dashboards/custom-dashboard.json
- # prometheus-stats:
- # gnetId: 2
- # revision: 2
- # datasource: Prometheus
- # local-dashboard:
- # url: https://example.com/repository/test.json
- # local-dashboard-base64:
- # url: https://example.com/repository/test-b64.json
- # b64content: true
- ## Reference to external ConfigMap per provider. Use provider name as key and ConfigMap name as value.
- ## A provider dashboards must be defined either by external ConfigMaps or in values.yaml, not in both.
- ## ConfigMap data example:
- ##
- ## data:
- ## example-dashboard.json: |
- ## RAW_JSON
- ##
- dashboardsConfigMaps: {}
- # default: ""
- ## Grafana's primary configuration
- ## NOTE: values in map will be converted to ini format
- ## ref: http://docs.grafana.org/installation/configuration/
- ##
- grafana.ini:
- paths:
- data: /var/lib/grafana/data
- logs: /var/log/grafana
- plugins: /var/lib/grafana/plugins
- provisioning: /etc/grafana/provisioning
- analytics:
- check_for_updates: true
- log:
- mode: console
- grafana_net:
- url: https://grafana.net
- ## grafana Authentication can be enabled with the following values on grafana.ini
- # server:
- # The full public facing url you use in browser, used for redirects and emails
- # root_url:
- # https://grafana.com/docs/grafana/latest/auth/github/#enable-github-in-grafana
- # auth.github:
- # enabled: false
- # allow_sign_up: false
- # scopes: user:email,read:org
- # auth_url: https://github.com/login/oauth/authorize
- # token_url: https://github.com/login/oauth/access_token
- # api_url: https://api.github.com/user
- # team_ids:
- # allowed_organizations:
- # client_id:
- # client_secret:
- ## LDAP Authentication can be enabled with the following values on grafana.ini
- ## NOTE: Grafana will fail to start if the value for ldap.toml is invalid
- # auth.ldap:
- # enabled: true
- # allow_sign_up: true
- # config_file: /etc/grafana/ldap.toml
- ## Grafana's LDAP configuration
- ## Templated by the template in _helpers.tpl
- ## NOTE: To enable the grafana.ini must be configured with auth.ldap.enabled
- ## ref: http://docs.grafana.org/installation/configuration/#auth-ldap
- ## ref: http://docs.grafana.org/installation/ldap/#configuration
- ldap:
- enabled: false
- # `existingSecret` is a reference to an existing secret containing the ldap configuration
- # for Grafana in a key `ldap-toml`.
- existingSecret: ""
- # `config` is the content of `ldap.toml` that will be stored in the created secret
- config: ""
- # config: |-
- # verbose_logging = true
- # [[servers]]
- # host = "my-ldap-server"
- # port = 636
- # use_ssl = true
- # start_tls = false
- # ssl_skip_verify = false
- # bind_dn = "uid=%s,ou=users,dc=myorg,dc=com"
- ## Grafana's SMTP configuration
- ## NOTE: To enable, grafana.ini must be configured with smtp.enabled
- ## ref: http://docs.grafana.org/installation/configuration/#smtp
- smtp:
- # `existingSecret` is a reference to an existing secret containing the smtp configuration
- # for Grafana.
- existingSecret: ""
- userKey: "user"
- passwordKey: "password"
- ## Sidecars that collect the configmaps with specified label and stores the included files them into the respective folders
- ## Requires at least Grafana 5 to work and can't be used together with parameters dashboardProviders, datasources and dashboards
- sidecar:
- image:
- repository: kiwigrid/k8s-sidecar
- tag: 0.1.209
- sha: ""
- imagePullPolicy: IfNotPresent
- resources: {}
- # limits:
- # cpu: 100m
- # memory: 100Mi
- # requests:
- # cpu: 50m
- # memory: 50Mi
- # skipTlsVerify Set to true to skip tls verification for kube api calls
- # skipTlsVerify: true
- enableUniqueFilenames: false
- dashboards:
- enabled: false
- SCProvider: true
- # label that the configmaps with dashboards are marked with
- label: grafana_dashboard
- # folder in the pod that should hold the collected dashboards (unless `defaultFolderName` is set)
- folder: /tmp/dashboards
- # The default folder name, it will create a subfolder under the `folder` and put dashboards in there instead
- defaultFolderName: null
- # 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
- searchNamespace: null
- # provider configuration that lets grafana manage the dashboards
- provider:
- # name of the provider, should be unique
- name: sidecarProvider
- # orgid as configured in grafana
- orgid: 1
- # folder in which the dashboards should be imported in grafana
- folder: ''
- # type of the provider
- type: file
- # disableDelete to activate a import-only behaviour
- disableDelete: false
- # allow updating provisioned dashboards from the UI
- allowUiUpdates: false
- # allow Grafana to replicate dashboard structure from filesystem
- foldersFromFilesStructure: false
- datasources:
- enabled: false
- # label that the configmaps with datasources are marked with
- label: grafana_datasource
- # If specified, the sidecar will search for datasource 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
- searchNamespace: null
- notifiers:
- enabled: false
- # label that the configmaps with notifiers are marked with
- label: grafana_notifier
- # If specified, the sidecar will search for notifier 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
- searchNamespace: null
- ## Override the deployment namespace
- ##
- namespaceOverride: ""
- ## Number of old ReplicaSets to retain
- ##
- revisionHistoryLimit: 10
- ## Add a seperate remote image renderer deployment/service
- imageRenderer:
- # Enable the image-renderer deployment & service
- enabled: false
- replicas: 1
- image:
- # image-renderer Image repository
- repository: grafana/grafana-image-renderer
- # image-renderer Image tag
- tag: latest
- # image-renderer Image sha (optional)
- sha: ""
- # image-renderer ImagePullPolicy
- pullPolicy: Always
- # extra environment variables
- env: {}
- # RENDERING_ARGS: --disable-gpu,--window-size=1280x758
- # RENDERING_MODE: clustered
- # image-renderer deployment securityContext
- securityContext: {}
- # image-renderer deployment Host Aliases
- hostAliases: []
- # image-renderer deployment priority class
- priorityClassName: ''
- service:
- # image-renderer service port name
- portName: 'http'
- # image-renderer service port used by both service and deployment
- port: 8081
- # name of the image-renderer port on the pod
- podPortName: http
- # number of image-renderer replica sets to keep
- revisionHistoryLimit: 10
- networkPolicy:
- # Enable a NetworkPolicy to limit inbound traffic to only the created grafana pods
- limitIngress: true
- # Enable a NetworkPolicy to limit outbound traffic to only the created grafana pods
- limitEgress: false
- resources: {}
- # limits:
- # cpu: 100m
- # memory: 100Mi
- # requests:
- # cpu: 50m
- # memory: 50Mi
|