Merge "[DMAAP] DMaaP ServiceMesh compatibility"
[oom.git] / kubernetes / common / mariadb-galera / values.yaml
1 # Copyright © 2018 Amdocs
2 # Copyright © 2018,2021 Bell Canada
3 # Copyright © 2019 Samsung Electronics
4 # Copyright © 2020 Bitnami, Orange
5 #
6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at
9 #
10 #       http://www.apache.org/licenses/LICENSE-2.0
11 #
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
17
18
19 #################################################################
20 # Secrets metaconfig
21 #################################################################
22 secrets:
23   - uid: '{{ include "common.mariadb.secret.rootPassUID" . }}'
24     type: password
25     externalSecret: '{{ tpl (default "" .Values.rootUser.externalSecret) . }}'
26     password: '{{ .Values.rootUser.password }}'
27   - uid: '{{ include "common.mariadb.secret.userCredentialsUID" . }}'
28     type: basicAuth
29     externalSecret: '{{ tpl (default "" .Values.db.externalSecret) . }}'
30     login: '{{ .Values.db.user }}'
31     password: '{{ .Values.db.password }}'
32   - uid: '{{ include "common.mariadb.secret.backupCredentialsUID" . }}'
33     type: basicAuth
34     externalSecret: '{{ tpl (default "" .Values.galera.mariabackup.externalSecret) . }}'
35     login: '{{ .Values.galera.mariabackup.user }}'
36     password: '{{ .Values.galera.mariabackup.password }}'
37
38 # bitnami image doesn't support well single quote in password
39 passwordStrengthOverride: basic
40
41 #################################################################
42 # Global configuration defaults.
43 #################################################################
44 global:
45   nodePortPrefix: 302
46   persistence:
47     mountPath: /dockerdata-nfs
48     backup:
49       mountPath: /dockerdata-nfs/backup
50   clusterDomain: cluster.local
51   metrics: {}
52
53 image: bitnami/mariadb-galera:10.5.8
54 ## Specify a imagePullPolicy
55 ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
56 ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
57 ##
58 pullPolicy: Always
59
60 ## Set to true if you would like to see extra information on logs
61 ## It turns BASH debugging in minideb-extras-base
62 ##
63 debug: true
64
65 ## Sometimes, especially when a lot of pods are created at the same time,
66 ## actions performed on the databases are tried to be done before actual start.
67 init_sleep_time: 5
68
69 ## String to partially override common.names.fullname template (will maintain the release name)
70 ##
71 nameOverride: mariadb-galera
72
73 ## Use an alternate scheduler, e.g. "stork".
74 ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
75 ##
76 # schedulerName:
77
78 ## StatefulSet controller supports relax its ordering guarantees while preserving its uniqueness and identity guarantees. There are two valid pod management policies: OrderedReady and Parallel
79 ## ref: https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/#pod-management-policy
80 ##
81 podManagementPolicy: OrderedReady
82
83 ## MariaDB Gallera K8s svc properties
84 ##
85 service:
86   ## Kubernetes service type and port number
87   ##
88   type: ClusterIP
89   headless: {}
90   internalPort: &dbPort 3306
91   ports:
92     - name: tcp-mysql
93       port: *dbPort
94   headlessPorts:
95     - name: tcp-galera
96       port: 4567
97     - name: tcp-ist
98       port: 4568
99     - name: tcp-sst
100       port: 4444
101
102
103 ## Pods Service Account
104 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
105 ##
106 serviceAccount:
107   nameOverride: mariadb-galera
108   roles:
109     - read
110
111 ## Pod Security Context
112 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
113 ##
114 securityContext:
115   enabled: true
116   user_id: 10001
117   group_id: 10001
118
119 ## Database credentials for root (admin) user
120 ##
121 rootUser:
122   ## MariaDB admin user
123   user: root
124   ## MariaDB admin password
125   ## Password is ignored if externalSecret is specified.
126   ## If not set, password will be "randomly" generated
127   ## ref: https://github.com/bitnami/bitnami-docker-mariadb-galera#setting-the-root-password-on-first-run
128   ##
129   # password:
130   # externalSecret:
131
132 ## Custom db configuration
133 ##
134 db:
135   ## MariaDB username and password
136   ## Password is ignored if externalSecret is specified.
137   ## If not set, password will be "randomly" generated
138   ## ref: https://github.com/bitnami/bitnami-docker-mariadb-galera#creating-a-database-user-on-first-run
139   ##
140   user: my-user
141   # password:
142   # externalSecret:
143   ## Database to create
144   ## ref: https://github.com/bitnami/bitnami-docker-mariadb-galera#creating-a-database-on-first-run
145   ##
146   # name: my_database
147
148 ## Galera configuration
149 ##
150 galera:
151   ## Galera cluster name
152   ##
153   name: galera
154
155   ## Bootstraping options
156   ## ref: https://github.com/bitnami/bitnami-docker-mariadb-galera#bootstraping
157   bootstrap:
158     ## Node to bootstrap from, you will need to change this parameter incase you want to bootstrap from other node
159     ##
160     bootstrapFromNode:
161     ## Force safe_to_bootstrap in grastate.date file.
162     ## This will set safe_to_bootstrap=1 in the node indicated by bootstrapFromNode.
163     forceSafeToBootstrap: false
164
165   ## Credentials to perform backups
166   ##
167   mariabackup:
168     ## MariaBackup username and password
169     ## Password is ignored if externalSecret is specified.
170     ## If not set, password will be "randomly" generated
171     ## ref: https://github.com/bitnami/bitnami-docker-mariadb-galera#setting-up-a-multi-master-cluster
172     ##
173     user: mariabackup
174     # password:
175     # externalSecret:
176
177 ## The backup job will mount the mariadb data pvc in order to run mariabackup.
178 ## For this reason the db data pvc needs to have accessMode: ReadWriteMany.
179 backup:
180   enabled: false
181   cron: "00 00 * * *"
182   retentionPeriod: 3
183   persistence:
184     ## If true, use a Persistent Volume Claim, If false, use emptyDir
185     ##
186     enabled: true
187     # Enable persistence using an existing PVC
188     # existingClaim:
189     ## selector can be used to match an existing PersistentVolume
190     ## selector:
191     ##   matchLabels:
192     ##     app: my-app
193     selector: {}
194     ## Persistent Volume Storage Class
195     ## If defined, storageClassName: <storageClass>
196     ## If set to "-", storageClassName: "", which disables dynamic provisioning
197     ## If undefined (the default) or set to null, no storageClassName spec is
198     ##   set, choosing the default provisioner.  (gp2 on AWS, standard on
199     ##   GKE, AWS & OpenStack)
200     ##
201     # storageClass: "-"
202     ## Persistent Volume Claim annotations
203     ##
204     annotations:
205     ## Persistent Volume Access Mode
206     ##
207     accessMode: ReadWriteOnce
208     ## Persistent Volume size
209     ##
210     size: 2Gi
211
212
213 readinessCheck:
214   wait_for:
215     - '{{ include "common.name" . }}'
216
217 ## TLS configuration
218 ##
219 tls:
220   ## Enable TLS
221   ##
222   enabled: false
223   ## Name of the secret that contains the certificates
224   ##
225   # certificatesSecret:
226   ## Certificate filename
227   ##
228   # certFilename:
229   ## Certificate Key filename
230   ##
231   # certKeyFilename:
232   ## CA Certificate filename
233   ##
234   # certCAFilename:
235
236 ## Configure MariaDB with a custom my.cnf file
237 ## ref: https://mysql.com/kb/en/mysql/configuring-mysql-with-mycnf/#example-of-configuration-file
238 ## Alternatively, you can put your my.cnf under the files/ directory
239 ##
240 mariadbConfiguration: |-
241   [client]
242   port=3306
243   socket=/opt/bitnami/mariadb/tmp/mysql.sock
244   plugin_dir=/opt/bitnami/mariadb/plugin
245
246   [mysqld]
247   lower_case_table_names = 1
248   default_storage_engine=InnoDB
249   basedir=/opt/bitnami/mariadb
250   datadir=/bitnami/mariadb/data
251   plugin_dir=/opt/bitnami/mariadb/plugin
252   tmpdir=/opt/bitnami/mariadb/tmp
253   socket=/opt/bitnami/mariadb/tmp/mysql.sock
254   pid_file=/opt/bitnami/mariadb/tmp/mysqld.pid
255   bind_address=0.0.0.0
256
257   ## Character set
258   collation_server=utf8_unicode_ci
259   init_connect='SET NAMES utf8'
260   character_set_server=utf8
261
262   ## MyISAM
263   key_buffer_size=32M
264   myisam_recover_options=FORCE,BACKUP
265
266   ## Safety
267   skip_host_cache
268   skip_name_resolve
269   max_allowed_packet=16M
270   max_connect_errors=1000000
271   sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ONLY_FULL_GROUP_BY
272   sysdate_is_now=1
273
274   ## Binary Logging
275   log_bin=mysql-bin
276   expire_logs_days=14
277   # Disabling for performance per http://severalnines.com/blog/9-tips-going-production-galera-cluster-mysql
278   sync_binlog=0
279   # Required for Galera
280   binlog_format=row
281
282   ## Caches and Limits
283   tmp_table_size=32M
284   max_heap_table_size=32M
285   # Re-enabling as now works with Maria 10.1.2
286   query_cache_type=1
287   query_cache_limit=4M
288   query_cache_size=256M
289   max_connections=500
290   thread_cache_size=50
291   open_files_limit=65535
292   table_definition_cache=4096
293   table_open_cache=4096
294
295   ## InnoDB
296   innodb=FORCE
297   innodb_strict_mode=1
298   # Mandatory per https://github.com/codership/documentation/issues/25
299   innodb_autoinc_lock_mode=2
300   # Per https://www.percona.com/blog/2006/08/04/innodb-double-write/
301   innodb_doublewrite=1
302   innodb_flush_method=O_DIRECT
303   innodb_log_files_in_group=2
304   innodb_log_file_size=128M
305   innodb_flush_log_at_trx_commit=1
306   innodb_file_per_table=1
307   # 80% Memory is default reco.
308   # Need to re-evaluate when DB size grows
309   innodb_buffer_pool_size=2G
310   innodb_file_format=Barracuda
311
312   ## Logging
313   log_error=/opt/bitnami/mariadb/logs/mysqld.log
314   slow_query_log_file=/opt/bitnami/mariadb/logs/mysqld.log
315   log_queries_not_using_indexes=1
316   slow_query_log=1
317
318   ## SSL
319   ## Use extraVolumes and extraVolumeMounts to mount /certs filesystem
320   # ssl_ca=/certs/ca.pem
321   # ssl_cert=/certs/server-cert.pem
322   # ssl_key=/certs/server-key.pem
323
324   [galera]
325   wsrep_on=ON
326   wsrep_provider=/opt/bitnami/mariadb/lib/libgalera_smm.so
327   wsrep_sst_method=mariabackup
328   wsrep_slave_threads=4
329   wsrep_cluster_address=gcomm://
330   wsrep_cluster_name=galera
331   wsrep_sst_auth="root:"
332   # Enabled for performance per https://mariadb.com/kb/en/innodb-system-variables/#innodb_flush_log_at_trx_commit
333   innodb_flush_log_at_trx_commit=2
334   # MYISAM REPLICATION SUPPORT #
335   wsrep_replicate_myisam=ON
336   binlog_format=row
337   default_storage_engine=InnoDB
338   innodb_autoinc_lock_mode=2
339   transaction-isolation=READ-COMMITTED
340   wsrep_causal_reads=1
341   wsrep_sync_wait=7
342
343   [mariadb]
344   plugin_load_add=auth_pam
345
346   ## Data-at-Rest Encryption
347   ## Use extraVolumes and extraVolumeMounts to mount /encryption filesystem
348   # plugin_load_add=file_key_management
349   # file_key_management_filename=/encryption/keyfile.enc
350   # file_key_management_filekey=FILE:/encryption/keyfile.key
351   # file_key_management_encryption_algorithm=AES_CTR
352   # encrypt_binlog=ON
353   # encrypt_tmp_files=ON
354
355   ## InnoDB/XtraDB Encryption
356   # innodb_encrypt_tables=ON
357   # innodb_encrypt_temporary_tables=ON
358   # innodb_encrypt_log=ON
359   # innodb_encryption_threads=4
360   # innodb_encryption_rotate_key_age=1
361
362   ## Aria Encryption
363   # aria_encrypt_tables=ON
364   # encrypt_tmp_disk_tables=ON
365
366 ## MariaDB additional command line flags
367 ## Can be used to specify command line flags, for example:
368 ##
369 ## extraFlags: "--max-connect-errors=1000 --max_connections=155"
370
371 ## Desired number of cluster nodes
372 ##
373 replicaCount: 3
374
375 ## updateStrategy for MariaDB Master StatefulSet
376 ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
377 ##
378 updateStrategy:
379   type: RollingUpdate
380
381 ## Additional pod annotations for MariaDB Galera pods
382 ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
383 ## -> here required to enable mariadb-galera in istio
384 ##
385 podAnnotations:
386   #  sidecar.istio.io/inject: "false"
387   traffic.sidecar.istio.io/excludeInboundPorts: "4444,4567,4568"
388   traffic.sidecar.istio.io/includeInboundPorts: '*'
389   traffic.sidecar.istio.io/excludeOutboundPorts: "4444,4567,4568"
390
391 ## Pod affinity preset
392 ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
393 ## Allowed values: soft, hard
394 ##
395 podAffinityPreset: ""
396
397 ## Pod anti-affinity preset
398 ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
399 ## Allowed values: soft, hard
400 ##
401 podAntiAffinityPreset: soft
402
403 ## Node affinity preset
404 ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity
405 ## Allowed values: soft, hard
406 ##
407 nodeAffinityPreset:
408   ## Node affinity type
409   ## Allowed values: soft, hard
410   type: ""
411   ## Node label key to match
412   ## E.g.
413   ## key: "kubernetes.io/e2e-az-name"
414   ##
415   key: ""
416   ## Node label values to match
417   ## E.g.
418   ## values:
419   ##   - e2e-az1
420   ##   - e2e-az2
421   ##
422   values: []
423
424 ## Affinity for pod assignment. Evaluated as a template.
425 ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
426 ## Note: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set
427 ##
428 affinity: {}
429
430 ## Node labels for pod assignment. Evaluated as a template.
431 ## ref: https://kubernetes.io/docs/user-guide/node-selection/
432 ##
433 nodeSelector: {}
434
435 ## Tolerations for pod assignment. Evaluated as a template.
436 ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
437 ##
438 tolerations: []
439
440 ## Enable persistence using Persistent Volume Claims
441 ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
442 ##
443 persistence:
444   ## If true, use a Persistent Volume Claim, If false, use emptyDir
445   ##
446   enabled: true
447   # Enable persistence using an existing PVC
448   # existingClaim:
449   mountPath: /dockerdata-nfs
450   mountSubPath: "mariadb-galera/data"
451   ## selector can be used to match an existing PersistentVolume
452   ## selector:
453   ##   matchLabels:
454   ##     app: my-app
455   selector: {}
456   ## Persistent Volume Storage Class
457   ## If defined, storageClassName: <storageClass>
458   ## If set to "-", storageClassName: "", which disables dynamic provisioning
459   ## If undefined (the default) or set to null, no storageClassName spec is
460   ##   set, choosing the default provisioner.  (gp2 on AWS, standard on
461   ##   GKE, AWS & OpenStack)
462   ##
463   # storageClass: "-"
464   ## Persistent Volume Claim annotations
465   ##
466   annotations:
467   ## Persistent Volume Access Mode
468   ## Use ReadWriteMany if backup is enabled, see backup section.
469   ##
470   accessMode: ReadWriteOnce
471   ## Persistent Volume size
472   ##
473   size: 3Gi
474
475 ## Additional pod labels
476 ##
477 # podLabels:
478 #   extraLabel: extraValue
479
480 ## Priority Class Name
481 #
482 # priorityClassName: 'priorityClass'
483
484 ## MariaDB Galera containers' resource requests and limits
485 ## ref: http://kubernetes.io/docs/user-guide/compute-resources/
486 ##
487 flavor: small
488 resources:
489   small:
490     limits:
491       cpu: 1
492       memory: 4Gi
493     requests:
494       cpu: 500m
495       memory: 2Gi
496   large:
497     limits:
498       cpu: 2
499       memory: 6Gi
500     requests:
501       cpu: 1
502       memory: 3Gi
503   unlimited: {}
504
505 ## MariaDB Galera containers' liveness and readiness probes
506 ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
507 ##
508 livenessProbe:
509   enabled: true
510   initialDelaySeconds: 1
511   periodSeconds: 10
512   timeoutSeconds: 180
513   successThreshold: 1
514   failureThreshold: 3
515 readinessProbe:
516   enabled: true
517   initialDelaySeconds: 1
518   periodSeconds: 10
519   timeoutSeconds: 180
520   successThreshold: 1
521   failureThreshold: 3
522 startupProbe:
523   ## Initializing the database could take some time
524   ##
525   enabled: true
526   initialDelaySeconds: 10
527   periodSeconds: 10
528   timeoutSeconds: 180
529   successThreshold: 1
530   # will wait up for initialDelaySeconds + failureThreshold*periodSeconds before
531   # stating startup wasn't good (910s per default)
532   failureThreshold: 90
533
534 ## Pod disruption budget configuration
535 ##
536 podDisruptionBudget:
537   ## Specifies whether a Pod disruption budget should be created
538   ##
539   create: true
540   minAvailable: 1
541   # maxUnavailable: 1
542
543 ## Prometheus exporter configuration
544 ##
545 metrics:
546   ## Bitnami MySQL Prometheus exporter image
547   ## ref: https://hub.docker.com/r/bitnami/mysqld-exporter/tags/
548   ##
549   image: bitnami/mysqld-exporter:0.12.1-debian-10-r264
550   pullPolicy: Always
551   ## MySQL exporter additional command line flags
552   ## Can be used to specify command line flags
553   ## E.g.:
554   ## extraFlags:
555   ##   - --collect.binlog_size
556   ##
557   extraFlags: []
558   ## MySQL Prometheus exporter containers' resource requests and limits
559   ## ref: http://kubernetes.io/docs/user-guide/compute-resources/
560   ##
561   resources:
562     # We usually recommend not to specify default resources and to leave this as a conscious
563     # choice for the user. This also increases chances charts run on environments with little
564     # resources, such as Minikube. If you do want to specify resources, uncomment the following
565     # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
566     limits:
567       cpu: 0.5
568       memory: 256Mi
569     requests:
570       cpu: 0.5
571       memory: 256Mi
572   ## MariaDB Galera metrics container's liveness and readiness probes
573   ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
574   ##
575   livenessProbe:
576     enabled: true
577     initialDelaySeconds: 30
578     periodSeconds: 10
579     timeoutSeconds: 5
580     successThreshold: 1
581     failureThreshold: 3
582   readinessProbe:
583     enabled: true
584     initialDelaySeconds: 5
585     periodSeconds: 10
586     timeoutSeconds: 5
587     successThreshold: 1
588     failureThreshold: 3
589   ## MySQL Prometheus exporter service parameters
590   ##
591   service:
592     type: ClusterIP
593     port: 9104
594     annotations:
595       prometheus.io/scrape: "true"
596       prometheus.io/port: "9104"
597
598   ## Prometheus Operator ServiceMonitor configuration
599   ##
600   serviceMonitor:
601     enabled: false
602     ## Namespace in which Prometheus is running
603     ##
604     # namespace: monitoring
605
606     ## Interval at which metrics should be scraped.
607     ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
608     ##
609     # interval: 10s
610
611     ## Timeout after which the scrape is ended
612     ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
613     ##
614     # scrapeTimeout: 10s
615
616     ## ServiceMonitor selector labels
617     ## ref: https://github.com/bitnami/charts/tree/master/bitnami/prometheus-operator#prometheus-configuration
618     ##
619     # selector:
620     #   prometheus: kube-prometheus
621
622     ## RelabelConfigs to apply to samples before scraping
623     ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
624     ## Value is evalued as a template
625     ##
626     relabelings: []
627
628     ## MetricRelabelConfigs to apply to samples before ingestion
629     ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
630     ## Value is evalued as a template
631     ##
632     metricRelabelings: []
633     #  - sourceLabels:
634     #      - "__name__"
635     #    targetLabel: "__name__"
636     #    action: replace
637     #    regex: '(.*)'
638     #    replacement: 'example_prefix_$1'
639
640   ## Prometheus Operator PrometheusRule configuration
641   ##
642   prometheusRules:
643     enabled: false
644
645     ## Additional labels to add to the PrometheusRule so it is picked up by the operator.
646     ## If using the [Helm Chart](https://github.com/helm/charts/tree/master/stable/prometheus-operator) this is the name of the Helm release and 'app: prometheus-operator'
647     selector:
648       app: prometheus-operator
649       release: prometheus
650
651     ## Rules as a map.
652     rules: []
653     #  - alert: MariaDB-Down
654     #    annotations:
655     #      message: 'MariaDB instance {{ $labels.instance }} is down'
656     #      summary: MariaDB instance is down
657     #    expr: absent(up{job="mariadb-galera"} == 1)
658     #    labels:
659     #      severity: warning
660     #      service: mariadb-galera
661     #    for: 5m