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