From 80c308720dc92a3e0d11f2c9cf5c4b55afc7e982 Mon Sep 17 00:00:00 2001 From: aguyot-ensae Date: Wed, 24 Apr 2024 19:13:37 +0200 Subject: [PATCH] update depot chart catalogue genes --- charts/limesurvey-1/.helmignore | 23 + charts/limesurvey-1/Chart.lock | 6 + charts/limesurvey-1/Chart.yaml | 22 + charts/limesurvey-1/README.md | 116 ++ charts/limesurvey-1/README.md.gotmpl | 29 + .../limesurvey-1/charts/mariadb/.helmignore | 23 + charts/limesurvey-1/charts/mariadb/Chart.lock | 6 + charts/limesurvey-1/charts/mariadb/Chart.yaml | 36 + charts/limesurvey-1/charts/mariadb/README.md | 649 ++++++++ .../charts/mariadb/charts/common/.helmignore | 24 + .../charts/mariadb/charts/common/Chart.yaml | 23 + .../charts/mariadb/charts/common/README.md | 235 +++ .../charts/common/templates/_affinities.tpl | 139 ++ .../charts/common/templates/_capabilities.tpl | 229 +++ .../common/templates/_compatibility.tpl | 39 + .../charts/common/templates/_errors.tpl | 28 + .../charts/common/templates/_images.tpl | 117 ++ .../charts/common/templates/_ingress.tpl | 73 + .../charts/common/templates/_labels.tpl | 46 + .../charts/common/templates/_names.tpl | 71 + .../charts/common/templates/_resources.tpl | 50 + .../charts/common/templates/_secrets.tpl | 182 +++ .../charts/common/templates/_storage.tpl | 28 + .../charts/common/templates/_tplvalues.tpl | 38 + .../charts/common/templates/_utils.tpl | 77 + .../charts/common/templates/_warnings.tpl | 82 + .../templates/validations/_cassandra.tpl | 77 + .../common/templates/validations/_mariadb.tpl | 108 ++ .../common/templates/validations/_mongodb.tpl | 113 ++ .../common/templates/validations/_mysql.tpl | 108 ++ .../templates/validations/_postgresql.tpl | 134 ++ .../common/templates/validations/_redis.tpl | 81 + .../templates/validations/_validations.tpl | 51 + .../charts/mariadb/charts/common/values.yaml | 8 + .../charts/mariadb/templates/NOTES.txt | 76 + .../charts/mariadb/templates/_helpers.tpl | 164 ++ .../charts/mariadb/templates/extra-list.yaml | 9 + .../mariadb/templates/networkpolicy.yaml | 76 + .../mariadb/templates/primary/configmap.yaml | 20 + .../primary/initialization-configmap.yaml | 19 + .../charts/mariadb/templates/primary/pdb.yaml | 28 + .../templates/primary/statefulset.yaml | 443 ++++++ .../charts/mariadb/templates/primary/svc.yaml | 62 + .../mariadb/templates/prometheusrules.yaml | 24 + .../charts/mariadb/templates/role.yaml | 23 + .../charts/mariadb/templates/rolebinding.yaml | 23 + .../templates/secondary/configmap.yaml | 20 + .../mariadb/templates/secondary/pdb.yaml | 28 + .../templates/secondary/statefulset.yaml | 414 +++++ .../mariadb/templates/secondary/svc.yaml | 64 + .../charts/mariadb/templates/secrets.yaml | 98 ++ .../mariadb/templates/serviceaccount.yaml | 18 + .../mariadb/templates/servicemonitor.yaml | 44 + .../charts/mariadb/values.schema.json | 176 +++ .../limesurvey-1/charts/mariadb/values.yaml | 1369 +++++++++++++++++ charts/limesurvey-1/icon.png | Bin 0 -> 8080 bytes charts/limesurvey-1/limesurvey-0.2.56.tgz | Bin 0 -> 71110 bytes charts/limesurvey-1/limesurvey-1-0.2.56.tgz | Bin 0 -> 143902 bytes charts/limesurvey-1/limesurvey-tt-0.2.59.tgz | Bin 0 -> 287204 bytes charts/limesurvey-1/limesurvey-tt-0.2.60.tgz | Bin 0 -> 575474 bytes charts/limesurvey-1/templates/NOTES.txt | 26 + charts/limesurvey-1/templates/_helpers.tpl | 105 ++ charts/limesurvey-1/templates/deployment.yaml | 228 +++ charts/limesurvey-1/templates/hpa.yaml | 28 + charts/limesurvey-1/templates/ingress.yaml | 58 + charts/limesurvey-1/templates/pvc.yaml | 32 + charts/limesurvey-1/templates/secrets.yaml | 48 + charts/limesurvey-1/templates/service.yaml | 15 + .../templates/serviceaccount.yaml | 12 + .../templates/tests/test-connection.yaml | 15 + charts/limesurvey-1/values.schema.json | 31 + charts/limesurvey-1/values.yaml | 231 +++ charts/limesurvey-library/.helmignore | 24 + charts/limesurvey-library/Chart.lock | 6 + charts/limesurvey-library/Chart.yaml | 19 + charts/limesurvey-library/README.md | 181 +++ .../charts/mariadb/.helmignore | 21 + .../charts/mariadb/Chart.lock | 6 + .../charts/mariadb/Chart.yaml | 30 + .../charts/mariadb/README.md | 559 +++++++ .../charts/mariadb/charts/common/.helmignore | 22 + .../charts/mariadb/charts/common/Chart.yaml | 23 + .../charts/mariadb/charts/common/README.md | 351 +++++ .../charts/common/templates/_affinities.tpl | 106 ++ .../charts/common/templates/_capabilities.tpl | 154 ++ .../charts/common/templates/_errors.tpl | 23 + .../charts/common/templates/_images.tpl | 76 + .../charts/common/templates/_ingress.tpl | 68 + .../charts/common/templates/_labels.tpl | 18 + .../charts/common/templates/_names.tpl | 66 + .../charts/common/templates/_secrets.tpl | 165 ++ .../charts/common/templates/_storage.tpl | 23 + .../charts/common/templates/_tplvalues.tpl | 13 + .../charts/common/templates/_utils.tpl | 62 + .../charts/common/templates/_warnings.tpl | 14 + .../templates/validations/_cassandra.tpl | 72 + .../common/templates/validations/_mariadb.tpl | 103 ++ .../common/templates/validations/_mongodb.tpl | 108 ++ .../common/templates/validations/_mysql.tpl | 103 ++ .../templates/validations/_postgresql.tpl | 129 ++ .../common/templates/validations/_redis.tpl | 76 + .../templates/validations/_validations.tpl | 46 + .../charts/mariadb/charts/common/values.yaml | 5 + .../charts/mariadb/templates/NOTES.txt | 75 + .../charts/mariadb/templates/_helpers.tpl | 149 ++ .../charts/mariadb/templates/extra-list.yaml | 4 + .../templates/networkpolicy-egress.yaml | 33 + .../mariadb/templates/primary/configmap.yaml | 18 + .../primary/initialization-configmap.yaml | 11 + .../primary/networkpolicy-ingress.yaml | 56 + .../charts/mariadb/templates/primary/pdb.yaml | 25 + .../templates/primary/statefulset.yaml | 394 +++++ .../charts/mariadb/templates/primary/svc.yaml | 61 + .../mariadb/templates/prometheusrules.yaml | 26 + .../charts/mariadb/templates/role.yaml | 21 + .../charts/mariadb/templates/rolebinding.yaml | 21 + .../templates/secondary/configmap.yaml | 18 + .../secondary/networkpolicy-ingress.yaml | 49 + .../mariadb/templates/secondary/pdb.yaml | 25 + .../templates/secondary/statefulset.yaml | 365 +++++ .../mariadb/templates/secondary/svc.yaml | 63 + .../charts/mariadb/templates/secrets.yaml | 35 + .../mariadb/templates/serviceaccount.yaml | 19 + .../mariadb/templates/servicemonitor.yaml | 48 + .../charts/mariadb/values.schema.json | 176 +++ .../charts/mariadb/values.yaml | 1311 ++++++++++++++++ charts/limesurvey-library/icon.png | Bin 0 -> 8080 bytes charts/limesurvey-library/templates/NOTES.txt | 29 + .../limesurvey-library/templates/_helpers.tpl | 108 ++ .../templates/deployment.yaml | 272 ++++ charts/limesurvey-library/templates/hpa.yaml | 28 + .../limesurvey-library/templates/ingress.yaml | 61 + charts/limesurvey-library/templates/pvc.yaml | 32 + .../limesurvey-library/templates/secrets.yaml | 46 + .../limesurvey-library/templates/service.yaml | 15 + .../templates/serviceaccount.yaml | 12 + charts/limesurvey-library/values.yaml | 201 +++ charts/limesurvey-martial/.helmignore | 24 + charts/limesurvey-martial/Chart.lock | 6 + charts/limesurvey-martial/Chart.yaml | 19 + charts/limesurvey-martial/README.md | 181 +++ .../charts/mariadb-11.5.7.tgz | Bin 0 -> 45541 bytes .../charts/mariadb/.helmignore | 21 + .../charts/mariadb/Chart.lock | 6 + .../charts/mariadb/Chart.yaml | 30 + .../charts/mariadb/README.md | 559 +++++++ .../charts/mariadb/charts/common/.helmignore | 22 + .../charts/mariadb/charts/common/Chart.yaml | 23 + .../charts/mariadb/charts/common/README.md | 351 +++++ .../charts/common/templates/_affinities.tpl | 106 ++ .../charts/common/templates/_capabilities.tpl | 154 ++ .../charts/common/templates/_errors.tpl | 23 + .../charts/common/templates/_images.tpl | 76 + .../charts/common/templates/_ingress.tpl | 68 + .../charts/common/templates/_labels.tpl | 18 + .../charts/common/templates/_names.tpl | 66 + .../charts/common/templates/_secrets.tpl | 165 ++ .../charts/common/templates/_storage.tpl | 23 + .../charts/common/templates/_tplvalues.tpl | 13 + .../charts/common/templates/_utils.tpl | 62 + .../charts/common/templates/_warnings.tpl | 14 + .../templates/validations/_cassandra.tpl | 72 + .../common/templates/validations/_mariadb.tpl | 103 ++ .../common/templates/validations/_mongodb.tpl | 108 ++ .../common/templates/validations/_mysql.tpl | 103 ++ .../templates/validations/_postgresql.tpl | 129 ++ .../common/templates/validations/_redis.tpl | 76 + .../templates/validations/_validations.tpl | 46 + .../charts/mariadb/charts/common/values.yaml | 5 + .../charts/mariadb/templates/NOTES.txt | 75 + .../charts/mariadb/templates/_helpers.tpl | 149 ++ .../charts/mariadb/templates/extra-list.yaml | 4 + .../templates/networkpolicy-egress.yaml | 33 + .../mariadb/templates/primary/configmap.yaml | 18 + .../primary/initialization-configmap.yaml | 11 + .../primary/networkpolicy-ingress.yaml | 56 + .../charts/mariadb/templates/primary/pdb.yaml | 25 + .../templates/primary/statefulset.yaml | 394 +++++ .../charts/mariadb/templates/primary/svc.yaml | 61 + .../mariadb/templates/prometheusrules.yaml | 26 + .../charts/mariadb/templates/role.yaml | 21 + .../charts/mariadb/templates/rolebinding.yaml | 21 + .../templates/secondary/configmap.yaml | 18 + .../secondary/networkpolicy-ingress.yaml | 49 + .../mariadb/templates/secondary/pdb.yaml | 25 + .../templates/secondary/statefulset.yaml | 365 +++++ .../mariadb/templates/secondary/svc.yaml | 63 + .../charts/mariadb/templates/secrets.yaml | 35 + .../mariadb/templates/serviceaccount.yaml | 19 + .../mariadb/templates/servicemonitor.yaml | 48 + .../charts/mariadb/values.schema.json | 176 +++ .../charts/mariadb/values.yaml | 1311 ++++++++++++++++ charts/limesurvey-martial/icon.png | Bin 0 -> 8080 bytes .../limesurvey-martial-0.8.2.tgz | Bin 0 -> 111201 bytes .../limesurvey-martial-0.8.3.tgz | Bin 0 -> 225847 bytes charts/limesurvey-martial/template.txt | 444 ++++++ charts/limesurvey-martial/templates/NOTES.txt | 29 + .../limesurvey-martial/templates/_helpers.tpl | 108 ++ .../templates/deployment.yaml | 272 ++++ charts/limesurvey-martial/templates/hpa.yaml | 28 + .../limesurvey-martial/templates/ingress.yaml | 55 + charts/limesurvey-martial/templates/pvc.yaml | 32 + .../limesurvey-martial/templates/secrets.yaml | 46 + .../limesurvey-martial/templates/service.yaml | 15 + .../templates/serviceaccount.yaml | 12 + charts/limesurvey-martial/values.schema.json | 31 + charts/limesurvey-martial/values.yaml | 214 +++ charts/limesurvey/.helmignore | 23 + charts/limesurvey/Chart.lock | 9 + charts/limesurvey/Chart.yaml | 23 + charts/limesurvey/README.md | 116 ++ charts/limesurvey/README.md.gotmpl | 29 + .../charts/library-chart-1.5.21.tgz | Bin 0 -> 6204 bytes charts/limesurvey/charts/mariadb-18.0.2.tgz | Bin 0 -> 52112 bytes charts/limesurvey/icon.png | Bin 0 -> 8080 bytes charts/limesurvey/limesurvey-0.2.56.tgz | Bin 0 -> 79554 bytes charts/limesurvey/limesurvey-0.2.57.tgz | Bin 0 -> 159864 bytes charts/limesurvey/limesurvey-0.2.58.tgz | Bin 0 -> 320265 bytes charts/limesurvey/templates/NOTES.txt | 26 + charts/limesurvey/templates/_helpers.tpl | 105 ++ charts/limesurvey/templates/deployment.yaml | 120 ++ .../templates/deployment.yaml stock | 228 +++ charts/limesurvey/templates/hpa.yaml | 28 + charts/limesurvey/templates/ingress.yaml | 1 + .../templates/networkpolicy-ingress.yaml | 1 + .../limesurvey/templates/networkpolicy.yaml | 1 + charts/limesurvey/templates/pvc.yaml | 32 + charts/limesurvey/templates/secrets.yaml | 48 + charts/limesurvey/templates/service.yaml | 18 + .../limesurvey/templates/service.yaml stock | 15 + .../limesurvey/templates/serviceaccount.yaml | 12 + .../templates/tests/test-connection.yaml | 15 + charts/limesurvey/values.schema.json | 282 ++++ charts/limesurvey/values.yaml | 270 ++++ charts/wordpress final/.helmignore | 23 + charts/wordpress final/Chart.lock | 12 + charts/wordpress final/Chart.yaml | 47 + charts/wordpress final/README.md | 772 ++++++++++ .../wordpress final/charts/common-2.19.1.tgz | Bin 0 -> 15699 bytes .../wordpress final/charts/mariadb-16.5.0.tgz | Bin 0 -> 51501 bytes .../charts/memcached-6.14.0.tgz | Bin 0 -> 40339 bytes charts/wordpress final/curl | 0 charts/wordpress final/index.yaml | 161 ++ charts/wordpress final/template.txt | 564 +++++++ charts/wordpress final/templates/NOTES.txt | 96 ++ charts/wordpress final/templates/_helpers.tpl | 286 ++++ .../templates/config-secret.yaml | 18 + .../wordpress final/templates/deployment.yaml | 389 +++++ .../templates/externaldb-secrets.yaml | 19 + .../wordpress final/templates/extra-list.yaml | 9 + charts/wordpress final/templates/hpa.yaml | 48 + .../templates/httpd-configmap.yaml | 19 + charts/wordpress final/templates/ingress.yaml | 62 + .../templates/metrics-svc.yaml | 27 + .../networkpolicy-backend-ingress.yaml | 30 + .../templates/networkpolicy-egress.yaml | 35 + .../templates/networkpolicy-ingress.yaml | 63 + charts/wordpress final/templates/pdb.yaml | 26 + .../templates/postinit-configmap.yaml | 46 + charts/wordpress final/templates/pvc.yaml | 36 + charts/wordpress final/templates/secrets.yaml | 26 + .../templates/serviceaccount.yaml | 18 + .../templates/servicemonitor.yaml | 43 + charts/wordpress final/templates/svc.yaml | 59 + .../templates/tls-secrets.yaml | 44 + charts/wordpress final/values.schema.json | 31 + .../values.schema.json.original | 212 +++ charts/wordpress final/values.yaml | 1260 +++++++++++++++ .../wordpress-final-20.1.9.tgz | Bin 0 -> 148058 bytes charts/wordpress-raw/.helmignore | 23 + charts/wordpress-raw/Chart.lock | 6 + charts/wordpress-raw/Chart.yaml | 13 + charts/wordpress-raw/README.md | 176 +++ charts/wordpress-raw/RELEASENOTES.md | 46 + .../wordpress-raw/charts/mariadb/.helmignore | 23 + .../wordpress-raw/charts/mariadb/Chart.yaml | 8 + charts/wordpress-raw/charts/mariadb/README.md | 128 ++ .../charts/mariadb/RELEASENOTES.md | 68 + .../charts/mariadb/templates/_helpers.tpl | 72 + .../mariadb/templates/customconfig.yaml | 11 + .../mariadb/templates/customscripts.yaml | 13 + .../charts/mariadb/templates/pvc.yaml | 27 + .../charts/mariadb/templates/scripts.yaml | 27 + .../mariadb/templates/secureconfig.yaml | 22 + .../charts/mariadb/templates/service.yaml | 28 + .../mariadb/templates/serviceaccount.yaml | 12 + .../charts/mariadb/templates/statefulset.yaml | 295 ++++ .../wordpress-raw/charts/mariadb/values.yaml | 220 +++ charts/wordpress-raw/templates/_helpers.tpl | 88 ++ .../wordpress-raw/templates/deployment.yaml | 223 +++ .../templates/extendedconfig.yaml | 33 + charts/wordpress-raw/templates/ingress.yaml | 52 + .../templates/networkpolicy.yaml | 25 + charts/wordpress-raw/templates/pdp.yaml | 22 + charts/wordpress-raw/templates/pvc.yaml | 33 + .../wordpress-raw/templates/secureconfig.yaml | 30 + charts/wordpress-raw/templates/service.yaml | 31 + .../templates/serviceaccount.yaml | 12 + .../templates/tests/test-connection.yaml | 15 + charts/wordpress-raw/values.yaml | 296 ++++ charts/wordpress-raw/wordpress-0.11.0.tgz | Bin 0 -> 16057 bytes 301 files changed, 28499 insertions(+) create mode 100644 charts/limesurvey-1/.helmignore create mode 100644 charts/limesurvey-1/Chart.lock create mode 100644 charts/limesurvey-1/Chart.yaml create mode 100644 charts/limesurvey-1/README.md create mode 100644 charts/limesurvey-1/README.md.gotmpl create mode 100644 charts/limesurvey-1/charts/mariadb/.helmignore create mode 100644 charts/limesurvey-1/charts/mariadb/Chart.lock create mode 100644 charts/limesurvey-1/charts/mariadb/Chart.yaml create mode 100644 charts/limesurvey-1/charts/mariadb/README.md create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/.helmignore create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/Chart.yaml create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/README.md create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/templates/_affinities.tpl create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/templates/_capabilities.tpl create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/templates/_compatibility.tpl create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/templates/_errors.tpl create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/templates/_images.tpl create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/templates/_ingress.tpl create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/templates/_labels.tpl create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/templates/_names.tpl create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/templates/_resources.tpl create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/templates/_secrets.tpl create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/templates/_storage.tpl create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/templates/_tplvalues.tpl create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/templates/_utils.tpl create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/templates/_warnings.tpl create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_cassandra.tpl create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_mariadb.tpl create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_mongodb.tpl create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_mysql.tpl create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_postgresql.tpl create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_redis.tpl create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_validations.tpl create mode 100644 charts/limesurvey-1/charts/mariadb/charts/common/values.yaml create mode 100644 charts/limesurvey-1/charts/mariadb/templates/NOTES.txt create mode 100644 charts/limesurvey-1/charts/mariadb/templates/_helpers.tpl create mode 100644 charts/limesurvey-1/charts/mariadb/templates/extra-list.yaml create mode 100644 charts/limesurvey-1/charts/mariadb/templates/networkpolicy.yaml create mode 100644 charts/limesurvey-1/charts/mariadb/templates/primary/configmap.yaml create mode 100644 charts/limesurvey-1/charts/mariadb/templates/primary/initialization-configmap.yaml create mode 100644 charts/limesurvey-1/charts/mariadb/templates/primary/pdb.yaml create mode 100644 charts/limesurvey-1/charts/mariadb/templates/primary/statefulset.yaml create mode 100644 charts/limesurvey-1/charts/mariadb/templates/primary/svc.yaml create mode 100644 charts/limesurvey-1/charts/mariadb/templates/prometheusrules.yaml create mode 100644 charts/limesurvey-1/charts/mariadb/templates/role.yaml create mode 100644 charts/limesurvey-1/charts/mariadb/templates/rolebinding.yaml create mode 100644 charts/limesurvey-1/charts/mariadb/templates/secondary/configmap.yaml create mode 100644 charts/limesurvey-1/charts/mariadb/templates/secondary/pdb.yaml create mode 100644 charts/limesurvey-1/charts/mariadb/templates/secondary/statefulset.yaml create mode 100644 charts/limesurvey-1/charts/mariadb/templates/secondary/svc.yaml create mode 100644 charts/limesurvey-1/charts/mariadb/templates/secrets.yaml create mode 100644 charts/limesurvey-1/charts/mariadb/templates/serviceaccount.yaml create mode 100644 charts/limesurvey-1/charts/mariadb/templates/servicemonitor.yaml create mode 100644 charts/limesurvey-1/charts/mariadb/values.schema.json create mode 100644 charts/limesurvey-1/charts/mariadb/values.yaml create mode 100644 charts/limesurvey-1/icon.png create mode 100644 charts/limesurvey-1/limesurvey-0.2.56.tgz create mode 100644 charts/limesurvey-1/limesurvey-1-0.2.56.tgz create mode 100644 charts/limesurvey-1/limesurvey-tt-0.2.59.tgz create mode 100644 charts/limesurvey-1/limesurvey-tt-0.2.60.tgz create mode 100644 charts/limesurvey-1/templates/NOTES.txt create mode 100644 charts/limesurvey-1/templates/_helpers.tpl create mode 100644 charts/limesurvey-1/templates/deployment.yaml create mode 100644 charts/limesurvey-1/templates/hpa.yaml create mode 100644 charts/limesurvey-1/templates/ingress.yaml create mode 100644 charts/limesurvey-1/templates/pvc.yaml create mode 100644 charts/limesurvey-1/templates/secrets.yaml create mode 100644 charts/limesurvey-1/templates/service.yaml create mode 100644 charts/limesurvey-1/templates/serviceaccount.yaml create mode 100644 charts/limesurvey-1/templates/tests/test-connection.yaml create mode 100644 charts/limesurvey-1/values.schema.json create mode 100644 charts/limesurvey-1/values.yaml create mode 100644 charts/limesurvey-library/.helmignore create mode 100644 charts/limesurvey-library/Chart.lock create mode 100644 charts/limesurvey-library/Chart.yaml create mode 100644 charts/limesurvey-library/README.md create mode 100644 charts/limesurvey-library/charts/mariadb/.helmignore create mode 100644 charts/limesurvey-library/charts/mariadb/Chart.lock create mode 100644 charts/limesurvey-library/charts/mariadb/Chart.yaml create mode 100644 charts/limesurvey-library/charts/mariadb/README.md create mode 100644 charts/limesurvey-library/charts/mariadb/charts/common/.helmignore create mode 100644 charts/limesurvey-library/charts/mariadb/charts/common/Chart.yaml create mode 100644 charts/limesurvey-library/charts/mariadb/charts/common/README.md create mode 100644 charts/limesurvey-library/charts/mariadb/charts/common/templates/_affinities.tpl create mode 100644 charts/limesurvey-library/charts/mariadb/charts/common/templates/_capabilities.tpl create mode 100644 charts/limesurvey-library/charts/mariadb/charts/common/templates/_errors.tpl create mode 100644 charts/limesurvey-library/charts/mariadb/charts/common/templates/_images.tpl create mode 100644 charts/limesurvey-library/charts/mariadb/charts/common/templates/_ingress.tpl create mode 100644 charts/limesurvey-library/charts/mariadb/charts/common/templates/_labels.tpl create mode 100644 charts/limesurvey-library/charts/mariadb/charts/common/templates/_names.tpl create mode 100644 charts/limesurvey-library/charts/mariadb/charts/common/templates/_secrets.tpl create mode 100644 charts/limesurvey-library/charts/mariadb/charts/common/templates/_storage.tpl create mode 100644 charts/limesurvey-library/charts/mariadb/charts/common/templates/_tplvalues.tpl create mode 100644 charts/limesurvey-library/charts/mariadb/charts/common/templates/_utils.tpl create mode 100644 charts/limesurvey-library/charts/mariadb/charts/common/templates/_warnings.tpl create mode 100644 charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_cassandra.tpl create mode 100644 charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_mariadb.tpl create mode 100644 charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_mongodb.tpl create mode 100644 charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_mysql.tpl create mode 100644 charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_postgresql.tpl create mode 100644 charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_redis.tpl create mode 100644 charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_validations.tpl create mode 100644 charts/limesurvey-library/charts/mariadb/charts/common/values.yaml create mode 100644 charts/limesurvey-library/charts/mariadb/templates/NOTES.txt create mode 100644 charts/limesurvey-library/charts/mariadb/templates/_helpers.tpl create mode 100644 charts/limesurvey-library/charts/mariadb/templates/extra-list.yaml create mode 100644 charts/limesurvey-library/charts/mariadb/templates/networkpolicy-egress.yaml create mode 100644 charts/limesurvey-library/charts/mariadb/templates/primary/configmap.yaml create mode 100644 charts/limesurvey-library/charts/mariadb/templates/primary/initialization-configmap.yaml create mode 100644 charts/limesurvey-library/charts/mariadb/templates/primary/networkpolicy-ingress.yaml create mode 100644 charts/limesurvey-library/charts/mariadb/templates/primary/pdb.yaml create mode 100644 charts/limesurvey-library/charts/mariadb/templates/primary/statefulset.yaml create mode 100644 charts/limesurvey-library/charts/mariadb/templates/primary/svc.yaml create mode 100644 charts/limesurvey-library/charts/mariadb/templates/prometheusrules.yaml create mode 100644 charts/limesurvey-library/charts/mariadb/templates/role.yaml create mode 100644 charts/limesurvey-library/charts/mariadb/templates/rolebinding.yaml create mode 100644 charts/limesurvey-library/charts/mariadb/templates/secondary/configmap.yaml create mode 100644 charts/limesurvey-library/charts/mariadb/templates/secondary/networkpolicy-ingress.yaml create mode 100644 charts/limesurvey-library/charts/mariadb/templates/secondary/pdb.yaml create mode 100644 charts/limesurvey-library/charts/mariadb/templates/secondary/statefulset.yaml create mode 100644 charts/limesurvey-library/charts/mariadb/templates/secondary/svc.yaml create mode 100644 charts/limesurvey-library/charts/mariadb/templates/secrets.yaml create mode 100644 charts/limesurvey-library/charts/mariadb/templates/serviceaccount.yaml create mode 100644 charts/limesurvey-library/charts/mariadb/templates/servicemonitor.yaml create mode 100644 charts/limesurvey-library/charts/mariadb/values.schema.json create mode 100644 charts/limesurvey-library/charts/mariadb/values.yaml create mode 100644 charts/limesurvey-library/icon.png create mode 100644 charts/limesurvey-library/templates/NOTES.txt create mode 100644 charts/limesurvey-library/templates/_helpers.tpl create mode 100644 charts/limesurvey-library/templates/deployment.yaml create mode 100644 charts/limesurvey-library/templates/hpa.yaml create mode 100644 charts/limesurvey-library/templates/ingress.yaml create mode 100644 charts/limesurvey-library/templates/pvc.yaml create mode 100644 charts/limesurvey-library/templates/secrets.yaml create mode 100644 charts/limesurvey-library/templates/service.yaml create mode 100644 charts/limesurvey-library/templates/serviceaccount.yaml create mode 100644 charts/limesurvey-library/values.yaml create mode 100644 charts/limesurvey-martial/.helmignore create mode 100644 charts/limesurvey-martial/Chart.lock create mode 100644 charts/limesurvey-martial/Chart.yaml create mode 100644 charts/limesurvey-martial/README.md create mode 100644 charts/limesurvey-martial/charts/mariadb-11.5.7.tgz create mode 100644 charts/limesurvey-martial/charts/mariadb/.helmignore create mode 100644 charts/limesurvey-martial/charts/mariadb/Chart.lock create mode 100644 charts/limesurvey-martial/charts/mariadb/Chart.yaml create mode 100644 charts/limesurvey-martial/charts/mariadb/README.md create mode 100644 charts/limesurvey-martial/charts/mariadb/charts/common/.helmignore create mode 100644 charts/limesurvey-martial/charts/mariadb/charts/common/Chart.yaml create mode 100644 charts/limesurvey-martial/charts/mariadb/charts/common/README.md create mode 100644 charts/limesurvey-martial/charts/mariadb/charts/common/templates/_affinities.tpl create mode 100644 charts/limesurvey-martial/charts/mariadb/charts/common/templates/_capabilities.tpl create mode 100644 charts/limesurvey-martial/charts/mariadb/charts/common/templates/_errors.tpl create mode 100644 charts/limesurvey-martial/charts/mariadb/charts/common/templates/_images.tpl create mode 100644 charts/limesurvey-martial/charts/mariadb/charts/common/templates/_ingress.tpl create mode 100644 charts/limesurvey-martial/charts/mariadb/charts/common/templates/_labels.tpl create mode 100644 charts/limesurvey-martial/charts/mariadb/charts/common/templates/_names.tpl create mode 100644 charts/limesurvey-martial/charts/mariadb/charts/common/templates/_secrets.tpl create mode 100644 charts/limesurvey-martial/charts/mariadb/charts/common/templates/_storage.tpl create mode 100644 charts/limesurvey-martial/charts/mariadb/charts/common/templates/_tplvalues.tpl create mode 100644 charts/limesurvey-martial/charts/mariadb/charts/common/templates/_utils.tpl create mode 100644 charts/limesurvey-martial/charts/mariadb/charts/common/templates/_warnings.tpl create mode 100644 charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_cassandra.tpl create mode 100644 charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_mariadb.tpl create mode 100644 charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_mongodb.tpl create mode 100644 charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_mysql.tpl create mode 100644 charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_postgresql.tpl create mode 100644 charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_redis.tpl create mode 100644 charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_validations.tpl create mode 100644 charts/limesurvey-martial/charts/mariadb/charts/common/values.yaml create mode 100644 charts/limesurvey-martial/charts/mariadb/templates/NOTES.txt create mode 100644 charts/limesurvey-martial/charts/mariadb/templates/_helpers.tpl create mode 100644 charts/limesurvey-martial/charts/mariadb/templates/extra-list.yaml create mode 100644 charts/limesurvey-martial/charts/mariadb/templates/networkpolicy-egress.yaml create mode 100644 charts/limesurvey-martial/charts/mariadb/templates/primary/configmap.yaml create mode 100644 charts/limesurvey-martial/charts/mariadb/templates/primary/initialization-configmap.yaml create mode 100644 charts/limesurvey-martial/charts/mariadb/templates/primary/networkpolicy-ingress.yaml create mode 100644 charts/limesurvey-martial/charts/mariadb/templates/primary/pdb.yaml create mode 100644 charts/limesurvey-martial/charts/mariadb/templates/primary/statefulset.yaml create mode 100644 charts/limesurvey-martial/charts/mariadb/templates/primary/svc.yaml create mode 100644 charts/limesurvey-martial/charts/mariadb/templates/prometheusrules.yaml create mode 100644 charts/limesurvey-martial/charts/mariadb/templates/role.yaml create mode 100644 charts/limesurvey-martial/charts/mariadb/templates/rolebinding.yaml create mode 100644 charts/limesurvey-martial/charts/mariadb/templates/secondary/configmap.yaml create mode 100644 charts/limesurvey-martial/charts/mariadb/templates/secondary/networkpolicy-ingress.yaml create mode 100644 charts/limesurvey-martial/charts/mariadb/templates/secondary/pdb.yaml create mode 100644 charts/limesurvey-martial/charts/mariadb/templates/secondary/statefulset.yaml create mode 100644 charts/limesurvey-martial/charts/mariadb/templates/secondary/svc.yaml create mode 100644 charts/limesurvey-martial/charts/mariadb/templates/secrets.yaml create mode 100644 charts/limesurvey-martial/charts/mariadb/templates/serviceaccount.yaml create mode 100644 charts/limesurvey-martial/charts/mariadb/templates/servicemonitor.yaml create mode 100644 charts/limesurvey-martial/charts/mariadb/values.schema.json create mode 100644 charts/limesurvey-martial/charts/mariadb/values.yaml create mode 100644 charts/limesurvey-martial/icon.png create mode 100644 charts/limesurvey-martial/limesurvey-martial-0.8.2.tgz create mode 100644 charts/limesurvey-martial/limesurvey-martial-0.8.3.tgz create mode 100644 charts/limesurvey-martial/template.txt create mode 100644 charts/limesurvey-martial/templates/NOTES.txt create mode 100644 charts/limesurvey-martial/templates/_helpers.tpl create mode 100644 charts/limesurvey-martial/templates/deployment.yaml create mode 100644 charts/limesurvey-martial/templates/hpa.yaml create mode 100644 charts/limesurvey-martial/templates/ingress.yaml create mode 100644 charts/limesurvey-martial/templates/pvc.yaml create mode 100644 charts/limesurvey-martial/templates/secrets.yaml create mode 100644 charts/limesurvey-martial/templates/service.yaml create mode 100644 charts/limesurvey-martial/templates/serviceaccount.yaml create mode 100644 charts/limesurvey-martial/values.schema.json create mode 100644 charts/limesurvey-martial/values.yaml create mode 100644 charts/limesurvey/.helmignore create mode 100644 charts/limesurvey/Chart.lock create mode 100644 charts/limesurvey/Chart.yaml create mode 100644 charts/limesurvey/README.md create mode 100644 charts/limesurvey/README.md.gotmpl create mode 100644 charts/limesurvey/charts/library-chart-1.5.21.tgz create mode 100644 charts/limesurvey/charts/mariadb-18.0.2.tgz create mode 100644 charts/limesurvey/icon.png create mode 100644 charts/limesurvey/limesurvey-0.2.56.tgz create mode 100644 charts/limesurvey/limesurvey-0.2.57.tgz create mode 100644 charts/limesurvey/limesurvey-0.2.58.tgz create mode 100644 charts/limesurvey/templates/NOTES.txt create mode 100644 charts/limesurvey/templates/_helpers.tpl create mode 100644 charts/limesurvey/templates/deployment.yaml create mode 100644 charts/limesurvey/templates/deployment.yaml stock create mode 100644 charts/limesurvey/templates/hpa.yaml create mode 100644 charts/limesurvey/templates/ingress.yaml create mode 100644 charts/limesurvey/templates/networkpolicy-ingress.yaml create mode 100644 charts/limesurvey/templates/networkpolicy.yaml create mode 100644 charts/limesurvey/templates/pvc.yaml create mode 100644 charts/limesurvey/templates/secrets.yaml create mode 100644 charts/limesurvey/templates/service.yaml create mode 100644 charts/limesurvey/templates/service.yaml stock create mode 100644 charts/limesurvey/templates/serviceaccount.yaml create mode 100644 charts/limesurvey/templates/tests/test-connection.yaml create mode 100644 charts/limesurvey/values.schema.json create mode 100644 charts/limesurvey/values.yaml create mode 100644 charts/wordpress final/.helmignore create mode 100644 charts/wordpress final/Chart.lock create mode 100644 charts/wordpress final/Chart.yaml create mode 100644 charts/wordpress final/README.md create mode 100644 charts/wordpress final/charts/common-2.19.1.tgz create mode 100644 charts/wordpress final/charts/mariadb-16.5.0.tgz create mode 100644 charts/wordpress final/charts/memcached-6.14.0.tgz create mode 100644 charts/wordpress final/curl create mode 100644 charts/wordpress final/index.yaml create mode 100644 charts/wordpress final/template.txt create mode 100644 charts/wordpress final/templates/NOTES.txt create mode 100644 charts/wordpress final/templates/_helpers.tpl create mode 100644 charts/wordpress final/templates/config-secret.yaml create mode 100644 charts/wordpress final/templates/deployment.yaml create mode 100644 charts/wordpress final/templates/externaldb-secrets.yaml create mode 100644 charts/wordpress final/templates/extra-list.yaml create mode 100644 charts/wordpress final/templates/hpa.yaml create mode 100644 charts/wordpress final/templates/httpd-configmap.yaml create mode 100644 charts/wordpress final/templates/ingress.yaml create mode 100644 charts/wordpress final/templates/metrics-svc.yaml create mode 100644 charts/wordpress final/templates/networkpolicy-backend-ingress.yaml create mode 100644 charts/wordpress final/templates/networkpolicy-egress.yaml create mode 100644 charts/wordpress final/templates/networkpolicy-ingress.yaml create mode 100644 charts/wordpress final/templates/pdb.yaml create mode 100644 charts/wordpress final/templates/postinit-configmap.yaml create mode 100644 charts/wordpress final/templates/pvc.yaml create mode 100644 charts/wordpress final/templates/secrets.yaml create mode 100644 charts/wordpress final/templates/serviceaccount.yaml create mode 100644 charts/wordpress final/templates/servicemonitor.yaml create mode 100644 charts/wordpress final/templates/svc.yaml create mode 100644 charts/wordpress final/templates/tls-secrets.yaml create mode 100644 charts/wordpress final/values.schema.json create mode 100644 charts/wordpress final/values.schema.json.original create mode 100644 charts/wordpress final/values.yaml create mode 100644 charts/wordpress final/wordpress-final-20.1.9.tgz create mode 100644 charts/wordpress-raw/.helmignore create mode 100644 charts/wordpress-raw/Chart.lock create mode 100644 charts/wordpress-raw/Chart.yaml create mode 100644 charts/wordpress-raw/README.md create mode 100644 charts/wordpress-raw/RELEASENOTES.md create mode 100644 charts/wordpress-raw/charts/mariadb/.helmignore create mode 100644 charts/wordpress-raw/charts/mariadb/Chart.yaml create mode 100644 charts/wordpress-raw/charts/mariadb/README.md create mode 100644 charts/wordpress-raw/charts/mariadb/RELEASENOTES.md create mode 100644 charts/wordpress-raw/charts/mariadb/templates/_helpers.tpl create mode 100644 charts/wordpress-raw/charts/mariadb/templates/customconfig.yaml create mode 100644 charts/wordpress-raw/charts/mariadb/templates/customscripts.yaml create mode 100644 charts/wordpress-raw/charts/mariadb/templates/pvc.yaml create mode 100644 charts/wordpress-raw/charts/mariadb/templates/scripts.yaml create mode 100644 charts/wordpress-raw/charts/mariadb/templates/secureconfig.yaml create mode 100644 charts/wordpress-raw/charts/mariadb/templates/service.yaml create mode 100644 charts/wordpress-raw/charts/mariadb/templates/serviceaccount.yaml create mode 100644 charts/wordpress-raw/charts/mariadb/templates/statefulset.yaml create mode 100644 charts/wordpress-raw/charts/mariadb/values.yaml create mode 100644 charts/wordpress-raw/templates/_helpers.tpl create mode 100644 charts/wordpress-raw/templates/deployment.yaml create mode 100644 charts/wordpress-raw/templates/extendedconfig.yaml create mode 100644 charts/wordpress-raw/templates/ingress.yaml create mode 100644 charts/wordpress-raw/templates/networkpolicy.yaml create mode 100644 charts/wordpress-raw/templates/pdp.yaml create mode 100644 charts/wordpress-raw/templates/pvc.yaml create mode 100644 charts/wordpress-raw/templates/secureconfig.yaml create mode 100644 charts/wordpress-raw/templates/service.yaml create mode 100644 charts/wordpress-raw/templates/serviceaccount.yaml create mode 100644 charts/wordpress-raw/templates/tests/test-connection.yaml create mode 100644 charts/wordpress-raw/values.yaml create mode 100644 charts/wordpress-raw/wordpress-0.11.0.tgz diff --git a/charts/limesurvey-1/.helmignore b/charts/limesurvey-1/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/charts/limesurvey-1/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/charts/limesurvey-1/Chart.lock b/charts/limesurvey-1/Chart.lock new file mode 100644 index 0000000..6c41776 --- /dev/null +++ b/charts/limesurvey-1/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: mariadb + repository: https://charts.bitnami.com/bitnami + version: 18.0.2 +digest: sha256:52165fe0da32dc5bb6dc05950671c646a8b580512bbe7e32adc5bc1e0b938755 +generated: "2024-04-22T15:19:30.192853818+02:00" diff --git a/charts/limesurvey-1/Chart.yaml b/charts/limesurvey-1/Chart.yaml new file mode 100644 index 0000000..2e23acd --- /dev/null +++ b/charts/limesurvey-1/Chart.yaml @@ -0,0 +1,22 @@ +apiVersion: v2 +appVersion: 6.5.4 +dependencies: +- condition: mariadb.enabled + name: mariadb + repository: https://charts.bitnami.com/bitnami + version: '>= 12.x' +description: Limesurvey is the number one open-source survey software. This chart + uses the excellent container image from Adam Zammit of the Australian Consortium + for Social and Political Research Incorporated (ACSPRI). +icon: https://raw.githubusercontent.com/area-42/helm-charts/main/charts/limesurvey/icon.png +maintainers: +- email: christoph.scholz@gmail.com + name: Christoph Scholz + url: https://github.com/ChaosKid42 +name: limesurvey-tt +sources: +- https://github.com/area-42/helm-charts +- https://github.com/adamzammit/limesurvey-docker +- https://limesurvey.org/ +type: application +version: 0.2.60 diff --git a/charts/limesurvey-1/README.md b/charts/limesurvey-1/README.md new file mode 100644 index 0000000..5c31a8f --- /dev/null +++ b/charts/limesurvey-1/README.md @@ -0,0 +1,116 @@ +# LimeSurvey + +![Version: 0.2.56](https://img.shields.io/badge/Version-0.2.56-informational?style=for-the-badge) +![Type: application](https://img.shields.io/badge/Type-application-informational?style=for-the-badge) +![AppVersion: 6.5.4](https://img.shields.io/badge/AppVersion-6.5.4-informational?style=for-the-badge) + +## Description + +Limesurvey is the number one open-source survey software. This chart uses the excellent container image from Adam Zammit of the Australian Consortium for Social and Political Research Incorporated (ACSPRI). + +## Usage + +```console +helm repo add area-42 https://area-42.github.io/helm-charts +helm repo update + +helm install limesurvey \ + --set mariadb.auth.rootPassword=changeOnInstall \ + area-42/limesurvey +``` + +## Values + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| affinity | object | `{}` | Set the affinity for the pod. | +| autoscaling.enabled | bool | `false` | | +| autoscaling.maxReplicas | int | `100` | | +| autoscaling.minReplicas | int | `1` | | +| autoscaling.targetCPUUtilizationPercentage | int | `80` | | +| deployment | object | `{}` | | +| externalDatabase.database | string | `"limesurvey"` | External Database database name | +| externalDatabase.existingSecret | string | `""` | Use an existing secret for retrieving the database password. The secret must contain the field "mariadb-password" | +| externalDatabase.host | string | `"mariadb.example.com"` | External Database server host | +| externalDatabase.password | string | `""` | External Database user password | +| externalDatabase.port | int | `3306` | External Database server port | +| externalDatabase.type | string | `"mysql"` | Type of external database ("mysql" or "pgsql") | +| externalDatabase.username | string | `"limesurvey"` | External Database username | +| extraEmptyDirMounts | list | `[]` | This allows you to mount additional "emptyDirs" into the Limesurvey container | +| extraVolumeMounts | list | `[]` | This allows you to mount additional volumes into the Limesurvey container | +| fullnameOverride | string | `""` | String to override the default generated fullname | +| image.pullPolicy | string | `"IfNotPresent"` | The docker image pull policy | +| image.repository | string | `"adamzammit/limesurvey"` | The docker image repository to use | +| image.tag | string | vhart appVersion | The docker image tag to use | +| imagePullSecrets | list | `[]` | | +| ingress.annotations | object | `{}` | Additional annotations | +| ingress.className | string | `""` | Specifies what type of Ingress should be created | +| ingress.enabled | bool | `false` | Specifies whether Ingress should be created or not | +| ingress.hosts[0].host | string | `"chart-example.local"` | | +| ingress.hosts[0].paths[0].path | string | `"/"` | | +| ingress.hosts[0].paths[0].pathType | string | `"ImplementationSpecific"` | | +| ingress.tls | list | `[]` | Ingress tls | +| limesurvey.admin.email | string | `"lime@lime.lime"` | The email address of the Limesurvey administrator | +| limesurvey.admin.existingSecret | string | `""` | Use existing secret (admin.password will be ignored). secret must contain the key limesurvey-admin-password | +| limesurvey.admin.name | string | `"Lime Administrator"` | The full name of the Limesurvey administrator | +| limesurvey.admin.password | string | `""` | The password of the Limesurvey administrator | +| limesurvey.admin.username | string | `"admin"` | The username of the Limesurvey administrator) | +| limesurvey.dbSessions | string | `""` | Leave blank or don't set to use file based sessions. Set to any value to use DB based sessions | +| limesurvey.debug | string | `"0"` | Debug level of Limesurvey, 0 is off, 1 for errors, 2 for strict PHP and to be able to edit standard templates | +| limesurvey.dontShowScriptName | string | `""` | Leave blank or don't set to show the script name `index.php` in URLs. Set to any value to omit the script name | +| limesurvey.livenessProbe.enabled | bool | `true` | | +| limesurvey.readinessProbe.enabled | bool | `true` | | +| limesurvey.smtp.debug | string | `""` | set this to any value to enable SMTP debug mode | +| limesurvey.smtp.existingSecret | string | `""` | Use existing secret (smtp.password will be ignored). secret must contain the key limesurvey-smtp-password | +| limesurvey.smtp.from_email | string | `"your-email@example.net"` | The email address where messages will be sent from | +| limesurvey.smtp.host | string | `""` | set the SMTP host - you can also specify a different port than 25 by using this format: [hostname:port], e.g. "smtp.example.com:587") | +| limesurvey.smtp.password | string | `""` | SMTP authorization password - empty password is not allowed | +| limesurvey.smtp.ssl | string | `""` | set this to "ssl" to use SSL/TLS or "tls" to use StartTLS for SMTP connection | +| limesurvey.smtp.user | string | `""` | only set this if your server requires authorization - if you set it you HAVE to set a password too | +| limesurvey.sqlDebug | string | `"0"` | Debug level of Limesurvey for SQL, 0 is off, 1 is on - note requires LIMESURVEY_DEBUG set to 2 | +| limesurvey.tablePrefix | string | `"lime_"` | Set this to "myprefix_" if you want your table names to have the myprefix_ | +| limesurvey.tz | string | `"Europe/Berlin"` | Time zone name. If set, will configure PHP and LimeSurvey to use this time zone | +| limesurvey.useInnodb | string | `"true"` | Leave blank or don't set to use standard MyISAM database. Set to any value to use InnoDB | +| mariadb.architecture | string | `"standalone"` | | +| mariadb.auth.database | string | `"limesurvey"` | | +| mariadb.auth.existingSecret | string | `""` | Use existing secret (auth.rootPassword, auth.password, and auth.replicationPassword will be ignored). secret must contain the keys mariadb-root-password, mariadb-replication-password and mariadb-password | +| mariadb.auth.password | string | `"changeme"` | | +| mariadb.auth.username | string | `"limesurvey"` | | +| mariadb.enabled | bool | `true` | Deploy a MariaDB server | +| mariadb.primary.persistence.accessMode | string | `"ReadWriteOnce"` | Use an existing Persistent Volume Claim (must be created ahead of time) existingClaim: "" storageClass: "" | +| mariadb.primary.persistence.enabled | bool | `true` | Enable persistence using Persistent Volume Claims ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ | +| mariadb.primary.persistence.size | string | `"8Gi"` | | +| mariadb.primary.resourcesPreset | string | `"none"` | Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if primary.resources is set (primary.resources is recommended for production). More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15 | +| nameOverride | string | `""` | String to override the default generated name | +| nodeSelector | object | `{}` | Set the node selector for the pod. | +| persistence.accessModes[0] | string | `"ReadWriteOnce"` | | +| persistence.annotations."helm.sh/resource-policy" | string | `"keep"` | | +| persistence.enabled | bool | `true` | Enable persistence using Persistent Volume Claims ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ | +| persistence.existingClaim | string | `nil` | | +| persistence.finalizers[0] | string | `"kubernetes.io/pvc-protection"` | | +| persistence.selectorLabels | object | `{}` | | +| persistence.size | string | `"5Gi"` | | +| persistence.storageClass | string | `nil` | | +| podAnnotations | object | `{}` | Annotations for the pods | +| podSecurityContext | object | `{}` | | +| replicaCount | int | `1` | Numbers of replicas | +| resources | object | `{}` | Set the resources requests and limits | +| securityContext | object | `{}` | | +| service.port | int | `80` | Default Service port | +| service.type | string | `"ClusterIP"` | Specifies what type of Service should be created | +| serviceAccount.annotations | object | `{}` | Annotations to add to the service account | +| serviceAccount.create | bool | `false` | Specifies whether a service account should be created | +| serviceAccount.name | string | `""` | The name of the service account to use. If not set and create is true, a name is generated using the fullname template | +| tolerations | list | `[]` | Set the tolerations for the pod. | + +## Source Code + +* +* +* + +## Maintainers + +| Name | Email | Url | +| ---- | ------ | --- | +| Christoph Scholz | | | diff --git a/charts/limesurvey-1/README.md.gotmpl b/charts/limesurvey-1/README.md.gotmpl new file mode 100644 index 0000000..b0a891c --- /dev/null +++ b/charts/limesurvey-1/README.md.gotmpl @@ -0,0 +1,29 @@ +# LimeSurvey + +![Version: {{ .Version }}](https://img.shields.io/badge/Version-{{ .Version | replace "-" "--" }}-informational?style=for-the-badge) +{{ if .Type }}![Type: {{ .Type }}](https://img.shields.io/badge/Type-{{ .Type }}-informational?style=for-the-badge) {{ end }} +{{ if .AppVersion }}![AppVersion: {{ .AppVersion }}](https://img.shields.io/badge/AppVersion-{{ .AppVersion | replace "-" "--" }}-informational?style=for-the-badge) {{ end }} + + +## Description + +{{ template "chart.description" . }} + +## Usage + +```console +helm repo add area-42 https://area-42.github.io/helm-charts +helm repo update + +helm install limesurvey \ + --set mariadb.auth.rootPassword=changeOnInstall \ + area-42/limesurvey +``` + +{{ template "chart.valuesSection" . }} + +{{ template "chart.homepageLine" . }} + +{{ template "chart.sourcesSection" . }} + +{{ template "chart.maintainersSection" . }} diff --git a/charts/limesurvey-1/charts/mariadb/.helmignore b/charts/limesurvey-1/charts/mariadb/.helmignore new file mode 100644 index 0000000..fb56657 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +# img folder +img/ diff --git a/charts/limesurvey-1/charts/mariadb/Chart.lock b/charts/limesurvey-1/charts/mariadb/Chart.lock new file mode 100644 index 0000000..0d8862e --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: oci://registry-1.docker.io/bitnamicharts + version: 2.19.1 +digest: sha256:c883732817d9aaa3304f7b3109262aa338959de15b432dc5a2dbde13d2e136a5 +generated: "2024-04-02T11:21:12.855408532Z" diff --git a/charts/limesurvey-1/charts/mariadb/Chart.yaml b/charts/limesurvey-1/charts/mariadb/Chart.yaml new file mode 100644 index 0000000..7699557 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/Chart.yaml @@ -0,0 +1,36 @@ +annotations: + category: Database + images: | + - name: mariadb + image: docker.io/bitnami/mariadb:11.3.2-debian-12-r1 + - name: mysqld-exporter + image: docker.io/bitnami/mysqld-exporter:0.15.1-debian-12-r10 + - name: os-shell + image: docker.io/bitnami/os-shell:12-debian-12-r18 + licenses: Apache-2.0 +apiVersion: v2 +appVersion: 11.3.2 +dependencies: +- name: common + repository: oci://registry-1.docker.io/bitnamicharts + tags: + - bitnami-common + version: 2.x.x +description: MariaDB is an open source, community-developed SQL database server that + is widely in use around the world due to its enterprise features, flexibility, and + collaboration with leading tech firms. +home: https://bitnami.com +icon: https://bitnami.com/assets/stacks/mariadb/img/mariadb-stack-220x234.png +keywords: +- mariadb +- mysql +- database +- sql +- prometheus +maintainers: +- name: VMware, Inc. + url: https://github.com/bitnami/charts +name: mariadb +sources: +- https://github.com/bitnami/charts/tree/main/bitnami/mariadb +version: 18.0.2 diff --git a/charts/limesurvey-1/charts/mariadb/README.md b/charts/limesurvey-1/charts/mariadb/README.md new file mode 100644 index 0000000..35433a7 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/README.md @@ -0,0 +1,649 @@ + + +# Bitnami package for MariaDB + +MariaDB is an open source, community-developed SQL database server that is widely in use around the world due to its enterprise features, flexibility, and collaboration with leading tech firms. + +[Overview of MariaDB](https://mariadb.org/) + +Trademarks: This software listing is packaged by Bitnami. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. + +## TL;DR + +```console +helm install my-release oci://registry-1.docker.io/bitnamicharts/mariadb +``` + +Looking to use MariaDB in production? Try [VMware Tanzu Application Catalog](https://bitnami.com/enterprise), the enterprise edition of Bitnami Application Catalog. + +## Introduction + +This chart bootstraps a [MariaDB](https://github.com/bitnami/containers/tree/main/bitnami/mariadb) replication cluster deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. + +MariaDB is developed as open source software and as a relational database it provides an SQL interface for accessing data. The latest versions of MariaDB also include GIS and JSON features. + +Bitnami charts can be used with [Kubeapps](https://kubeapps.dev/) for deployment and management of Helm Charts in clusters. + +## Prerequisites + +- Kubernetes 1.23+ +- Helm 3.8.0+ +- PV provisioner support in the underlying infrastructure + +## Installing the Chart + +To install the chart with the release name `my-release`: + +```console +helm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/mariadb +``` + +> Note: You need to substitute the placeholders `REGISTRY_NAME` and `REPOSITORY_NAME` with a reference to your Helm chart registry and repository. For example, in the case of Bitnami, you need to use `REGISTRY_NAME=registry-1.docker.io` and `REPOSITORY_NAME=bitnamicharts`. + +The command deploys MariaDB on the Kubernetes cluster in the default configuration. The [Parameters](#parameters) section lists the parameters that can be configured during installation. + +> **Tip**: List all releases using `helm list` + +## Configuration and installation details + +### Resource requests and limits + +Bitnami charts allow setting resource requests and limits for all containers inside the chart deployment. These are inside the `resources` value (check parameter table). Setting requests is essential for production workloads and these should be adapted to your specific use case. + +To make this process easier, the chart contains the `resourcesPreset` values, which automatically sets the `resources` section according to different presets. Check these presets in [the bitnami/common chart](https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15). However, in production workloads using `resourcePreset` is discouraged as it may not fully adapt to your specific needs. Find more information on container resource management in the [official Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/). + +### [Rolling VS Immutable tags](https://docs.bitnami.com/tutorials/understand-rolling-tags-containers) + +It is strongly recommended to use immutable tags in a production environment. This ensures your deployment does not change automatically if the same tag is updated with a different image. + +Bitnami will release a new chart updating its containers if a new version of the main container, significant changes, or critical vulnerabilities exist. + +### Change MariaDB version + +To modify the MariaDB version used in this chart you can specify a [valid image tag](https://hub.docker.com/r/bitnami/mariadb/tags/) using the `image.tag` parameter. For example, `image.tag=X.Y.Z`. This approach is also applicable to other images like exporters. + +### Initialize a fresh instance + +The [Bitnami MariaDB](https://github.com/bitnami/containers/tree/main/bitnami/mariadb) image allows you to use your custom scripts to initialize a fresh instance. Custom scripts may be specified using the `initdbScripts` parameter. Alternatively, an external ConfigMap may be created with all the initialization scripts and the ConfigMap passed to the chart via the `initdbScriptsConfigMap` parameter. Note that this will override the `initdbScripts` parameter. + +The allowed extensions are `.sh`, `.sql` and `.sql.gz`. + +These scripts are treated differently depending on their extension. While `.sh` scripts are executed on all the nodes, `.sql` and `.sql.gz` scripts are only executed on the primary nodes. This is because `.sh` scripts support conditional tests to identify the type of node they are running on, while such tests are not supported in `.sql` or `.sql.gz` files. + +When using a `.sh` script, you may wish to perform a "one-time" action like creating a database. This can be achieved by adding a condition in the script to ensure that it is executed only on one node, as shown in the example below: + +```yaml +initdbScripts: + my_init_script.sh: | + #!/bin/sh + if [[ $(hostname) == *primary* ]]; then + echo "Primary node" + mysql -P 3306 -uroot -prandompassword -e "create database new_database"; + else + echo "No primary node" + fi +``` + +### Sidecars and Init Containers + +If additional containers are needed in the same pod as MariaDB (such as additional metrics or logging exporters), they can be defined using the `sidecars` parameter. + +```yaml +sidecars: +- name: your-image-name + image: your-image + imagePullPolicy: Always + ports: + - name: portname + containerPort: 1234 +``` + +If these sidecars export extra ports, extra port definitions can be added using the `service.extraPorts` parameter (where available), as shown in the example below: + +```yaml +service: + extraPorts: + - name: extraPort + port: 11311 + targetPort: 11311 +``` + +> NOTE: This Helm chart already includes sidecar containers for the Prometheus exporters (where applicable). These can be activated by adding the `--enable-metrics=true` parameter at deployment time. The `sidecars` parameter should therefore only be used for any extra sidecar containers. + +If additional init containers are needed in the same pod, they can be defined using the `initContainers` parameter. Here is an example: + +```yaml +initContainers: + - name: your-image-name + image: your-image + imagePullPolicy: Always + ports: + - name: portname + containerPort: 1234 +``` + +Learn more about [sidecar containers](https://kubernetes.io/docs/concepts/workloads/pods/) and [init containers](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/). + +## Persistence + +The [Bitnami MariaDB](https://github.com/bitnami/containers/tree/main/bitnami/mariadb) image stores the MariaDB data and configurations at the `/bitnami/mariadb` path of the container. + +The chart mounts a [Persistent Volume](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) volume at this location. The volume is created using dynamic volume provisioning, by default. An existing PersistentVolumeClaim can also be defined. + +If you encounter errors when working with persistent volumes, refer to our [troubleshooting guide for persistent volumes](https://docs.bitnami.com/kubernetes/faq/troubleshooting/troubleshooting-persistence-volumes/). + +### Adjust permissions of persistent volume mountpoint + +As the image run as non-root by default, it is necessary to adjust the ownership of the persistent volume so that the container can write data into it. + +By default, the chart is configured to use Kubernetes Security Context to automatically change the ownership of the volume. However, this feature does not work in all Kubernetes distributions. + +As an alternative, this chart supports using an initContainer to change the ownership of the volume before mounting it in the final destination. You can enable this initContainer by setting `volumePermissions.enabled` to `true`. + +## Parameters + +### Global parameters + +| Name | Description | Value | +| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ | +| `global.imageRegistry` | Global Docker Image registry | `""` | +| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` | +| `global.storageClass` | Global storage class for dynamic provisioning | `""` | +| `global.compatibility.openshift.adaptSecurityContext` | Adapt the securityContext sections of the deployment to make them compatible with Openshift restricted-v2 SCC: remove runAsUser, runAsGroup and fsGroup and let the platform use their allowed default IDs. Possible values: auto (apply if the detected running cluster is Openshift), force (perform the adaptation always), disabled (do not perform adaptation) | `auto` | + +### Common parameters + +| Name | Description | Value | +| ------------------------- | --------------------------------------------------------------------------------------- | --------------- | +| `kubeVersion` | Force target Kubernetes version (using Helm capabilities if not set) | `""` | +| `nameOverride` | String to partially override mariadb.fullname | `""` | +| `fullnameOverride` | String to fully override mariadb.fullname | `""` | +| `clusterDomain` | Default Kubernetes cluster domain | `cluster.local` | +| `commonAnnotations` | Common annotations to add to all MariaDB resources (sub-charts are not considered) | `{}` | +| `commonLabels` | Common labels to add to all MariaDB resources (sub-charts are not considered) | `{}` | +| `schedulerName` | Name of the scheduler (other than default) to dispatch pods | `""` | +| `runtimeClassName` | Name of the Runtime Class for all MariaDB pods | `""` | +| `extraDeploy` | Array of extra objects to deploy with the release (evaluated as a template) | `[]` | +| `diagnosticMode.enabled` | Enable diagnostic mode (all probes will be disabled and the command will be overridden) | `false` | +| `diagnosticMode.command` | Command to override all containers in the deployment | `["sleep"]` | +| `diagnosticMode.args` | Args to override all containers in the deployment | `["infinity"]` | +| `serviceBindings.enabled` | Create secret for service binding (Experimental) | `false` | + +### MariaDB common parameters + +| Name | Description | Value | +| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | +| `image.registry` | MariaDB image registry | `REGISTRY_NAME` | +| `image.repository` | MariaDB image repository | `REPOSITORY_NAME/mariadb` | +| `image.digest` | MariaDB image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `""` | +| `image.pullPolicy` | MariaDB image pull policy | `IfNotPresent` | +| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` | +| `image.debug` | Specify if debug logs should be enabled | `false` | +| `architecture` | MariaDB architecture (`standalone` or `replication`) | `standalone` | +| `auth.rootPassword` | Password for the `root` user. Ignored if existing secret is provided. | `""` | +| `auth.database` | Name for a custom database to create | `my_database` | +| `auth.username` | Name for a custom user to create | `""` | +| `auth.password` | Password for the new user. Ignored if existing secret is provided | `""` | +| `auth.replicationUser` | MariaDB replication user | `replicator` | +| `auth.replicationPassword` | MariaDB replication user password. Ignored if existing secret is provided | `""` | +| `auth.existingSecret` | Use existing secret for password details (`auth.rootPassword`, `auth.password`, `auth.replicationPassword` will be ignored and picked up from this secret). The secret has to contain the keys `mariadb-root-password`, `mariadb-replication-password` and `mariadb-password` | `""` | +| `auth.forcePassword` | Force users to specify required passwords | `false` | +| `auth.usePasswordFiles` | Mount credentials as files instead of using environment variables | `false` | +| `auth.customPasswordFiles` | Use custom password files when `auth.usePasswordFiles` is set to `true`. Define path for keys `root` and `user`, also define `replicator` if `architecture` is set to `replication` | `{}` | +| `initdbScripts` | Dictionary of initdb scripts | `{}` | +| `initdbScriptsConfigMap` | ConfigMap with the initdb scripts (Note: Overrides `initdbScripts`) | `""` | + +### MariaDB Primary parameters + +| Name | Description | Value | +| ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- | +| `primary.name` | Name of the primary database (eg primary, master, leader, ...) | `primary` | +| `primary.command` | Override default container command on MariaDB Primary container(s) (useful when using custom images) | `[]` | +| `primary.args` | Override default container args on MariaDB Primary container(s) (useful when using custom images) | `[]` | +| `primary.lifecycleHooks` | for the MariaDB Primary container(s) to automate configuration before or after startup | `{}` | +| `primary.automountServiceAccountToken` | Mount Service Account token in pod | `false` | +| `primary.hostAliases` | Add deployment host aliases | `[]` | +| `primary.containerPorts.mysql` | Container port for mysql | `3306` | +| `primary.configuration` | MariaDB Primary configuration to be injected as ConfigMap | `""` | +| `primary.existingConfigmap` | Name of existing ConfigMap with MariaDB Primary configuration. | `""` | +| `primary.updateStrategy.type` | MariaDB primary statefulset strategy type | `RollingUpdate` | +| `primary.rollingUpdatePartition` | Partition update strategy for Mariadb Primary statefulset | `""` | +| `primary.podAnnotations` | Additional pod annotations for MariaDB primary pods | `{}` | +| `primary.podLabels` | Extra labels for MariaDB primary pods | `{}` | +| `primary.podAffinityPreset` | MariaDB primary pod affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `primary.podAntiAffinityPreset` | MariaDB primary pod anti-affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` | `soft` | +| `primary.nodeAffinityPreset.type` | MariaDB primary node affinity preset type. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `primary.nodeAffinityPreset.key` | MariaDB primary node label key to match Ignored if `primary.affinity` is set. | `""` | +| `primary.nodeAffinityPreset.values` | MariaDB primary node label values to match. Ignored if `primary.affinity` is set. | `[]` | +| `primary.affinity` | Affinity for MariaDB primary pods assignment | `{}` | +| `primary.nodeSelector` | Node labels for MariaDB primary pods assignment | `{}` | +| `primary.tolerations` | Tolerations for MariaDB primary pods assignment | `[]` | +| `primary.schedulerName` | Name of the k8s scheduler (other than default) | `""` | +| `primary.podManagementPolicy` | podManagementPolicy to manage scaling operation of MariaDB primary pods | `""` | +| `primary.topologySpreadConstraints` | Topology Spread Constraints for MariaDB primary pods assignment | `[]` | +| `primary.priorityClassName` | Priority class for MariaDB primary pods assignment | `""` | +| `primary.runtimeClassName` | Runtime Class for MariaDB primary pods | `""` | +| `primary.podSecurityContext.enabled` | Enable security context for MariaDB primary pods | `true` | +| `primary.podSecurityContext.fsGroupChangePolicy` | Set filesystem group change policy | `Always` | +| `primary.podSecurityContext.sysctls` | Set kernel settings using the sysctl interface | `[]` | +| `primary.podSecurityContext.supplementalGroups` | Set filesystem extra groups | `[]` | +| `primary.podSecurityContext.fsGroup` | Group ID for the mounted volumes' filesystem | `1001` | +| `primary.containerSecurityContext.enabled` | MariaDB primary container securityContext | `true` | +| `primary.containerSecurityContext.seLinuxOptions` | Set SELinux options in container | `{}` | +| `primary.containerSecurityContext.runAsUser` | User ID for the MariaDB primary container | `1001` | +| `primary.containerSecurityContext.runAsGroup` | Group ID for the MariaDB primary container | `1001` | +| `primary.containerSecurityContext.runAsNonRoot` | Set primary container's Security Context runAsNonRoot | `true` | +| `primary.containerSecurityContext.privileged` | Set primary container's Security Context privileged | `false` | +| `primary.containerSecurityContext.allowPrivilegeEscalation` | Set primary container's Security Context allowPrivilegeEscalation | `false` | +| `primary.containerSecurityContext.readOnlyRootFilesystem` | Set container's Security Context readOnlyRootFilesystem | `true` | +| `primary.containerSecurityContext.capabilities.drop` | List of capabilities to be dropped | `["ALL"]` | +| `primary.containerSecurityContext.seccompProfile.type` | Set container's Security Context seccomp profile | `RuntimeDefault` | +| `primary.resourcesPreset` | Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if primary.resources is set (primary.resources is recommended for production). | `micro` | +| `primary.resources` | Set container requests and limits for different resources like CPU or memory (essential for production workloads) | `{}` | +| `primary.startupProbe.enabled` | Enable startupProbe | `false` | +| `primary.startupProbe.initialDelaySeconds` | Initial delay seconds for startupProbe | `120` | +| `primary.startupProbe.periodSeconds` | Period seconds for startupProbe | `15` | +| `primary.startupProbe.timeoutSeconds` | Timeout seconds for startupProbe | `5` | +| `primary.startupProbe.failureThreshold` | Failure threshold for startupProbe | `10` | +| `primary.startupProbe.successThreshold` | Success threshold for startupProbe | `1` | +| `primary.livenessProbe.enabled` | Enable livenessProbe | `true` | +| `primary.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `120` | +| `primary.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | +| `primary.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `1` | +| `primary.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | +| `primary.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `primary.readinessProbe.enabled` | Enable readinessProbe | `true` | +| `primary.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `30` | +| `primary.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `primary.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `1` | +| `primary.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `3` | +| `primary.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `primary.customStartupProbe` | Override default startup probe for MariaDB primary containers | `{}` | +| `primary.customLivenessProbe` | Override default liveness probe for MariaDB primary containers | `{}` | +| `primary.customReadinessProbe` | Override default readiness probe for MariaDB primary containers | `{}` | +| `primary.startupWaitOptions` | Override default builtin startup wait check options for MariaDB primary containers | `{}` | +| `primary.extraFlags` | MariaDB primary additional command line flags | `""` | +| `primary.extraEnvVars` | Extra environment variables to be set on MariaDB primary containers | `[]` | +| `primary.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars for MariaDB primary containers | `""` | +| `primary.extraEnvVarsSecret` | Name of existing Secret containing extra env vars for MariaDB primary containers | `""` | +| `primary.persistence.enabled` | Enable persistence on MariaDB primary replicas using a `PersistentVolumeClaim`. If false, use emptyDir | `true` | +| `primary.persistence.existingClaim` | Name of an existing `PersistentVolumeClaim` for MariaDB primary replicas | `""` | +| `primary.persistence.subPath` | Subdirectory of the volume to mount at | `""` | +| `primary.persistence.storageClass` | MariaDB primary persistent volume storage Class | `""` | +| `primary.persistence.labels` | Labels for the PVC | `{}` | +| `primary.persistence.annotations` | MariaDB primary persistent volume claim annotations | `{}` | +| `primary.persistence.accessModes` | MariaDB primary persistent volume access Modes | `["ReadWriteOnce"]` | +| `primary.persistence.size` | MariaDB primary persistent volume size | `8Gi` | +| `primary.persistence.selector` | Selector to match an existing Persistent Volume | `{}` | +| `primary.extraVolumes` | Optionally specify extra list of additional volumes to the MariaDB Primary pod(s) | `[]` | +| `primary.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the MariaDB Primary container(s) | `[]` | +| `primary.initContainers` | Add additional init containers for the MariaDB Primary pod(s) | `[]` | +| `primary.sidecars` | Add additional sidecar containers for the MariaDB Primary pod(s) | `[]` | +| `primary.service.type` | MariaDB Primary Kubernetes service type | `ClusterIP` | +| `primary.service.ports.mysql` | MariaDB Primary Kubernetes service port for MariaDB | `3306` | +| `primary.service.ports.metrics` | MariaDB Primary Kubernetes service port for metrics | `9104` | +| `primary.service.nodePorts.mysql` | MariaDB Primary Kubernetes service node port | `""` | +| `primary.service.clusterIP` | MariaDB Primary Kubernetes service clusterIP IP | `""` | +| `primary.service.loadBalancerIP` | MariaDB Primary loadBalancerIP if service type is `LoadBalancer` | `""` | +| `primary.service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | +| `primary.service.loadBalancerSourceRanges` | Address that are allowed when MariaDB Primary service is LoadBalancer | `[]` | +| `primary.service.extraPorts` | Extra ports to expose (normally used with the `sidecar` value) | `[]` | +| `primary.service.annotations` | Provide any additional annotations which may be required | `{}` | +| `primary.service.sessionAffinity` | Session Affinity for Kubernetes service, can be "None" or "ClientIP" | `None` | +| `primary.service.sessionAffinityConfig` | Additional settings for the sessionAffinity | `{}` | +| `primary.pdb.create` | Enable/disable a Pod Disruption Budget creation for MariaDB primary pods | `false` | +| `primary.pdb.minAvailable` | Minimum number/percentage of MariaDB primary pods that must still be available after the eviction | `1` | +| `primary.pdb.maxUnavailable` | Maximum number/percentage of MariaDB primary pods that can be unavailable after the eviction | `""` | +| `primary.revisionHistoryLimit` | Maximum number of revisions that will be maintained in the StatefulSet | `10` | + +### MariaDB Secondary parameters + +| Name | Description | Value | +| ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------- | +| `secondary.name` | Name of the secondary database (eg secondary, slave, ...) | `secondary` | +| `secondary.replicaCount` | Number of MariaDB secondary replicas | `1` | +| `secondary.command` | Override default container command on MariaDB Secondary container(s) (useful when using custom images) | `[]` | +| `secondary.args` | Override default container args on MariaDB Secondary container(s) (useful when using custom images) | `[]` | +| `secondary.lifecycleHooks` | for the MariaDB Secondary container(s) to automate configuration before or after startup | `{}` | +| `secondary.automountServiceAccountToken` | Mount Service Account token in pod | `false` | +| `secondary.hostAliases` | Add deployment host aliases | `[]` | +| `secondary.containerPorts.mysql` | Container port for mysql | `3306` | +| `secondary.configuration` | MariaDB Secondary configuration to be injected as ConfigMap | `""` | +| `secondary.existingConfigmap` | Name of existing ConfigMap with MariaDB Secondary configuration. | `""` | +| `secondary.updateStrategy.type` | MariaDB secondary statefulset strategy type | `RollingUpdate` | +| `secondary.rollingUpdatePartition` | Partition update strategy for Mariadb Secondary statefulset | `""` | +| `secondary.podAnnotations` | Additional pod annotations for MariaDB secondary pods | `{}` | +| `secondary.podLabels` | Extra labels for MariaDB secondary pods | `{}` | +| `secondary.podAffinityPreset` | MariaDB secondary pod affinity preset. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `secondary.podAntiAffinityPreset` | MariaDB secondary pod anti-affinity preset. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard` | `soft` | +| `secondary.nodeAffinityPreset.type` | MariaDB secondary node affinity preset type. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `secondary.nodeAffinityPreset.key` | MariaDB secondary node label key to match Ignored if `secondary.affinity` is set. | `""` | +| `secondary.nodeAffinityPreset.values` | MariaDB secondary node label values to match. Ignored if `secondary.affinity` is set. | `[]` | +| `secondary.affinity` | Affinity for MariaDB secondary pods assignment | `{}` | +| `secondary.nodeSelector` | Node labels for MariaDB secondary pods assignment | `{}` | +| `secondary.tolerations` | Tolerations for MariaDB secondary pods assignment | `[]` | +| `secondary.topologySpreadConstraints` | Topology Spread Constraints for MariaDB secondary pods assignment | `[]` | +| `secondary.priorityClassName` | Priority class for MariaDB secondary pods assignment | `""` | +| `secondary.runtimeClassName` | Runtime Class for MariaDB secondary pods | `""` | +| `secondary.schedulerName` | Name of the k8s scheduler (other than default) | `""` | +| `secondary.podManagementPolicy` | podManagementPolicy to manage scaling operation of MariaDB secondary pods | `""` | +| `secondary.podSecurityContext.enabled` | Enable security context for MariaDB secondary pods | `true` | +| `secondary.podSecurityContext.fsGroupChangePolicy` | Set filesystem group change policy | `Always` | +| `secondary.podSecurityContext.sysctls` | Set kernel settings using the sysctl interface | `[]` | +| `secondary.podSecurityContext.supplementalGroups` | Set filesystem extra groups | `[]` | +| `secondary.podSecurityContext.fsGroup` | Group ID for the mounted volumes' filesystem | `1001` | +| `secondary.containerSecurityContext.enabled` | MariaDB secondary container securityContext | `true` | +| `secondary.containerSecurityContext.seLinuxOptions` | Set SELinux options in container | `{}` | +| `secondary.containerSecurityContext.runAsUser` | User ID for the MariaDB secondary container | `1001` | +| `secondary.containerSecurityContext.runAsGroup` | Group ID for the MariaDB secondary container | `1001` | +| `secondary.containerSecurityContext.runAsNonRoot` | Set secondary container's Security Context runAsNonRoot | `true` | +| `secondary.containerSecurityContext.privileged` | Set secondary container's Security Context privileged | `false` | +| `secondary.containerSecurityContext.allowPrivilegeEscalation` | Set secondary container's Security Context allowPrivilegeEscalation | `false` | +| `secondary.containerSecurityContext.readOnlyRootFilesystem` | Set container's Security Context readOnlyRootFilesystem | `true` | +| `secondary.containerSecurityContext.capabilities.drop` | List of capabilities to be dropped | `["ALL"]` | +| `secondary.containerSecurityContext.seccompProfile.type` | Set container's Security Context seccomp profile | `RuntimeDefault` | +| `secondary.resourcesPreset` | Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if secondary.resources is set (secondary.resources is recommended for production). | `micro` | +| `secondary.resources` | Set container requests and limits for different resources like CPU or memory (essential for production workloads) | `{}` | +| `secondary.startupProbe.enabled` | Enable startupProbe | `false` | +| `secondary.startupProbe.initialDelaySeconds` | Initial delay seconds for startupProbe | `120` | +| `secondary.startupProbe.periodSeconds` | Period seconds for startupProbe | `15` | +| `secondary.startupProbe.timeoutSeconds` | Timeout seconds for startupProbe | `5` | +| `secondary.startupProbe.failureThreshold` | Failure threshold for startupProbe | `10` | +| `secondary.startupProbe.successThreshold` | Success threshold for startupProbe | `1` | +| `secondary.livenessProbe.enabled` | Enable livenessProbe | `true` | +| `secondary.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `120` | +| `secondary.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | +| `secondary.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `1` | +| `secondary.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | +| `secondary.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `secondary.readinessProbe.enabled` | Enable readinessProbe | `true` | +| `secondary.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `30` | +| `secondary.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `secondary.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `1` | +| `secondary.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `3` | +| `secondary.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `secondary.customStartupProbe` | Override default startup probe for MariaDB secondary containers | `{}` | +| `secondary.customLivenessProbe` | Override default liveness probe for MariaDB secondary containers | `{}` | +| `secondary.customReadinessProbe` | Override default readiness probe for MariaDB secondary containers | `{}` | +| `secondary.startupWaitOptions` | Override default builtin startup wait check options for MariaDB secondary containers | `{}` | +| `secondary.extraFlags` | MariaDB secondary additional command line flags | `""` | +| `secondary.extraEnvVars` | Extra environment variables to be set on MariaDB secondary containers | `[]` | +| `secondary.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars for MariaDB secondary containers | `""` | +| `secondary.extraEnvVarsSecret` | Name of existing Secret containing extra env vars for MariaDB secondary containers | `""` | +| `secondary.persistence.enabled` | Enable persistence on MariaDB secondary replicas using a `PersistentVolumeClaim` | `true` | +| `secondary.persistence.subPath` | Subdirectory of the volume to mount at | `""` | +| `secondary.persistence.storageClass` | MariaDB secondary persistent volume storage Class | `""` | +| `secondary.persistence.labels` | Labels for the PVC | `{}` | +| `secondary.persistence.annotations` | MariaDB secondary persistent volume claim annotations | `{}` | +| `secondary.persistence.accessModes` | MariaDB secondary persistent volume access Modes | `["ReadWriteOnce"]` | +| `secondary.persistence.size` | MariaDB secondary persistent volume size | `8Gi` | +| `secondary.persistence.selector` | Selector to match an existing Persistent Volume | `{}` | +| `secondary.extraVolumes` | Optionally specify extra list of additional volumes to the MariaDB secondary pod(s) | `[]` | +| `secondary.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the MariaDB secondary container(s) | `[]` | +| `secondary.initContainers` | Add additional init containers for the MariaDB secondary pod(s) | `[]` | +| `secondary.sidecars` | Add additional sidecar containers for the MariaDB secondary pod(s) | `[]` | +| `secondary.service.type` | MariaDB secondary Kubernetes service type | `ClusterIP` | +| `secondary.service.ports.mysql` | MariaDB secondary Kubernetes service port for MariaDB | `3306` | +| `secondary.service.ports.metrics` | MariaDB secondary Kubernetes service port for metrics | `9104` | +| `secondary.service.nodePorts.mysql` | MariaDB secondary Kubernetes service node port | `""` | +| `secondary.service.clusterIP` | MariaDB secondary Kubernetes service clusterIP IP | `""` | +| `secondary.service.loadBalancerIP` | MariaDB secondary loadBalancerIP if service type is `LoadBalancer` | `""` | +| `secondary.service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | +| `secondary.service.loadBalancerSourceRanges` | Address that are allowed when MariaDB secondary service is LoadBalancer | `[]` | +| `secondary.service.extraPorts` | Extra ports to expose (normally used with the `sidecar` value) | `[]` | +| `secondary.service.annotations` | Provide any additional annotations which may be required | `{}` | +| `secondary.service.sessionAffinity` | Session Affinity for Kubernetes service, can be "None" or "ClientIP" | `None` | +| `secondary.service.sessionAffinityConfig` | Additional settings for the sessionAffinity | `{}` | +| `secondary.pdb.create` | Enable/disable a Pod Disruption Budget creation for MariaDB secondary pods | `false` | +| `secondary.pdb.minAvailable` | Minimum number/percentage of MariaDB secondary pods that should remain scheduled | `1` | +| `secondary.pdb.maxUnavailable` | Maximum number/percentage of MariaDB secondary pods that may be made unavailable | `""` | +| `secondary.revisionHistoryLimit` | Maximum number of revisions that will be maintained in the StatefulSet | `10` | + +### RBAC parameters + +| Name | Description | Value | +| --------------------------------------------- | -------------------------------------------------------------- | ------- | +| `serviceAccount.create` | Enable the creation of a ServiceAccount for MariaDB pods | `true` | +| `serviceAccount.name` | Name of the created ServiceAccount | `""` | +| `serviceAccount.annotations` | Annotations for MariaDB Service Account | `{}` | +| `serviceAccount.automountServiceAccountToken` | Automount service account token for the server service account | `false` | +| `rbac.create` | Whether to create and use RBAC resources or not | `false` | + +### Volume Permissions parameters + +| Name | Description | Value | +| ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- | +| `volumePermissions.enabled` | Enable init container that changes the owner and group of the persistent volume(s) mountpoint to `runAsUser:fsGroup` | `false` | +| `volumePermissions.image.registry` | Init container volume-permissions image registry | `REGISTRY_NAME` | +| `volumePermissions.image.repository` | Init container volume-permissions image repository | `REPOSITORY_NAME/os-shell` | +| `volumePermissions.image.digest` | Init container volume-permissions image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `""` | +| `volumePermissions.image.pullPolicy` | Init container volume-permissions image pull policy | `IfNotPresent` | +| `volumePermissions.image.pullSecrets` | Specify docker-registry secret names as an array | `[]` | +| `volumePermissions.resourcesPreset` | Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if volumePermissions.resources is set (volumePermissions.resources is recommended for production). | `nano` | +| `volumePermissions.resources` | Set container requests and limits for different resources like CPU or memory (essential for production workloads) | `{}` | + +### Metrics parameters + +| Name | Description | Value | +| ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | +| `metrics.enabled` | Start a side-car prometheus exporter | `false` | +| `metrics.image.registry` | Exporter image registry | `REGISTRY_NAME` | +| `metrics.image.repository` | Exporter image repository | `REPOSITORY_NAME/mysqld-exporter` | +| `metrics.image.digest` | Exporter image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `""` | +| `metrics.image.pullPolicy` | Exporter image pull policy | `IfNotPresent` | +| `metrics.image.pullSecrets` | Specify docker-registry secret names as an array | `[]` | +| `metrics.annotations` | Annotations for the Exporter pod | `{}` | +| `metrics.extraArgs` | Extra args to be passed to mysqld_exporter | `{}` | +| `metrics.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the MariaDB metrics container(s) | `{}` | +| `metrics.containerPorts.http` | Container port for http | `9104` | +| `metrics.containerSecurityContext.enabled` | Enable security context for MariaDB metrics container | `false` | +| `metrics.containerSecurityContext.seLinuxOptions` | Set SELinux options in container | `{}` | +| `metrics.containerSecurityContext.runAsUser` | User ID for the MariaDB metrics container | `1001` | +| `metrics.containerSecurityContext.runAsGroup` | Group ID for the MariaDB metrics container | `1001` | +| `metrics.containerSecurityContext.runAsNonRoot` | Set metrics container's Security Context runAsNonRoot | `true` | +| `metrics.containerSecurityContext.privileged` | Set metrics container's Security Context privileged | `false` | +| `metrics.containerSecurityContext.allowPrivilegeEscalation` | Set metrics container's Security Context allowPrivilegeEscalation | `false` | +| `metrics.containerSecurityContext.readOnlyRootFilesystem` | Set container's Security Context readOnlyRootFilesystem | `true` | +| `metrics.containerSecurityContext.capabilities.drop` | List of capabilities to be dropped | `["ALL"]` | +| `metrics.containerSecurityContext.seccompProfile.type` | Set container's Security Context seccomp profile | `RuntimeDefault` | +| `metrics.resourcesPreset` | Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if metrics.resources is set (metrics.resources is recommended for production). | `nano` | +| `metrics.resources` | Set container requests and limits for different resources like CPU or memory (essential for production workloads) | `{}` | +| `metrics.livenessProbe.enabled` | Enable livenessProbe | `true` | +| `metrics.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `120` | +| `metrics.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | +| `metrics.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `1` | +| `metrics.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | +| `metrics.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `metrics.readinessProbe.enabled` | Enable readinessProbe | `true` | +| `metrics.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `30` | +| `metrics.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `metrics.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `1` | +| `metrics.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `3` | +| `metrics.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `metrics.serviceMonitor.enabled` | Create ServiceMonitor Resource for scraping metrics using PrometheusOperator | `false` | +| `metrics.serviceMonitor.namespace` | Namespace which Prometheus is running in | `""` | +| `metrics.serviceMonitor.jobLabel` | The name of the label on the target service to use as the job name in prometheus. | `""` | +| `metrics.serviceMonitor.interval` | Interval at which metrics should be scraped | `30s` | +| `metrics.serviceMonitor.scrapeTimeout` | Specify the timeout after which the scrape is ended | `""` | +| `metrics.serviceMonitor.relabelings` | RelabelConfigs to apply to samples before scraping | `[]` | +| `metrics.serviceMonitor.metricRelabelings` | MetricRelabelConfigs to apply to samples before ingestion | `[]` | +| `metrics.serviceMonitor.honorLabels` | honorLabels chooses the metric's labels on collisions with target labels | `false` | +| `metrics.serviceMonitor.selector` | ServiceMonitor selector labels | `{}` | +| `metrics.serviceMonitor.labels` | Extra labels for the ServiceMonitor | `{}` | +| `metrics.prometheusRule.enabled` | if `true`, creates a Prometheus Operator PrometheusRule (also requires `metrics.enabled` to be `true` and `metrics.prometheusRule.rules`) | `false` | +| `metrics.prometheusRule.namespace` | Namespace for the PrometheusRule Resource (defaults to the Release Namespace) | `""` | +| `metrics.prometheusRule.additionalLabels` | Additional labels that can be used so PrometheusRule will be discovered by Prometheus | `{}` | +| `metrics.prometheusRule.rules` | Prometheus Rule definitions | `[]` | + +### NetworkPolicy parameters + +| Name | Description | Value | +| --------------------------------------- | --------------------------------------------------------------- | ------ | +| `networkPolicy.enabled` | Enable creation of NetworkPolicy resources | `true` | +| `networkPolicy.allowExternal` | The Policy model to apply | `true` | +| `networkPolicy.allowExternalEgress` | Allow the pod to access any range of port and all destinations. | `true` | +| `networkPolicy.extraIngress` | Add extra ingress rules to the NetworkPolicy | `[]` | +| `networkPolicy.extraEgress` | Add extra ingress rules to the NetworkPolicy | `[]` | +| `networkPolicy.ingressNSMatchLabels` | Labels to match to allow traffic from other namespaces | `{}` | +| `networkPolicy.ingressNSPodMatchLabels` | Pod labels to match to allow traffic from other namespaces | `{}` | + +The above parameters map to the env variables defined in [bitnami/mariadb](https://github.com/bitnami/containers/tree/main/bitnami/mariadb). For more information please refer to the [bitnami/mariadb](https://github.com/bitnami/containers/tree/main/bitnami/mariadb) image documentation. + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, + +```console +helm install my-release \ + --set auth.rootPassword=secretpassword,auth.database=app_database \ + oci://REGISTRY_NAME/REPOSITORY_NAME/mariadb +``` + +> Note: You need to substitute the placeholders `REGISTRY_NAME` and `REPOSITORY_NAME` with a reference to your Helm chart registry and repository. For example, in the case of Bitnami, you need to use `REGISTRY_NAME=registry-1.docker.io` and `REPOSITORY_NAME=bitnamicharts`. + +The above command sets the MariaDB `root` account password to `secretpassword`. Additionally it creates a database named `my_database`. + +> NOTE: Once this chart is deployed, it is not possible to change the application's access credentials, such as usernames or passwords, using Helm. To change these application credentials after deployment, delete any persistent volumes (PVs) used by the chart and re-deploy it, or use the application's built-in administrative tools if available. + +Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example, + +```console +helm install my-release -f values.yaml oci://REGISTRY_NAME/REPOSITORY_NAME/mariadb +``` + +> Note: You need to substitute the placeholders `REGISTRY_NAME` and `REPOSITORY_NAME` with a reference to your Helm chart registry and repository. For example, in the case of Bitnami, you need to use `REGISTRY_NAME=registry-1.docker.io` and `REPOSITORY_NAME=bitnamicharts`. +> **Tip**: You can use the default [values.yaml](https://github.com/bitnami/charts/tree/main/bitnami/mariadb/values.yaml) + +## Troubleshooting + +Find more information about how to deal with common errors related to Bitnami's Helm charts in [this troubleshooting guide](https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues). + +## Upgrading + +It's necessary to set the `auth.rootPassword` parameter when upgrading for readiness/liveness probes to work properly. When you install this chart for the first time, some notes will be displayed providing the credentials you must use under the 'Administrator credentials' section. Please note down the password and run the command below to upgrade your chart: + +```console +helm upgrade my-release oci://REGISTRY_NAME/REPOSITORY_NAME/mariadb --set auth.rootPassword=[ROOT_PASSWORD] +``` + +> Note: You need to substitute the placeholders `REGISTRY_NAME` and `REPOSITORY_NAME` with a reference to your Helm chart registry and repository. For example, in the case of Bitnami, you need to use `REGISTRY_NAME=registry-1.docker.io` and `REPOSITORY_NAME=bitnamicharts`. + +| Note: you need to substitute the placeholder _[ROOT_PASSWORD]_ with the value obtained in the installation notes. + +### To 17.0.0 + +This major bump changes the following security defaults: + +- `runAsGroup` is changed from `0` to `1001` +- `readOnlyRootFilesystem` is set to `true` +- `resourcesPreset` is changed from `none` to the minimum size working in our test suites (NOTE: `resourcesPreset` is not meant for production usage, but `resources` adapted to your use case). +- `global.compatibility.openshift.adaptSecurityContext` is changed from `disabled` to `auto`. + +This could potentially break any customization or init scripts used in your deployment. If this is the case, change the default values to the previous ones. + +### To 16.0.0 + +This section enables NetworkPolicies by default to increase security of the application. It also adapts the values in the `networkPolicy` section to the current Bitnami standards. The removed sections are `networkPolicy.metrics.*`, `networkPolicy.ingressRules.*` and `networkPolicy.egressRules.*`. Check the Parameters table for the new structure. + +### To 14.0.0 + +This major release bumps the MariaDB version to 11.1. Follow the [upstream instructions](https://mariadb.com/kb/en/upgrading-between-minor-versions-on-linux/) for upgrading from MariaDB 11.0 to 11.1. No major issues are expected during the upgrade. + +### To 13.0.0 + +This major release bumps the MariaDB version to 11.0. Follow the [upstream instructions](https://mariadb.com/kb/en/upgrading-from-mariadb-10-11-to-mariadb-11-0/) for upgrading from MariaDB 10.11 to 11.0. No major issues are expected during the upgrade. + +### To 11.0.0 + +This major release bumps default MariaDB branch to 10.6. Follow the [official instructions](https://mariadb.com/kb/en/upgrading-from-mariadb-105-to-mariadb-106/) from upgrading between 10.5 and 10.6. + +No major issues are expected during the upgrade. + +### To 10.0.0 + +This major release renames several values in this chart and adds missing features, in order to be inline with the rest of assets in the Bitnami charts repository. + +Affected values: + +- `primary.service.port` was deprecated, we recommend using `primary.service.ports.mysql` instead. +- `primary.service.nodePort` was deprecated, we recommend using `primary.service.nodePorts.mysql` instead. +- `secondary.service.port` was deprecated, we recommend using `secondary.service.ports.mysql` instead. +- `secondary.service.nodePort` was deprecated, we recommend using `secondary.service.nodePorts.mysql` instead. +- `metrics.serviceMonitor.additionalLabels` was deprecated, we recommend using `metrics.serviceMonitor.selector` instead. +- `primary.pdb.enabled` renamed as `primary.pdb.create`. +- `secondary.pdb.enabled` renamed as `secondary.pdb.create`. +- `primary.updateStrategy` changed from String type (previously default to 'rollingUpdate') to Object type, allowing users to configure other updateStrategy parameters, similar to other charts. +- Removed value `primary.rollingUpdatePartition`, now configured using `primary.updateStrategy` setting `primary.updateStrategy.rollingUpdate.partition`. +- `secondary.updateStrategy` changed from String type (previously default to 'rollingUpdate') to Object type, allowing users to configure other updateStrategy parameters, similar to other charts. +- Removed value `secondary.rollingUpdatePartition`, now configured using `secondary.updateStrategy` setting `secondary.updateStrategy.rollingUpdate.partition`. +- `metrics.serviceMonitor.relabellings`, previously used to configure ServiceMonitor metricRelabelings, has been replaced with the value `metrics.serviceMonitor.metricRelabelings`, and new value `metrics.serviceMonitor.relabelings` can be used to set ServiceMonitor relabelings parameter + +### To 9.0.0 + +[On November 13, 2020, Helm v2 support was formally finished](https://github.com/helm/charts#status-of-the-project), this major version is the result of the required changes applied to the Helm Chart to be able to incorporate the different features added in Helm v3 and to be consistent with the Helm project itself regarding the Helm v2 EOL. + +### To 8.0.0 + +- Several parameters were renamed or disappeared in favor of new ones on this major version: + - The terms _master_ and _slave_ have been replaced by the terms _primary_ and _secondary_. Therefore, parameters prefixed with `master` or `slave` are now prefixed with `primary` or `secondary`, respectively. + - `securityContext.*` is deprecated in favor of `primary.podSecurityContext`, `primary.containerSecurityContext`, `secondary.podSecurityContext`, and `secondary.containerSecurityContext`. + - Credentials parameter are reorganized under the `auth` parameter. + - `replication.enabled` parameter is deprecated in favor of `architecture` parameter that accepts two values: `standalone` and `replication`. +- The default MariaDB version was updated from 10.3 to 10.5. According to the official documentation, upgrading from 10.3 should be painless. However, there are some things that have changed which could affect an upgrade: + - [Incompatible changes upgrading from MariaDB 10.3 to MariaDB 10.4](https://mariadb.com/kb/en/upgrading-from-mariadb-103-to-mariadb-104/#incompatible-changes-between-103-and-104). + - [Incompatible changes upgrading from MariaDB 10.4 to MariaDB 10.5](https://mariadb.com/kb/en/upgrading-from-mariadb-104-to-mariadb-105/#incompatible-changes-between-104-and-105). +- Chart labels were adapted to follow the [Helm charts standard labels](https://helm.sh/docs/chart_best_practices/labels/#standard-labels). +- This version also introduces `bitnami/common`, a [library chart](https://helm.sh/docs/topics/library_charts/#helm) as a dependency. More documentation about this new utility could be found [here](https://github.com/bitnami/charts/tree/main/bitnami/common#bitnami-common-library-chart). Please, make sure that you have updated the chart dependencies before executing any upgrade. + +Consequences: + +Backwards compatibility is not guaranteed. To upgrade to `8.0.0`, install a new release of the MariaDB chart, and migrate the data from your previous release. You have 2 alternatives to do so: + +- Create a backup of the database, and restore it on the new release using tools such as [mysqldump](https://mariadb.com/kb/en/mysqldump/). +- Reuse the PVC used to hold the master data on your previous release. To do so, use the `primary.persistence.existingClaim` parameter. The following example assumes that the release name is `mariadb`: + +```console +helm install mariadb oci://REGISTRY_NAME/REPOSITORY_NAME/mariadb --set auth.rootPassword=[ROOT_PASSWORD] --set primary.persistence.existingClaim=[EXISTING_PVC] +``` + +> Note: You need to substitute the placeholders `REGISTRY_NAME` and `REPOSITORY_NAME` with a reference to your Helm chart registry and repository. For example, in the case of Bitnami, you need to use `REGISTRY_NAME=registry-1.docker.io` and `REPOSITORY_NAME=bitnamicharts`. + +| Note: you need to substitute the placeholder _[EXISTING_PVC]_ with the name of the PVC used on your previous release, and _[ROOT_PASSWORD]_ with the root password used in your previous release. + +### To 7.0.0 + +Helm performs a lookup for the object based on its group (apps), version (v1), and kind (Deployment). Also known as its GroupVersionKind, or GVK. Changing the GVK is considered a compatibility breaker from Kubernetes' point of view, so you cannot "upgrade" those objects to the new GVK in-place. Earlier versions of Helm 3 did not perform the lookup correctly which has since been fixed to match the spec. + +In the `apiVersion` of the statefulset resources was updated to `apps/v1` in tune with the api's deprecated, resulting in compatibility breakage. + +This major version bump signifies this change. + +### To 6.0.0 + +MariaDB version was updated from 10.1 to 10.3, there are no changes in the chart itself. According to the official documentation, upgrading from 10.1 should be painless. However, there are some things that have changed which could affect an upgrade: + +- [Incompatible changes upgrading from MariaDB 10.1 to MariaDB 10.2](https://mariadb.com/kb/en/library/upgrading-from-mariadb-101-to-mariadb-102//#incompatible-changes-between-101-and-102) +- [Incompatible changes upgrading from MariaDB 10.2 to MariaDB 10.3](https://mariadb.com/kb/en/library/upgrading-from-mariadb-102-to-mariadb-103/#incompatible-changes-between-102-and-103) + +### To 5.0.0 + +Backwards compatibility is not guaranteed unless you modify the labels used on the chart's deployments. +Use the workaround below to upgrade from versions previous to 5.0.0. The following example assumes that the release name is mariadb: + +```console +kubectl delete statefulset opencart-mariadb --cascade=false +``` + +## License + +Copyright © 2024 Broadcom. The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. \ No newline at end of file diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/.helmignore b/charts/limesurvey-1/charts/mariadb/charts/common/.helmignore new file mode 100644 index 0000000..7c7c21d --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/.helmignore @@ -0,0 +1,24 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# img folder +img/ diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/Chart.yaml b/charts/limesurvey-1/charts/mariadb/charts/common/Chart.yaml new file mode 100644 index 0000000..8d0e546 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/Chart.yaml @@ -0,0 +1,23 @@ +annotations: + category: Infrastructure + licenses: Apache-2.0 +apiVersion: v2 +appVersion: 2.19.1 +description: A Library Helm Chart for grouping common logic between bitnami charts. + This chart is not deployable by itself. +home: https://bitnami.com +icon: https://bitnami.com/downloads/logos/bitnami-mark.png +keywords: +- common +- helper +- template +- function +- bitnami +maintainers: +- name: VMware, Inc. + url: https://github.com/bitnami/charts +name: common +sources: +- https://github.com/bitnami/charts +type: library +version: 2.19.1 diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/README.md b/charts/limesurvey-1/charts/mariadb/charts/common/README.md new file mode 100644 index 0000000..0d01a1e --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/README.md @@ -0,0 +1,235 @@ +# Bitnami Common Library Chart + +A [Helm Library Chart](https://helm.sh/docs/topics/library_charts/#helm) for grouping common logic between Bitnami charts. + +## TL;DR + +```yaml +dependencies: + - name: common + version: 2.x.x + repository: oci://registry-1.docker.io/bitnamicharts +``` + +```console +helm dependency update +``` + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.names.fullname" . }} +data: + myvalue: "Hello World" +``` + +Looking to use our applications in production? Try [VMware Tanzu Application Catalog](https://bitnami.com/enterprise), the enterprise edition of Bitnami Application Catalog. + +## Introduction + +This chart provides a common template helpers which can be used to develop new charts using [Helm](https://helm.sh) package manager. + +Bitnami charts can be used with [Kubeapps](https://kubeapps.dev/) for deployment and management of Helm Charts in clusters. + +## Prerequisites + +- Kubernetes 1.23+ +- Helm 3.8.0+ + +## Parameters + +## Special input schemas + +### ImageRoot + +```yaml +registry: + type: string + description: Docker registry where the image is located + example: docker.io + +repository: + type: string + description: Repository and image name + example: bitnami/nginx + +tag: + type: string + description: image tag + example: 1.16.1-debian-10-r63 + +pullPolicy: + type: string + description: Specify a imagePullPolicy. Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' + +pullSecrets: + type: array + items: + type: string + description: Optionally specify an array of imagePullSecrets (evaluated as templates). + +debug: + type: boolean + description: Set to true if you would like to see extra information on logs + example: false + +## An instance would be: +# registry: docker.io +# repository: bitnami/nginx +# tag: 1.16.1-debian-10-r63 +# pullPolicy: IfNotPresent +# debug: false +``` + +### Persistence + +```yaml +enabled: + type: boolean + description: Whether enable persistence. + example: true + +storageClass: + type: string + description: Ghost data Persistent Volume Storage Class, If set to "-", storageClassName: "" which disables dynamic provisioning. + example: "-" + +accessMode: + type: string + description: Access mode for the Persistent Volume Storage. + example: ReadWriteOnce + +size: + type: string + description: Size the Persistent Volume Storage. + example: 8Gi + +path: + type: string + description: Path to be persisted. + example: /bitnami + +## An instance would be: +# enabled: true +# storageClass: "-" +# accessMode: ReadWriteOnce +# size: 8Gi +# path: /bitnami +``` + +### ExistingSecret + +```yaml +name: + type: string + description: Name of the existing secret. + example: mySecret +keyMapping: + description: Mapping between the expected key name and the name of the key in the existing secret. + type: object + +## An instance would be: +# name: mySecret +# keyMapping: +# password: myPasswordKey +``` + +#### Example of use + +When we store sensitive data for a deployment in a secret, some times we want to give to users the possibility of using theirs existing secrets. + +```yaml +# templates/secret.yaml +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.names.fullname" . }} + labels: + app: {{ include "common.names.fullname" . }} +type: Opaque +data: + password: {{ .Values.password | b64enc | quote }} + +# templates/dpl.yaml +--- +... + env: + - name: PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "common.secrets.name" (dict "existingSecret" .Values.existingSecret "context" $) }} + key: {{ include "common.secrets.key" (dict "existingSecret" .Values.existingSecret "key" "password") }} +... + +# values.yaml +--- +name: mySecret +keyMapping: + password: myPasswordKey +``` + +### ValidateValue + +#### NOTES.txt + +```console +{{- $validateValueConf00 := (dict "valueKey" "path.to.value00" "secret" "secretName" "field" "password-00") -}} +{{- $validateValueConf01 := (dict "valueKey" "path.to.value01" "secret" "secretName" "field" "password-01") -}} + +{{ include "common.validations.values.multiple.empty" (dict "required" (list $validateValueConf00 $validateValueConf01) "context" $) }} +``` + +If we force those values to be empty we will see some alerts + +```console +helm install test mychart --set path.to.value00="",path.to.value01="" + 'path.to.value00' must not be empty, please add '--set path.to.value00=$PASSWORD_00' to the command. To get the current value: + + export PASSWORD_00=$(kubectl get secret --namespace default secretName -o jsonpath="{.data.password-00}" | base64 -d) + + 'path.to.value01' must not be empty, please add '--set path.to.value01=$PASSWORD_01' to the command. To get the current value: + + export PASSWORD_01=$(kubectl get secret --namespace default secretName -o jsonpath="{.data.password-01}" | base64 -d) +``` + +## Upgrading + +### To 1.0.0 + +[On November 13, 2020, Helm v2 support was formally finished](https://github.com/helm/charts#status-of-the-project), this major version is the result of the required changes applied to the Helm Chart to be able to incorporate the different features added in Helm v3 and to be consistent with the Helm project itself regarding the Helm v2 EOL. + +#### What changes were introduced in this major version? + +- Previous versions of this Helm Chart use `apiVersion: v1` (installable by both Helm 2 and 3), this Helm Chart was updated to `apiVersion: v2` (installable by Helm 3 only). [Here](https://helm.sh/docs/topics/charts/#the-apiversion-field) you can find more information about the `apiVersion` field. +- Use `type: library`. [Here](https://v3.helm.sh/docs/faq/#library-chart-support) you can find more information. +- The different fields present in the *Chart.yaml* file has been ordered alphabetically in a homogeneous way for all the Bitnami Helm Charts + +#### Considerations when upgrading to this version + +- If you want to upgrade to this version from a previous one installed with Helm v3, you shouldn't face any issues +- If you want to upgrade to this version using Helm v2, this scenario is not supported as this version doesn't support Helm v2 anymore +- If you installed the previous version with Helm v2 and wants to upgrade to this version with Helm v3, please refer to the [official Helm documentation](https://helm.sh/docs/topics/v2_v3_migration/#migration-use-cases) about migrating from Helm v2 to v3 + +#### Useful links + +- +- +- + +## License + +Copyright © 2024 Broadcom. The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/templates/_affinities.tpl b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_affinities.tpl new file mode 100644 index 0000000..e85b1df --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_affinities.tpl @@ -0,0 +1,139 @@ +{{/* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{/* vim: set filetype=mustache: */}} + +{{/* +Return a soft nodeAffinity definition +{{ include "common.affinities.nodes.soft" (dict "key" "FOO" "values" (list "BAR" "BAZ")) -}} +*/}} +{{- define "common.affinities.nodes.soft" -}} +preferredDuringSchedulingIgnoredDuringExecution: + - preference: + matchExpressions: + - key: {{ .key }} + operator: In + values: + {{- range .values }} + - {{ . | quote }} + {{- end }} + weight: 1 +{{- end -}} + +{{/* +Return a hard nodeAffinity definition +{{ include "common.affinities.nodes.hard" (dict "key" "FOO" "values" (list "BAR" "BAZ")) -}} +*/}} +{{- define "common.affinities.nodes.hard" -}} +requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: {{ .key }} + operator: In + values: + {{- range .values }} + - {{ . | quote }} + {{- end }} +{{- end -}} + +{{/* +Return a nodeAffinity definition +{{ include "common.affinities.nodes" (dict "type" "soft" "key" "FOO" "values" (list "BAR" "BAZ")) -}} +*/}} +{{- define "common.affinities.nodes" -}} + {{- if eq .type "soft" }} + {{- include "common.affinities.nodes.soft" . -}} + {{- else if eq .type "hard" }} + {{- include "common.affinities.nodes.hard" . -}} + {{- end -}} +{{- end -}} + +{{/* +Return a topologyKey definition +{{ include "common.affinities.topologyKey" (dict "topologyKey" "BAR") -}} +*/}} +{{- define "common.affinities.topologyKey" -}} +{{ .topologyKey | default "kubernetes.io/hostname" -}} +{{- end -}} + +{{/* +Return a soft podAffinity/podAntiAffinity definition +{{ include "common.affinities.pods.soft" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "extraPodAffinityTerms" .Values.extraPodAffinityTerms "context" $) -}} +*/}} +{{- define "common.affinities.pods.soft" -}} +{{- $component := default "" .component -}} +{{- $customLabels := default (dict) .customLabels -}} +{{- $extraMatchLabels := default (dict) .extraMatchLabels -}} +{{- $extraPodAffinityTerms := default (list) .extraPodAffinityTerms -}} +preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" .context )) | nindent 10 }} + {{- if not (empty $component) }} + {{ printf "app.kubernetes.io/component: %s" $component }} + {{- end }} + {{- range $key, $value := $extraMatchLabels }} + {{ $key }}: {{ $value | quote }} + {{- end }} + topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }} + weight: 1 + {{- range $extraPodAffinityTerms }} + - podAffinityTerm: + labelSelector: + matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" $.context )) | nindent 10 }} + {{- if not (empty $component) }} + {{ printf "app.kubernetes.io/component: %s" $component }} + {{- end }} + {{- range $key, $value := .extraMatchLabels }} + {{ $key }}: {{ $value | quote }} + {{- end }} + topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }} + weight: {{ .weight | default 1 -}} + {{- end -}} +{{- end -}} + +{{/* +Return a hard podAffinity/podAntiAffinity definition +{{ include "common.affinities.pods.hard" (dict "component" "FOO" "customLabels" .Values.podLabels "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "extraPodAffinityTerms" .Values.extraPodAffinityTerms "context" $) -}} +*/}} +{{- define "common.affinities.pods.hard" -}} +{{- $component := default "" .component -}} +{{- $customLabels := default (dict) .customLabels -}} +{{- $extraMatchLabels := default (dict) .extraMatchLabels -}} +{{- $extraPodAffinityTerms := default (list) .extraPodAffinityTerms -}} +requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" .context )) | nindent 8 }} + {{- if not (empty $component) }} + {{ printf "app.kubernetes.io/component: %s" $component }} + {{- end }} + {{- range $key, $value := $extraMatchLabels }} + {{ $key }}: {{ $value | quote }} + {{- end }} + topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }} + {{- range $extraPodAffinityTerms }} + - labelSelector: + matchLabels: {{- (include "common.labels.matchLabels" ( dict "customLabels" $customLabels "context" $.context )) | nindent 8 }} + {{- if not (empty $component) }} + {{ printf "app.kubernetes.io/component: %s" $component }} + {{- end }} + {{- range $key, $value := .extraMatchLabels }} + {{ $key }}: {{ $value | quote }} + {{- end }} + topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }} + {{- end -}} +{{- end -}} + +{{/* +Return a podAffinity/podAntiAffinity definition +{{ include "common.affinities.pods" (dict "type" "soft" "key" "FOO" "values" (list "BAR" "BAZ")) -}} +*/}} +{{- define "common.affinities.pods" -}} + {{- if eq .type "soft" }} + {{- include "common.affinities.pods.soft" . -}} + {{- else if eq .type "hard" }} + {{- include "common.affinities.pods.hard" . -}} + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/templates/_capabilities.tpl b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_capabilities.tpl new file mode 100644 index 0000000..115674a --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_capabilities.tpl @@ -0,0 +1,229 @@ +{{/* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{/* vim: set filetype=mustache: */}} + +{{/* +Return the target Kubernetes version +*/}} +{{- define "common.capabilities.kubeVersion" -}} +{{- if .Values.global }} + {{- if .Values.global.kubeVersion }} + {{- .Values.global.kubeVersion -}} + {{- else }} + {{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}} + {{- end -}} +{{- else }} +{{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for poddisruptionbudget. +*/}} +{{- define "common.capabilities.policy.apiVersion" -}} +{{- if semverCompare "<1.21-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "policy/v1beta1" -}} +{{- else -}} +{{- print "policy/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for networkpolicy. +*/}} +{{- define "common.capabilities.networkPolicy.apiVersion" -}} +{{- if semverCompare "<1.7-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "extensions/v1beta1" -}} +{{- else -}} +{{- print "networking.k8s.io/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for cronjob. +*/}} +{{- define "common.capabilities.cronjob.apiVersion" -}} +{{- if semverCompare "<1.21-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "batch/v1beta1" -}} +{{- else -}} +{{- print "batch/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for daemonset. +*/}} +{{- define "common.capabilities.daemonset.apiVersion" -}} +{{- if semverCompare "<1.14-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "extensions/v1beta1" -}} +{{- else -}} +{{- print "apps/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for deployment. +*/}} +{{- define "common.capabilities.deployment.apiVersion" -}} +{{- if semverCompare "<1.14-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "extensions/v1beta1" -}} +{{- else -}} +{{- print "apps/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for statefulset. +*/}} +{{- define "common.capabilities.statefulset.apiVersion" -}} +{{- if semverCompare "<1.14-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "apps/v1beta1" -}} +{{- else -}} +{{- print "apps/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for ingress. +*/}} +{{- define "common.capabilities.ingress.apiVersion" -}} +{{- if .Values.ingress -}} +{{- if .Values.ingress.apiVersion -}} +{{- .Values.ingress.apiVersion -}} +{{- else if semverCompare "<1.14-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "extensions/v1beta1" -}} +{{- else if semverCompare "<1.19-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "networking.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "networking.k8s.io/v1" -}} +{{- end }} +{{- else if semverCompare "<1.14-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "extensions/v1beta1" -}} +{{- else if semverCompare "<1.19-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "networking.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "networking.k8s.io/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for RBAC resources. +*/}} +{{- define "common.capabilities.rbac.apiVersion" -}} +{{- if semverCompare "<1.17-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "rbac.authorization.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "rbac.authorization.k8s.io/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for CRDs. +*/}} +{{- define "common.capabilities.crd.apiVersion" -}} +{{- if semverCompare "<1.19-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "apiextensions.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "apiextensions.k8s.io/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for APIService. +*/}} +{{- define "common.capabilities.apiService.apiVersion" -}} +{{- if semverCompare "<1.10-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "apiregistration.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "apiregistration.k8s.io/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for Horizontal Pod Autoscaler. +*/}} +{{- define "common.capabilities.hpa.apiVersion" -}} +{{- if semverCompare "<1.23-0" (include "common.capabilities.kubeVersion" .context) -}} +{{- if .beta2 -}} +{{- print "autoscaling/v2beta2" -}} +{{- else -}} +{{- print "autoscaling/v2beta1" -}} +{{- end -}} +{{- else -}} +{{- print "autoscaling/v2" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for Vertical Pod Autoscaler. +*/}} +{{- define "common.capabilities.vpa.apiVersion" -}} +{{- if semverCompare "<1.23-0" (include "common.capabilities.kubeVersion" .context) -}} +{{- if .beta2 -}} +{{- print "autoscaling/v2beta2" -}} +{{- else -}} +{{- print "autoscaling/v2beta1" -}} +{{- end -}} +{{- else -}} +{{- print "autoscaling/v2" -}} +{{- end -}} +{{- end -}} + +{{/* +Returns true if PodSecurityPolicy is supported +*/}} +{{- define "common.capabilities.psp.supported" -}} +{{- if semverCompare "<1.25-0" (include "common.capabilities.kubeVersion" .) -}} + {{- true -}} +{{- end -}} +{{- end -}} + +{{/* +Returns true if AdmissionConfiguration is supported +*/}} +{{- define "common.capabilities.admissionConfiguration.supported" -}} +{{- if semverCompare ">=1.23-0" (include "common.capabilities.kubeVersion" .) -}} + {{- true -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for AdmissionConfiguration. +*/}} +{{- define "common.capabilities.admissionConfiguration.apiVersion" -}} +{{- if semverCompare "<1.23-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "apiserver.config.k8s.io/v1alpha1" -}} +{{- else if semverCompare "<1.25-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "apiserver.config.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "apiserver.config.k8s.io/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for PodSecurityConfiguration. +*/}} +{{- define "common.capabilities.podSecurityConfiguration.apiVersion" -}} +{{- if semverCompare "<1.23-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "pod-security.admission.config.k8s.io/v1alpha1" -}} +{{- else if semverCompare "<1.25-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "pod-security.admission.config.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "pod-security.admission.config.k8s.io/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Returns true if the used Helm version is 3.3+. +A way to check the used Helm version was not introduced until version 3.3.0 with .Capabilities.HelmVersion, which contains an additional "{}}" structure. +This check is introduced as a regexMatch instead of {{ if .Capabilities.HelmVersion }} because checking for the key HelmVersion in <3.3 results in a "interface not found" error. +**To be removed when the catalog's minimun Helm version is 3.3** +*/}} +{{- define "common.capabilities.supportsHelmVersion" -}} +{{- if regexMatch "{(v[0-9])*[^}]*}}$" (.Capabilities | toString ) }} + {{- true -}} +{{- end -}} +{{- end -}} diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/templates/_compatibility.tpl b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_compatibility.tpl new file mode 100644 index 0000000..17665d5 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_compatibility.tpl @@ -0,0 +1,39 @@ +{{/* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{/* vim: set filetype=mustache: */}} + +{{/* +Return true if the detected platform is Openshift +Usage: +{{- include "common.compatibility.isOpenshift" . -}} +*/}} +{{- define "common.compatibility.isOpenshift" -}} +{{- if .Capabilities.APIVersions.Has "security.openshift.io/v1" -}} +{{- true -}} +{{- end -}} +{{- end -}} + +{{/* +Render a compatible securityContext depending on the platform. By default it is maintained as it is. In other platforms like Openshift we remove default user/group values that do not work out of the box with the restricted-v1 SCC +Usage: +{{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.containerSecurityContext "context" $) -}} +*/}} +{{- define "common.compatibility.renderSecurityContext" -}} +{{- $adaptedContext := .secContext -}} +{{- if .context.Values.global.compatibility -}} + {{- if .context.Values.global.compatibility.openshift -}} + {{- if or (eq .context.Values.global.compatibility.openshift.adaptSecurityContext "force") (and (eq .context.Values.global.compatibility.openshift.adaptSecurityContext "auto") (include "common.compatibility.isOpenshift" .context)) -}} + {{/* Remove incompatible user/group values that do not work in Openshift out of the box */}} + {{- $adaptedContext = omit $adaptedContext "fsGroup" "runAsUser" "runAsGroup" -}} + {{- if not .secContext.seLinuxOptions -}} + {{/* If it is an empty object, we remove it from the resulting context because it causes validation issues */}} + {{- $adaptedContext = omit $adaptedContext "seLinuxOptions" -}} + {{- end -}} + {{- end -}} + {{- end -}} +{{- end -}} +{{- omit $adaptedContext "enabled" | toYaml -}} +{{- end -}} diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/templates/_errors.tpl b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_errors.tpl new file mode 100644 index 0000000..07ded6f --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_errors.tpl @@ -0,0 +1,28 @@ +{{/* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{/* vim: set filetype=mustache: */}} +{{/* +Through error when upgrading using empty passwords values that must not be empty. + +Usage: +{{- $validationError00 := include "common.validations.values.single.empty" (dict "valueKey" "path.to.password00" "secret" "secretName" "field" "password-00") -}} +{{- $validationError01 := include "common.validations.values.single.empty" (dict "valueKey" "path.to.password01" "secret" "secretName" "field" "password-01") -}} +{{ include "common.errors.upgrade.passwords.empty" (dict "validationErrors" (list $validationError00 $validationError01) "context" $) }} + +Required password params: + - validationErrors - String - Required. List of validation strings to be return, if it is empty it won't throw error. + - context - Context - Required. Parent context. +*/}} +{{- define "common.errors.upgrade.passwords.empty" -}} + {{- $validationErrors := join "" .validationErrors -}} + {{- if and $validationErrors .context.Release.IsUpgrade -}} + {{- $errorString := "\nPASSWORDS ERROR: You must provide your current passwords when upgrading the release." -}} + {{- $errorString = print $errorString "\n Note that even after reinstallation, old credentials may be needed as they may be kept in persistent volume claims." -}} + {{- $errorString = print $errorString "\n Further information can be obtained at https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues/#credential-errors-while-upgrading-chart-releases" -}} + {{- $errorString = print $errorString "\n%s" -}} + {{- printf $errorString $validationErrors | fail -}} + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/templates/_images.tpl b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_images.tpl new file mode 100644 index 0000000..1bcb779 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_images.tpl @@ -0,0 +1,117 @@ +{{/* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{/* vim: set filetype=mustache: */}} +{{/* +Return the proper image name +{{ include "common.images.image" ( dict "imageRoot" .Values.path.to.the.image "global" .Values.global ) }} +*/}} +{{- define "common.images.image" -}} +{{- $registryName := .imageRoot.registry -}} +{{- $repositoryName := .imageRoot.repository -}} +{{- $separator := ":" -}} +{{- $termination := .imageRoot.tag | toString -}} +{{- if .global }} + {{- if .global.imageRegistry }} + {{- $registryName = .global.imageRegistry -}} + {{- end -}} +{{- end -}} +{{- if .imageRoot.digest }} + {{- $separator = "@" -}} + {{- $termination = .imageRoot.digest | toString -}} +{{- end -}} +{{- if $registryName }} + {{- printf "%s/%s%s%s" $registryName $repositoryName $separator $termination -}} +{{- else -}} + {{- printf "%s%s%s" $repositoryName $separator $termination -}} +{{- end -}} +{{- end -}} + +{{/* +Return the proper Docker Image Registry Secret Names (deprecated: use common.images.renderPullSecrets instead) +{{ include "common.images.pullSecrets" ( dict "images" (list .Values.path.to.the.image1, .Values.path.to.the.image2) "global" .Values.global) }} +*/}} +{{- define "common.images.pullSecrets" -}} + {{- $pullSecrets := list }} + + {{- if .global }} + {{- range .global.imagePullSecrets -}} + {{- if kindIs "map" . -}} + {{- $pullSecrets = append $pullSecrets .name -}} + {{- else -}} + {{- $pullSecrets = append $pullSecrets . -}} + {{- end }} + {{- end -}} + {{- end -}} + + {{- range .images -}} + {{- range .pullSecrets -}} + {{- if kindIs "map" . -}} + {{- $pullSecrets = append $pullSecrets .name -}} + {{- else -}} + {{- $pullSecrets = append $pullSecrets . -}} + {{- end -}} + {{- end -}} + {{- end -}} + + {{- if (not (empty $pullSecrets)) }} +imagePullSecrets: + {{- range $pullSecrets | uniq }} + - name: {{ . }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Return the proper Docker Image Registry Secret Names evaluating values as templates +{{ include "common.images.renderPullSecrets" ( dict "images" (list .Values.path.to.the.image1, .Values.path.to.the.image2) "context" $) }} +*/}} +{{- define "common.images.renderPullSecrets" -}} + {{- $pullSecrets := list }} + {{- $context := .context }} + + {{- if $context.Values.global }} + {{- range $context.Values.global.imagePullSecrets -}} + {{- if kindIs "map" . -}} + {{- $pullSecrets = append $pullSecrets (include "common.tplvalues.render" (dict "value" .name "context" $context)) -}} + {{- else -}} + {{- $pullSecrets = append $pullSecrets (include "common.tplvalues.render" (dict "value" . "context" $context)) -}} + {{- end -}} + {{- end -}} + {{- end -}} + + {{- range .images -}} + {{- range .pullSecrets -}} + {{- if kindIs "map" . -}} + {{- $pullSecrets = append $pullSecrets (include "common.tplvalues.render" (dict "value" .name "context" $context)) -}} + {{- else -}} + {{- $pullSecrets = append $pullSecrets (include "common.tplvalues.render" (dict "value" . "context" $context)) -}} + {{- end -}} + {{- end -}} + {{- end -}} + + {{- if (not (empty $pullSecrets)) }} +imagePullSecrets: + {{- range $pullSecrets | uniq }} + - name: {{ . }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Return the proper image version (ingores image revision/prerelease info & fallbacks to chart appVersion) +{{ include "common.images.version" ( dict "imageRoot" .Values.path.to.the.image "chart" .Chart ) }} +*/}} +{{- define "common.images.version" -}} +{{- $imageTag := .imageRoot.tag | toString -}} +{{/* regexp from https://github.com/Masterminds/semver/blob/23f51de38a0866c5ef0bfc42b3f735c73107b700/version.go#L41-L44 */}} +{{- if regexMatch `^([0-9]+)(\.[0-9]+)?(\.[0-9]+)?(-([0-9A-Za-z\-]+(\.[0-9A-Za-z\-]+)*))?(\+([0-9A-Za-z\-]+(\.[0-9A-Za-z\-]+)*))?$` $imageTag -}} + {{- $version := semver $imageTag -}} + {{- printf "%d.%d.%d" $version.Major $version.Minor $version.Patch -}} +{{- else -}} + {{- print .chart.AppVersion -}} +{{- end -}} +{{- end -}} + diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/templates/_ingress.tpl b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_ingress.tpl new file mode 100644 index 0000000..efa5b85 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_ingress.tpl @@ -0,0 +1,73 @@ +{{/* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{/* vim: set filetype=mustache: */}} + +{{/* +Generate backend entry that is compatible with all Kubernetes API versions. + +Usage: +{{ include "common.ingress.backend" (dict "serviceName" "backendName" "servicePort" "backendPort" "context" $) }} + +Params: + - serviceName - String. Name of an existing service backend + - servicePort - String/Int. Port name (or number) of the service. It will be translated to different yaml depending if it is a string or an integer. + - context - Dict - Required. The context for the template evaluation. +*/}} +{{- define "common.ingress.backend" -}} +{{- $apiVersion := (include "common.capabilities.ingress.apiVersion" .context) -}} +{{- if or (eq $apiVersion "extensions/v1beta1") (eq $apiVersion "networking.k8s.io/v1beta1") -}} +serviceName: {{ .serviceName }} +servicePort: {{ .servicePort }} +{{- else -}} +service: + name: {{ .serviceName }} + port: + {{- if typeIs "string" .servicePort }} + name: {{ .servicePort }} + {{- else if or (typeIs "int" .servicePort) (typeIs "float64" .servicePort) }} + number: {{ .servicePort | int }} + {{- end }} +{{- end -}} +{{- end -}} + +{{/* +Print "true" if the API pathType field is supported +Usage: +{{ include "common.ingress.supportsPathType" . }} +*/}} +{{- define "common.ingress.supportsPathType" -}} +{{- if (semverCompare "<1.18-0" (include "common.capabilities.kubeVersion" .)) -}} +{{- print "false" -}} +{{- else -}} +{{- print "true" -}} +{{- end -}} +{{- end -}} + +{{/* +Returns true if the ingressClassname field is supported +Usage: +{{ include "common.ingress.supportsIngressClassname" . }} +*/}} +{{- define "common.ingress.supportsIngressClassname" -}} +{{- if semverCompare "<1.18-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "false" -}} +{{- else -}} +{{- print "true" -}} +{{- end -}} +{{- end -}} + +{{/* +Return true if cert-manager required annotations for TLS signed +certificates are set in the Ingress annotations +Ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations +Usage: +{{ include "common.ingress.certManagerRequest" ( dict "annotations" .Values.path.to.the.ingress.annotations ) }} +*/}} +{{- define "common.ingress.certManagerRequest" -}} +{{ if or (hasKey .annotations "cert-manager.io/cluster-issuer") (hasKey .annotations "cert-manager.io/issuer") (hasKey .annotations "kubernetes.io/tls-acme") }} + {{- true -}} +{{- end -}} +{{- end -}} diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/templates/_labels.tpl b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_labels.tpl new file mode 100644 index 0000000..d90a6cd --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_labels.tpl @@ -0,0 +1,46 @@ +{{/* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{/* vim: set filetype=mustache: */}} + +{{/* +Kubernetes standard labels +{{ include "common.labels.standard" (dict "customLabels" .Values.commonLabels "context" $) -}} +*/}} +{{- define "common.labels.standard" -}} +{{- if and (hasKey . "customLabels") (hasKey . "context") -}} +{{- $default := dict "app.kubernetes.io/name" (include "common.names.name" .context) "helm.sh/chart" (include "common.names.chart" .context) "app.kubernetes.io/instance" .context.Release.Name "app.kubernetes.io/managed-by" .context.Release.Service -}} +{{- with .context.Chart.AppVersion -}} +{{- $_ := set $default "app.kubernetes.io/version" . -}} +{{- end -}} +{{ template "common.tplvalues.merge" (dict "values" (list .customLabels $default) "context" .context) }} +{{- else -}} +app.kubernetes.io/name: {{ include "common.names.name" . }} +helm.sh/chart: {{ include "common.names.chart" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- with .Chart.AppVersion }} +app.kubernetes.io/version: {{ . | quote }} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Labels used on immutable fields such as deploy.spec.selector.matchLabels or svc.spec.selector +{{ include "common.labels.matchLabels" (dict "customLabels" .Values.podLabels "context" $) -}} + +We don't want to loop over custom labels appending them to the selector +since it's very likely that it will break deployments, services, etc. +However, it's important to overwrite the standard labels if the user +overwrote them on metadata.labels fields. +*/}} +{{- define "common.labels.matchLabels" -}} +{{- if and (hasKey . "customLabels") (hasKey . "context") -}} +{{ merge (pick (include "common.tplvalues.render" (dict "value" .customLabels "context" .context) | fromYaml) "app.kubernetes.io/name" "app.kubernetes.io/instance") (dict "app.kubernetes.io/name" (include "common.names.name" .context) "app.kubernetes.io/instance" .context.Release.Name ) | toYaml }} +{{- else -}} +app.kubernetes.io/name: {{ include "common.names.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end -}} +{{- end -}} diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/templates/_names.tpl b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_names.tpl new file mode 100644 index 0000000..a222924 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_names.tpl @@ -0,0 +1,71 @@ +{{/* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "common.names.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "common.names.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "common.names.fullname" -}} +{{- if .Values.fullnameOverride -}} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Create a default fully qualified dependency name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +Usage: +{{ include "common.names.dependency.fullname" (dict "chartName" "dependency-chart-name" "chartValues" .Values.dependency-chart "context" $) }} +*/}} +{{- define "common.names.dependency.fullname" -}} +{{- if .chartValues.fullnameOverride -}} +{{- .chartValues.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .chartName .chartValues.nameOverride -}} +{{- if contains $name .context.Release.Name -}} +{{- .context.Release.Name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .context.Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Allow the release namespace to be overridden for multi-namespace deployments in combined charts. +*/}} +{{- define "common.names.namespace" -}} +{{- default .Release.Namespace .Values.namespaceOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a fully qualified app name adding the installation's namespace. +*/}} +{{- define "common.names.fullname.namespace" -}} +{{- printf "%s-%s" (include "common.names.fullname" .) (include "common.names.namespace" .) | trunc 63 | trimSuffix "-" -}} +{{- end -}} diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/templates/_resources.tpl b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_resources.tpl new file mode 100644 index 0000000..030fa1a --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_resources.tpl @@ -0,0 +1,50 @@ +{{/* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{/* vim: set filetype=mustache: */}} + +{{/* +Return a resource request/limit object based on a given preset. +These presets are for basic testing and not meant to be used in production +{{ include "common.resources.preset" (dict "type" "nano") -}} +*/}} +{{- define "common.resources.preset" -}} +{{/* The limits are the requests increased by 50% (except ephemeral-storage and xlarge/2xlarge sizes)*/}} +{{- $presets := dict + "nano" (dict + "requests" (dict "cpu" "100m" "memory" "128Mi" "ephemeral-storage" "50Mi") + "limits" (dict "cpu" "150m" "memory" "192Mi" "ephemeral-storage" "1024Mi") + ) + "micro" (dict + "requests" (dict "cpu" "250m" "memory" "256Mi" "ephemeral-storage" "50Mi") + "limits" (dict "cpu" "375m" "memory" "384Mi" "ephemeral-storage" "1024Mi") + ) + "small" (dict + "requests" (dict "cpu" "500m" "memory" "512Mi" "ephemeral-storage" "50Mi") + "limits" (dict "cpu" "750m" "memory" "768Mi" "ephemeral-storage" "1024Mi") + ) + "medium" (dict + "requests" (dict "cpu" "500m" "memory" "1024Mi" "ephemeral-storage" "50Mi") + "limits" (dict "cpu" "750m" "memory" "1536Mi" "ephemeral-storage" "1024Mi") + ) + "large" (dict + "requests" (dict "cpu" "1.0" "memory" "2048Mi" "ephemeral-storage" "50Mi") + "limits" (dict "cpu" "1.5" "memory" "3072Mi" "ephemeral-storage" "1024Mi") + ) + "xlarge" (dict + "requests" (dict "cpu" "1.5" "memory" "4096Mi" "ephemeral-storage" "50Mi") + "limits" (dict "cpu" "3.0" "memory" "6144Mi" "ephemeral-storage" "1024Mi") + ) + "2xlarge" (dict + "requests" (dict "cpu" "1.5" "memory" "4096Mi" "ephemeral-storage" "50Mi") + "limits" (dict "cpu" "6.0" "memory" "12288Mi" "ephemeral-storage" "1024Mi") + ) + }} +{{- if hasKey $presets .type -}} +{{- index $presets .type | toYaml -}} +{{- else -}} +{{- printf "ERROR: Preset key '%s' invalid. Allowed values are %s" .type (join "," (keys $presets)) | fail -}} +{{- end -}} +{{- end -}} diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/templates/_secrets.tpl b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_secrets.tpl new file mode 100644 index 0000000..84dbe38 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_secrets.tpl @@ -0,0 +1,182 @@ +{{/* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{/* vim: set filetype=mustache: */}} +{{/* +Generate secret name. + +Usage: +{{ include "common.secrets.name" (dict "existingSecret" .Values.path.to.the.existingSecret "defaultNameSuffix" "mySuffix" "context" $) }} + +Params: + - existingSecret - ExistingSecret/String - Optional. The path to the existing secrets in the values.yaml given by the user + to be used instead of the default one. Allows for it to be of type String (just the secret name) for backwards compatibility. + +info: https://github.com/bitnami/charts/tree/main/bitnami/common#existingsecret + - defaultNameSuffix - String - Optional. It is used only if we have several secrets in the same deployment. + - context - Dict - Required. The context for the template evaluation. +*/}} +{{- define "common.secrets.name" -}} +{{- $name := (include "common.names.fullname" .context) -}} + +{{- if .defaultNameSuffix -}} +{{- $name = printf "%s-%s" $name .defaultNameSuffix | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{- with .existingSecret -}} +{{- if not (typeIs "string" .) -}} +{{- with .name -}} +{{- $name = . -}} +{{- end -}} +{{- else -}} +{{- $name = . -}} +{{- end -}} +{{- end -}} + +{{- printf "%s" $name -}} +{{- end -}} + +{{/* +Generate secret key. + +Usage: +{{ include "common.secrets.key" (dict "existingSecret" .Values.path.to.the.existingSecret "key" "keyName") }} + +Params: + - existingSecret - ExistingSecret/String - Optional. The path to the existing secrets in the values.yaml given by the user + to be used instead of the default one. Allows for it to be of type String (just the secret name) for backwards compatibility. + +info: https://github.com/bitnami/charts/tree/main/bitnami/common#existingsecret + - key - String - Required. Name of the key in the secret. +*/}} +{{- define "common.secrets.key" -}} +{{- $key := .key -}} + +{{- if .existingSecret -}} + {{- if not (typeIs "string" .existingSecret) -}} + {{- if .existingSecret.keyMapping -}} + {{- $key = index .existingSecret.keyMapping $.key -}} + {{- end -}} + {{- end }} +{{- end -}} + +{{- printf "%s" $key -}} +{{- end -}} + +{{/* +Generate secret password or retrieve one if already created. + +Usage: +{{ include "common.secrets.passwords.manage" (dict "secret" "secret-name" "key" "keyName" "providedValues" (list "path.to.password1" "path.to.password2") "length" 10 "strong" false "chartName" "chartName" "context" $) }} + +Params: + - secret - String - Required - Name of the 'Secret' resource where the password is stored. + - key - String - Required - Name of the key in the secret. + - providedValues - List - Required - The path to the validating value in the values.yaml, e.g: "mysql.password". Will pick first parameter with a defined value. + - length - int - Optional - Length of the generated random password. + - strong - Boolean - Optional - Whether to add symbols to the generated random password. + - chartName - String - Optional - Name of the chart used when said chart is deployed as a subchart. + - context - Context - Required - Parent context. + - failOnNew - Boolean - Optional - Default to true. If set to false, skip errors adding new keys to existing secrets. + - skipB64enc - Boolean - Optional - Default to false. If set to true, no the secret will not be base64 encrypted. + - skipQuote - Boolean - Optional - Default to false. If set to true, no quotes will be added around the secret. +The order in which this function returns a secret password: + 1. Already existing 'Secret' resource + (If a 'Secret' resource is found under the name provided to the 'secret' parameter to this function and that 'Secret' resource contains a key with the name passed as the 'key' parameter to this function then the value of this existing secret password will be returned) + 2. Password provided via the values.yaml + (If one of the keys passed to the 'providedValues' parameter to this function is a valid path to a key in the values.yaml and has a value, the value of the first key with a value will be returned) + 3. Randomly generated secret password + (A new random secret password with the length specified in the 'length' parameter will be generated and returned) + +*/}} +{{- define "common.secrets.passwords.manage" -}} + +{{- $password := "" }} +{{- $subchart := "" }} +{{- $chartName := default "" .chartName }} +{{- $passwordLength := default 10 .length }} +{{- $providedPasswordKey := include "common.utils.getKeyFromList" (dict "keys" .providedValues "context" $.context) }} +{{- $providedPasswordValue := include "common.utils.getValueFromKey" (dict "key" $providedPasswordKey "context" $.context) }} +{{- $secretData := (lookup "v1" "Secret" (include "common.names.namespace" .context) .secret).data }} +{{- if $secretData }} + {{- if hasKey $secretData .key }} + {{- $password = index $secretData .key | b64dec }} + {{- else if not (eq .failOnNew false) }} + {{- printf "\nPASSWORDS ERROR: The secret \"%s\" does not contain the key \"%s\"\n" .secret .key | fail -}} + {{- else if $providedPasswordValue }} + {{- $password = $providedPasswordValue | toString }} + {{- end -}} +{{- else if $providedPasswordValue }} + {{- $password = $providedPasswordValue | toString }} +{{- else }} + + {{- if .context.Values.enabled }} + {{- $subchart = $chartName }} + {{- end -}} + + {{- $requiredPassword := dict "valueKey" $providedPasswordKey "secret" .secret "field" .key "subchart" $subchart "context" $.context -}} + {{- $requiredPasswordError := include "common.validations.values.single.empty" $requiredPassword -}} + {{- $passwordValidationErrors := list $requiredPasswordError -}} + {{- include "common.errors.upgrade.passwords.empty" (dict "validationErrors" $passwordValidationErrors "context" $.context) -}} + + {{- if .strong }} + {{- $subStr := list (lower (randAlpha 1)) (randNumeric 1) (upper (randAlpha 1)) | join "_" }} + {{- $password = randAscii $passwordLength }} + {{- $password = regexReplaceAllLiteral "\\W" $password "@" | substr 5 $passwordLength }} + {{- $password = printf "%s%s" $subStr $password | toString | shuffle }} + {{- else }} + {{- $password = randAlphaNum $passwordLength }} + {{- end }} +{{- end -}} +{{- if not .skipB64enc }} +{{- $password = $password | b64enc }} +{{- end -}} +{{- if .skipQuote -}} +{{- printf "%s" $password -}} +{{- else -}} +{{- printf "%s" $password | quote -}} +{{- end -}} +{{- end -}} + +{{/* +Reuses the value from an existing secret, otherwise sets its value to a default value. + +Usage: +{{ include "common.secrets.lookup" (dict "secret" "secret-name" "key" "keyName" "defaultValue" .Values.myValue "context" $) }} + +Params: + - secret - String - Required - Name of the 'Secret' resource where the password is stored. + - key - String - Required - Name of the key in the secret. + - defaultValue - String - Required - The path to the validating value in the values.yaml, e.g: "mysql.password". Will pick first parameter with a defined value. + - context - Context - Required - Parent context. + +*/}} +{{- define "common.secrets.lookup" -}} +{{- $value := "" -}} +{{- $secretData := (lookup "v1" "Secret" (include "common.names.namespace" .context) .secret).data -}} +{{- if and $secretData (hasKey $secretData .key) -}} + {{- $value = index $secretData .key -}} +{{- else if .defaultValue -}} + {{- $value = .defaultValue | toString | b64enc -}} +{{- end -}} +{{- if $value -}} +{{- printf "%s" $value -}} +{{- end -}} +{{- end -}} + +{{/* +Returns whether a previous generated secret already exists + +Usage: +{{ include "common.secrets.exists" (dict "secret" "secret-name" "context" $) }} + +Params: + - secret - String - Required - Name of the 'Secret' resource where the password is stored. + - context - Context - Required - Parent context. +*/}} +{{- define "common.secrets.exists" -}} +{{- $secret := (lookup "v1" "Secret" (include "common.names.namespace" .context) .secret) }} +{{- if $secret }} + {{- true -}} +{{- end -}} +{{- end -}} diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/templates/_storage.tpl b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_storage.tpl new file mode 100644 index 0000000..16405a0 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_storage.tpl @@ -0,0 +1,28 @@ +{{/* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{/* vim: set filetype=mustache: */}} +{{/* +Return the proper Storage Class +{{ include "common.storage.class" ( dict "persistence" .Values.path.to.the.persistence "global" $) }} +*/}} +{{- define "common.storage.class" -}} + +{{- $storageClass := .persistence.storageClass -}} +{{- if .global -}} + {{- if .global.storageClass -}} + {{- $storageClass = .global.storageClass -}} + {{- end -}} +{{- end -}} + +{{- if $storageClass -}} + {{- if (eq "-" $storageClass) -}} + {{- printf "storageClassName: \"\"" -}} + {{- else }} + {{- printf "storageClassName: %s" $storageClass -}} + {{- end -}} +{{- end -}} + +{{- end -}} diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/templates/_tplvalues.tpl b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_tplvalues.tpl new file mode 100644 index 0000000..a8ed763 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_tplvalues.tpl @@ -0,0 +1,38 @@ +{{/* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{/* vim: set filetype=mustache: */}} +{{/* +Renders a value that contains template perhaps with scope if the scope is present. +Usage: +{{ include "common.tplvalues.render" ( dict "value" .Values.path.to.the.Value "context" $ ) }} +{{ include "common.tplvalues.render" ( dict "value" .Values.path.to.the.Value "context" $ "scope" $app ) }} +*/}} +{{- define "common.tplvalues.render" -}} +{{- $value := typeIs "string" .value | ternary .value (.value | toYaml) }} +{{- if contains "{{" (toJson .value) }} + {{- if .scope }} + {{- tpl (cat "{{- with $.RelativeScope -}}" $value "{{- end }}") (merge (dict "RelativeScope" .scope) .context) }} + {{- else }} + {{- tpl $value .context }} + {{- end }} +{{- else }} + {{- $value }} +{{- end }} +{{- end -}} + +{{/* +Merge a list of values that contains template after rendering them. +Merge precedence is consistent with http://masterminds.github.io/sprig/dicts.html#merge-mustmerge +Usage: +{{ include "common.tplvalues.merge" ( dict "values" (list .Values.path.to.the.Value1 .Values.path.to.the.Value2) "context" $ ) }} +*/}} +{{- define "common.tplvalues.merge" -}} +{{- $dst := dict -}} +{{- range .values -}} +{{- $dst = include "common.tplvalues.render" (dict "value" . "context" $.context "scope" $.scope) | fromYaml | merge $dst -}} +{{- end -}} +{{ $dst | toYaml }} +{{- end -}} diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/templates/_utils.tpl b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_utils.tpl new file mode 100644 index 0000000..bfbddf0 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_utils.tpl @@ -0,0 +1,77 @@ +{{/* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{/* vim: set filetype=mustache: */}} +{{/* +Print instructions to get a secret value. +Usage: +{{ include "common.utils.secret.getvalue" (dict "secret" "secret-name" "field" "secret-value-field" "context" $) }} +*/}} +{{- define "common.utils.secret.getvalue" -}} +{{- $varname := include "common.utils.fieldToEnvVar" . -}} +export {{ $varname }}=$(kubectl get secret --namespace {{ include "common.names.namespace" .context | quote }} {{ .secret }} -o jsonpath="{.data.{{ .field }}}" | base64 -d) +{{- end -}} + +{{/* +Build env var name given a field +Usage: +{{ include "common.utils.fieldToEnvVar" dict "field" "my-password" }} +*/}} +{{- define "common.utils.fieldToEnvVar" -}} + {{- $fieldNameSplit := splitList "-" .field -}} + {{- $upperCaseFieldNameSplit := list -}} + + {{- range $fieldNameSplit -}} + {{- $upperCaseFieldNameSplit = append $upperCaseFieldNameSplit ( upper . ) -}} + {{- end -}} + + {{ join "_" $upperCaseFieldNameSplit }} +{{- end -}} + +{{/* +Gets a value from .Values given +Usage: +{{ include "common.utils.getValueFromKey" (dict "key" "path.to.key" "context" $) }} +*/}} +{{- define "common.utils.getValueFromKey" -}} +{{- $splitKey := splitList "." .key -}} +{{- $value := "" -}} +{{- $latestObj := $.context.Values -}} +{{- range $splitKey -}} + {{- if not $latestObj -}} + {{- printf "please review the entire path of '%s' exists in values" $.key | fail -}} + {{- end -}} + {{- $value = ( index $latestObj . ) -}} + {{- $latestObj = $value -}} +{{- end -}} +{{- printf "%v" (default "" $value) -}} +{{- end -}} + +{{/* +Returns first .Values key with a defined value or first of the list if all non-defined +Usage: +{{ include "common.utils.getKeyFromList" (dict "keys" (list "path.to.key1" "path.to.key2") "context" $) }} +*/}} +{{- define "common.utils.getKeyFromList" -}} +{{- $key := first .keys -}} +{{- $reverseKeys := reverse .keys }} +{{- range $reverseKeys }} + {{- $value := include "common.utils.getValueFromKey" (dict "key" . "context" $.context ) }} + {{- if $value -}} + {{- $key = . }} + {{- end -}} +{{- end -}} +{{- printf "%s" $key -}} +{{- end -}} + +{{/* +Checksum a template at "path" containing a *single* resource (ConfigMap,Secret) for use in pod annotations, excluding the metadata (see #18376). +Usage: +{{ include "common.utils.checksumTemplate" (dict "path" "/configmap.yaml" "context" $) }} +*/}} +{{- define "common.utils.checksumTemplate" -}} +{{- $obj := include (print .context.Template.BasePath .path) .context | fromYaml -}} +{{ omit $obj "apiVersion" "kind" "metadata" | toYaml | sha256sum }} +{{- end -}} diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/templates/_warnings.tpl b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_warnings.tpl new file mode 100644 index 0000000..0f763cd --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/templates/_warnings.tpl @@ -0,0 +1,82 @@ +{{/* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{/* vim: set filetype=mustache: */}} +{{/* +Warning about using rolling tag. +Usage: +{{ include "common.warnings.rollingTag" .Values.path.to.the.imageRoot }} +*/}} +{{- define "common.warnings.rollingTag" -}} + +{{- if and (contains "bitnami/" .repository) (not (.tag | toString | regexFind "-r\\d+$|sha256:")) }} +WARNING: Rolling tag detected ({{ .repository }}:{{ .tag }}), please note that it is strongly recommended to avoid using rolling tags in a production environment. ++info https://docs.bitnami.com/tutorials/understand-rolling-tags-containers +{{- end }} +{{- end -}} + +{{/* +Warning about not setting the resource object in all deployments. +Usage: +{{ include "common.warnings.resources" (dict "sections" (list "path1" "path2") context $) }} +Example: +{{- include "common.warnings.resources" (dict "sections" (list "csiProvider.provider" "server" "volumePermissions" "") "context" $) }} +The list in the example assumes that the following values exist: + - csiProvider.provider.resources + - server.resources + - volumePermissions.resources + - resources +*/}} +{{- define "common.warnings.resources" -}} +{{- $values := .context.Values -}} +{{- $printMessage := false -}} +{{ $affectedSections := list -}} +{{- range .sections -}} + {{- if eq . "" -}} + {{/* Case where the resources section is at the root (one main deployment in the chart) */}} + {{- if not (index $values "resources") -}} + {{- $affectedSections = append $affectedSections "resources" -}} + {{- $printMessage = true -}} + {{- end -}} + {{- else -}} + {{/* Case where the are multiple resources sections (more than one main deployment in the chart) */}} + {{- $keys := split "." . -}} + {{/* We iterate through the different levels until arriving to the resource section. Example: a.b.c.resources */}} + {{- $section := $values -}} + {{- range $keys -}} + {{- $section = index $section . -}} + {{- end -}} + {{- if not (index $section "resources") -}} + {{/* If the section has enabled=false or replicaCount=0, do not include it */}} + {{- if and (hasKey $section "enabled") -}} + {{- if index $section "enabled" -}} + {{/* enabled=true */}} + {{- $affectedSections = append $affectedSections (printf "%s.resources" .) -}} + {{- $printMessage = true -}} + {{- end -}} + {{- else if and (hasKey $section "replicaCount") -}} + {{/* We need a casting to int because number 0 is not treated as an int by default */}} + {{- if (gt (index $section "replicaCount" | int) 0) -}} + {{/* replicaCount > 0 */}} + {{- $affectedSections = append $affectedSections (printf "%s.resources" .) -}} + {{- $printMessage = true -}} + {{- end -}} + {{- else -}} + {{/* Default case, add it to the affected sections */}} + {{- $affectedSections = append $affectedSections (printf "%s.resources" .) -}} + {{- $printMessage = true -}} + {{- end -}} + {{- end -}} + {{- end -}} +{{- end -}} +{{- if $printMessage }} + +WARNING: There are "resources" sections in the chart not set. Using "resourcesPreset" is not recommended for production. For production installations, please set the following values according to your workload needs: +{{- range $affectedSections }} + - {{ . }} +{{- end }} ++info https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ +{{- end -}} +{{- end -}} diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_cassandra.tpl b/charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_cassandra.tpl new file mode 100644 index 0000000..eda9aad --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_cassandra.tpl @@ -0,0 +1,77 @@ +{{/* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{/* vim: set filetype=mustache: */}} +{{/* +Validate Cassandra required passwords are not empty. + +Usage: +{{ include "common.validations.values.cassandra.passwords" (dict "secret" "secretName" "subchart" false "context" $) }} +Params: + - secret - String - Required. Name of the secret where Cassandra values are stored, e.g: "cassandra-passwords-secret" + - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false +*/}} +{{- define "common.validations.values.cassandra.passwords" -}} + {{- $existingSecret := include "common.cassandra.values.existingSecret" . -}} + {{- $enabled := include "common.cassandra.values.enabled" . -}} + {{- $dbUserPrefix := include "common.cassandra.values.key.dbUser" . -}} + {{- $valueKeyPassword := printf "%s.password" $dbUserPrefix -}} + + {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}} + {{- $requiredPasswords := list -}} + + {{- $requiredPassword := dict "valueKey" $valueKeyPassword "secret" .secret "field" "cassandra-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}} + + {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}} + + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for existingSecret. + +Usage: +{{ include "common.cassandra.values.existingSecret" (dict "context" $) }} +Params: + - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false +*/}} +{{- define "common.cassandra.values.existingSecret" -}} + {{- if .subchart -}} + {{- .context.Values.cassandra.dbUser.existingSecret | quote -}} + {{- else -}} + {{- .context.Values.dbUser.existingSecret | quote -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for enabled cassandra. + +Usage: +{{ include "common.cassandra.values.enabled" (dict "context" $) }} +*/}} +{{- define "common.cassandra.values.enabled" -}} + {{- if .subchart -}} + {{- printf "%v" .context.Values.cassandra.enabled -}} + {{- else -}} + {{- printf "%v" (not .context.Values.enabled) -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for the key dbUser + +Usage: +{{ include "common.cassandra.values.key.dbUser" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false +*/}} +{{- define "common.cassandra.values.key.dbUser" -}} + {{- if .subchart -}} + cassandra.dbUser + {{- else -}} + dbUser + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_mariadb.tpl b/charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_mariadb.tpl new file mode 100644 index 0000000..17d83a2 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_mariadb.tpl @@ -0,0 +1,108 @@ +{{/* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{/* vim: set filetype=mustache: */}} +{{/* +Validate MariaDB required passwords are not empty. + +Usage: +{{ include "common.validations.values.mariadb.passwords" (dict "secret" "secretName" "subchart" false "context" $) }} +Params: + - secret - String - Required. Name of the secret where MariaDB values are stored, e.g: "mysql-passwords-secret" + - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false +*/}} +{{- define "common.validations.values.mariadb.passwords" -}} + {{- $existingSecret := include "common.mariadb.values.auth.existingSecret" . -}} + {{- $enabled := include "common.mariadb.values.enabled" . -}} + {{- $architecture := include "common.mariadb.values.architecture" . -}} + {{- $authPrefix := include "common.mariadb.values.key.auth" . -}} + {{- $valueKeyRootPassword := printf "%s.rootPassword" $authPrefix -}} + {{- $valueKeyUsername := printf "%s.username" $authPrefix -}} + {{- $valueKeyPassword := printf "%s.password" $authPrefix -}} + {{- $valueKeyReplicationPassword := printf "%s.replicationPassword" $authPrefix -}} + + {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}} + {{- $requiredPasswords := list -}} + + {{- $requiredRootPassword := dict "valueKey" $valueKeyRootPassword "secret" .secret "field" "mariadb-root-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}} + + {{- $valueUsername := include "common.utils.getValueFromKey" (dict "key" $valueKeyUsername "context" .context) }} + {{- if not (empty $valueUsername) -}} + {{- $requiredPassword := dict "valueKey" $valueKeyPassword "secret" .secret "field" "mariadb-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}} + {{- end -}} + + {{- if (eq $architecture "replication") -}} + {{- $requiredReplicationPassword := dict "valueKey" $valueKeyReplicationPassword "secret" .secret "field" "mariadb-replication-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredReplicationPassword -}} + {{- end -}} + + {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}} + + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for existingSecret. + +Usage: +{{ include "common.mariadb.values.auth.existingSecret" (dict "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false +*/}} +{{- define "common.mariadb.values.auth.existingSecret" -}} + {{- if .subchart -}} + {{- .context.Values.mariadb.auth.existingSecret | quote -}} + {{- else -}} + {{- .context.Values.auth.existingSecret | quote -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for enabled mariadb. + +Usage: +{{ include "common.mariadb.values.enabled" (dict "context" $) }} +*/}} +{{- define "common.mariadb.values.enabled" -}} + {{- if .subchart -}} + {{- printf "%v" .context.Values.mariadb.enabled -}} + {{- else -}} + {{- printf "%v" (not .context.Values.enabled) -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for architecture + +Usage: +{{ include "common.mariadb.values.architecture" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false +*/}} +{{- define "common.mariadb.values.architecture" -}} + {{- if .subchart -}} + {{- .context.Values.mariadb.architecture -}} + {{- else -}} + {{- .context.Values.architecture -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for the key auth + +Usage: +{{ include "common.mariadb.values.key.auth" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false +*/}} +{{- define "common.mariadb.values.key.auth" -}} + {{- if .subchart -}} + mariadb.auth + {{- else -}} + auth + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_mongodb.tpl b/charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_mongodb.tpl new file mode 100644 index 0000000..bbb445b --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_mongodb.tpl @@ -0,0 +1,113 @@ +{{/* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{/* vim: set filetype=mustache: */}} +{{/* +Validate MongoDB® required passwords are not empty. + +Usage: +{{ include "common.validations.values.mongodb.passwords" (dict "secret" "secretName" "subchart" false "context" $) }} +Params: + - secret - String - Required. Name of the secret where MongoDB® values are stored, e.g: "mongodb-passwords-secret" + - subchart - Boolean - Optional. Whether MongoDB® is used as subchart or not. Default: false +*/}} +{{- define "common.validations.values.mongodb.passwords" -}} + {{- $existingSecret := include "common.mongodb.values.auth.existingSecret" . -}} + {{- $enabled := include "common.mongodb.values.enabled" . -}} + {{- $authPrefix := include "common.mongodb.values.key.auth" . -}} + {{- $architecture := include "common.mongodb.values.architecture" . -}} + {{- $valueKeyRootPassword := printf "%s.rootPassword" $authPrefix -}} + {{- $valueKeyUsername := printf "%s.username" $authPrefix -}} + {{- $valueKeyDatabase := printf "%s.database" $authPrefix -}} + {{- $valueKeyPassword := printf "%s.password" $authPrefix -}} + {{- $valueKeyReplicaSetKey := printf "%s.replicaSetKey" $authPrefix -}} + {{- $valueKeyAuthEnabled := printf "%s.enabled" $authPrefix -}} + + {{- $authEnabled := include "common.utils.getValueFromKey" (dict "key" $valueKeyAuthEnabled "context" .context) -}} + + {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") (eq $authEnabled "true") -}} + {{- $requiredPasswords := list -}} + + {{- $requiredRootPassword := dict "valueKey" $valueKeyRootPassword "secret" .secret "field" "mongodb-root-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}} + + {{- $valueUsername := include "common.utils.getValueFromKey" (dict "key" $valueKeyUsername "context" .context) }} + {{- $valueDatabase := include "common.utils.getValueFromKey" (dict "key" $valueKeyDatabase "context" .context) }} + {{- if and $valueUsername $valueDatabase -}} + {{- $requiredPassword := dict "valueKey" $valueKeyPassword "secret" .secret "field" "mongodb-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}} + {{- end -}} + + {{- if (eq $architecture "replicaset") -}} + {{- $requiredReplicaSetKey := dict "valueKey" $valueKeyReplicaSetKey "secret" .secret "field" "mongodb-replica-set-key" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredReplicaSetKey -}} + {{- end -}} + + {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}} + + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for existingSecret. + +Usage: +{{ include "common.mongodb.values.auth.existingSecret" (dict "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MongoDb is used as subchart or not. Default: false +*/}} +{{- define "common.mongodb.values.auth.existingSecret" -}} + {{- if .subchart -}} + {{- .context.Values.mongodb.auth.existingSecret | quote -}} + {{- else -}} + {{- .context.Values.auth.existingSecret | quote -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for enabled mongodb. + +Usage: +{{ include "common.mongodb.values.enabled" (dict "context" $) }} +*/}} +{{- define "common.mongodb.values.enabled" -}} + {{- if .subchart -}} + {{- printf "%v" .context.Values.mongodb.enabled -}} + {{- else -}} + {{- printf "%v" (not .context.Values.enabled) -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for the key auth + +Usage: +{{ include "common.mongodb.values.key.auth" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MongoDB® is used as subchart or not. Default: false +*/}} +{{- define "common.mongodb.values.key.auth" -}} + {{- if .subchart -}} + mongodb.auth + {{- else -}} + auth + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for architecture + +Usage: +{{ include "common.mongodb.values.architecture" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MongoDB® is used as subchart or not. Default: false +*/}} +{{- define "common.mongodb.values.architecture" -}} + {{- if .subchart -}} + {{- .context.Values.mongodb.architecture -}} + {{- else -}} + {{- .context.Values.architecture -}} + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_mysql.tpl b/charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_mysql.tpl new file mode 100644 index 0000000..ca3953f --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_mysql.tpl @@ -0,0 +1,108 @@ +{{/* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{/* vim: set filetype=mustache: */}} +{{/* +Validate MySQL required passwords are not empty. + +Usage: +{{ include "common.validations.values.mysql.passwords" (dict "secret" "secretName" "subchart" false "context" $) }} +Params: + - secret - String - Required. Name of the secret where MySQL values are stored, e.g: "mysql-passwords-secret" + - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false +*/}} +{{- define "common.validations.values.mysql.passwords" -}} + {{- $existingSecret := include "common.mysql.values.auth.existingSecret" . -}} + {{- $enabled := include "common.mysql.values.enabled" . -}} + {{- $architecture := include "common.mysql.values.architecture" . -}} + {{- $authPrefix := include "common.mysql.values.key.auth" . -}} + {{- $valueKeyRootPassword := printf "%s.rootPassword" $authPrefix -}} + {{- $valueKeyUsername := printf "%s.username" $authPrefix -}} + {{- $valueKeyPassword := printf "%s.password" $authPrefix -}} + {{- $valueKeyReplicationPassword := printf "%s.replicationPassword" $authPrefix -}} + + {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}} + {{- $requiredPasswords := list -}} + + {{- $requiredRootPassword := dict "valueKey" $valueKeyRootPassword "secret" .secret "field" "mysql-root-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}} + + {{- $valueUsername := include "common.utils.getValueFromKey" (dict "key" $valueKeyUsername "context" .context) }} + {{- if not (empty $valueUsername) -}} + {{- $requiredPassword := dict "valueKey" $valueKeyPassword "secret" .secret "field" "mysql-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}} + {{- end -}} + + {{- if (eq $architecture "replication") -}} + {{- $requiredReplicationPassword := dict "valueKey" $valueKeyReplicationPassword "secret" .secret "field" "mysql-replication-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredReplicationPassword -}} + {{- end -}} + + {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}} + + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for existingSecret. + +Usage: +{{ include "common.mysql.values.auth.existingSecret" (dict "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false +*/}} +{{- define "common.mysql.values.auth.existingSecret" -}} + {{- if .subchart -}} + {{- .context.Values.mysql.auth.existingSecret | quote -}} + {{- else -}} + {{- .context.Values.auth.existingSecret | quote -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for enabled mysql. + +Usage: +{{ include "common.mysql.values.enabled" (dict "context" $) }} +*/}} +{{- define "common.mysql.values.enabled" -}} + {{- if .subchart -}} + {{- printf "%v" .context.Values.mysql.enabled -}} + {{- else -}} + {{- printf "%v" (not .context.Values.enabled) -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for architecture + +Usage: +{{ include "common.mysql.values.architecture" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false +*/}} +{{- define "common.mysql.values.architecture" -}} + {{- if .subchart -}} + {{- .context.Values.mysql.architecture -}} + {{- else -}} + {{- .context.Values.architecture -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for the key auth + +Usage: +{{ include "common.mysql.values.key.auth" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false +*/}} +{{- define "common.mysql.values.key.auth" -}} + {{- if .subchart -}} + mysql.auth + {{- else -}} + auth + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_postgresql.tpl b/charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_postgresql.tpl new file mode 100644 index 0000000..8c9aa57 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_postgresql.tpl @@ -0,0 +1,134 @@ +{{/* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{/* vim: set filetype=mustache: */}} +{{/* +Validate PostgreSQL required passwords are not empty. + +Usage: +{{ include "common.validations.values.postgresql.passwords" (dict "secret" "secretName" "subchart" false "context" $) }} +Params: + - secret - String - Required. Name of the secret where postgresql values are stored, e.g: "postgresql-passwords-secret" + - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false +*/}} +{{- define "common.validations.values.postgresql.passwords" -}} + {{- $existingSecret := include "common.postgresql.values.existingSecret" . -}} + {{- $enabled := include "common.postgresql.values.enabled" . -}} + {{- $valueKeyPostgresqlPassword := include "common.postgresql.values.key.postgressPassword" . -}} + {{- $valueKeyPostgresqlReplicationEnabled := include "common.postgresql.values.key.replicationPassword" . -}} + {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}} + {{- $requiredPasswords := list -}} + {{- $requiredPostgresqlPassword := dict "valueKey" $valueKeyPostgresqlPassword "secret" .secret "field" "postgresql-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredPostgresqlPassword -}} + + {{- $enabledReplication := include "common.postgresql.values.enabled.replication" . -}} + {{- if (eq $enabledReplication "true") -}} + {{- $requiredPostgresqlReplicationPassword := dict "valueKey" $valueKeyPostgresqlReplicationEnabled "secret" .secret "field" "postgresql-replication-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredPostgresqlReplicationPassword -}} + {{- end -}} + + {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to decide whether evaluate global values. + +Usage: +{{ include "common.postgresql.values.use.global" (dict "key" "key-of-global" "context" $) }} +Params: + - key - String - Required. Field to be evaluated within global, e.g: "existingSecret" +*/}} +{{- define "common.postgresql.values.use.global" -}} + {{- if .context.Values.global -}} + {{- if .context.Values.global.postgresql -}} + {{- index .context.Values.global.postgresql .key | quote -}} + {{- end -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for existingSecret. + +Usage: +{{ include "common.postgresql.values.existingSecret" (dict "context" $) }} +*/}} +{{- define "common.postgresql.values.existingSecret" -}} + {{- $globalValue := include "common.postgresql.values.use.global" (dict "key" "existingSecret" "context" .context) -}} + + {{- if .subchart -}} + {{- default (.context.Values.postgresql.existingSecret | quote) $globalValue -}} + {{- else -}} + {{- default (.context.Values.existingSecret | quote) $globalValue -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for enabled postgresql. + +Usage: +{{ include "common.postgresql.values.enabled" (dict "context" $) }} +*/}} +{{- define "common.postgresql.values.enabled" -}} + {{- if .subchart -}} + {{- printf "%v" .context.Values.postgresql.enabled -}} + {{- else -}} + {{- printf "%v" (not .context.Values.enabled) -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for the key postgressPassword. + +Usage: +{{ include "common.postgresql.values.key.postgressPassword" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false +*/}} +{{- define "common.postgresql.values.key.postgressPassword" -}} + {{- $globalValue := include "common.postgresql.values.use.global" (dict "key" "postgresqlUsername" "context" .context) -}} + + {{- if not $globalValue -}} + {{- if .subchart -}} + postgresql.postgresqlPassword + {{- else -}} + postgresqlPassword + {{- end -}} + {{- else -}} + global.postgresql.postgresqlPassword + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for enabled.replication. + +Usage: +{{ include "common.postgresql.values.enabled.replication" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false +*/}} +{{- define "common.postgresql.values.enabled.replication" -}} + {{- if .subchart -}} + {{- printf "%v" .context.Values.postgresql.replication.enabled -}} + {{- else -}} + {{- printf "%v" .context.Values.replication.enabled -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for the key replication.password. + +Usage: +{{ include "common.postgresql.values.key.replicationPassword" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false +*/}} +{{- define "common.postgresql.values.key.replicationPassword" -}} + {{- if .subchart -}} + postgresql.replication.password + {{- else -}} + replication.password + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_redis.tpl b/charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_redis.tpl new file mode 100644 index 0000000..fc0d208 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_redis.tpl @@ -0,0 +1,81 @@ +{{/* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + + +{{/* vim: set filetype=mustache: */}} +{{/* +Validate Redis® required passwords are not empty. + +Usage: +{{ include "common.validations.values.redis.passwords" (dict "secret" "secretName" "subchart" false "context" $) }} +Params: + - secret - String - Required. Name of the secret where redis values are stored, e.g: "redis-passwords-secret" + - subchart - Boolean - Optional. Whether redis is used as subchart or not. Default: false +*/}} +{{- define "common.validations.values.redis.passwords" -}} + {{- $enabled := include "common.redis.values.enabled" . -}} + {{- $valueKeyPrefix := include "common.redis.values.keys.prefix" . -}} + {{- $standarizedVersion := include "common.redis.values.standarized.version" . }} + + {{- $existingSecret := ternary (printf "%s%s" $valueKeyPrefix "auth.existingSecret") (printf "%s%s" $valueKeyPrefix "existingSecret") (eq $standarizedVersion "true") }} + {{- $existingSecretValue := include "common.utils.getValueFromKey" (dict "key" $existingSecret "context" .context) }} + + {{- $valueKeyRedisPassword := ternary (printf "%s%s" $valueKeyPrefix "auth.password") (printf "%s%s" $valueKeyPrefix "password") (eq $standarizedVersion "true") }} + {{- $valueKeyRedisUseAuth := ternary (printf "%s%s" $valueKeyPrefix "auth.enabled") (printf "%s%s" $valueKeyPrefix "usePassword") (eq $standarizedVersion "true") }} + + {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}} + {{- $requiredPasswords := list -}} + + {{- $useAuth := include "common.utils.getValueFromKey" (dict "key" $valueKeyRedisUseAuth "context" .context) -}} + {{- if eq $useAuth "true" -}} + {{- $requiredRedisPassword := dict "valueKey" $valueKeyRedisPassword "secret" .secret "field" "redis-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredRedisPassword -}} + {{- end -}} + + {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for enabled redis. + +Usage: +{{ include "common.redis.values.enabled" (dict "context" $) }} +*/}} +{{- define "common.redis.values.enabled" -}} + {{- if .subchart -}} + {{- printf "%v" .context.Values.redis.enabled -}} + {{- else -}} + {{- printf "%v" (not .context.Values.enabled) -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right prefix path for the values + +Usage: +{{ include "common.redis.values.key.prefix" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether redis is used as subchart or not. Default: false +*/}} +{{- define "common.redis.values.keys.prefix" -}} + {{- if .subchart -}}redis.{{- else -}}{{- end -}} +{{- end -}} + +{{/* +Checks whether the redis chart's includes the standarizations (version >= 14) + +Usage: +{{ include "common.redis.values.standarized.version" (dict "context" $) }} +*/}} +{{- define "common.redis.values.standarized.version" -}} + + {{- $standarizedAuth := printf "%s%s" (include "common.redis.values.keys.prefix" .) "auth" -}} + {{- $standarizedAuthValues := include "common.utils.getValueFromKey" (dict "key" $standarizedAuth "context" .context) }} + + {{- if $standarizedAuthValues -}} + {{- true -}} + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_validations.tpl b/charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_validations.tpl new file mode 100644 index 0000000..31ceda8 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/templates/validations/_validations.tpl @@ -0,0 +1,51 @@ +{{/* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{/* vim: set filetype=mustache: */}} +{{/* +Validate values must not be empty. + +Usage: +{{- $validateValueConf00 := (dict "valueKey" "path.to.value" "secret" "secretName" "field" "password-00") -}} +{{- $validateValueConf01 := (dict "valueKey" "path.to.value" "secret" "secretName" "field" "password-01") -}} +{{ include "common.validations.values.empty" (dict "required" (list $validateValueConf00 $validateValueConf01) "context" $) }} + +Validate value params: + - valueKey - String - Required. The path to the validating value in the values.yaml, e.g: "mysql.password" + - secret - String - Optional. Name of the secret where the validating value is generated/stored, e.g: "mysql-passwords-secret" + - field - String - Optional. Name of the field in the secret data, e.g: "mysql-password" +*/}} +{{- define "common.validations.values.multiple.empty" -}} + {{- range .required -}} + {{- include "common.validations.values.single.empty" (dict "valueKey" .valueKey "secret" .secret "field" .field "context" $.context) -}} + {{- end -}} +{{- end -}} + +{{/* +Validate a value must not be empty. + +Usage: +{{ include "common.validations.value.empty" (dict "valueKey" "mariadb.password" "secret" "secretName" "field" "my-password" "subchart" "subchart" "context" $) }} + +Validate value params: + - valueKey - String - Required. The path to the validating value in the values.yaml, e.g: "mysql.password" + - secret - String - Optional. Name of the secret where the validating value is generated/stored, e.g: "mysql-passwords-secret" + - field - String - Optional. Name of the field in the secret data, e.g: "mysql-password" + - subchart - String - Optional - Name of the subchart that the validated password is part of. +*/}} +{{- define "common.validations.values.single.empty" -}} + {{- $value := include "common.utils.getValueFromKey" (dict "key" .valueKey "context" .context) }} + {{- $subchart := ternary "" (printf "%s." .subchart) (empty .subchart) }} + + {{- if not $value -}} + {{- $varname := "my-value" -}} + {{- $getCurrentValue := "" -}} + {{- if and .secret .field -}} + {{- $varname = include "common.utils.fieldToEnvVar" . -}} + {{- $getCurrentValue = printf " To get the current value:\n\n %s\n" (include "common.utils.secret.getvalue" .) -}} + {{- end -}} + {{- printf "\n '%s' must not be empty, please add '--set %s%s=$%s' to the command.%s" .valueKey $subchart .valueKey $varname $getCurrentValue -}} + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-1/charts/mariadb/charts/common/values.yaml b/charts/limesurvey-1/charts/mariadb/charts/common/values.yaml new file mode 100644 index 0000000..9abe0e1 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/charts/common/values.yaml @@ -0,0 +1,8 @@ +# Copyright VMware, Inc. +# SPDX-License-Identifier: APACHE-2.0 + +## bitnami/common +## It is required by CI/CD tools and processes. +## @skip exampleValue +## +exampleValue: common-chart diff --git a/charts/limesurvey-1/charts/mariadb/templates/NOTES.txt b/charts/limesurvey-1/charts/mariadb/templates/NOTES.txt new file mode 100644 index 0000000..c1f4f6b --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/templates/NOTES.txt @@ -0,0 +1,76 @@ +CHART NAME: {{ .Chart.Name }} +CHART VERSION: {{ .Chart.Version }} +APP VERSION: {{ .Chart.AppVersion }} + +** Please be patient while the chart is being deployed ** + +{{- if .Values.diagnosticMode.enabled }} +The chart has been deployed in diagnostic mode. All probes have been disabled and the command has been overwritten with: + + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 4 }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 4 }} + +Get the list of pods by executing: + + kubectl get pods --namespace {{ .Release.Namespace }} -l app.kubernetes.io/instance={{ .Release.Name }} + +Access the pod you want to debug by executing + + kubectl exec --namespace {{ .Release.Namespace }} -ti -- bash + +In order to replicate the container startup scripts execute this command: + + /opt/bitnami/scripts/mariadb/entrypoint.sh /opt/bitnami/scripts/mariadb/run.sh + +{{- else }} + +Tip: + + Watch the deployment status using the command: kubectl get pods -w --namespace {{ .Release.Namespace }} -l app.kubernetes.io/instance={{ .Release.Name }} + +Services: + + echo Primary: {{ include "mariadb.primary.fullname" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}:{{ coalesce .Values.primary.service.ports.mysql .Values.primary.service.port }} +{{- if eq .Values.architecture "replication" }} + echo Secondary: {{ include "mariadb.secondary.fullname" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}:{{ coalesce .Values.secondary.service.ports.mysql .Values.secondary.service.port }} +{{- end }} + +Administrator credentials: + + Username: root + Password : $(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "mariadb.secretName" . }} -o jsonpath="{.data.mariadb-root-password}" | base64 -d) + +To connect to your database: + + 1. Run a pod that you can use as a client: + + kubectl run {{ include "common.names.fullname" . }}-client --rm --tty -i --restart='Never' --image {{ template "mariadb.image" . }} --namespace {{ .Release.Namespace }} --command -- bash + + 2. To connect to primary service (read/write): + + mysql -h {{ include "mariadb.primary.fullname" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }} -uroot -p {{ .Values.auth.database }} + +{{- if eq .Values.architecture "replication" }} + + 3. To connect to secondary service (read-only): + + mysql -h {{ include "mariadb.secondary.fullname" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }} -uroot -p {{ .Values.auth.database }} +{{- end }} + +To upgrade this helm chart: + + 1. Obtain the password as described on the 'Administrator credentials' section and set the 'auth.rootPassword' parameter as shown below: + + ROOT_PASSWORD=$(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "mariadb.secretName" . }} -o jsonpath="{.data.mariadb-root-password}" | base64 -d) + helm upgrade --namespace {{ .Release.Namespace }} {{ .Release.Name }} oci://registry-1.docker.io/bitnamicharts/mariadb --set auth.rootPassword=$ROOT_PASSWORD + +{{- include "common.warnings.rollingTag" .Values.image }} +{{- include "common.warnings.rollingTag" .Values.metrics.image }} +{{- include "common.warnings.rollingTag" .Values.volumePermissions.image }} +{{- include "mariadb.validateValues" . }} +{{- if not .Values.auth.customPasswordFiles -}} + {{- $passwordValidationErrors := include "common.validations.values.mariadb.passwords" (dict "secret" (include "common.names.fullname" .) "context" $) -}} + {{- include "common.errors.upgrade.passwords.empty" (dict "validationErrors" (list $passwordValidationErrors) "context" $) -}} +{{- end }} +{{- end }} +{{- include "common.warnings.resources" (dict "sections" (list "metrics" "primary" "secondary" "volumePermissions") "context" $) }} diff --git a/charts/limesurvey-1/charts/mariadb/templates/_helpers.tpl b/charts/limesurvey-1/charts/mariadb/templates/_helpers.tpl new file mode 100644 index 0000000..d263337 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/templates/_helpers.tpl @@ -0,0 +1,164 @@ +{{/* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{/* vim: set filetype=mustache: */}} + +{{- define "mariadb.primary.fullname" -}} +{{- if eq .Values.architecture "replication" }} +{{- printf "%s-%s" (include "common.names.fullname" .) .Values.primary.name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- include "common.names.fullname" . -}} +{{- end -}} +{{- end -}} + +{{- define "mariadb.secondary.fullname" -}} +{{- printf "%s-%s" (include "common.names.fullname" .) .Values.secondary.name | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Return the proper MariaDB image name +*/}} +{{- define "mariadb.image" -}} +{{ include "common.images.image" (dict "imageRoot" .Values.image "global" .Values.global) }} +{{- end -}} + +{{/* +Return the proper metrics image name +*/}} +{{- define "mariadb.metrics.image" -}} +{{ include "common.images.image" (dict "imageRoot" .Values.metrics.image "global" .Values.global) }} +{{- end -}} + +{{/* +Return the proper image name (for the init container volume-permissions image) +*/}} +{{- define "mariadb.volumePermissions.image" -}} +{{ include "common.images.image" (dict "imageRoot" .Values.volumePermissions.image "global" .Values.global) }} +{{- end -}} + +{{/* +Return the proper Docker Image Registry Secret Names +*/}} +{{- define "mariadb.imagePullSecrets" -}} +{{ include "common.images.pullSecrets" (dict "images" (list .Values.image .Values.metrics.image .Values.volumePermissions.image) "global" .Values.global) }} +{{- end -}} + +{{ template "mariadb.initdbScriptsCM" . }} +{{/* +Get the initialization scripts ConfigMap name. +*/}} +{{- define "mariadb.initdbScriptsCM" -}} +{{- if .Values.initdbScriptsConfigMap -}} +{{- printf "%s" (tpl .Values.initdbScriptsConfigMap $) -}} +{{- else -}} +{{- printf "%s-init-scripts" (include "mariadb.primary.fullname" .) -}} +{{- end -}} +{{- end -}} + +{{/* +Create the name of the service account to use +*/}} +{{- define "mariadb.serviceAccountName" -}} +{{- if .Values.serviceAccount.create -}} + {{ default (include "common.names.fullname" .) .Values.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.serviceAccount.name }} +{{- end -}} +{{- end -}} + +{{/* +Return the configmap with the MariaDB Primary configuration +*/}} +{{- define "mariadb.primary.configmapName" -}} +{{- if .Values.primary.existingConfigmap -}} + {{- printf "%s" (tpl .Values.primary.existingConfigmap $) -}} +{{- else -}} + {{- printf "%s" (include "mariadb.primary.fullname" .) -}} +{{- end -}} +{{- end -}} + +{{/* +Return true if a configmap object should be created for MariaDB Secondary +*/}} +{{- define "mariadb.primary.createConfigmap" -}} +{{- if and .Values.primary.configuration (not .Values.primary.existingConfigmap) }} + {{- true -}} +{{- else -}} +{{- end -}} +{{- end -}} + +{{/* +Return the configmap with the MariaDB Primary configuration +*/}} +{{- define "mariadb.secondary.configmapName" -}} +{{- if .Values.secondary.existingConfigmap -}} + {{- printf "%s" (tpl .Values.secondary.existingConfigmap $) -}} +{{- else -}} + {{- printf "%s" (include "mariadb.secondary.fullname" .) -}} +{{- end -}} +{{- end -}} + +{{/* +Return true if a configmap object should be created for MariaDB Secondary +*/}} +{{- define "mariadb.secondary.createConfigmap" -}} +{{- if and (eq .Values.architecture "replication") .Values.secondary.configuration (not .Values.secondary.existingConfigmap) }} + {{- true -}} +{{- else -}} +{{- end -}} +{{- end -}} + +{{/* +Return the secret with MariaDB credentials +*/}} +{{- define "mariadb.secretName" -}} + {{- if .Values.auth.existingSecret -}} + {{- printf "%s" (tpl .Values.auth.existingSecret $) -}} + {{- else -}} + {{- printf "%s" (include "common.names.fullname" .) -}} + {{- end -}} +{{- end -}} + +{{/* +Return true if a secret object should be created for MariaDB +*/}} +{{- define "mariadb.createSecret" -}} +{{- if not (or .Values.auth.existingSecret .Values.auth.customPasswordFiles) }} + {{- true -}} +{{- end -}} +{{- end -}} + +{{/* +Compile all warnings into a single message, and call fail. +*/}} +{{- define "mariadb.validateValues" -}} +{{- $messages := list -}} +{{- $messages := append $messages (include "mariadb.validateValues.architecture" .) -}} +{{- $messages := without $messages "" -}} +{{- $message := join "\n" $messages -}} + +{{- if $message -}} +{{- printf "\nVALUES VALIDATION:\n%s" $message | fail -}} +{{- end -}} +{{- end -}} + +{{/* Validate values of MariaDB - must provide a valid architecture */}} +{{- define "mariadb.validateValues.architecture" -}} +{{- if and (ne .Values.architecture "standalone") (ne .Values.architecture "replication") -}} +mariadb: architecture + Invalid architecture selected. Valid values are "standalone" and + "replication". Please set a valid architecture (--set architecture="xxxx") +{{- end -}} +{{- end -}} + +{{/* +Get existing password to access MariaDB +*/}} +{{- define "mariadb.secret.existPassword" -}} +{{- $secret := (lookup "v1" "Secret" .Release.Namespace (include "mariadb.secretName" .)).data -}} +{{- if hasKey $secret "mariadb-password" }} + {{- true -}} +{{- end -}} +{{- end -}} diff --git a/charts/limesurvey-1/charts/mariadb/templates/extra-list.yaml b/charts/limesurvey-1/charts/mariadb/templates/extra-list.yaml new file mode 100644 index 0000000..2d35a58 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/templates/extra-list.yaml @@ -0,0 +1,9 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- range .Values.extraDeploy }} +--- +{{ include "common.tplvalues.render" (dict "value" . "context" $) }} +{{- end }} diff --git a/charts/limesurvey-1/charts/mariadb/templates/networkpolicy.yaml b/charts/limesurvey-1/charts/mariadb/templates/networkpolicy.yaml new file mode 100644 index 0000000..5d5fe77 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/templates/networkpolicy.yaml @@ -0,0 +1,76 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if .Values.networkPolicy.enabled }} +kind: NetworkPolicy +apiVersion: {{ template "common.capabilities.networkPolicy.apiVersion" . }} +metadata: + name: {{ template "common.names.fullname" . }} + namespace: {{ include "common.names.namespace" . | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + podSelector: + matchLabels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 6 }} + policyTypes: + - Ingress + - Egress + {{- if .Values.networkPolicy.allowExternalEgress }} + egress: + - {} + {{- else }} + egress: + # Allow dns resolution + - ports: + - port: 53 + protocol: UDP + - port: 53 + protocol: TCP + # Allow connection to other cluster pods + - ports: + - port: {{ .Values.primary.containerPorts.mysql }} + - port: {{ .Values.secondary.containerPorts.mysql }} + to: + - podSelector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 14 }} + {{- if .Values.networkPolicy.extraEgress }} + {{- include "common.tplvalues.render" ( dict "value" .Values.rts.networkPolicy.extraEgress "context" $ ) | nindent 4 }} + {{- end }} + {{- end }} + ingress: + - ports: + - port: {{ .Values.primary.containerPorts.mysql }} + - port: {{ .Values.secondary.containerPorts.mysql }} + {{- if .Values.metrics.enabled }} + - port: {{ .Values.metrics.containerPorts.http }} + {{- end }} + {{- if not .Values.networkPolicy.allowExternal }} + from: + - podSelector: + matchLabels: + {{ template "common.names.fullname" . }}-client: "true" + - podSelector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 14 }} + {{- if .Values.networkPolicy.ingressNSMatchLabels }} + - namespaceSelector: + matchLabels: + {{- range $key, $value := .Values.networkPolicy.ingressNSMatchLabels }} + {{ $key | quote }}: {{ $value | quote }} + {{- end }} + {{- if .Values.networkPolicy.ingressNSPodMatchLabels }} + podSelector: + matchLabels: + {{- range $key, $value := .Values.networkPolicy.ingressNSPodMatchLabels }} + {{ $key | quote }}: {{ $value | quote }} + {{- end }} + {{- end }} + {{- end }} + {{- end }} + {{- if .Values.networkPolicy.extraIngress }} + {{- include "common.tplvalues.render" ( dict "value" .Values.networkPolicy.extraIngress "context" $ ) | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/limesurvey-1/charts/mariadb/templates/primary/configmap.yaml b/charts/limesurvey-1/charts/mariadb/templates/primary/configmap.yaml new file mode 100644 index 0000000..d51d0a5 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/templates/primary/configmap.yaml @@ -0,0 +1,20 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if (include "mariadb.primary.createConfigmap" .) }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "mariadb.primary.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: primary + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +data: + my.cnf: |- + {{- include "common.tplvalues.render" ( dict "value" .Values.primary.configuration "context" $ ) | nindent 4 }} +{{- end -}} diff --git a/charts/limesurvey-1/charts/mariadb/templates/primary/initialization-configmap.yaml b/charts/limesurvey-1/charts/mariadb/templates/primary/initialization-configmap.yaml new file mode 100644 index 0000000..e4f5b10 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/templates/primary/initialization-configmap.yaml @@ -0,0 +1,19 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if and .Values.initdbScripts (not .Values.initdbScriptsConfigMap) }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ printf "%s-init-scripts" (include "mariadb.primary.fullname" .) }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: primary + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +data: +{{- include "common.tplvalues.render" (dict "value" .Values.initdbScripts "context" .) | nindent 2 }} +{{ end }} diff --git a/charts/limesurvey-1/charts/mariadb/templates/primary/pdb.yaml b/charts/limesurvey-1/charts/mariadb/templates/primary/pdb.yaml new file mode 100644 index 0000000..d39e581 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/templates/primary/pdb.yaml @@ -0,0 +1,28 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if .Values.primary.pdb.create }} +apiVersion: {{ include "common.capabilities.policy.apiVersion" . }} +kind: PodDisruptionBudget +metadata: + name: {{ include "mariadb.primary.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: primary + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- if .Values.primary.pdb.minAvailable }} + minAvailable: {{ .Values.primary.pdb.minAvailable }} + {{- end }} + {{- if .Values.primary.pdb.maxUnavailable }} + maxUnavailable: {{ .Values.primary.pdb.maxUnavailable }} + {{- end }} + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.primary.podLabels .Values.commonLabels ) "context" . ) }} + selector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} + app.kubernetes.io/component: primary +{{- end }} diff --git a/charts/limesurvey-1/charts/mariadb/templates/primary/statefulset.yaml b/charts/limesurvey-1/charts/mariadb/templates/primary/statefulset.yaml new file mode 100644 index 0000000..de8aa05 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/templates/primary/statefulset.yaml @@ -0,0 +1,443 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +apiVersion: {{ include "common.capabilities.statefulset.apiVersion" . }} +kind: StatefulSet +metadata: + name: {{ include "mariadb.primary.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: primary + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + replicas: 1 + revisionHistoryLimit: {{ .Values.primary.revisionHistoryLimit }} + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.primary.podLabels .Values.commonLabels ) "context" . ) }} + selector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} + app.kubernetes.io/component: primary + serviceName: {{ include "mariadb.primary.fullname" . }} + {{- if .Values.primary.updateStrategy }} + updateStrategy: {{- toYaml .Values.primary.updateStrategy | nindent 4 }} + {{- end }} + template: + metadata: + annotations: + {{- if (include "mariadb.primary.createConfigmap" .) }} + checksum/configuration: {{ include (print $.Template.BasePath "/primary/configmap.yaml") . | sha256sum }} + {{- end }} + {{- if .Values.primary.podAnnotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.primary.podAnnotations "context" $) | nindent 8 }} + {{- end }} + labels: {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }} + app.kubernetes.io/component: primary + spec: + {{- include "mariadb.imagePullSecrets" . | nindent 6 }} + automountServiceAccountToken: {{ .Values.primary.automountServiceAccountToken }} + {{- if .Values.primary.hostAliases }} + hostAliases: {{- include "common.tplvalues.render" (dict "value" .Values.primary.hostAliases "context" $) | nindent 8 }} + {{- end }} + {{- if or .Values.primary.schedulerName .Values.schedulerName }} + schedulerName: {{ (coalesce .Values.primary.schedulerName .Values.schedulerName) | quote }} + {{- end }} + serviceAccountName: {{ template "mariadb.serviceAccountName" . }} + {{- if .Values.primary.affinity }} + affinity: {{- include "common.tplvalues.render" (dict "value" .Values.primary.affinity "context" $) | nindent 8 }} + {{- else }} + affinity: + podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.primary.podAffinityPreset "component" "primary" "customLabels" $podLabels "context" $) | nindent 10 }} + podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.primary.podAntiAffinityPreset "component" "primary" "customLabels" $podLabels "context" $) | nindent 10 }} + nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.primary.nodeAffinityPreset.type "key" .Values.primary.nodeAffinityPreset.key "values" .Values.primary.nodeAffinityPreset.values) | nindent 10 }} + {{- end }} + {{- if .Values.primary.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" (dict "value" .Values.primary.nodeSelector "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.primary.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.primary.tolerations "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.primary.schedulerName }} + schedulerName: {{ .Values.primary.schedulerName }} + {{- end }} + {{- if .Values.primary.topologySpreadConstraints }} + topologySpreadConstraints: {{- include "common.tplvalues.render" (dict "value" .Values.primary.topologySpreadConstraints "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.primary.priorityClassName }} + priorityClassName: {{ .Values.primary.priorityClassName | quote }} + {{- else if .Values.priorityClassName }} + priorityClassName: {{ .Values.priorityClassName | quote }} + {{- end }} + {{- if .Values.primary.runtimeClassName }} + runtimeClassName: {{ .Values.primary.runtimeClassName | quote }} + {{- else if .Values.runtimeClassName }} + runtimeClassName: {{ .Values.runtimeClassName | quote }} + {{- end }} + {{- if .Values.primary.podSecurityContext.enabled }} + securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.primary.podSecurityContext "context" $) | nindent 8 }} + {{- end }} + initContainers: + - name: preserve-logs-symlinks + image: {{ include "mariadb.image" . }} + imagePullPolicy: {{ .Values.image.pullPolicy | quote }} + {{- if .Values.primary.containerSecurityContext.enabled }} + securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.primary.containerSecurityContext "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.primary.resources }} + resources: {{ toYaml .Values.primary.resources | nindent 12 }} + {{- else if ne .Values.primary.resourcesPreset "none" }} + resources: {{- include "common.resources.preset" (dict "type" .Values.primary.resourcesPreset) | nindent 12 }} + {{- end }} + command: + - /bin/bash + args: + - -ec + - | + #!/bin/bash + + . /opt/bitnami/scripts/libfs.sh + # We copy the logs folder because it has symlinks to stdout and stderr + if ! is_dir_empty /opt/bitnami/mariadb/logs; then + cp -r /opt/bitnami/mariadb/logs /emptydir/app-logs-dir + fi + volumeMounts: + - name: empty-dir + mountPath: /emptydir + {{- if and .Values.primary.podSecurityContext.enabled .Values.volumePermissions.enabled .Values.primary.persistence.enabled }} + - name: volume-permissions + image: {{ include "mariadb.volumePermissions.image" . }} + imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }} + command: + - /bin/bash + - -ec + - | + chown -R {{ .Values.primary.containerSecurityContext.runAsUser }}:{{ .Values.primary.podSecurityContext.fsGroup }} /bitnami/mariadb + securityContext: + runAsUser: 0 + {{- if .Values.volumePermissions.resources }} + resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }} + {{- else if ne .Values.volumePermissions.resourcesPreset "none" }} + resources: {{- include "common.resources.preset" (dict "type" .Values.volumePermissions.resourcesPreset) | nindent 12 }} + {{- end }} + volumeMounts: + - name: data + mountPath: /bitnami/mariadb + {{- if .Values.primary.persistence.subPath }} + subPath: {{ .Values.primary.persistence.subPath }} + {{- end }} + - name: empty-dir + mountPath: /tmp + subPath: tmp-dir + {{- end }} + {{- if .Values.primary.initContainers }} + {{- include "common.tplvalues.render" (dict "value" .Values.primary.initContainers "context" $) | nindent 8 }} + {{- end }} + containers: + - name: mariadb + image: {{ include "mariadb.image" . }} + imagePullPolicy: {{ .Values.image.pullPolicy | quote }} + {{- if .Values.primary.containerSecurityContext.enabled }} + securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.primary.containerSecurityContext "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} + {{- else if .Values.primary.command }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.primary.command "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }} + {{- else if .Values.primary.args }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.primary.args "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.primary.lifecycleHooks }} + lifecycle: {{- include "common.tplvalues.render" (dict "value" .Values.primary.lifecycleHooks "context" $) | nindent 12 }} + {{- end }} + env: + - name: BITNAMI_DEBUG + value: {{ ternary "true" "false" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }} + {{- if .Values.auth.usePasswordFiles }} + - name: MARIADB_ROOT_PASSWORD_FILE + value: {{ default "/opt/bitnami/mariadb/secrets/mariadb-root-password" .Values.auth.customPasswordFiles.root }} + {{- else }} + - name: MARIADB_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "mariadb.secretName" . }} + key: mariadb-root-password + {{- end }} + {{- if not (empty .Values.auth.username) }} + - name: MARIADB_USER + value: {{ .Values.auth.username | quote }} + {{- if .Values.auth.usePasswordFiles }} + - name: MARIADB_PASSWORD_FILE + value: {{ default "/opt/bitnami/mariadb/secrets/mariadb-password" .Values.auth.customPasswordFiles.user }} + {{- else }} + - name: MARIADB_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "mariadb.secretName" . }} + key: mariadb-password + {{- end }} + {{- end }} + - name: MARIADB_DATABASE + value: {{ .Values.auth.database | quote }} + {{- if eq .Values.architecture "replication" }} + - name: MARIADB_REPLICATION_MODE + value: "master" + - name: MARIADB_REPLICATION_USER + value: {{ .Values.auth.replicationUser | quote }} + {{- if .Values.auth.usePasswordFiles }} + - name: MARIADB_REPLICATION_PASSWORD_FILE + value: {{ default "/opt/bitnami/mariadb/secrets/mariadb-replication-password" .Values.auth.customPasswordFiles.replicator }} + {{- else }} + - name: MARIADB_REPLICATION_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "mariadb.secretName" . }} + key: mariadb-replication-password + {{- end }} + {{- end }} + {{- if .Values.primary.extraFlags }} + - name: MARIADB_EXTRA_FLAGS + value: "{{ .Values.primary.extraFlags }}" + {{- end }} + {{- if .Values.primary.startupWaitOptions }} + - name: MARIADB_STARTUP_WAIT_RETRIES + value: "{{ .Values.primary.startupWaitOptions.retries | default 300 }}" + - name: MARIADB_STARTUP_WAIT_SLEEP_TIME + value: "{{ .Values.primary.startupWaitOptions.sleepTime | default 2 }}" + {{- end }} + {{- if .Values.primary.extraEnvVars }} + {{- include "common.tplvalues.render" (dict "value" .Values.primary.extraEnvVars "context" $) | nindent 12 }} + {{- end }} + {{- if or .Values.primary.extraEnvVarsCM .Values.primary.extraEnvVarsSecret }} + envFrom: + {{- if .Values.primary.extraEnvVarsCM }} + - configMapRef: + name: {{ .Values.primary.extraEnvVarsCM }} + {{- end }} + {{- if .Values.primary.extraEnvVarsSecret }} + - secretRef: + name: {{ .Values.primary.extraEnvVarsSecret }} + {{- end }} + {{- end }} + ports: + - name: mysql + containerPort: {{ .Values.primary.containerPorts.mysql }} + {{- if not .Values.diagnosticMode.enabled }} + {{- if .Values.primary.customStartupProbe }} + startupProbe: {{- include "common.tplvalues.render" (dict "value" .Values.primary.customStartupProbe "context" $) | nindent 12 }} + {{- else if .Values.primary.startupProbe.enabled }} + startupProbe: {{- omit .Values.primary.startupProbe "enabled" | toYaml | nindent 12 }} + exec: + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_ROOT_PASSWORD_FILE") + fi + mysqladmin status -uroot -p"${password_aux}" + {{- end }} + {{- if .Values.primary.customLivenessProbe }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.primary.customLivenessProbe "context" $) | nindent 12 }} + {{- else if .Values.primary.livenessProbe.enabled }} + livenessProbe: {{- omit .Values.primary.livenessProbe "enabled" | toYaml | nindent 12 }} + exec: + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_ROOT_PASSWORD_FILE") + fi + mysqladmin status -uroot -p"${password_aux}" + {{- end }} + {{- if .Values.primary.customReadinessProbe }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.primary.customReadinessProbe "context" $) | nindent 12 }} + {{- else if .Values.primary.readinessProbe.enabled }} + readinessProbe: {{- omit .Values.primary.readinessProbe "enabled" | toYaml | nindent 12 }} + exec: + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_ROOT_PASSWORD_FILE") + fi + mysqladmin status -uroot -p"${password_aux}" + {{- end }} + {{- end }} + {{- if .Values.primary.resources }} + resources: {{ toYaml .Values.primary.resources | nindent 12 }} + {{- else if ne .Values.primary.resourcesPreset "none" }} + resources: {{- include "common.resources.preset" (dict "type" .Values.primary.resourcesPreset) | nindent 12 }} + {{- end }} + volumeMounts: + - name: data + mountPath: /bitnami/mariadb + {{- if .Values.primary.persistence.subPath }} + subPath: {{ .Values.primary.persistence.subPath }} + {{- end }} + {{- if or .Values.initdbScriptsConfigMap .Values.initdbScripts }} + - name: custom-init-scripts + mountPath: /docker-entrypoint-initdb.d + {{- end }} + {{- if or .Values.primary.configuration .Values.primary.existingConfigmap }} + - name: config + mountPath: /opt/bitnami/mariadb/conf/my.cnf + subPath: my.cnf + {{- end }} + {{- if and .Values.auth.usePasswordFiles (not .Values.auth.customPasswordFiles) }} + - name: mariadb-credentials + mountPath: /opt/bitnami/mariadb/secrets/ + {{- end }} + - name: empty-dir + mountPath: /tmp + subPath: tmp-dir + - name: empty-dir + mountPath: /opt/bitnami/mariadb/conf + subPath: app-conf-dir + - name: empty-dir + mountPath: /opt/bitnami/mariadb/tmp + subPath: app-tmp-dir + - name: empty-dir + mountPath: /opt/bitnami/mariadb/logs + subPath: app-logs-dir + {{- if .Values.primary.extraVolumeMounts }} + {{- include "common.tplvalues.render" (dict "value" .Values.primary.extraVolumeMounts "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.metrics.enabled }} + - name: metrics + image: {{ include "mariadb.metrics.image" . }} + imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }} + {{- if .Values.metrics.containerSecurityContext.enabled }} + securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.metrics.containerSecurityContext "context" $) | nindent 12 }} + {{- end }} + env: + {{- if .Values.auth.usePasswordFiles }} + - name: MARIADB_ROOT_PASSWORD_FILE + value: {{ default "/opt/bitnami/mysqld-exporter/secrets/mariadb-root-password" .Values.auth.customPasswordFiles.root }} + {{- else }} + - name: MARIADB_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "mariadb.secretName" . }} + key: mariadb-root-password + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }} + {{- else }} + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_ROOT_PASSWORD_FILE") + fi + MYSQLD_EXPORTER_PASSWORD=${password_aux} /bin/mysqld_exporter --mysqld.address=localhost:{{ .Values.primary.containerPorts.mysql }} --mysqld.username=root --web.listen-address=:{{ .Values.metrics.containerPorts.http }} {{- range .Values.metrics.extraArgs.primary }} {{ . }} {{- end }} + {{- end }} + ports: + - name: metrics + containerPort: {{ .Values.metrics.containerPorts.http }} + {{- if not .Values.diagnosticMode.enabled }} + {{- if .Values.metrics.livenessProbe.enabled }} + livenessProbe: {{- omit .Values.metrics.livenessProbe "enabled" | toYaml | nindent 12 }} + httpGet: + path: /metrics + port: metrics + {{- end }} + {{- if .Values.metrics.readinessProbe.enabled }} + readinessProbe: {{- omit .Values.metrics.readinessProbe "enabled" | toYaml | nindent 12 }} + httpGet: + path: /metrics + port: metrics + {{- end }} + {{- end }} + {{- if .Values.metrics.resources }} + resources: {{- toYaml .Values.metrics.resources | nindent 12 }} + {{- else if ne .Values.metrics.resourcesPreset "none" }} + resources: {{- include "common.resources.preset" (dict "type" .Values.metrics.resourcesPreset) | nindent 12 }} + {{- end }} + volumeMounts: + - name: empty-dir + mountPath: /tmp + subPath: tmp-dir + {{- if and .Values.auth.usePasswordFiles (not .Values.auth.customPasswordFiles) }} + - name: mariadb-credentials + mountPath: /opt/bitnami/mysqld-exporter/secrets/ + {{- end }} + {{- if .Values.metrics.extraVolumeMounts.primary }} + {{- include "common.tplvalues.render" (dict "value" .Values.metrics.extraVolumeMounts.primary "context" $) | nindent 12 }} + {{- end }} + {{- end }} + {{- if .Values.primary.sidecars }} + {{- include "common.tplvalues.render" (dict "value" .Values.primary.sidecars "context" $) | nindent 8 }} + {{- end }} + volumes: + - name: empty-dir + emptyDir: {} + {{- if or .Values.primary.configuration .Values.primary.existingConfigmap }} + - name: config + configMap: + name: {{ include "mariadb.primary.configmapName" . }} + {{- end }} + {{- if or .Values.initdbScriptsConfigMap .Values.initdbScripts }} + - name: custom-init-scripts + configMap: + name: {{ template "mariadb.initdbScriptsCM" . }} + {{- end }} + {{- if and .Values.auth.usePasswordFiles (not .Values.auth.customPasswordFiles) }} + - name: mariadb-credentials + secret: + secretName: {{ template "mariadb.secretName" . }} + items: + - key: mariadb-root-password + path: mariadb-root-password + - key: mariadb-password + path: mariadb-password + {{- if eq .Values.architecture "replication" }} + - key: mariadb-replication-password + path: mariadb-replication-password + {{- end }} + {{- end }} + {{- if .Values.primary.extraVolumes }} + {{- include "common.tplvalues.render" (dict "value" .Values.primary.extraVolumes "context" $) | nindent 8 }} + {{- end }} + {{- if and .Values.primary.persistence.enabled .Values.primary.persistence.existingClaim }} + - name: data + persistentVolumeClaim: + claimName: {{ tpl .Values.primary.persistence.existingClaim . }} + {{- else if not .Values.primary.persistence.enabled }} + - name: data + emptyDir: {} + {{- else if and .Values.primary.persistence.enabled (not .Values.primary.persistence.existingClaim) }} + volumeClaimTemplates: + - metadata: + name: data + {{- $claimLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.primary.persistence.labels .Values.commonLabels ) "context" . ) }} + labels: {{- include "common.labels.matchLabels" ( dict "customLabels" $claimLabels "context" $ ) | nindent 10 }} + app.kubernetes.io/component: primary + {{- if .Values.primary.persistence.annotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.primary.persistence.annotations "context" $ ) | nindent 10 }} + {{- end }} + spec: + accessModes: + {{- range .Values.primary.persistence.accessModes }} + - {{ . | quote }} + {{- end }} + resources: + requests: + storage: {{ .Values.primary.persistence.size | quote }} + {{ include "common.storage.class" (dict "persistence" .Values.primary.persistence "global" .Values.global) }} + {{- if .Values.primary.persistence.selector }} + selector: {{- include "common.tplvalues.render" (dict "value" .Values.primary.persistence.selector "context" $) | nindent 10 }} + {{- end -}} + {{- end }} diff --git a/charts/limesurvey-1/charts/mariadb/templates/primary/svc.yaml b/charts/limesurvey-1/charts/mariadb/templates/primary/svc.yaml new file mode 100644 index 0000000..0191bdf --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/templates/primary/svc.yaml @@ -0,0 +1,62 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "mariadb.primary.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: primary + annotations: + {{- if or .Values.primary.service.annotations .Values.commonAnnotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.primary.service.annotations .Values.commonAnnotations ) "context" . ) }} + {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }} + {{- end }} + {{- if and .Values.metrics.enabled .Values.metrics.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.annotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.primary.service.type }} + {{- if and .Values.primary.service.clusterIP (eq .Values.primary.service.type "ClusterIP") }} + clusterIP: {{ .Values.primary.service.clusterIP }} + {{- end }} + {{- if and .Values.primary.service.externalTrafficPolicy (or (eq .Values.primary.service.type "LoadBalancer") (eq .Values.primary.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.primary.service.externalTrafficPolicy | quote }} + {{- end }} + {{- if and (eq .Values.primary.service.type "LoadBalancer") .Values.primary.service.loadBalancerSourceRanges }} + loadBalancerSourceRanges: {{- toYaml .Values.primary.service.loadBalancerSourceRanges | nindent 4 }} + {{ end }} + {{- if (and (eq .Values.primary.service.type "LoadBalancer") (not (empty .Values.primary.service.loadBalancerIP))) }} + loadBalancerIP: {{ .Values.primary.service.loadBalancerIP }} + {{- end }} + {{- if .Values.primary.service.sessionAffinity }} + sessionAffinity: {{ .Values.primary.service.sessionAffinity }} + {{- end }} + {{- if .Values.primary.service.sessionAffinityConfig }} + sessionAffinityConfig: {{- include "common.tplvalues.render" (dict "value" .Values.primary.service.sessionAffinityConfig "context" $) | nindent 4 }} + {{- end }} + ports: + - name: mysql + port: {{ coalesce .Values.primary.service.ports.mysql .Values.primary.service.port }} + protocol: TCP + targetPort: mysql + {{- if (and (or (eq .Values.primary.service.type "NodePort") (eq .Values.primary.service.type "LoadBalancer")) (coalesce .Values.primary.service.nodePorts.mysql .Values.primary.service.nodePort)) }} + nodePort: {{ coalesce .Values.primary.service.nodePorts.mysql .Values.primary.service.nodePort }} + {{- else if eq .Values.primary.service.type "ClusterIP" }} + nodePort: null + {{- end }} + {{- if and .Values.metrics.enabled (gt (.Values.primary.service.ports.metrics | int) 0) }} + - name: metrics + port: {{ .Values.primary.service.ports.metrics }} + protocol: TCP + targetPort: metrics + {{- end }} + {{- if .Values.primary.service.extraPorts }} + {{- include "common.tplvalues.render" (dict "value" .Values.primary.service.extraPorts "context" $) | nindent 4 }} + {{- end }} + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.primary.podLabels .Values.commonLabels ) "context" . ) }} + selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: primary diff --git a/charts/limesurvey-1/charts/mariadb/templates/prometheusrules.yaml b/charts/limesurvey-1/charts/mariadb/templates/prometheusrules.yaml new file mode 100644 index 0000000..84927a2 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/templates/prometheusrules.yaml @@ -0,0 +1,24 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if and .Values.metrics.enabled .Values.metrics.prometheusRule.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ include "common.names.fullname" . }} + namespace: {{ default .Release.Namespace .Values.metrics.prometheusRule.namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: metrics + {{- if .Values.metrics.prometheusRule.additionalLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.prometheusRule.additionalLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + groups: + - name: {{ include "common.names.fullname" . }} + rules: {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.prometheusRule.rules "context" $ ) | nindent 6 }} +{{- end }} diff --git a/charts/limesurvey-1/charts/mariadb/templates/role.yaml b/charts/limesurvey-1/charts/mariadb/templates/role.yaml new file mode 100644 index 0000000..42ea253 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/templates/role.yaml @@ -0,0 +1,23 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if and .Values.serviceAccount.create .Values.rbac.create }} +apiVersion: {{ include "common.capabilities.rbac.apiVersion" . }} +kind: Role +metadata: + name: {{ include "common.names.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +rules: + - apiGroups: + - "" + resources: + - endpoints + verbs: + - get +{{- end }} diff --git a/charts/limesurvey-1/charts/mariadb/templates/rolebinding.yaml b/charts/limesurvey-1/charts/mariadb/templates/rolebinding.yaml new file mode 100644 index 0000000..07b9506 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/templates/rolebinding.yaml @@ -0,0 +1,23 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if and .Values.serviceAccount.create .Values.rbac.create }} +kind: RoleBinding +apiVersion: {{ include "common.capabilities.rbac.apiVersion" . }} +metadata: + name: {{ include "common.names.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +subjects: + - kind: ServiceAccount + name: {{ include "mariadb.serviceAccountName" . }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: {{ include "common.names.fullname" . -}} +{{- end }} diff --git a/charts/limesurvey-1/charts/mariadb/templates/secondary/configmap.yaml b/charts/limesurvey-1/charts/mariadb/templates/secondary/configmap.yaml new file mode 100644 index 0000000..ef73b12 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/templates/secondary/configmap.yaml @@ -0,0 +1,20 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if (include "mariadb.secondary.createConfigmap" .) }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "mariadb.secondary.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: secondary + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +data: + my.cnf: |- + {{- include "common.tplvalues.render" ( dict "value" .Values.secondary.configuration "context" $ ) | nindent 4 }} +{{- end -}} diff --git a/charts/limesurvey-1/charts/mariadb/templates/secondary/pdb.yaml b/charts/limesurvey-1/charts/mariadb/templates/secondary/pdb.yaml new file mode 100644 index 0000000..5893731 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/templates/secondary/pdb.yaml @@ -0,0 +1,28 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if and (eq .Values.architecture "replication") .Values.secondary.pdb.create }} +apiVersion: {{ include "common.capabilities.policy.apiVersion" . }} +kind: PodDisruptionBudget +metadata: + name: {{ include "mariadb.secondary.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: secondary + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- if .Values.secondary.pdb.minAvailable }} + minAvailable: {{ .Values.secondary.pdb.minAvailable }} + {{- end }} + {{- if .Values.secondary.pdb.maxUnavailable }} + maxUnavailable: {{ .Values.secondary.pdb.maxUnavailable }} + {{- end }} + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.secondary.podLabels .Values.commonLabels ) "context" . ) }} + selector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} + app.kubernetes.io/component: secondary +{{- end }} diff --git a/charts/limesurvey-1/charts/mariadb/templates/secondary/statefulset.yaml b/charts/limesurvey-1/charts/mariadb/templates/secondary/statefulset.yaml new file mode 100644 index 0000000..d5c8a24 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/templates/secondary/statefulset.yaml @@ -0,0 +1,414 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if eq .Values.architecture "replication" }} +apiVersion: {{ include "common.capabilities.statefulset.apiVersion" . }} +kind: StatefulSet +metadata: + name: {{ include "mariadb.secondary.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: secondary + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + replicas: {{ .Values.secondary.replicaCount }} + revisionHistoryLimit: {{ .Values.secondary.revisionHistoryLimit }} + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.secondary.podLabels .Values.commonLabels ) "context" . ) }} + selector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} + app.kubernetes.io/component: secondary + serviceName: {{ include "mariadb.secondary.fullname" . }} + podManagementPolicy: {{ .Values.secondary.podManagementPolicy }} + {{- if .Values.secondary.updateStrategy }} + updateStrategy: {{- toYaml .Values.secondary.updateStrategy | nindent 4 }} + {{- end }} + template: + metadata: + annotations: + {{- if (include "mariadb.secondary.createConfigmap" .) }} + checksum/configuration: {{ include (print $.Template.BasePath "/secondary/configmap.yaml") . | sha256sum }} + {{- end }} + {{- if .Values.secondary.podAnnotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.secondary.podAnnotations "context" $) | nindent 8 }} + {{- end }} + labels: {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }} + app.kubernetes.io/component: secondary + spec: + {{- include "mariadb.imagePullSecrets" . | nindent 6 }} + {{- if or .Values.secondary.schedulerName .Values.schedulerName }} + schedulerName: {{ (coalesce .Values.secondary.schedulerName .Values.schedulerName) | quote }} + {{- end }} + serviceAccountName: {{ template "mariadb.serviceAccountName" . }} + automountServiceAccountToken: {{ .Values.secondary.automountServiceAccountToken }} + {{- if .Values.secondary.hostAliases }} + hostAliases: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.hostAliases "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.secondary.affinity }} + affinity: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.affinity "context" $) | nindent 8 }} + {{- else }} + affinity: + podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.secondary.podAffinityPreset "component" "secondary" "customLabels" $podLabels "context" $) | nindent 10 }} + podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.secondary.podAntiAffinityPreset "component" "secondary" "customLabels" $podLabels "context" $) | nindent 10 }} + nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.secondary.nodeAffinityPreset.type "key" .Values.secondary.nodeAffinityPreset.key "values" .Values.secondary.nodeAffinityPreset.values) | nindent 10 }} + {{- end }} + {{- if .Values.secondary.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.nodeSelector "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.secondary.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.tolerations "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.secondary.topologySpreadConstraints }} + topologySpreadConstraints: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.topologySpreadConstraints "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.secondary.priorityClassName }} + priorityClassName: {{ .Values.secondary.priorityClassName | quote }} + {{- else if .Values.priorityClassName }} + priorityClassName: {{ .Values.priorityClassName | quote }} + {{- end }} + {{- if .Values.secondary.runtimeClassName }} + runtimeClassName: {{ .Values.secondary.runtimeClassName | quote }} + {{- else if .Values.runtimeClassName }} + runtimeClassName: {{ .Values.runtimeClassName | quote }} + {{- end }} + {{- if .Values.secondary.podSecurityContext.enabled }} + securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.secondary.podSecurityContext "context" $) | nindent 8 }} + {{- end }} + initContainers: + - name: preserve-logs-symlinks + image: {{ include "mariadb.image" . }} + imagePullPolicy: {{ .Values.image.pullPolicy | quote }} + {{- if .Values.secondary.containerSecurityContext.enabled }} + securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.primary.containerSecurityContext "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.secondary.resources }} + resources: {{ toYaml .Values.secondary.resources | nindent 12 }} + {{- else if ne .Values.secondary.resourcesPreset "none" }} + resources: {{- include "common.resources.preset" (dict "type" .Values.secondary.resourcesPreset) | nindent 12 }} + {{- end }} + command: + - /bin/bash + args: + - -ec + - | + #!/bin/bash + + . /opt/bitnami/scripts/libfs.sh + # We copy the logs folder because it has symlinks to stdout and stderr + if ! is_dir_empty /opt/bitnami/mariadb/logs; then + cp -r /opt/bitnami/mariadb/logs /emptydir/app-logs-dir + fi + volumeMounts: + - name: empty-dir + mountPath: /emptydir + {{- if and .Values.secondary.podSecurityContext.enabled .Values.volumePermissions.enabled .Values.secondary.persistence.enabled }} + - name: volume-permissions + image: {{ include "mariadb.volumePermissions.image" . }} + imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }} + command: + - /bin/bash + - -ec + - | + chown -R {{ .Values.secondary.containerSecurityContext.runAsUser }}:{{ .Values.secondary.podSecurityContext.fsGroup }} /bitnami/mariadb + securityContext: + runAsUser: 0 + {{- if .Values.volumePermissions.resources }} + resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }} + {{- else if ne .Values.volumePermissions.resourcesPreset "none" }} + resources: {{- include "common.resources.preset" (dict "type" .Values.volumePermissions.resourcesPreset) | nindent 12 }} + {{- end }} + volumeMounts: + - name: data + mountPath: /bitnami/mariadb + {{- if .Values.secondary.persistence.subPath }} + subPath: {{ .Values.secondary.persistence.subPath }} + {{- end }} + - name: empty-dir + mountPath: /tmp + subPath: tmp-dir + {{- end }} + {{- if .Values.secondary.initContainers }} + {{- include "common.tplvalues.render" (dict "value" .Values.secondary.initContainers "context" $) | nindent 8 }} + {{- end }} + containers: + - name: mariadb + image: {{ include "mariadb.image" . }} + imagePullPolicy: {{ .Values.image.pullPolicy | quote }} + {{- if .Values.secondary.containerSecurityContext.enabled }} + securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.secondary.containerSecurityContext "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} + {{- else if .Values.secondary.command }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.command "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }} + {{- else if .Values.secondary.args }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.args "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.secondary.lifecycleHooks }} + lifecycle: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.lifecycleHooks "context" $) | nindent 12 }} + {{- end }} + env: + - name: BITNAMI_DEBUG + value: {{ ternary "true" "false" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }} + - name: MARIADB_REPLICATION_MODE + value: "slave" + - name: MARIADB_MASTER_HOST + value: {{ include "mariadb.primary.fullname" . }} + - name: MARIADB_MASTER_PORT_NUMBER + value: {{ coalesce .Values.primary.service.ports.mysql .Values.primary.service.port | quote }} + - name: MARIADB_MASTER_ROOT_USER + value: "root" + {{- if .Values.auth.usePasswordFiles }} + - name: MARIADB_MASTER_ROOT_PASSWORD_FILE + value: {{ default "/opt/bitnami/mariadb/secrets/mariadb-root-password" .Values.auth.customPasswordFiles.root }} + {{- else }} + - name: MARIADB_MASTER_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "mariadb.secretName" . }} + key: mariadb-root-password + {{- end }} + - name: MARIADB_REPLICATION_USER + value: {{ .Values.auth.replicationUser | quote }} + {{- if .Values.auth.usePasswordFiles }} + - name: MARIADB_REPLICATION_PASSWORD_FILE + value: {{ default "/opt/bitnami/mariadb/secrets/mariadb-replication-password" .Values.auth.customPasswordFiles.replicator }} + {{- else }} + - name: MARIADB_REPLICATION_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "mariadb.secretName" . }} + key: mariadb-replication-password + {{- end }} + {{- if .Values.secondary.extraFlags }} + - name: MARIADB_EXTRA_FLAGS + value: "{{ .Values.secondary.extraFlags }}" + {{- end }} + {{- if .Values.secondary.startupWaitOptions }} + - name: MARIADB_STARTUP_WAIT_RETRIES + value: "{{ .Values.secondary.startupWaitOptions.retries | default 300 }}" + - name: MARIADB_STARTUP_WAIT_SLEEP_TIME + value: "{{ .Values.secondary.startupWaitOptions.sleepTime | default 2 }}" + {{- end }} + {{- if .Values.secondary.extraEnvVars }} + {{- include "common.tplvalues.render" (dict "value" .Values.secondary.extraEnvVars "context" $) | nindent 12 }} + {{- end }} + {{- if or .Values.secondary.extraEnvVarsCM .Values.secondary.extraEnvVarsSecret }} + envFrom: + {{- if .Values.secondary.extraEnvVarsCM }} + - configMapRef: + name: {{ .Values.secondary.extraEnvVarsCM }} + {{- end }} + {{- if .Values.secondary.extraEnvVarsSecret }} + - secretRef: + name: {{ .Values.secondary.extraEnvVarsSecret }} + {{- end }} + {{- end }} + ports: + - name: mysql + containerPort: {{ .Values.secondary.containerPorts.mysql }} + {{- if not .Values.diagnosticMode.enabled }} + {{- if .Values.secondary.customStartupProbe }} + startupProbe: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.customStartupProbe "context" $) | nindent 12 }} + {{- else if .Values.secondary.startupProbe.enabled }} + startupProbe: {{- omit .Values.secondary.startupProbe "enabled" | toYaml | nindent 12 }} + exec: + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_MASTER_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_MASTER_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_MASTER_ROOT_PASSWORD_FILE") + fi + mysqladmin status -uroot -p"${password_aux}" + {{- end }} + {{- if .Values.secondary.customLivenessProbe }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.customLivenessProbe "context" $) | nindent 12 }} + {{- else if .Values.secondary.livenessProbe.enabled }} + livenessProbe: {{- omit .Values.secondary.livenessProbe "enabled" | toYaml | nindent 12 }} + exec: + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_MASTER_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_MASTER_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_MASTER_ROOT_PASSWORD_FILE") + fi + mysqladmin status -uroot -p"${password_aux}" + {{- end }} + {{- if .Values.secondary.customReadinessProbe }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.customReadinessProbe "context" $) | nindent 12 }} + {{- else if .Values.secondary.readinessProbe.enabled }} + readinessProbe: {{- omit .Values.secondary.readinessProbe "enabled" | toYaml | nindent 12 }} + exec: + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_MASTER_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_MASTER_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_MASTER_ROOT_PASSWORD_FILE") + fi + mysqladmin status -uroot -p"${password_aux}" + {{- end }} + {{- end }} + {{- if .Values.secondary.resources }} + resources: {{ toYaml .Values.secondary.resources | nindent 12 }} + {{- else if ne .Values.secondary.resourcesPreset "none" }} + resources: {{- include "common.resources.preset" (dict "type" .Values.secondary.resourcesPreset) | nindent 12 }} + {{- end }} + volumeMounts: + - name: data + mountPath: /bitnami/mariadb + {{- if .Values.secondary.persistence.subPath }} + subPath: {{ .Values.secondary.persistence.subPath }} + {{- end }} + {{- if or .Values.secondary.configuration .Values.secondary.existingConfigmap }} + - name: config + mountPath: /opt/bitnami/mariadb/conf/my.cnf + subPath: my.cnf + {{- end }} + {{- if and .Values.auth.usePasswordFiles (not .Values.auth.customPasswordFiles) }} + - name: mariadb-credentials + mountPath: /opt/bitnami/mariadb/secrets/ + {{- end }} + {{- if .Values.secondary.extraVolumeMounts }} + {{- include "common.tplvalues.render" (dict "value" .Values.secondary.extraVolumeMounts "context" $) | nindent 12 }} + {{- end }} + - name: empty-dir + mountPath: /tmp + subPath: tmp-dir + - name: empty-dir + mountPath: /opt/bitnami/mariadb/conf + subPath: app-conf-dir + - name: empty-dir + mountPath: /opt/bitnami/mariadb/tmp + subPath: app-tmp-dir + - name: empty-dir + mountPath: /opt/bitnami/mariadb/logs + subPath: app-logs-dir + {{- if .Values.metrics.enabled }} + - name: metrics + image: {{ include "mariadb.metrics.image" . }} + imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }} + {{- if .Values.metrics.containerSecurityContext.enabled }} + securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.metrics.containerSecurityContext "context" $) | nindent 12 }} + {{- end }} + env: + {{- if .Values.auth.usePasswordFiles }} + - name: MARIADB_ROOT_PASSWORD_FILE + value: {{ default "/opt/bitnami/mysqld-exporter/secrets/mariadb-root-password" .Values.auth.customPasswordFiles.root }} + {{- else }} + - name: MARIADB_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "mariadb.secretName" . }} + key: mariadb-root-password + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }} + {{- else }} + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_ROOT_PASSWORD_FILE") + fi + MYSQLD_EXPORTER_PASSWORD=${password_aux} /bin/mysqld_exporter --mysqld.address=localhost:{{ .Values.secondary.containerPorts.mysql }} --mysqld.username=root --web.listen-address=:{{ .Values.metrics.containerPorts.http }} {{- range .Values.metrics.extraArgs.primary }} {{ . }} {{- end }} + {{- end }} + ports: + - name: metrics + containerPort: {{ .Values.metrics.containerPorts.http }} + {{- if not .Values.diagnosticMode.enabled }} + {{- if .Values.metrics.livenessProbe.enabled }} + livenessProbe: {{- omit .Values.metrics.livenessProbe "enabled" | toYaml | nindent 12 }} + httpGet: + path: /metrics + port: metrics + {{- end }} + {{- if .Values.metrics.readinessProbe.enabled }} + readinessProbe: {{- omit .Values.metrics.readinessProbe "enabled" | toYaml | nindent 12 }} + httpGet: + path: /metrics + port: metrics + {{- end }} + {{- end }} + {{- if .Values.metrics.resources }} + resources: {{- toYaml .Values.metrics.resources | nindent 12 }} + {{- else if ne .Values.metrics.resourcesPreset "none" }} + resources: {{- include "common.resources.preset" (dict "type" .Values.metrics.resourcesPreset) | nindent 12 }} + {{- end }} + volumeMounts: + {{- if and .Values.auth.usePasswordFiles (not .Values.auth.customPasswordFiles) }} + - name: mariadb-credentials + mountPath: /opt/bitnami/mysqld-exporter/secrets/ + {{- end }} + - name: empty-dir + mountPath: /tmp + subPath: app-tmp-dir + {{- if .Values.metrics.extraVolumeMounts.secondary }} + {{- include "common.tplvalues.render" (dict "value" .Values.metrics.extraVolumeMounts.secondary "context" $) | nindent 12 }} + {{- end }} + {{- end }} + {{- if .Values.secondary.sidecars }} + {{- include "common.tplvalues.render" (dict "value" .Values.secondary.sidecars "context" $) | nindent 8 }} + {{- end }} + volumes: + {{- if or .Values.secondary.configuration .Values.secondary.existingConfigmap }} + - name: config + configMap: + name: {{ include "mariadb.secondary.configmapName" . }} + {{- end }} + {{- if and .Values.auth.usePasswordFiles (not .Values.auth.customPasswordFiles) }} + - name: mariadb-credentials + secret: + secretName: {{ template "mariadb.secretName" . }} + items: + - key: mariadb-root-password + path: mariadb-root-password + - key: mariadb-replication-password + path: mariadb-replication-password + {{- end }} + - name: empty-dir + emptyDir: {} + {{- if .Values.secondary.extraVolumes }} + {{- include "common.tplvalues.render" (dict "value" .Values.secondary.extraVolumes "context" $) | nindent 8 }} + {{- end }} + {{- if not .Values.secondary.persistence.enabled }} + - name: data + emptyDir: {} + {{- else }} + volumeClaimTemplates: + - metadata: + name: data + {{- $claimLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.secondary.persistence.labels .Values.commonLabels ) "context" . ) }} + labels: {{- include "common.labels.matchLabels" ( dict "customLabels" $claimLabels "context" $ ) | nindent 10 }} + app.kubernetes.io/component: secondary + {{- if .Values.secondary.persistence.annotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.secondary.persistence.annotations "context" $ ) | nindent 10 }} + {{- end }} + spec: + accessModes: + {{- range .Values.secondary.persistence.accessModes }} + - {{ . | quote }} + {{- end }} + resources: + requests: + storage: {{ .Values.secondary.persistence.size | quote }} + {{ include "common.storage.class" (dict "persistence" .Values.secondary.persistence "global" .Values.global) }} + {{- if .Values.secondary.persistence.selector }} + selector: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.persistence.selector "context" $) | nindent 10 }} + {{- end -}} + {{- end }} +{{- end }} diff --git a/charts/limesurvey-1/charts/mariadb/templates/secondary/svc.yaml b/charts/limesurvey-1/charts/mariadb/templates/secondary/svc.yaml new file mode 100644 index 0000000..9c21941 --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/templates/secondary/svc.yaml @@ -0,0 +1,64 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if eq .Values.architecture "replication" }} +apiVersion: v1 +kind: Service +metadata: + name: {{ include "mariadb.secondary.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: secondary + annotations: + {{- if or .Values.secondary.service.annotations .Values.commonAnnotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.secondary.service.annotations .Values.commonAnnotations ) "context" . ) }} + {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }} + {{- end }} + {{- if and .Values.metrics.enabled .Values.metrics.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.annotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.secondary.service.type }} + {{- if and .Values.secondary.service.clusterIP (eq .Values.secondary.service.type "ClusterIP") }} + clusterIP: {{ .Values.secondary.service.clusterIP }} + {{- end }} + {{- if and .Values.secondary.service.externalTrafficPolicy (or (eq .Values.secondary.service.type "LoadBalancer") (eq .Values.secondary.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.secondary.service.externalTrafficPolicy | quote }} + {{- end }} + {{- if and (eq .Values.secondary.service.type "LoadBalancer") .Values.secondary.service.loadBalancerSourceRanges }} + loadBalancerSourceRanges: {{- toYaml .Values.secondary.service.loadBalancerSourceRanges | nindent 4 }} + {{ end }} + {{- if and (eq .Values.secondary.service.type "LoadBalancer") (not (empty .Values.secondary.service.loadBalancerIP)) }} + loadBalancerIP: {{ .Values.secondary.service.loadBalancerIP }} + {{- end }} + {{- if .Values.secondary.service.sessionAffinity }} + sessionAffinity: {{ .Values.secondary.service.sessionAffinity }} + {{- end }} + {{- if .Values.secondary.service.sessionAffinityConfig }} + sessionAffinityConfig: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.service.sessionAffinityConfig "context" $) | nindent 4 }} + {{- end }} + ports: + - name: mysql + port: {{ coalesce .Values.secondary.service.ports.mysql .Values.secondary.service.port }} + protocol: TCP + targetPort: mysql + {{- if (and (or (eq .Values.secondary.service.type "NodePort") (eq .Values.secondary.service.type "LoadBalancer")) (coalesce .Values.secondary.service.nodePorts.mysql .Values.secondary.service.nodePort)) }} + nodePort: {{ coalesce .Values.secondary.service.nodePorts.mysql .Values.secondary.service.nodePort }} + {{- else if eq .Values.secondary.service.type "ClusterIP" }} + nodePort: null + {{- end }} + {{- if and .Values.metrics.enabled (gt (.Values.secondary.service.ports.metrics | int) 0) }} + - name: metrics + port: {{ .Values.secondary.service.ports.metrics }} + protocol: TCP + targetPort: metrics + {{- end }} + {{- if .Values.secondary.service.extraPorts }} + {{- include "common.tplvalues.render" (dict "value" .Values.secondary.service.extraPorts "context" $) | nindent 4 }} + {{- end }} + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.secondary.podLabels .Values.commonLabels ) "context" . ) }} + selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: secondary +{{- end }} diff --git a/charts/limesurvey-1/charts/mariadb/templates/secrets.yaml b/charts/limesurvey-1/charts/mariadb/templates/secrets.yaml new file mode 100644 index 0000000..3cd3dcf --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/templates/secrets.yaml @@ -0,0 +1,98 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- $host := include "mariadb.primary.fullname" . }} +{{- $port := print .Values.primary.service.ports.mysql }} +{{- $rootPassword := include "common.secrets.passwords.manage" ( dict "secret" ( include "mariadb.secretName" . ) "key" "mariadb-root-password" "providedValues" ( list "auth.rootPassword" ) "context" $ ) | trimAll "\"" | b64dec }} +{{- $password := .Values.auth.password }} +{{- if and .Values.auth.username ( include "mariadb.secret.existPassword" . ) }} +{{- $password = include "common.secrets.passwords.manage" ( dict "secret" ( include "mariadb.secretName" . ) "key" "mariadb-password" "providedValues" ( list "auth.password" ) "context" $ ) | trimAll "\"" | b64dec }} +{{- else if ( and .Values.auth.username ( not .Values.auth.forcePassword ) ( empty .Values.auth.password ) ) }} +{{- $password = randAlphaNum 10 }} +{{- end }} +{{- if eq ( include "mariadb.createSecret" . ) "true" }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.names.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +type: Opaque +data: + {{- if ( not .Values.auth.forcePassword ) }} + mariadb-root-password: {{ print $rootPassword | b64enc | quote }} + {{- else }} + mariadb-root-password: {{ required "A MariaDB Root Password is required!" .Values.auth.rootPassword | b64enc | quote }} + {{- end }} + {{- if .Values.auth.username }} + {{- if ( not .Values.auth.forcePassword ) }} + mariadb-password: {{ print $password | b64enc | quote }} + {{- else }} + mariadb-password: {{ required "A MariaDB Database Password is required!" $password | b64enc | quote }} + {{- end }} + {{- end }} + {{- if eq .Values.architecture "replication" }} + {{- if ( not .Values.auth.forcePassword ) }} + mariadb-replication-password: {{ include "common.secrets.passwords.manage" ( dict "secret" ( include "common.names.fullname" . ) "key" "mariadb-replication-password" "providedValues" ( list "auth.replicationPassword" ) "context" $ ) }} + {{- else }} + mariadb-replication-password: {{ required "A MariaDB Replication Password is required!" .Values.auth.replicationPassword | b64enc | quote }} + {{- end }} + {{- end }} +{{- end }} + +{{- if .Values.serviceBindings.enabled }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.names.fullname" . }}-svcbind-root + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +type: servicebinding.io/mysql +data: + provider: {{ print "bitnami" | b64enc | quote }} + type: {{ print "mysql" | b64enc | quote }} + host: {{ print $host | b64enc | quote }} + port: {{ print $port | b64enc | quote }} + username: {{ print "root" | b64enc | quote }} + password: {{ print $rootPassword | b64enc | quote }} + uri: {{ printf "mysql://root:%s@%s:%s" $rootPassword $host $port | b64enc | quote }} + +{{- if .Values.auth.username }} +{{- $database := .Values.auth.database }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.names.fullname" . }}-svcbind-custom-user + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +type: servicebinding.io/mysql +data: + provider: {{ print "bitnami" | b64enc | quote }} + type: {{ print "mysql" | b64enc | quote }} + host: {{ print $host | b64enc | quote }} + port: {{ print $port | b64enc | quote }} + username: {{ print .Values.auth.username | b64enc | quote }} + {{- if $database }} + database: {{ print $database | b64enc | quote }} + {{- end }} + {{- if and .Values.auth.forcePassword ( empty $password ) }} + password: {{ required "A MariaDB Database Password is required!" $password | b64enc | quote }} + {{- else }} + password: {{ print $password | b64enc | quote }} + {{- end }} + uri: {{ printf "mysql://%s:%s@%s:%s/%s" .Values.auth.username $password $host $port $database | b64enc | quote }} +{{- end }} +{{- end }} diff --git a/charts/limesurvey-1/charts/mariadb/templates/serviceaccount.yaml b/charts/limesurvey-1/charts/mariadb/templates/serviceaccount.yaml new file mode 100644 index 0000000..15cd63f --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/templates/serviceaccount.yaml @@ -0,0 +1,18 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if .Values.serviceAccount.create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "mariadb.serviceAccountName" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if or .Values.serviceAccount.annotations .Values.commonAnnotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.serviceAccount.annotations .Values.commonAnnotations ) "context" . ) }} + annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }} + {{- end }} +automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }} +{{- end }} diff --git a/charts/limesurvey-1/charts/mariadb/templates/servicemonitor.yaml b/charts/limesurvey-1/charts/mariadb/templates/servicemonitor.yaml new file mode 100644 index 0000000..67f2f2c --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/templates/servicemonitor.yaml @@ -0,0 +1,44 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ include "common.names.fullname" . }} + namespace: {{ default .Release.Namespace .Values.metrics.serviceMonitor.namespace | quote }} + {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.serviceMonitor.labels .Values.commonLabels ) "context" . ) }} + labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + jobLabel: {{ .Values.metrics.serviceMonitor.jobLabel | quote }} + endpoints: + - port: metrics + {{- if .Values.metrics.serviceMonitor.interval }} + interval: {{ .Values.metrics.serviceMonitor.interval }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.scrapeTimeout }} + scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.honorLabels }} + honorLabels: {{ .Values.metrics.serviceMonitor.honorLabels }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.metricRelabelings }} + metricRelabelings: {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.serviceMonitor.metricRelabelings "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.relabelings }} + relabelings: {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.serviceMonitor.relabelings "context" $) | nindent 8 }} + {{- end }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace | quote }} + selector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 6 }} + {{- if .Values.metrics.serviceMonitor.selector }} + {{- include "common.tplvalues.render" (dict "value" .Values.metrics.serviceMonitor.selector "context" $) | nindent 6 }} + {{- end }} +{{- end }} diff --git a/charts/limesurvey-1/charts/mariadb/values.schema.json b/charts/limesurvey-1/charts/mariadb/values.schema.json new file mode 100644 index 0000000..500c4eb --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/values.schema.json @@ -0,0 +1,176 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "architecture": { + "type": "string", + "title": "MariaDB architecture", + "form": true, + "description": "Allowed values: `standalone` or `replication`" + }, + "auth": { + "type": "object", + "title": "Authentication configuration", + "form": true, + "properties": { + "rootPassword": { + "type": "string", + "title": "MariaDB root password", + "form": true, + "description": "Defaults to a random 10-character alphanumeric string if not set" + }, + "database": { + "type": "string", + "title": "MariaDB custom database", + "description": "Name of the custom database to be created during the 1st initialization of MariaDB", + "form": true + }, + "username": { + "type": "string", + "title": "MariaDB custom user", + "description": "Name of the custom user to be created during the 1st initialization of MariaDB. This user only has permissions on the MariaDB custom database", + "form": true + }, + "password": { + "type": "string", + "title": "Password for MariaDB custom user", + "description": "Defaults to a random 10-character alphanumeric string if not set", + "form": true, + "hidden": { + "value": false, + "path": "usePassword" + } + }, + "replicationUser": { + "type": "string", + "title": "MariaDB replication user", + "description": "Name of user used to manage replication.", + "form": true, + "hidden": { + "value": "standalone", + "path": "architecture" + } + }, + "replicationPassword": { + "type": "string", + "title": "Password for MariaDB replication user", + "description": "Defaults to a random 10-character alphanumeric string if not set", + "form": true, + "hidden": { + "value": "standalone", + "path": "architecture" + } + } + } + }, + "primary": { + "type": "object", + "title": "Primary replicas settings", + "form": true, + "properties": { + "persistence": { + "type": "object", + "title": "Persistence for primary replicas", + "form": true, + "properties": { + "enabled": { + "type": "boolean", + "form": true, + "title": "Enable persistence", + "description": "Enable persistence using Persistent Volume Claims" + }, + "size": { + "type": "string", + "title": "Persistent Volume Size", + "form": true, + "render": "slider", + "sliderMin": 1, + "sliderMax": 100, + "sliderUnit": "Gi", + "hidden": { + "value": false, + "path": "persistence/enabled" + } + } + } + } + } + }, + "secondary": { + "type": "object", + "title": "Secondary replicas settings", + "form": true, + "hidden": { + "value": false, + "path": "replication/enabled" + }, + "properties": { + "persistence": { + "type": "object", + "title": "Persistence for secondary replicas", + "form": true, + "properties": { + "enabled": { + "type": "boolean", + "form": true, + "title": "Enable persistence", + "description": "Enable persistence using Persistent Volume Claims" + }, + "size": { + "type": "string", + "title": "Persistent Volume Size", + "form": true, + "render": "slider", + "sliderMin": 1, + "sliderMax": 100, + "sliderUnit": "Gi", + "hidden": { + "value": false, + "path": "persistence/enabled" + } + } + } + } + } + }, + "volumePermissions": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "form": true, + "title": "Enable Init Containers", + "description": "Use an init container to set required folder permissions on the data volume before mounting it in the final destination" + } + } + }, + "metrics": { + "type": "object", + "form": true, + "title": "Prometheus metrics details", + "properties": { + "enabled": { + "type": "boolean", + "title": "Create Prometheus metrics exporter", + "description": "Create a side-car container to expose Prometheus metrics", + "form": true + }, + "serviceMonitor": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Create Prometheus Operator ServiceMonitor", + "description": "Create a ServiceMonitor to track metrics using Prometheus Operator", + "form": true, + "hidden": { + "value": false, + "path": "metrics/enabled" + } + } + } + } + } + } + } +} diff --git a/charts/limesurvey-1/charts/mariadb/values.yaml b/charts/limesurvey-1/charts/mariadb/values.yaml new file mode 100644 index 0000000..7c869fb --- /dev/null +++ b/charts/limesurvey-1/charts/mariadb/values.yaml @@ -0,0 +1,1369 @@ +# Copyright VMware, Inc. +# SPDX-License-Identifier: APACHE-2.0 + +## @section Global parameters +## Global Docker image parameters +## Please, note that this will override the image parameters, including dependencies, configured to use the global value +## Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass +## + +## @param global.imageRegistry Global Docker Image registry +## @param global.imagePullSecrets Global Docker registry secret names as an array +## @param global.storageClass Global storage class for dynamic provisioning +## +global: + imageRegistry: "" + ## E.g. + ## imagePullSecrets: + ## - myRegistryKeySecretName + ## + imagePullSecrets: [] + storageClass: "" + ## Compatibility adaptations for Kubernetes platforms + ## + compatibility: + ## Compatibility adaptations for Openshift + ## + openshift: + ## @param global.compatibility.openshift.adaptSecurityContext Adapt the securityContext sections of the deployment to make them compatible with Openshift restricted-v2 SCC: remove runAsUser, runAsGroup and fsGroup and let the platform use their allowed default IDs. Possible values: auto (apply if the detected running cluster is Openshift), force (perform the adaptation always), disabled (do not perform adaptation) + ## + adaptSecurityContext: auto +## @section Common parameters +## + +## @param kubeVersion Force target Kubernetes version (using Helm capabilities if not set) +## +kubeVersion: "" +## @param nameOverride String to partially override mariadb.fullname +## +nameOverride: "" +## @param fullnameOverride String to fully override mariadb.fullname +## +fullnameOverride: "" +## @param clusterDomain Default Kubernetes cluster domain +## +clusterDomain: cluster.local +## @param commonAnnotations Common annotations to add to all MariaDB resources (sub-charts are not considered) +## +commonAnnotations: {} +## @param commonLabels Common labels to add to all MariaDB resources (sub-charts are not considered) +## +commonLabels: {} +## @param schedulerName Name of the scheduler (other than default) to dispatch pods +## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ +## +schedulerName: "" +## @param runtimeClassName Name of the Runtime Class for all MariaDB pods +## ref: https://kubernetes.io/docs/concepts/containers/runtime-class/ +## +runtimeClassName: "" +## @param extraDeploy Array of extra objects to deploy with the release (evaluated as a template) +## +extraDeploy: [] +## Enable diagnostic mode in the deployment +## +diagnosticMode: + ## @param diagnosticMode.enabled Enable diagnostic mode (all probes will be disabled and the command will be overridden) + ## + enabled: false + ## @param diagnosticMode.command Command to override all containers in the deployment + ## + command: + - sleep + ## @param diagnosticMode.args Args to override all containers in the deployment + ## + args: + - infinity +## @param serviceBindings.enabled Create secret for service binding (Experimental) +## Ref: https://servicebinding.io/service-provider/ +## +serviceBindings: + enabled: false +## @section MariaDB common parameters +## + +## Bitnami MariaDB image +## ref: https://hub.docker.com/r/bitnami/mariadb/tags/ +## @param image.registry [default: REGISTRY_NAME] MariaDB image registry +## @param image.repository [default: REPOSITORY_NAME/mariadb] MariaDB image repository +## @skip image.tag MariaDB image tag (immutable tags are recommended) +## @param image.digest MariaDB image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag +## @param image.pullPolicy MariaDB image pull policy +## @param image.pullSecrets Specify docker-registry secret names as an array +## @param image.debug Specify if debug logs should be enabled +## +image: + registry: docker.io + repository: bitnami/mariadb + tag: 11.3.2-debian-12-r1 + digest: "" + ## Specify a imagePullPolicy + ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' + ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images + ## + 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/ + ## Example: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + pullSecrets: [] + ## Set to true if you would like to see extra information on logs + ## It turns BASH and/or NAMI debugging in the image + ## + debug: false +## @param architecture MariaDB architecture (`standalone` or `replication`) +## +architecture: standalone +## MariaDB Authentication parameters +## +auth: + ## @param auth.rootPassword Password for the `root` user. Ignored if existing secret is provided. + ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mariadb#setting-the-root-password-on-first-run + ## + rootPassword: "" + ## @param auth.database Name for a custom database to create + ## ref: https://github.com/bitnami/containers/blob/main/bitnami/mariadb/README.md#creating-a-database-on-first-run + ## + database: my_database + ## @param auth.username Name for a custom user to create + ## ref: https://github.com/bitnami/containers/blob/main/bitnami/mariadb/README.md#creating-a-database-user-on-first-run + ## + username: "" + ## @param auth.password Password for the new user. Ignored if existing secret is provided + ## + password: "" + ## @param auth.replicationUser MariaDB replication user + ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mariadb#setting-up-a-replication-cluster + ## + replicationUser: replicator + ## @param auth.replicationPassword MariaDB replication user password. Ignored if existing secret is provided + ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mariadb#setting-up-a-replication-cluster + ## + replicationPassword: "" + ## @param auth.existingSecret Use existing secret for password details (`auth.rootPassword`, `auth.password`, `auth.replicationPassword` will be ignored and picked up from this secret). The secret has to contain the keys `mariadb-root-password`, `mariadb-replication-password` and `mariadb-password` + ## + existingSecret: "" + ## @param auth.forcePassword Force users to specify required passwords + ## + forcePassword: false + ## @param auth.usePasswordFiles Mount credentials as files instead of using environment variables + ## + usePasswordFiles: false + ## @param auth.customPasswordFiles Use custom password files when `auth.usePasswordFiles` is set to `true`. Define path for keys `root` and `user`, also define `replicator` if `architecture` is set to `replication` + ## Example: + ## customPasswordFiles: + ## root: /vault/secrets/mariadb-root + ## user: /vault/secrets/mariadb-user + ## replicator: /vault/secrets/mariadb-replicator + ## + customPasswordFiles: {} +## @param initdbScripts Dictionary of initdb scripts +## Specify dictionary of scripts to be run at first boot +## Example: +## initdbScripts: +## my_init_script.sh: | +## #!/bin/bash +## echo "Do something." +## +initdbScripts: {} +## @param initdbScriptsConfigMap ConfigMap with the initdb scripts (Note: Overrides `initdbScripts`) +## +initdbScriptsConfigMap: "" +## @section MariaDB Primary parameters +## + +## Mariadb Primary parameters +## +primary: + ## @param primary.name Name of the primary database (eg primary, master, leader, ...) + ## + name: primary + ## @param primary.command Override default container command on MariaDB Primary container(s) (useful when using custom images) + ## + command: [] + ## @param primary.args Override default container args on MariaDB Primary container(s) (useful when using custom images) + ## + args: [] + ## @param primary.lifecycleHooks for the MariaDB Primary container(s) to automate configuration before or after startup + ## + lifecycleHooks: {} + ## @param primary.automountServiceAccountToken Mount Service Account token in pod + ## + automountServiceAccountToken: false + ## @param primary.hostAliases Add deployment host aliases + ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ + ## + hostAliases: [] + ## @param primary.containerPorts.mysql Container port for mysql + ## + containerPorts: + mysql: 3306 + ## @param primary.configuration [string] MariaDB Primary configuration to be injected as ConfigMap + ## ref: https://mysql.com/kb/en/mysql/configuring-mysql-with-mycnf/#example-of-configuration-file + ## + configuration: |- + [mysqld] + skip-name-resolve + explicit_defaults_for_timestamp + basedir=/opt/bitnami/mariadb + datadir=/bitnami/mariadb/data + plugin_dir=/opt/bitnami/mariadb/plugin + port={{ .Values.primary.containerPorts.mysql }} + socket=/opt/bitnami/mariadb/tmp/mysql.sock + tmpdir=/opt/bitnami/mariadb/tmp + max_allowed_packet=16M + bind-address=* + pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid + log-error=/opt/bitnami/mariadb/logs/mysqld.log + character-set-server=UTF8 + collation-server=utf8_general_ci + slow_query_log=0 + long_query_time=10.0 + + [client] + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + default-character-set=UTF8 + plugin_dir=/opt/bitnami/mariadb/plugin + + [manager] + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid + ## @param primary.existingConfigmap Name of existing ConfigMap with MariaDB Primary configuration. + ## NOTE: When it's set the 'configuration' parameter is ignored + ## + existingConfigmap: "" + ## @param primary.updateStrategy.type MariaDB primary statefulset strategy type + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies + ## + updateStrategy: + ## StrategyType + ## Can be set to RollingUpdate or OnDelete + ## + type: RollingUpdate + ## @param primary.rollingUpdatePartition Partition update strategy for Mariadb Primary statefulset + ## https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#partitions + ## + rollingUpdatePartition: "" + ## @param primary.podAnnotations Additional pod annotations for MariaDB primary pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + ## @param primary.podLabels Extra labels for MariaDB primary pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + ## + podLabels: {} + ## @param primary.podAffinityPreset MariaDB primary pod affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAffinityPreset: "" + ## @param primary.podAntiAffinityPreset MariaDB primary pod anti-affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` + ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAntiAffinityPreset: soft + ## Mariadb Primary node affinity preset + ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity + ## + nodeAffinityPreset: + ## @param primary.nodeAffinityPreset.type MariaDB primary node affinity preset type. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` + ## + type: "" + ## @param primary.nodeAffinityPreset.key MariaDB primary node label key to match Ignored if `primary.affinity` is set. + ## E.g. + ## key: "kubernetes.io/e2e-az-name" + ## + key: "" + ## @param primary.nodeAffinityPreset.values MariaDB primary node label values to match. Ignored if `primary.affinity` is set. + ## E.g. + ## values: + ## - e2e-az1 + ## - e2e-az2 + ## + values: [] + ## @param primary.affinity Affinity for MariaDB primary pods assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## Note: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set + ## + affinity: {} + ## @param primary.nodeSelector Node labels for MariaDB primary pods assignment + ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ + ## + nodeSelector: {} + ## @param primary.tolerations Tolerations for MariaDB primary pods assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + ## @param primary.schedulerName Name of the k8s scheduler (other than default) + ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ + ## + schedulerName: "" + ## @param primary.podManagementPolicy podManagementPolicy to manage scaling operation of MariaDB primary pods + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-management-policies + ## + podManagementPolicy: "" + ## @param primary.topologySpreadConstraints Topology Spread Constraints for MariaDB primary pods assignment + ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ + ## E.g. + ## topologySpreadConstraints: + ## - maxSkew: 1 + ## topologyKey: topology.kubernetes.io/zone + ## whenUnsatisfiable: DoNotSchedule + ## + topologySpreadConstraints: [] + ## @param primary.priorityClassName Priority class for MariaDB primary pods assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/ + ## + priorityClassName: "" + ## @param primary.runtimeClassName Runtime Class for MariaDB primary pods + ## Ref: https://kubernetes.io/docs/concepts/containers/runtime-class/ + ## + runtimeClassName: "" + ## MariaDB primary Pod security context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param primary.podSecurityContext.enabled Enable security context for MariaDB primary pods + ## @param primary.podSecurityContext.fsGroupChangePolicy Set filesystem group change policy + ## @param primary.podSecurityContext.sysctls Set kernel settings using the sysctl interface + ## @param primary.podSecurityContext.supplementalGroups Set filesystem extra groups + ## @param primary.podSecurityContext.fsGroup Group ID for the mounted volumes' filesystem + ## + podSecurityContext: + enabled: true + fsGroupChangePolicy: Always + sysctls: [] + supplementalGroups: [] + fsGroup: 1001 + ## MariaDB primary container security context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container + ## @param primary.containerSecurityContext.enabled MariaDB primary container securityContext + ## @param primary.containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container + ## @param primary.containerSecurityContext.runAsUser User ID for the MariaDB primary container + ## @param primary.containerSecurityContext.runAsGroup Group ID for the MariaDB primary container + ## @param primary.containerSecurityContext.runAsNonRoot Set primary container's Security Context runAsNonRoot + ## @param primary.containerSecurityContext.privileged Set primary container's Security Context privileged + ## @param primary.containerSecurityContext.allowPrivilegeEscalation Set primary container's Security Context allowPrivilegeEscalation + ## @param primary.containerSecurityContext.readOnlyRootFilesystem Set container's Security Context readOnlyRootFilesystem + ## @param primary.containerSecurityContext.capabilities.drop List of capabilities to be dropped + ## @param primary.containerSecurityContext.seccompProfile.type Set container's Security Context seccomp profile + ## + containerSecurityContext: + enabled: true + seLinuxOptions: {} + runAsUser: 1001 + runAsGroup: 1001 + runAsNonRoot: true + privileged: false + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + capabilities: + drop: ["ALL"] + seccompProfile: + type: "RuntimeDefault" + ## MariaDB primary container's resource requests and limits + ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + ## We usually recommend not to specify default resources and to leave this as a conscious + ## choice for the user. This also increases chances charts run on environments with little + ## resources, such as Minikube. If you do want to specify resources, uncomment the following + ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. + ## @param primary.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if primary.resources is set (primary.resources is recommended for production). + ## More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15 + ## + resourcesPreset: "micro" + ## @param primary.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads) + ## Example: + ## resources: + ## requests: + ## cpu: 2 + ## memory: 512Mi + ## limits: + ## cpu: 3 + ## memory: 1024Mi + ## + resources: {} + ## Configure extra options for MariaDB primary containers' liveness, readiness and startup probes + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes) + ## @param primary.startupProbe.enabled Enable startupProbe + ## @param primary.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe + ## @param primary.startupProbe.periodSeconds Period seconds for startupProbe + ## @param primary.startupProbe.timeoutSeconds Timeout seconds for startupProbe + ## @param primary.startupProbe.failureThreshold Failure threshold for startupProbe + ## @param primary.startupProbe.successThreshold Success threshold for startupProbe + ## + startupProbe: + enabled: false + initialDelaySeconds: 120 + periodSeconds: 15 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + ## Configure extra options for liveness probe + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param primary.livenessProbe.enabled Enable livenessProbe + ## @param primary.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe + ## @param primary.livenessProbe.periodSeconds Period seconds for livenessProbe + ## @param primary.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + ## @param primary.livenessProbe.failureThreshold Failure threshold for livenessProbe + ## @param primary.livenessProbe.successThreshold Success threshold for livenessProbe + ## + livenessProbe: + enabled: true + initialDelaySeconds: 120 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 3 + successThreshold: 1 + ## @param primary.readinessProbe.enabled Enable readinessProbe + ## @param primary.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe + ## @param primary.readinessProbe.periodSeconds Period seconds for readinessProbe + ## @param primary.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe + ## @param primary.readinessProbe.failureThreshold Failure threshold for readinessProbe + ## @param primary.readinessProbe.successThreshold Success threshold for readinessProbe + ## + readinessProbe: + enabled: true + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 3 + successThreshold: 1 + ## @param primary.customStartupProbe Override default startup probe for MariaDB primary containers + ## + customStartupProbe: {} + ## @param primary.customLivenessProbe Override default liveness probe for MariaDB primary containers + ## + customLivenessProbe: {} + ## @param primary.customReadinessProbe Override default readiness probe for MariaDB primary containers + ## + customReadinessProbe: {} + ## @param primary.startupWaitOptions Override default builtin startup wait check options for MariaDB primary containers + ## `bitnami/mariadb` Docker image has built-in startup check mechanism, + ## which periodically checks if MariaDB service has started up and stops it + ## if all checks have failed after X tries. Use these to control these checks. + ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mariadb/pull/240 + ## Example (with default options): + ## startupWaitOptions: + ## retries: 300 + ## waitTime: 2 + ## + startupWaitOptions: {} + ## @param primary.extraFlags MariaDB primary additional command line flags + ## Can be used to specify command line flags, for example: + ## E.g. + ## extraFlags: "--max-connect-errors=1000 --max_connections=155" + ## + extraFlags: "" + ## @param primary.extraEnvVars Extra environment variables to be set on MariaDB primary containers + ## E.g. + ## extraEnvVars: + ## - name: TZ + ## value: "Europe/Paris" + ## + extraEnvVars: [] + ## @param primary.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for MariaDB primary containers + ## + extraEnvVarsCM: "" + ## @param primary.extraEnvVarsSecret Name of existing Secret containing extra env vars for MariaDB primary containers + ## + extraEnvVarsSecret: "" + ## Enable persistence using Persistent Volume Claims + ## ref: https://kubernetes.io/docs/concepts/storage/persistent-volumes/ + ## + persistence: + ## @param primary.persistence.enabled Enable persistence on MariaDB primary replicas using a `PersistentVolumeClaim`. If false, use emptyDir + ## + enabled: true + ## @param primary.persistence.existingClaim Name of an existing `PersistentVolumeClaim` for MariaDB primary replicas + ## NOTE: When it's set the rest of persistence parameters are ignored + ## + existingClaim: "" + ## @param primary.persistence.subPath Subdirectory of the volume to mount at + ## + subPath: "" + ## @param primary.persistence.storageClass MariaDB primary persistent volume storage Class + ## If defined, storageClassName: + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + ## + storageClass: "" + ## @param primary.persistence.labels Labels for the PVC + ## + labels: {} + ## @param primary.persistence.annotations MariaDB primary persistent volume claim annotations + ## + annotations: {} + ## @param primary.persistence.accessModes MariaDB primary persistent volume access Modes + ## + accessModes: + - ReadWriteOnce + ## @param primary.persistence.size MariaDB primary persistent volume size + ## + size: 8Gi + ## @param primary.persistence.selector Selector to match an existing Persistent Volume + ## selector: + ## matchLabels: + ## app: my-app + ## + selector: {} + ## @param primary.extraVolumes Optionally specify extra list of additional volumes to the MariaDB Primary pod(s) + ## + extraVolumes: [] + ## @param primary.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the MariaDB Primary container(s) + ## + extraVolumeMounts: [] + ## @param primary.initContainers Add additional init containers for the MariaDB Primary pod(s) + ## + initContainers: [] + ## @param primary.sidecars Add additional sidecar containers for the MariaDB Primary pod(s) + ## + sidecars: [] + ## MariaDB Primary Service parameters + ## + service: + ## @param primary.service.type MariaDB Primary Kubernetes service type + ## + type: ClusterIP + ports: + ## @param primary.service.ports.mysql MariaDB Primary Kubernetes service port for MariaDB + ## + mysql: 3306 + ## @param primary.service.ports.metrics MariaDB Primary Kubernetes service port for metrics + ## + metrics: 9104 + ## @param primary.service.nodePorts.mysql MariaDB Primary Kubernetes service node port + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + ## + nodePorts: + mysql: "" + ## @param primary.service.clusterIP MariaDB Primary Kubernetes service clusterIP IP + ## + clusterIP: "" + ## @param primary.service.loadBalancerIP MariaDB Primary loadBalancerIP if service type is `LoadBalancer` + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer + ## + loadBalancerIP: "" + ## @param primary.service.externalTrafficPolicy Enable client source IP preservation + ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster + ## @param primary.service.loadBalancerSourceRanges Address that are allowed when MariaDB Primary service is LoadBalancer + ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service + ## E.g. + ## loadBalancerSourceRanges: + ## - 10.10.10.0/24 + ## + loadBalancerSourceRanges: [] + ## @param primary.service.extraPorts Extra ports to expose (normally used with the `sidecar` value) + ## + extraPorts: [] + ## @param primary.service.annotations Provide any additional annotations which may be required + ## + annotations: {} + ## @param primary.service.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP" + ## If "ClientIP", consecutive client requests will be directed to the same Pod + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + ## + sessionAffinity: None + ## @param primary.service.sessionAffinityConfig Additional settings for the sessionAffinity + ## sessionAffinityConfig: + ## clientIP: + ## timeoutSeconds: 300 + ## + sessionAffinityConfig: {} + ## MariaDB primary Pod Disruption Budget configuration + ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/ + ## + pdb: + ## @param primary.pdb.create Enable/disable a Pod Disruption Budget creation for MariaDB primary pods + ## + create: false + ## @param primary.pdb.minAvailable Minimum number/percentage of MariaDB primary pods that must still be available after the eviction + ## + minAvailable: 1 + ## @param primary.pdb.maxUnavailable Maximum number/percentage of MariaDB primary pods that can be unavailable after the eviction + ## + maxUnavailable: "" + ## @param primary.revisionHistoryLimit Maximum number of revisions that will be maintained in the StatefulSet + ## + revisionHistoryLimit: 10 +## @section MariaDB Secondary parameters +## + +## Mariadb Secondary parameters +## +secondary: + ## @param secondary.name Name of the secondary database (eg secondary, slave, ...) + ## + name: secondary + ## @param secondary.replicaCount Number of MariaDB secondary replicas + ## + replicaCount: 1 + ## @param secondary.command Override default container command on MariaDB Secondary container(s) (useful when using custom images) + ## + command: [] + ## @param secondary.args Override default container args on MariaDB Secondary container(s) (useful when using custom images) + ## + args: [] + ## @param secondary.lifecycleHooks for the MariaDB Secondary container(s) to automate configuration before or after startup + ## + lifecycleHooks: {} + ## @param secondary.automountServiceAccountToken Mount Service Account token in pod + ## + automountServiceAccountToken: false + ## @param secondary.hostAliases Add deployment host aliases + ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ + ## + hostAliases: [] + ## @param secondary.containerPorts.mysql Container port for mysql + ## + containerPorts: + mysql: 3306 + ## @param secondary.configuration [string] MariaDB Secondary configuration to be injected as ConfigMap + ## ref: https://mysql.com/kb/en/mysql/configuring-mysql-with-mycnf/#example-of-configuration-file + ## + configuration: |- + [mysqld] + skip-name-resolve + explicit_defaults_for_timestamp + basedir=/opt/bitnami/mariadb + datadir=/bitnami/mariadb/data + port={{ .Values.secondary.containerPorts.mysql }} + socket=/opt/bitnami/mariadb/tmp/mysql.sock + tmpdir=/opt/bitnami/mariadb/tmp + max_allowed_packet=16M + bind-address=0.0.0.0 + pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid + log-error=/opt/bitnami/mariadb/logs/mysqld.log + character-set-server=UTF8 + collation-server=utf8_general_ci + slow_query_log=0 + long_query_time=10.0 + + [client] + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + default-character-set=UTF8 + + [manager] + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid + ## @param secondary.existingConfigmap Name of existing ConfigMap with MariaDB Secondary configuration. + ## NOTE: When it's set the 'configuration' parameter is ignored + ## + existingConfigmap: "" + ## @param secondary.updateStrategy.type MariaDB secondary statefulset strategy type + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies + ## + updateStrategy: + ## StrategyType + ## Can be set to RollingUpdate or OnDelete + ## + type: RollingUpdate + ## @param secondary.rollingUpdatePartition Partition update strategy for Mariadb Secondary statefulset + ## https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#partitions + ## + rollingUpdatePartition: "" + ## @param secondary.podAnnotations Additional pod annotations for MariaDB secondary pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + ## @param secondary.podLabels Extra labels for MariaDB secondary pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + ## + podLabels: {} + ## @param secondary.podAffinityPreset MariaDB secondary pod affinity preset. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAffinityPreset: "" + ## @param secondary.podAntiAffinityPreset MariaDB secondary pod anti-affinity preset. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard` + ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAntiAffinityPreset: soft + ## Mariadb Secondary node affinity preset + ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity + ## + nodeAffinityPreset: + ## @param secondary.nodeAffinityPreset.type MariaDB secondary node affinity preset type. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard` + ## + type: "" + ## @param secondary.nodeAffinityPreset.key MariaDB secondary node label key to match Ignored if `secondary.affinity` is set. + ## E.g. + ## key: "kubernetes.io/e2e-az-name" + ## + key: "" + ## @param secondary.nodeAffinityPreset.values MariaDB secondary node label values to match. Ignored if `secondary.affinity` is set. + ## E.g. + ## values: + ## - e2e-az1 + ## - e2e-az2 + ## + values: [] + ## @param secondary.affinity Affinity for MariaDB secondary pods assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## Note: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set + ## + affinity: {} + ## @param secondary.nodeSelector Node labels for MariaDB secondary pods assignment + ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ + ## + nodeSelector: {} + ## @param secondary.tolerations Tolerations for MariaDB secondary pods assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + ## @param secondary.topologySpreadConstraints Topology Spread Constraints for MariaDB secondary pods assignment + ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ + ## E.g. + ## topologySpreadConstraints: + ## - maxSkew: 1 + ## topologyKey: topology.kubernetes.io/zone + ## whenUnsatisfiable: DoNotSchedule + ## + topologySpreadConstraints: [] + ## @param secondary.priorityClassName Priority class for MariaDB secondary pods assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/ + ## + priorityClassName: "" + ## @param secondary.runtimeClassName Runtime Class for MariaDB secondary pods + ## Ref: https://kubernetes.io/docs/concepts/containers/runtime-class/ + ## + runtimeClassName: "" + ## @param secondary.schedulerName Name of the k8s scheduler (other than default) + ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ + ## + schedulerName: "" + ## @param secondary.podManagementPolicy podManagementPolicy to manage scaling operation of MariaDB secondary pods + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-management-policies + ## + podManagementPolicy: "" + ## MariaDB secondary Pod security context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param secondary.podSecurityContext.enabled Enable security context for MariaDB secondary pods + ## @param secondary.podSecurityContext.fsGroupChangePolicy Set filesystem group change policy + ## @param secondary.podSecurityContext.sysctls Set kernel settings using the sysctl interface + ## @param secondary.podSecurityContext.supplementalGroups Set filesystem extra groups + ## @param secondary.podSecurityContext.fsGroup Group ID for the mounted volumes' filesystem + ## + podSecurityContext: + enabled: true + fsGroupChangePolicy: Always + sysctls: [] + supplementalGroups: [] + fsGroup: 1001 + ## MariaDB secondary container security context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container + ## @param secondary.containerSecurityContext.enabled MariaDB secondary container securityContext + ## @param secondary.containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container + ## @param secondary.containerSecurityContext.runAsUser User ID for the MariaDB secondary container + ## @param secondary.containerSecurityContext.runAsGroup Group ID for the MariaDB secondary container + ## @param secondary.containerSecurityContext.runAsNonRoot Set secondary container's Security Context runAsNonRoot + ## @param secondary.containerSecurityContext.privileged Set secondary container's Security Context privileged + ## @param secondary.containerSecurityContext.allowPrivilegeEscalation Set secondary container's Security Context allowPrivilegeEscalation + ## @param secondary.containerSecurityContext.readOnlyRootFilesystem Set container's Security Context readOnlyRootFilesystem + ## @param secondary.containerSecurityContext.capabilities.drop List of capabilities to be dropped + ## @param secondary.containerSecurityContext.seccompProfile.type Set container's Security Context seccomp profile + ## + containerSecurityContext: + enabled: true + seLinuxOptions: {} + runAsUser: 1001 + runAsGroup: 1001 + runAsNonRoot: true + privileged: false + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + capabilities: + drop: ["ALL"] + seccompProfile: + type: "RuntimeDefault" + ## MariaDB secondary container's resource requests and limits + ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + ## We usually recommend not to specify default resources and to leave this as a conscious + ## choice for the user. This also increases chances charts run on environments with little + ## resources, such as Minikube. If you do want to specify resources, uncomment the following + ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. + ## @param secondary.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if secondary.resources is set (secondary.resources is recommended for production). + ## More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15 + ## + resourcesPreset: "micro" + ## @param secondary.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads) + ## Example: + ## resources: + ## requests: + ## cpu: 2 + ## memory: 512Mi + ## limits: + ## cpu: 3 + ## memory: 1024Mi + ## + resources: {} + ## Configure extra options for MariaDB Secondary containers' liveness, readiness and startup probes + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes) + ## @param secondary.startupProbe.enabled Enable startupProbe + ## @param secondary.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe + ## @param secondary.startupProbe.periodSeconds Period seconds for startupProbe + ## @param secondary.startupProbe.timeoutSeconds Timeout seconds for startupProbe + ## @param secondary.startupProbe.failureThreshold Failure threshold for startupProbe + ## @param secondary.startupProbe.successThreshold Success threshold for startupProbe + ## + startupProbe: + enabled: false + initialDelaySeconds: 120 + periodSeconds: 15 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + ## Configure extra options for liveness probe + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param secondary.livenessProbe.enabled Enable livenessProbe + ## @param secondary.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe + ## @param secondary.livenessProbe.periodSeconds Period seconds for livenessProbe + ## @param secondary.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + ## @param secondary.livenessProbe.failureThreshold Failure threshold for livenessProbe + ## @param secondary.livenessProbe.successThreshold Success threshold for livenessProbe + ## + livenessProbe: + enabled: true + initialDelaySeconds: 120 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 3 + successThreshold: 1 + ## @param secondary.readinessProbe.enabled Enable readinessProbe + ## @param secondary.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe + ## @param secondary.readinessProbe.periodSeconds Period seconds for readinessProbe + ## @param secondary.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe + ## @param secondary.readinessProbe.failureThreshold Failure threshold for readinessProbe + ## @param secondary.readinessProbe.successThreshold Success threshold for readinessProbe + ## + readinessProbe: + enabled: true + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 3 + successThreshold: 1 + ## @param secondary.customStartupProbe Override default startup probe for MariaDB secondary containers + ## + customStartupProbe: {} + ## @param secondary.customLivenessProbe Override default liveness probe for MariaDB secondary containers + ## + customLivenessProbe: {} + ## @param secondary.customReadinessProbe Override default readiness probe for MariaDB secondary containers + ## + customReadinessProbe: {} + ## @param secondary.startupWaitOptions Override default builtin startup wait check options for MariaDB secondary containers + ## `bitnami/mariadb` Docker image has built-in startup check mechanism, + ## which periodically checks if MariaDB service has started up and stops it + ## if all checks have failed after X tries. Use these to control these checks. + ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mariadb/pull/240 + ## Example (with default options): + ## startupWaitOptions: + ## retries: 300 + ## waitTime: 2 + ## + startupWaitOptions: {} + ## @param secondary.extraFlags MariaDB secondary additional command line flags + ## Can be used to specify command line flags, for example: + ## E.g. + ## extraFlags: "--max-connect-errors=1000 --max_connections=155" + ## + extraFlags: "" + ## @param secondary.extraEnvVars Extra environment variables to be set on MariaDB secondary containers + ## E.g. + ## extraEnvVars: + ## - name: TZ + ## value: "Europe/Paris" + ## + extraEnvVars: [] + ## @param secondary.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for MariaDB secondary containers + ## + extraEnvVarsCM: "" + ## @param secondary.extraEnvVarsSecret Name of existing Secret containing extra env vars for MariaDB secondary containers + ## + extraEnvVarsSecret: "" + ## Enable persistence using Persistent Volume Claims + ## ref: https://kubernetes.io/docs/concepts/storage/persistent-volumes/ + ## + persistence: + ## @param secondary.persistence.enabled Enable persistence on MariaDB secondary replicas using a `PersistentVolumeClaim` + ## + enabled: true + ## @param secondary.persistence.subPath Subdirectory of the volume to mount at + ## + subPath: "" + ## @param secondary.persistence.storageClass MariaDB secondary persistent volume storage Class + ## If defined, storageClassName: + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + ## + storageClass: "" + ## @param secondary.persistence.labels Labels for the PVC + ## + labels: {} + ## @param secondary.persistence.annotations MariaDB secondary persistent volume claim annotations + ## + annotations: {} + ## @param secondary.persistence.accessModes MariaDB secondary persistent volume access Modes + ## + accessModes: + - ReadWriteOnce + ## @param secondary.persistence.size MariaDB secondary persistent volume size + ## + size: 8Gi + ## @param secondary.persistence.selector Selector to match an existing Persistent Volume + ## selector: + ## matchLabels: + ## app: my-app + ## + selector: {} + ## @param secondary.extraVolumes Optionally specify extra list of additional volumes to the MariaDB secondary pod(s) + ## + extraVolumes: [] + ## @param secondary.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the MariaDB secondary container(s) + ## + extraVolumeMounts: [] + ## @param secondary.initContainers Add additional init containers for the MariaDB secondary pod(s) + ## + initContainers: [] + ## @param secondary.sidecars Add additional sidecar containers for the MariaDB secondary pod(s) + ## + sidecars: [] + ## MariaDB Secondary Service parameters + ## + service: + ## @param secondary.service.type MariaDB secondary Kubernetes service type + ## + type: ClusterIP + ports: + ## @param secondary.service.ports.mysql MariaDB secondary Kubernetes service port for MariaDB + ## + mysql: 3306 + ## @param secondary.service.ports.metrics MariaDB secondary Kubernetes service port for metrics + ## + metrics: 9104 + ## @param secondary.service.nodePorts.mysql MariaDB secondary Kubernetes service node port + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + ## + nodePorts: + mysql: "" + ## @param secondary.service.clusterIP MariaDB secondary Kubernetes service clusterIP IP + ## e.g: + ## clusterIP: None + ## + clusterIP: "" + ## @param secondary.service.loadBalancerIP MariaDB secondary loadBalancerIP if service type is `LoadBalancer` + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer + ## + loadBalancerIP: "" + ## @param secondary.service.externalTrafficPolicy Enable client source IP preservation + ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster + ## @param secondary.service.loadBalancerSourceRanges Address that are allowed when MariaDB secondary service is LoadBalancer + ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service + ## E.g. + ## loadBalancerSourceRanges: + ## - 10.10.10.0/24 + ## + loadBalancerSourceRanges: [] + ## @param secondary.service.extraPorts Extra ports to expose (normally used with the `sidecar` value) + ## + extraPorts: [] + ## @param secondary.service.annotations Provide any additional annotations which may be required + ## + annotations: {} + ## @param secondary.service.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP" + ## If "ClientIP", consecutive client requests will be directed to the same Pod + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + ## + sessionAffinity: None + ## @param secondary.service.sessionAffinityConfig Additional settings for the sessionAffinity + ## sessionAffinityConfig: + ## clientIP: + ## timeoutSeconds: 300 + ## + sessionAffinityConfig: {} + ## MariaDB secondary Pod Disruption Budget configuration + ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/ + ## + pdb: + ## @param secondary.pdb.create Enable/disable a Pod Disruption Budget creation for MariaDB secondary pods + ## + create: false + ## @param secondary.pdb.minAvailable Minimum number/percentage of MariaDB secondary pods that should remain scheduled + ## + minAvailable: 1 + ## @param secondary.pdb.maxUnavailable Maximum number/percentage of MariaDB secondary pods that may be made unavailable + ## + maxUnavailable: "" + ## @param secondary.revisionHistoryLimit Maximum number of revisions that will be maintained in the StatefulSet + ## + revisionHistoryLimit: 10 +## @section RBAC parameters +## + +## MariaDB pods ServiceAccount +## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ +## +serviceAccount: + ## @param serviceAccount.create Enable the creation of a ServiceAccount for MariaDB pods + ## + create: true + ## @param serviceAccount.name Name of the created ServiceAccount + ## If not set and create is true, a name is generated using the mariadb.fullname template + ## + name: "" + ## @param serviceAccount.annotations Annotations for MariaDB Service Account + ## + annotations: {} + ## @param serviceAccount.automountServiceAccountToken Automount service account token for the server service account + ## + automountServiceAccountToken: false +## Role Based Access +## ref: https://kubernetes.io/docs/admin/authorization/rbac/ +## +rbac: + ## @param rbac.create Whether to create and use RBAC resources or not + ## + create: false +## @section Volume Permissions parameters +## + +## Init containers parameters: +## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section. +## +volumePermissions: + ## @param volumePermissions.enabled Enable init container that changes the owner and group of the persistent volume(s) mountpoint to `runAsUser:fsGroup` + ## + enabled: false + ## @param volumePermissions.image.registry [default: REGISTRY_NAME] Init container volume-permissions image registry + ## @param volumePermissions.image.repository [default: REPOSITORY_NAME/os-shell] Init container volume-permissions image repository + ## @skip volumePermissions.image.tag Init container volume-permissions image tag (immutable tags are recommended) + ## @param volumePermissions.image.digest Init container volume-permissions image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag + ## @param volumePermissions.image.pullPolicy Init container volume-permissions image pull policy + ## @param volumePermissions.image.pullSecrets Specify docker-registry secret names as an array + ## + image: + registry: docker.io + repository: bitnami/os-shell + tag: 12-debian-12-r18 + digest: "" + 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/ + ## Example: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + pullSecrets: [] + ## @param volumePermissions.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if volumePermissions.resources is set (volumePermissions.resources is recommended for production). + ## More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15 + ## + resourcesPreset: "nano" + ## @param volumePermissions.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads) + ## Example: + ## resources: + ## requests: + ## cpu: 2 + ## memory: 512Mi + ## limits: + ## cpu: 3 + ## memory: 1024Mi + ## + resources: {} +## @section Metrics parameters +## + +## Mysqld Prometheus exporter parameters +## +metrics: + ## @param metrics.enabled Start a side-car prometheus exporter + ## + enabled: false + ## @param metrics.image.registry [default: REGISTRY_NAME] Exporter image registry + ## @param metrics.image.repository [default: REPOSITORY_NAME/mysqld-exporter] Exporter image repository + ## @skip metrics.image.tag Exporter image tag (immutable tags are recommended) + ## @param metrics.image.digest Exporter image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag + ## @param metrics.image.pullPolicy Exporter image pull policy + ## @param metrics.image.pullSecrets Specify docker-registry secret names as an array + ## + image: + registry: docker.io + repository: bitnami/mysqld-exporter + tag: 0.15.1-debian-12-r10 + digest: "" + 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/ + ## Example: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + pullSecrets: [] + ## @param metrics.annotations [object] Annotations for the Exporter pod + ## + annotations: + prometheus.io/scrape: "true" + prometheus.io/port: "9104" + ## @param metrics.extraArgs [object] Extra args to be passed to mysqld_exporter + ## ref: https://github.com/prometheus/mysqld_exporter/ + ## E.g. + ## - --collect.auto_increment.columns + ## - --collect.binlog_size + ## - --collect.engine_innodb_status + ## - --collect.engine_tokudb_status + ## - --collect.global_status + ## - --collect.global_variables + ## - --collect.info_schema.clientstats + ## - --collect.info_schema.innodb_metrics + ## - --collect.info_schema.innodb_tablespaces + ## - --collect.info_schema.innodb_cmp + ## - --collect.info_schema.innodb_cmpmem + ## - --collect.info_schema.processlist + ## - --collect.info_schema.processlist.min_time + ## - --collect.info_schema.query_response_time + ## - --collect.info_schema.tables + ## - --collect.info_schema.tables.databases + ## - --collect.info_schema.tablestats + ## - --collect.info_schema.userstats + ## - --collect.perf_schema.eventsstatements + ## - --collect.perf_schema.eventsstatements.digest_text_limit + ## - --collect.perf_schema.eventsstatements.limit + ## - --collect.perf_schema.eventsstatements.timelimit + ## - --collect.perf_schema.eventswaits + ## - --collect.perf_schema.file_events + ## - --collect.perf_schema.file_instances + ## - --collect.perf_schema.indexiowaits + ## - --collect.perf_schema.tableiowaits + ## - --collect.perf_schema.tablelocks + ## - --collect.perf_schema.replication_group_member_stats + ## - --collect.slave_status + ## - --collect.slave_hosts + ## - --collect.heartbeat + ## - --collect.heartbeat.database + ## - --collect.heartbeat.table + ## + extraArgs: + primary: [] + secondary: [] + ## @param metrics.extraVolumeMounts [object] Optionally specify extra list of additional volumeMounts for the MariaDB metrics container(s) + ## + extraVolumeMounts: + primary: [] + secondary: [] + ## @param metrics.containerPorts.http Container port for http + ## + containerPorts: + http: 9104 + ## MariaDB metrics container Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container + ## @param metrics.containerSecurityContext.enabled Enable security context for MariaDB metrics container + ## @param metrics.containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container + ## @param metrics.containerSecurityContext.runAsUser User ID for the MariaDB metrics container + ## @param metrics.containerSecurityContext.runAsGroup Group ID for the MariaDB metrics container + ## @param metrics.containerSecurityContext.runAsNonRoot Set metrics container's Security Context runAsNonRoot + ## @param metrics.containerSecurityContext.privileged Set metrics container's Security Context privileged + ## @param metrics.containerSecurityContext.allowPrivilegeEscalation Set metrics container's Security Context allowPrivilegeEscalation + ## @param metrics.containerSecurityContext.readOnlyRootFilesystem Set container's Security Context readOnlyRootFilesystem + ## @param metrics.containerSecurityContext.capabilities.drop List of capabilities to be dropped + ## @param metrics.containerSecurityContext.seccompProfile.type Set container's Security Context seccomp profile + ## Example: + ## containerSecurityContext: + ## enabled: true + ## capabilities: + ## drop: ["NET_RAW"] + ## readOnlyRootFilesystem: true + ## + containerSecurityContext: + enabled: false + privileged: false + runAsNonRoot: true + seLinuxOptions: {} + runAsUser: 1001 + runAsGroup: 1001 + readOnlyRootFilesystem: true + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] + seccompProfile: + type: "RuntimeDefault" + ## Mysqld Prometheus exporter resource requests and limits + ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + ## We usually recommend not to specify default resources and to leave this as a conscious + ## choice for the user. This also increases chances charts run on environments with little + ## resources, such as Minikube. If you do want to specify resources, uncomment the following + ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. + ## @param metrics.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if metrics.resources is set (metrics.resources is recommended for production). + ## More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15 + ## + resourcesPreset: "nano" + ## @param metrics.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads) + ## Example: + ## resources: + ## requests: + ## cpu: 2 + ## memory: 512Mi + ## limits: + ## cpu: 3 + ## memory: 1024Mi + ## + resources: {} + ## Configure extra options for liveness probe + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param metrics.livenessProbe.enabled Enable livenessProbe + ## @param metrics.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe + ## @param metrics.livenessProbe.periodSeconds Period seconds for livenessProbe + ## @param metrics.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + ## @param metrics.livenessProbe.failureThreshold Failure threshold for livenessProbe + ## @param metrics.livenessProbe.successThreshold Success threshold for livenessProbe + ## + livenessProbe: + enabled: true + initialDelaySeconds: 120 + periodSeconds: 10 + timeoutSeconds: 1 + successThreshold: 1 + failureThreshold: 3 + ## Configure extra options for readiness probe + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param metrics.readinessProbe.enabled Enable readinessProbe + ## @param metrics.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe + ## @param metrics.readinessProbe.periodSeconds Period seconds for readinessProbe + ## @param metrics.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe + ## @param metrics.readinessProbe.failureThreshold Failure threshold for readinessProbe + ## @param metrics.readinessProbe.successThreshold Success threshold for readinessProbe + ## + readinessProbe: + enabled: true + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 1 + successThreshold: 1 + failureThreshold: 3 + ## Prometheus Service Monitor + ## ref: https://github.com/coreos/prometheus-operator + ## + serviceMonitor: + ## @param metrics.serviceMonitor.enabled Create ServiceMonitor Resource for scraping metrics using PrometheusOperator + ## + enabled: false + ## @param metrics.serviceMonitor.namespace Namespace which Prometheus is running in + ## + namespace: "" + ## @param metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in prometheus. + ## + jobLabel: "" + ## @param metrics.serviceMonitor.interval Interval at which metrics should be scraped + ## + interval: 30s + ## @param metrics.serviceMonitor.scrapeTimeout Specify the timeout after which the scrape is ended + ## e.g: + ## scrapeTimeout: 30s + ## + scrapeTimeout: "" + ## @param metrics.serviceMonitor.relabelings RelabelConfigs to apply to samples before scraping + ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig + ## + relabelings: [] + ## @param metrics.serviceMonitor.metricRelabelings MetricRelabelConfigs to apply to samples before ingestion + ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig + ## + metricRelabelings: [] + ## @param metrics.serviceMonitor.honorLabels honorLabels chooses the metric's labels on collisions with target labels + ## + honorLabels: false + ## @param metrics.serviceMonitor.selector ServiceMonitor selector labels + ## ref: https://github.com/bitnami/charts/tree/main/bitnami/prometheus-operator#prometheus-configuration + ## + ## selector: + ## prometheus: my-prometheus + ## + selector: {} + ## @param metrics.serviceMonitor.labels Extra labels for the ServiceMonitor + ## + labels: {} + ## Prometheus Operator PrometheusRule configuration + ## + prometheusRule: + ## @param metrics.prometheusRule.enabled if `true`, creates a Prometheus Operator PrometheusRule (also requires `metrics.enabled` to be `true` and `metrics.prometheusRule.rules`) + ## + enabled: false + ## @param metrics.prometheusRule.namespace Namespace for the PrometheusRule Resource (defaults to the Release Namespace) + ## + namespace: "" + ## @param metrics.prometheusRule.additionalLabels Additional labels that can be used so PrometheusRule will be discovered by Prometheus + ## + additionalLabels: {} + ## @param metrics.prometheusRule.rules Prometheus Rule definitions + ## - alert: MariaDB-Down + ## expr: absent(up{job="mariadb"} == 1) + ## for: 5m + ## labels: + ## severity: warning + ## service: mariadb + ## annotations: + ## message: 'MariaDB instance {{ `{{` }} $labels.instance {{ `}}` }} is down' + ## summary: MariaDB instance is down + ## + rules: [] +## @section NetworkPolicy parameters +## ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/ +## +networkPolicy: + ## @param networkPolicy.enabled Enable creation of NetworkPolicy resources + ## + enabled: true + ## @param networkPolicy.allowExternal The Policy model to apply + ## When set to false, only pods with the correct client label will have network access to the ports MariaDB is + ## listening on. When true, MariaDB will accept connections from any source (with the correct destination port). + ## + allowExternal: true + ## @param networkPolicy.allowExternalEgress Allow the pod to access any range of port and all destinations. + ## + allowExternalEgress: true + ## @param networkPolicy.extraIngress [array] Add extra ingress rules to the NetworkPolicy + ## e.g: + ## extraIngress: + ## - ports: + ## - port: 1234 + ## from: + ## - podSelector: + ## - matchLabels: + ## - role: frontend + ## - podSelector: + ## - matchExpressions: + ## - key: role + ## operator: In + ## values: + ## - frontend + ## + extraIngress: [] + ## @param networkPolicy.extraEgress [array] Add extra ingress rules to the NetworkPolicy + ## e.g: + ## extraEgress: + ## - ports: + ## - port: 1234 + ## to: + ## - podSelector: + ## - matchLabels: + ## - role: frontend + ## - podSelector: + ## - matchExpressions: + ## - key: role + ## operator: In + ## values: + ## - frontend + ## + extraEgress: [] + ## @param networkPolicy.ingressNSMatchLabels [object] Labels to match to allow traffic from other namespaces + ## @param networkPolicy.ingressNSPodMatchLabels [object] Pod labels to match to allow traffic from other namespaces + ## + ingressNSMatchLabels: {} + ingressNSPodMatchLabels: {} diff --git a/charts/limesurvey-1/icon.png b/charts/limesurvey-1/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..90014a72d36fd41a81dd199c435c1cab076b169e GIT binary patch literal 8080 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 N0!US+O3L)h{{feI7Rdkr literal 0 HcmV?d00001 diff --git a/charts/limesurvey-1/limesurvey-0.2.56.tgz b/charts/limesurvey-1/limesurvey-0.2.56.tgz new file mode 100644 index 0000000000000000000000000000000000000000..2df710949affe63e9d3e7dfd976c43f97032d8fc GIT binary patch literal 71110 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 literal 0 HcmV?d00001 diff --git a/charts/limesurvey-1/limesurvey-1-0.2.56.tgz b/charts/limesurvey-1/limesurvey-1-0.2.56.tgz new file mode 100644 index 0000000000000000000000000000000000000000..374133c1cdad53d534b9e966af93e4853f76f4e6 GIT binary patch literal 143902 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 i+x_;IP7QBlED#79zX}Zsh|9kC=+a@LR<|a* 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 z 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 z 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%0DD%GbJ2q2B77ldk~JV@j`5EqlgN9iFL%_h_m^i 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%0DD%GbJ2q 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 {2M7kVdvo+o3L7l`Pjd-A zX~8O-z*SV-JHW7MKgIVS0g&V)57NO&CPosR8x!IIZ9D{tKVmJ^&J)?|q%w=aFgwZY zjapQ{vj|}ZJp%EM7;e5f>}Qd{7$2H#chof`@c&l$4O~{yxBP}XtKnjLTiX35kZhd$ z7+=|zv!4IPIa#E{Y81^Y6bkWqAsDhC|0|ena3FNBvW!z57_C{bf)V+;YS3;Hq-mn= z%!-y7807?Se6lNhXw_{Pn6<~{P&0PM0Qu`% zlb4?I)3LP7bi^7q2(;?T*SHk;6YP}_v~q`|SL0m({&zKY*!JlMBSZ6u{gp+XZs;5h znNZayFPGNFpu>J1J{gtBQKo#nX49fR+&A<833pr^?7OMu&~ap+%9#}|@AZtxf5FaQ zC7nfebv}b}l5x+kfR-6u)FhRrrw>NxRk)B4I|!dK?~vKPBX#NEa!h$2o_c{6VkRdzN|&oCPV9HixOCS&3Q_gU@!)U<^$YB$a4Vlu1%+#%Yy#|avqZY zn|zb5{(?W`h>~Fo2Kl-zkAcQ-ck!;`_v;#kvPlo?inp69Ukmz>Xf2;L9NopCo+Hn~ zqnY zn^yVaB70K{8|%wPoIy?nP^cqyOuB4VT9qGErax}DF0*DI$(GT_1p6xh&&e))msojn zQ^MAGb`7O#^USBK+!w%eg{?D{u};7LsRgBI*V5Lm$roR#{+fs_QuUlWe#gZ(eCBCB zFbuRtu%w1d-$AUtHbL1JXyzWI2&#$m1)BVyYE`JrBAMv9LybVyk!)fR@-CCFqlWtZ5P5$NXMiL?pVzv%Q0l$^Fkg9V=NRW$aqgf#DY|#ubHo2aYKyh;( z@*sl~TLZGsx#oS~NqZbx(#?hSzg^TP z>NB5Q!O(|$yVP*uRH6{WIlB^G-80*w)_&>k4UIJ8<^O!+Q63{Qo~#W*pS0rn(2(Nk zoX*7yOTNJ7>Uq`D7&~)+md-2Em@idiKDqwPo zxc%RqqrN|6IyO0);#cjTo%P*aMmA=i+{sTiM_6a=I9;rCwZ9Bym$J1lvSZH=aJJZq z7@1DC9y#GL!gwH?|Em%smvB^*kgPgRJ-9;FV6QyowpOF9d~H3a(M@X#9o3!K_O-^2SBEJRNAu2~IYI3*e0cig0;PXHW^%&Lpem*I~|2NGdpO z8)R^J>rua<0Ki~ixMvv#9k^H(3F zV!SFbcj{^lL;0rj1Ux|p*;`%}+@u2*$F<8Tc=X{s{G|e1#TIDvfT()If?ah?M{F)a2kIX^P*7dS z+iGoSAA-yKn~{3eWF|o{$c}g2P<2c<-pZPlA6Vr~Tx6A06#nRp*K#lJsTXz|fKf&= zA7F8_fuBT|E6whQ{lm>Slluw39;n8(IW99ePt^4K~29+QAC& zpPy#@p!_UxWybSPH73n8Ky ztew#>yFL5)jn@{miX-Zb4Po9m5`6E=qt3d|5N4KNfP9)W!YMog-om1I5q9wIAQl#m+;n>~|YCW%c4u`h25O30Lgb z;~?k}(#Wia0P(0LgQLzUWH2(HgbfUNrXE@b)*~W#@Zc|R>yCx4k)1|EvOz8^lBb%| z(QSej9zaN-r_UQN6^rKi2}G@ufF7$lc2P%TUdv=E+W{?{0P02Cm_bM&-@ZL6swbfC zf_cIA8fCSX<=`jh%>;6&j}H3v=lXj#8s}$sV|U}wzc1M-`jbB!f2Jf*p6>zCEqxjm zUY43^EUzh53h?Ez)i4($+eos1&OxG2dOcgIy6fCgYQP;JYlz#FG+PIWuZd4iqU9eO zHO0)?PXt&V%AmU6PuIueh~K~Om$U1z?_JRj=XZU(e+9$fx&*S|rZeJiKF8uf<)(uZ2JL?}VUs;RQ4A)fUWdyF7BKV;8jB%8OXuE*5J zbtLR3G-NXt4jz$}@#4KZARp;5Tcbr`uIW-8t*=Y)fU~gKZ?$%NNuzC-;)b$&WO*n7 zR%uhixb12@^4peJ`>(=F+iHrN_x_0gB4Uj76Dk^U6y|>NuWl}n-hRi@=EnYKltk2< z|3Udb+l;PQXH=YT8FkJrhv)Et4c6WWD7#92{6>!XxUw7_rAV}0Wkg0ke_?Z$DjS`e z&VTjnC-qLf2F1Q@)0NPfFKFN%LS`fpQh8b?1ex_60!-1u@ZyIw`y52bx||={XAj|% zaOb`ou)E7$Y2G*b9zUiZscr1}nRtIG9qC1QuuW=+GIiIXIAMt%*BKchbL<-k5XL*T zE%#HSusX$zqF(ZN(eG-W6}@sDrn{5Itk_)@>Ms2&8-%C{j$q-`%-~|<)t*QE&B8L5 zm&hA$s#(O68dLI5_M?YT;s$e(=$|3e!#Te4-dJIU41QqR)qEP~t1gmAYDdPwL!%2O z33yQ1#jqY7hY55vp0UnzbQ21K?w4691KQSoCPiFMm1!;opjYGBy_1#sX7_^?0341! z9gkg+`scm2TB0(^iCJ>o$VRQ0G7nuOixjwpw?#4&coY#c=%r0v!pU$9obGS%wOS8KDSX=~;VK4L(JgKT#tqQ5sYn$Kx zCF7dOjvXDyT$+DRBigREgqK`T06S0f{WgTN^87HG%c3z|md>3{{V zh-|YB9m7&-j%|Vs@2IFPaS{565sC=k@s_RVHWOr5P5EU!Z^TTZl`rO9t35U*Al37{ zgmIgy1D@xnMZ>2)=8g>%z6v5#0^z7=vOmO*0(EOGe30h zSDt>jZnuyvv*vDd4d`(^^UC{a__b)4^4n~Po)y{C-U(m>yQul;^Z;_L{V0K1w2Af7 z+P#Vu*j5Dm4VCC3vuvDfQNvcKYF?S^UwjL`P*@k ze1q9FUQ6)ST4j0&rfmr)ENs-r$>;C>`uuuOy|(*#s~ZPiN(n(Yh@W3^{b$fFrhLW-`p!AT0aqL<&z$;ZXR@Aq?ku=P?;#YEy38c#3T)>_^cZhlfP z|7-ZZ>~@Ns32vstIXV0~dmD4-@BTV|vOIFAjy_*S_-&`2PbpzYd3-zf3sO&&)(DX$!8m5PJ5f8~2|(CwoTvT*Uk$ItuudX+tNGfQQmSt*x} zSs-z?Ijt&^A@2B!T(4$M@~x;q!g>`1E#mccGR{A9w12bFoH_KNr8N*0^5gjL1j$k2CZFhdH|kI~ddL($(S3n2r)#E0ZW2 z^B-Ae-vw^$rD5C-T}1&;7L<|B-7tI5*1{H%6GOoos8H&4N=^6wS6t z-Vv|5onf_2vs#Oea+UK;+Ue;=NVlj-r(vh2wTOY5`T1TIPo*Yt=##1Gq`l*GYDL1c z4z&zj=!yx_Sep9^n-vo8)HPl0uJup74AW6glK%Ku zcNK9Gt}Cgz2`FS4HP;qS@(d&AjM?8=T`|-pxBByf!%^J{Nli(r`>JcU@FQqW8f@|c zZ8xBIp_`|=?B7l@KDGMCymFQK&B!}CH-DP{ z?iSe+Gf&UJ;ItiY%(q@pxzu36ha2kq>Aw}QTBjKAjB@$1O&r*mO$WW~;2$|&TkGsJ zS?VkFJcORr_aKXvnQEKEEWP4&8qs8JTGczNJ7qc@OmR}mdivf|n(z>PHtQ|&wr_Pj zJ^r#B=qTDQ(6mcAXcsdkTS}j;lxm}v1=y)hMeY6hKKSkRe0{!l$#3KbG6mWFGnFGy zhLL8(DP*?O&mg!B8+Ca?OQP*LlyR581 z5-&dEL_Dc*s0u4^G7Je*b!OC5Yy3&m3hrmGNg=X^Od;D|jSg19qJ_}g?CL5o98E`~ zKI)IvAe^Gnx|voQbZn~@4ez1sCiSEcyd@b+CJd&eA8m8qL7yU`?T2#t&pau`{X(xs z0QjrfwN$Zckix@gMr@D}X(Itti2BuUW^Hl)nT@IAPF!*+!RTzX?_Lp+Hzn;{WTn_>;2H+)>M8mKd|Nnt(?B^un=>qVUpQ+JLALsxXD}C>1SGFi zE@$%JGv;OjXiJJ+_#iN-toB`AH&SoyN_}!#kN9o<2HGqU@hc?HIX%Nw1ezNfOtt$a zD?~N0pgMT*Hm-pP=-=WL)8RMk7G)8w{!p`QAcKB=u^II5H- zw@UoqXvm3cK%&F#jQMo!I7NNwAwvSDjKZ$vaTmskqex9$+6{~q+;>8CenzvJ^NajmL8plu< zSNH$^EA_f6%6TRwI*KJ3Z}QtJ5nvB8Vu7zNp>1YIkX%s9nG~MQIIqKxj<`KYmg!B8 zvg;Brb5plBU-TKM`Q6Y(sUgoK`CGj;{u2+LvbtXRU8C-W?p=mU-(X*y_7HdP*sN}2 zJWfNN^XEq;Y4ZkyjicsSg<2{Fn#P**^Ip|En350WN=1vqy7x|kjOW2w=|Ssyt4f2Q zO(n+SteMN#VH=a@HBj!1TAd!#6QD3c8KV^PD zUedXm`OXj;?_!j!?9tBt71sLsDeKaAwf`^uiCfBx-ie{@zY0U4B4wAx3D@)Ow%cZ! z7pBqctlVgJF?-NfCTPQ_#hvP9wH`^GEW;k|?P0tE39gk4X+<+ivI?m~ge}6`lq^v5 zlg3l)%cH(&<3!RrNU8smrs@cTy{fctDFIOPtvzAy|94FXkDWE2ZkAzQZD1Y4uXlZM z{d-7~ByIfbCq48ze|tOET>jzh$K8$nIsZ2SYWd;GV?s2AxC%NI%o1_7C`nqv@X|sD z7;ia@5j{R{kLks(VO1|m>IPdUd#nok?3(U0(S?6;i3_v~{jg&{yiD>M{$QNq>ZF2* zVO_8b!lH^j-dPZ;P&5IDJ!&Z>J2XAvL3$ONQ?>8^PuAfKj7Y>_9JBT7seG ze%uCXqtqEPHMBAruGI=a?M5Aq>57yFJ};zAQ6*{aTBHUi84Gkj4Ojl8%R9@?{EHid zq$k~9rX-MS*$%X)0@Gv_TvgNApI60>VpC>qCG}+-%k-C0`R@n94_Y#bVCTXo+QDxx zV5v}pV3(+R7)y{#@<44PeyJSvD(}O?whX8J!fQe=YU`eNuv{jz!V-U~Bq{%y9uo_$ zcqnI)XOT_TO`$3niGNH0S`gXl9D~F(5~w~{u+~Gw@HwOIG*iW@k^G93Ga6BlDvQ}f z$+WQ?tpRIgwpE&T+kh2X-e;T=)a=}FBNKmyfiCiMgRJ0+7TH;DEf^+v%r9O(+J*?; z_ZM*&`hhze|Dm;w&_1rlEw4)P>Se;t!bA-5z&{v}mlkv{cg;?GJFEyk~vQK2^Jv=1P%WIv?n9g!)vHQvRS% zV5?c&Ze<0gzx~rIhhG$6JSWgkNdfy#YS0i50j#WwPm^4GeIw=u5Vv@s9$Q8_UJ(W}QSTZbnPjQF` zg@&BmfSI@OH=U(G4Q}(>Xal-7S9=Oz@j77tqQ)Mek~U5}6tF)xYs&@E8@EX4BuE=6 zsqmQ2#|{8P{FlBC6>aBd$<$+XF^Ju3wuC@8M)*6FbI@q&h3>&Q8B+DJ`LL#p#z2SI zYjOF#aUw?QL&J&h{6rbZJQ&OkEPk*Yo5FP01&;EniG(m)K-)fO&J5 zenfcP1&gTfP3QTK{(NFI0clQB6r?yGEQIodZmtgxG)6hD_<6*6(#L}Z%zFxSTyvpf zz|Z{@qbjOI%W%8njVMKMqlSt-4^jvZ|7HDqy z@1I%XN8;m@5g^aT3;p*$p{9Znv zr{_P+4|W`4S8u!ion6h@{6BMgJlnfDKV1|*Z)<*i@Pwl-;~Kuet2aN*OP(RUiZ97w zU!a55a1q(yh zcM)d^S^|bX5qunih>qnJGH)^*xwGLf=}J0;>JhOsgMJ%XVu}=SV8;X;G4fzNawj>) z@zV@_2;f-=O^z<1oPaYr&$6L`DdA$yz`WqO@{s!?RH*`(#U;cn#DO_PcZZutK^q=2 z?U&NeQ*}Tq$|+X>`;6c!bh>qFgE6tDrI_~^hn{s7J10`#qSK||!GPq*R789?H(Yqm z^bqb8%>VA2NJO4D&bkdRfe7Xd${;sEC=REibvYYdu#zxLrI2ptf43koXMX{2UQ*4(T0f3!D=u&&+HBJx=^&3QR->zR_#D0EeclxB|dY8^J zWK|==b#Mw06Ftg6p#kvWhH!2V>Ep!dzz;-Fw~K4)w|TsTd}nknBn*oxhDMjo+LL$ObZu5$`ZQ zxmm*oGg-P|lFwacHJvn$>Y>aHpQ7w4hM;!0^o!WQV(RFwVZ+#A|V z`jX{M4_=yLPm|;yOv2FNaU`U}A)BieWJomTR$OSC8NXFOE1HE&hQ#w*AC3W>xrpIW z{Z_ot34C4>2nEJH8KD85x2pC!KFTt6q7E8$3viBtu*9vm!wF8&2#`-+GJ5%^ea zA>jauLW6db4;LBTeyPY-IGi`k-h}29 zCUEnl2BIKPQlBlYLcN~xTCtJa6>Fre-@olPWstW#jw1TUw~i3!u1!V(s+;a8@60kU zSC}y6MBk-4$0Dueti6QV=PzgNAoO;(7~fe8H4iz(54baiUy8$ zW}&&aEXR?kl|Qv679&hAKoH9KF4>DHpq(Fe!zdkQV$QIJeOyK&kb&55WqQVf(vY5O*K_HZ5S4Z><*5Ksy}4XB^Ijt`l##GusHc|yT; zNvWl)T#Uc~66uD?0LJnxW>#eeJ{QIhf{~0}1n=R5R4w6r)yB!HO9fBoMAn*@DXXB! z&Wt^_R3j%u6Ux0zVbxXAVHzlrH7ippP*H*|AkX1;ljM-ca6O`0aRXY81c!!6DI(PT znnzsv*ZMhU-@-1Q@8aj?tOQKWzxc0|)fSC;`_eNaRw^6}>5lq|FOKRPC_{qiq!gO}%{S z%~A>|wvmHbku+Hvrn|_9>I4mmj+1h*VhU(6{xrq~k*(-DbX0jIc|n?$p`|-|o02qr zvMPvIUR8F_Afp~jKdz!ZicJM@sfhso*@{6^`qf4nQ&46@bupIA#6rZ!t#rATGw&@I zrWMZxA!~+za+j~l5tos7KGPNN3zcc=RECF2diJ1}5;>_o0nh6ViFZN!ha?{}yj?l0 zlN`+`qlWt&*Y^kH>gI+=e#yrP$HOM=HTnhe+-hz{WDI_MMf^ehg};D%A36#14tL6+ z7|TT_)s3R^CNr{@-ccvXNRo;L^vWe}tbq}Wmi8JlLNp>BYbwAx943T$XucHywXuPl z5zrAsoG)AEu#6l>Ff-;DjGu?8OfW4dO9eo)$>@2}hxat2f;Xw)C2%uX@lP^Iv^2kq z)O|nhySfM6WrS*(@LTY8WdgCeyZujP(B<8_1rk`dRV)P2X@y=}E&sAorBf_p`Ot%t zHND8c#)5#>y0Q@D5PHTZL3k@a5SKA#=#xZ$|naEs7i_-gXlm>wiE?-j3 zwe^YrO+}0igAui&Dw0TMDP2$9&RRq&^%EMKWdt^Q1TJDvKaruYogT`k|NSu&xA{kz zs9QS5G1S|aUZC6tf`#kU!eDD|EO3XDnqSh{oFXlx>Q!VVzk(g)S%+W2`zp8Lf8f@?MnJVLFIHx0*mN3B~%-cvD|IbBg6#hi)wt94-^O^KF_eb zqOgr_9ZG@u7h`S@Wlm*MEryRoIyzwzegVdgOXQOPG7s;`wJc3g{={BDZ2U3PT66PJ zoKoBZQ=zbz9b7v9Ef2%(-=sGS`zSX!F4*{?qa-`oJL3!{pg43&=A%#L163#iQUE;H zzX*rfb_MrGBzTi>g4FV8rZe-_)D9GtqKsmAMDx3Ga-&I%X=5bmH%uGl&{ozeKd65L z7(Z;|Pgy@*_M%ntg|$x&!Z&LgB2KTEs1u+9hHO?R1My8uoGKAz4Dn-uCY*rKdyt)= z_qMckpu?m>5{4v35Y=~kMORY$&naPGCsD;vW+`yc#D@8G94ktQMSy>0xN>LNSJx}^ zghOqOSGe*`7a1!R5+_2b$}<@iExJU{N>*fOiP87!dhsP?@sSk!L-x&QBvnLm;*2=5 z-~!MR7#5)0Y`q2cUkXj108A~~a$ff8;U1Ij5KC423?U7!$t6W^8Y{zH7c-X zUKSL48o}dLA<8M4Fv%SWbG8vO=*eOs8@CS*-4HAVn-br+)GcsNylbUfKSoh7>YXEJ zJ8>Uj1#S@vt>s!T>z5UfZrMs@CkbG(SyeDqReY|NzYE#6d(=PO`GA6nxztefbzE+x zq^4N2T)G|Up|D9otx}DB26U4>d`hAr=-tH`7kd|6h%M^$m+~ugp;YW(&G8huzS>b*1JDFqw4Q}X>XqFf; zky*-SI+8s^!hB~-4B;Hu7BjfP28v*r54_;#rL{Dq8raDjhUDLHP>#y=L~If>W|6gT zaG70Mwp4H%`5mc}+`DvcyR$cuY@>PTvJ&dDJZpGIrav@x$)!u{tRWpvTMAlXj0=a% z4U_Avm;{rKdleG{rqs^8o<5{$Ur}>}wR|YTLqw2V>R&ueeEA2QmX+(2+2Kc(j96ae zBmRac&E;tk{9JXLFiSIklF=$>&3(5+!KXCl2D73MM}mzng*lQRH0O-vweT6gfACRU zr;|$htZ1byw$Eu1;=Tt+CHC1mV0PR&9z7;x{-2sa$QP8VaPp5bkJhWHGDUV|{|9DF zA?@N8ux8PeuPUT(7Rq?Hqr_6{fbQ{oe00*Egce#NP zzVV%cG}+AsmQ8Hg~Qm zX-=;WI`97MC?8ZRUM?cy{*oVBN_EU3m6}KVzxXeI|GFa%cfho~dP3H|-O& zV9^y4eG^1|bY(FGpXRQTLfAyA2dmm77ljHWSl_TyY}nX=I}K3V4FQ!@5GBQf*u1q% znXYl_h4l|Ky9b)614 z01%#uDZ?!8`)Rc~XF_@Z8%%U>Zd1aQNl^C5G<5+~;7Y$o7r9<3;*uS!drO?RLfwJ` z+m8km6?6(&)Ps=1WRyM;hN5u|%tJVKD*kPN&L6IA_m=T4${7Jm#yEVCf1_Y2n-WXv zR{`nzCLMB^GzTj-4cMb)4{A zF{2+J3Vjx<422cU?kP&tS|?7(5KH8p99tl{hc-e{j9mGJ5p zw9&v54_EWN2;sDdcp`$-{Xo1UV*eDEJ}sl_PU7NDSix7a0GA@UI?bzq>qrYuWU3{A z;Gb351~_AA#uc8Ta_Ca?yGRl)zbW7I;gCnZ4cQ)*)bg}6v*g7+cxAFi)Y@*-Q8=f^ zaw;6_Ntyk&f7nwB;?!xW%$g`3ps#BIE`4%R)t$*4tDopGfy>jTl8JIeMtH0Bl%VqD z-I~xT&U}fgz8zr;=HH8Mz1MCo?I}XnC#dzM)X(8sAiHuAJh5v+Y^@LR1jx?dXdNH^ zY>ze5=vNJqZy^7<;F$g5yP~v!deH|nsni#W)`Puk4#vqeXWMKG1O;78P}xM{Z9#=* zit`=0Ozkfz1w;kdcLr?zi;)MYc`mR}w1$;1@x6+sHzRPo#OQcZC*Ny+S%i68hrA?5 ztFvgXPV!;4(5+#F^N+E6AeJG1|5i<4zBOfvLX)Oi(p-5Y>5pHLHo-QCXaZ0;*zK{O zu5?FJBH%_!q1vircPG=8YZKf2uG4qFaaV` zCp9Xz#nmJ$*7>U&KY$6%j~XzOoj?BoPZ6~IDXY}^*{dUEPEx_f4#fZ?cEL+8OMg>> zC+W@?v=^@oaH0SL{sm+Jss)eWpc~$Cej7`|l+bZ1kFdu4g|&md%d(8NMPGHLEWGK6 zRzPjg@t}z3HGI1@v)jvh%merb2{b+E4l_g(1O|F=y1k4G@MbU#HJ~PFrJtrgAQOSj zdC<&i@tQ<#TZnpZ)imJD&2y`Yl^_{bxq?-cnQK`~BYJ7G-6D1111r18(1PTGk>ZjM zB`gP-NCL7kUEv1ZVs}Wjm2r#<$Uk5N(Z75SXihXQ-ruQF0tvKS8L9G`7hZqrrRjRn zqVYQGlr729dt{AzPj)R-p0pMv5I+HmZaXjrTbmV%i*jX-dN06X1<)E3-fWoop*aV3 z5TQ%LWP>{^Snds~#3cR*sWrRuSHQxVjZ+3^5Qdg-v-aejim9n&u!bp>{rY)w?AEmh zEq}CrszX~NYoST!5bL7HN45SPwI|Xl*u`r-9H86!N-6Eb6>!|e1UI#}FoamAm>G$3 zuC*g#97dJ^As()y{h0o>Zb4z>lD4<68Za{hn!Sp#fHFZB0S{p}Boak!-e_fKQmIw0 z6!MK8P!lJNPq7gmU{~b(Nds<5r5(2ak1JPjsVQf|S+HiXDHX};UG?x1!1Y$7dC-}k zDX>e=@5#BozPzMsA5&>-pUD(hNJ{i-JUqy$)wLA(rWPa{$Hp4Y-w6l(QpTNbUc1F* zR0Z7d48HctrKW*hzL!cMZ9I>c%Kdw_m`=-HXi8X~zD%A>1a1M?)RNrwThNpO{%Mj*5L}-|Za!Qa z9O-?AvjS|YlHjSH$G&qc^JbJTB)3=f)S+ALZX{f5q3F;}JB#;&5mlJIccS^j50Gna}a2xDM z%;zs#7Gk_u^R4kQAEDL-@~>Uqr+B?AtoX8*;?O@C;ojP%`jCISL zW~9ruy@;L(spUL!$*E<`VZ$EcFTas3KQbzSZZ2<0?KJ0>FQ|LDM4FT_X{o1>MTdc~uf<` z(jC)F0|!$;HHp(S#~9b}qF_19&`e@A%qYinyfw}i1JXk!c(0YakRRVYA^3ReKiA%jSGCLZ;2DWyI*5!*nKqlhED!y5)pj#HFGPLavXacFZ z)0N@sXXhcgOfiyrQMK_&#)5u|coSmp0}F$BaSLm$wqovZes{>7csB0NzMu?MhWYLW_HG3Q?!rd&K96!~2kpj|d5>6B7A)l=4 zSVA|MQGQ4lHIhJ>5tuK&R-c4ht7rvH+oRE+Vf9D`qf3Brzuld#ra7#YN@kEio3v}H z)RAc%O9`b#F8(1ar5*1tc}Vkog7cCUDC-oOU%RSv90Bz)EuH*AE=TmlZ!h_nY6weP z*v;lmu@jg&y}7Vt>=GNQ?<@Y(c7&P08a?S0EAyJhLXbpjSF#AEv_EP~=eSZ@sa2=8 zsxzj-27meSKq48N^z3`JZFhF|9$6M*rx|ma;HjO@Oy<_hvciZuP7vb^+)fM3wBp{p zx0(Nk1ppJ)A_aul4zYJJEb4M-6{8x!d6%K8h9&Y%n0KFz{j-26;fxOtWH~E9CREuT zC7At;6+Xg$gm@4b2{F*c-x@0dUBK;djELy-l_XT0a(r-9aU?sCCX(ImyiU>*L5&BT z3CZ!Cj-&KSpscHVJG8FuH^bz2bI)S~)a>V3WbpGPP7w4E3)u2X1+(e^%+%)TU+G~3 z&|Jjl;_IkA+7`0}WXd!8gGh4#5L~#K(%-sty&D?-u3*o-%}Ft^nY`X z{Z?%+_K!%zY}U$^sFmvXNZ1C5h5S6{c7@i`QjFF33~7g&m;(kV;mAs*P{vJlIvV#N z4CN9$Eg&_6?l~+N;-E|pHg$oDJS_>+0|$X0`vM~sw~c|4Q#*;@P?!Yg)%ssyS}HUo zZZrS-3)7y%tt_p4(2TbNX$n6Soj-|?l8SMR|4rFK8>yyrEw>0eu@G4tZhGlsxto|L zKo)_R3>pF(h^b%5tjdWs(lN>28XpM+(R{&$mOy9xB_#^{#L0KIb={Xvv0_b5uq948 z5h$2n=EOqag$8wzL_CD3g0F$> zb4Q4Th!!IU8!?s4(~>Eq=v0w*wty%0M`&F>K@$GS^MkZA&X-VpSYjqvPNIRoAZvL! zMjuQjNmE(Qy{L%9%K=|KfoFy!pNRpFmE`0bR>@f4Ep8mlxr7xqduJI|Oy2M( z!)Uy{*0bRrhz*XVo50=!k&l2W z%%)@m$#rq#HgZ^?kV^p45&DKvlptvVE}TpCdAva?4T!n0X^cG=Tg$d{o54i&Q#BQ1vb+abokAsoPYJij+>Pl>I5xA9NRL} zIYr04tv+fgVh`I_%*^%F6-=d-`)TuwIf2XHX=c*KedC=^vOw8*tESAXW&!OC>yB9i z^<-PkrtsX8eP$^4u*_`q;Kx}9+p$e;f9--h$6OWL)lD>eStoXMpgOkC$A19yn7#i_ zGI5-6oMRmqv6LdJ>ssQSfCF`j1!!BcorD9okBC31HDA?H5?}+`t#G=pp{QjpMpV~v zJX{CQcVGe9CHwVgWL4?7XNCCUDl}2<*^wVSa0yftErVoMg8oI%eZi#cS3UBp`_J_k zCM%ja8)pHusb;_LLS{jt<0j2qftC|tj|`uM;v=T!Ps}`Q<`5aROCyWYy?PdQCk*gf z!{5sax>Uka5XrO~Bi`evYeY@B6<%ZHhD0DsArSW>cVmQVw>4zt6Ql3nY7 z9I|Vc6tH^Kw-58^(!{9N$belNS@x^4d6q{OBSvkT6w#-USnQIMv3`AEx={o4myDU! zD#|hY^FQ`#yCxNMY1y)Ksea$Pjw(gvy3Pp=U7D%+c6vU0R;$V1XQ+-Y)wC(qo;B2U z`trK*Jf43$zDl+GdAyc1*{l zv+Im9l`1y7luthQ^aW;O9n)28v-W~*6`M~|%Xi``S+D@AS#J*yCY@>~pTuUF16|5G z`bX~AhS$ZL<18or_l--Nsb-9*w@DhEaYt)ytxik<*4TQSarai)2AHd)?{owYHpx8e zN*yn|JE{c=~cnd@pX#?3M({RzULKa^z+KEyY zEBokFmn_g8waf0GwzT~2fv<~JR)>I1k_5VxEYVqLz=x5tWbtU(Lzf&y4;Uc3O&4qVir! z)8MrejajjJHRPxJgVo?|obslDi_%4F7mY*&>iqs@FNYa7Y4Cbk0UM#Cg@>A|9?!*@{11zz*99Bz>6+TmnE zMWmC$t5=m4z*MV#Xq|s(hD@_NU+HSgH5#72{_gnf{PgFK?+)L-&cJU0+(IU(6yt{N z;AWbAzD2K~0NhUApBHu2J$rtD zvEw)nI`Ih>MDjE#@lcCRZ7b7yw5xXES@ zAP2!U8Xk||u?XT02Km6fi{Pfb?F9r})lM`Xb1w+*CuB@0hkPm43WNp10m7W)wFX+H zvDbVohg(UI$9osVv1ZmuFvkUT76o;bbF8pCE`Xcm9r4g(IOa>a#nOCKI>lS{&Ia6!|9w!Wjq#eg~+4( zdzZSP)G8OIjt#&P&0_HwuMLnMl!5`JR?9GT$^dAo7>ma!0PsO*8c<5q4e;{v`sQd2 z%K(_sH5QMN1Kev8m;d+vek+=NI6PI9R$nM*9YnxIlTAMlKbj&aw%KhJeq12CDoa?GAa(Ly8nHA-Ikq@L@t;VKvMxk|Z1d#+9? z0NZ5hYm&ybfLyn@>J^sOn#d+&U$!iNgjbQdZ%whzF6GJRa&?*mux$pv^@re!0a%mC zuK=ruk;kt*W=yV5BLFVS=+_8<>zB`ObxdSYX1_)NT)(`2s{`N{n&EGCNB9fP^jDtc zFIT6b9QZ|M{43A)m#bp~@F8UWE375CDlYx9`~`6>0NYq&9`NmPYfWU6vnX3yGm%a1 zqHHP8Ta>F)4Zuwfqw=R4xjNMV+~hJUe{GekQw_jPPNVY73%NSg0Nms@YK?)L97oyG znhS4o9c4>-o}*ly8UTLrIgeU%;Z5$NY`G~7{Ni&UwdTT`Tu9l{8UyvC(YGw15#tTH z@R52DdX{O6PPNHEWkGg14rwq+EY~WW{z>A>`aUEa%Vzhhw6;j+00@p%A$IFJP%i3F zONX&Z!2;%@IDkYB^d4L8D@$wtz#IU7Wh03HULWV?d`iHF%{;S&*z$-4+A)$(Ncw0x zV(@Gkt9P2evXN>@1Iw}6Sv44zFE<4s4I;uX@d5xI>skm$CX|vss5-pJh^RBXeztv( z0~bZStO1}}wiZ(=m(e8{#^b;;92MsfktG^I7xZQx|G%)syP6vpHFMSc&%SQH3uUNCPdut`(RUU z3cx7~7=KfrZ{!+TwU9eyOz5Zls?)E8;wnP26_@$Gj+CR~^(hvkE8M?wQ!%DV9)s(= z0B9QBU$8VUtuK{w0Bn-%#`sA4*?c!SsIF;g4Zu_wJB|IO_CPw;Rm!_-SX)gbNw<`RRHD^w>8zSb zI*n7Jo-HL^+_Q+Kt;Lue08{t+YEF^~9I4N-3Js&;YeIxq!SX;gfz~`KTy{w~@z7{) zBP<~P|r5L=T(h13MFh?8*D*Popbdl@|`#$odxF4uDY)K@;ny~U9`wTOF?dN4`KCBdxV zt|H8%F=sQxATnOUU`1wFMKbG#Jz-vE)&8#YuJuNPds9m#G)c-hC>57ofuYU zDF$k*;(UG>(I~((I+)3?-sqRDX%vOxU@(}_Xc~_km(2#IPMXAL5OG2VGfaa)u7jR~ zzGWQEl=3-de5TH6sN@Dt#wxy`oYm?FH*c?*8_!6fo^m>!j`qe%Y4bFMVej_^ ziO>a^zXY$r58KH&!?(I%zI2^hx5X>hXyB?a& z`&>&-|L!29M#FJ5bvR?u2^Qjtaqp#is2l1(x1oZEBRs-_yu@Mn(fk3uAjDjHFc@Tl z0}Ki;-4$r$)HXwUYLhIcFC0aofro0L^Q8S1yr_(Kl*)w`Fh1d}Bd!^LlAI z@9#S5?XyE!`D9;ejDbmsp<^E%lk{AWNMxSP3^}|JF)=pH{s1~;w`}NGvY|gmG_q8b zWb@=nmdeFE*-tr9@x-lbK-5w4yl0Hn;{c|LWEYPV-mug zB~zjVw&C@JEZ0l1Yx6VQ5cHbh?yWOcaf~slC zld_FG;*&@P^Dl%$6lm+@N6}M)@<^Fe)mjyD^i@ZQM%!|3a>I*DgFOFz8X)Y=Xdt&A zNAyyHgZV=0h)Jwxr_(v~fxF5I{(Ku@^z-4{Hwe70Rd{V65LDZOl;d!s99bk)OZcHm zRp6nkDTOeRaLNrafu$@#8Tw;AvNOjse{;BRez^aMo;*3H;gcr{D024ScTsyTB&KVbo z6CZ*gN6f(OD`D*byfFO$L?g+m9O8yxV?#~_clWZ;#$DAXJV48C~rd&jDPqU2#o2ghU!q&q>AJ2)Wk8^T-ExIO0 zn8hLjw21?csGh$%Olc0|c8jl&AmA0B4e;Wzt3cBd%{$N#xo+m!U6>sqRtsC z>YzwLOeKqgv>+LkGRTM1_wUa?o*bT?{q+9y)h`>;QXw~7Ymm$vfdqZb!S!RB0|*EQ zVxw&IeT~?PMgZnI%4%@V(C!Oo$Jvpx3zcI2uZ*KnJPR|iiN{PT5)!GCr~Jm4chKqd zbp&Glf>@oMU_v~laSV6B8mivfLgk95cKQj7tP6^!s+)W4Q|LW_d@foGnCYAtkTO~x zbL|Ep5g{TXLL#Q}+-@oHsI+@25X}hI;pnZmDY3v4vW-S@WHlTj?BP(8Q$RS08xnbX zj$FXRXCv%O>KNjP!sEBO!$J~>DIG@+G|s&QD_Nw@j-u?!k{B{2Zpw;q+a9t=Q4N2N zMx5Xake1w7L~KTX*X9kbf>0|Hk5D2L4b-etdCNh^V?_d~NKV4GEf*Sor)3)r`;e1M z%3^_7kioC#7Jg}hhLll8WYlmeF^v+$lD*PE3cSJ!AfdfAEa}Zb#}NW!Jb*GIbZP9* zs?oz_5_;Zl%;Ck7KIlk9IPfs{gaeiuPG;B2KW9Ex9@XBIW#=@B`Do7!61;NZ431!h?;+)TNNd`iAg$ zmVw63a|sN&{1h4*ljJO(!NGy)bUMpJVy6-koGATOkV`4TW=KdP4T53R^8|uOyK=t> zmM2hv)WEo>>`^1haeW$)lrM9lLoNxh2x!V=NRF1fEs>4bKCJAcgUJ~p%WkZ;3w#yAu$c1YURi1OW*+2^tJ=YJ@ zZcPm`{My4+T<8~X1DlM!(7mE;>q2joUVA9S_7E1?3ObWZ4nmbpOS8OXMvX%cN90WE zF=R3yW+j-jNS(@gNYIv%6#NXg|B5rPd;9?XeASb`y&wHb+z6U&D{HpwB^JOD8FBy! zK=;4FX({GJo3*o3u#7F+NYEMeF&s}-SDiVzf>X`mmF%3XCo`QB%p=&o;Wi4`RXTD3 z^YdWP*#N65WQTFWWSrc_JQV0!DahKvw;B`)gsZC5!?@lFQMu1;BMYjrjzXBiC+Bff zaKGC|Q!LO(@-j|9lk@T_TXR>wZD2!E0<3SD@uIZd3A9}$H)*SSy0r=C{D)$kAKnM( z9lIou|7~}F8}04v?QAO@`*IJ7ID`vCN!i9GN$r>hR7{CiY7v_ff2Pf0k3@u{SoGPr zA5BR=*k|+j-ze}#KlqI#)eb@uli^~FIl1}y%YUvdq8VTZ$5hoMO6U&eR+3WXjQu*X- z1?4_E(^80KF1{k1BorA!EeITj1amd7F}`Gwl20Or)WDQ8dmeHJ9fbOz*F=QR1o}9` zA|m`FtmmWf@g@0)rudTNuvJ^ubt6s6Oe=HjK7z)?!CQ3Oo_om2n0_)yKU8B5SPj7-YS}7#ae>{Wj(h{1$kXdQV2z)H4EF_arU*w z@yvm=cu80m$c|;yj?8uJc3yRYUeX5$A*O*(gmBRJ>`ERfNlfH9l7Iy>ZZrjg2df0M zH+)q&;Va_`22mVgV`L`k6n!`jj9JGg3DK!m=3sr+-%poPoA$G6)6>BtYE7fBr;%vk zvH=b}S+nOXHSMRlX+K+P+E267eztJhPxZ8)fgMeeZSCR!q|h?EjV=AuzQ-_@9NjLR zx8ypGn8F2y;yxcoL_{A$j@^j5L=04m!6VZ}U;WTicuhru$Y6S+K?G((BG54PF__Ij zoWbaWPe&Z{xtdqSG$IyKR}6I3kNS$}k*w2$K-==@lE5Q@J9p4q#&fO-`tAovzT^RM z1hz(v!XtvlEDk*MLE`^%ms4s*kMy5?^=DsCSY7S(%vHrUn&AtAgnDO+BQR~l0W+sQ zy{JvrMbozi?Hm-O}|IF7@Sy*Z+Ndc7FWs zyN@S79&IkgR(2_t0jqTvFfJW_m#b4{g0lZf|-HI+QHwB4Ag6 zqyw@OxS9J=wfz?jJaC2i?#F*QlCK66qmz91JcnK0{2E{-H6gQ0^yY^Z}?WA0OuC@n&E z46xfr9`%&Vl7gaoysN2=P zW8WX_zS!US`kz|<4ygv{(BPKPInE^&NIi#bNf$2f!cYt@cZYDKV%tWHL;6+LBB=CR zeTP}H6L>XJYZ zDH?}!PAAg{{V$h=^Z!75J9|&jH=JS5Wiux+`k=1)t*ayhSe^L|9S5!>Im>`?;2o0X zQjcOz;Z|P{XWJqUL+nn8naDQMbP?@2J7`N*=;}}1-hXsp>+l>lR*8pHDCbG?$t7WA zD4kESq}&N{)Ll58pLGYy#|1c4m^cRLS_ns-4v_SN!QkrZ%E2&2hw;h4S5?H|&GFIe zcW1Brd(O^3JDndCW+gVn(cE|$K-5lrC0Qn(a4m??09|n^NwZ{jhCcy@fY-TCSG{QLJmoTHx(PfriuogcqGL+?+~(ffC= zj?a(ZzdJ+kzeR`den$T~e)nn{5el|;@+pJ|4sye0VDWT1XM|)1Pg4CW=TsN@IGDtE zLePX=5)R=)?3BGY@H!CJRcA0NEXVoFrhHk&r!yjAeo5y2T_YA5e^vdbG6@X8SOd-`$et?dHF~^BFQU@VJVh=QHkR-N~3d{%Sa<7BKF!^)O z+5LyJ+ws!JhX?2oz0pQ9>)J+AF;IvkxzbL}KATWCaTOV5JSvN#}yh;U&aDr?2PR z>7yy}L&7_K6p>lz{@c(wbs@1KQ7bFW&%fboV(<}< zRWJr3oG4sO4eHPT?%uO!JGt}!bZ`IZ=KSA9`QwkllTHN*XhHy<4F3GH(~-TPOFBCM zA0(;xOA+JcOaj-Pk^_`h>ztA(=2FF%8a4`;M-CM_&8;9Goj?9SG;sacBdDto(6O*i zwi1r)po_LV>PD!0LFQf5{r3I)F6t^))kRy76Se!z;b~X?@BegrJ=Fj6Pc`X3{^;v> z?u$l{O+qlLaN@lJPvkRqO1#*o!Q@!we^EcbRu`PcBPUGmXbw8+Nj_MqUn|w#$lR** z(FK_wpg;aV&IOsHKmY8c@dKESS0tr!>u2LbY)3edt5R_v9PR9!=}C?whd|fpx0ppF z|5Y|8foFccA`&YO&~C?k=oj~Kin({AeUu&C?mns!WD~=bns1}*;Y@qxo)bRP0PnBU zUe@g14K^;>GkMs%sH;xPt?Z!MJhdh|M&vgHskF?Pdgbu78P#yC4v8;FwpWEOZF*HL zGQDbe*T6nvA@kW}{x8x3^j4#E1MJ@b%8kLBX{zRn>>tr};_lVGNbUw5$_7&=q~J%o zi_6dNvi@7N?I1`WLpr*5B| znT;k}NaI`v!?Ivb_t`Odv3osqjRG1-0SfKzWXZH9XaS4R7MX?7+}h$^zA6ei4WcpX z;xKfwhcRh%fc^%PO3TzWtYqf%kd7{+(#^W{1DKnNH5k8jU-!C|F$^dZaaPtlJe>pVMcC#@Qg5( z;lC6{*j`uZmy@c`$L_wik8filb#oF`LZFu9a*c^oZpd3EOiel3XTygI#-{}_RlWIJ0dP#>MGN7&+a&Wmj zA`#y0X2Dujw`kN{7FIeelwNoq5g{gh^fU`m7FHH1^z z;EMv3^-`fBr0f=V2`atx&jBPI`mZ5?OzjHb7#?l18B~9=dPr(DsABY+&x5e#1OMa3 z1DA1~l`yLf)b5(apMGr>u*Kt={fv~Rm>OgsP`l=}a zUGBAj-_21Ehcrd|R-mhBxjLvFo*e6#Sq))_Luwi{2jR{tK&ao{x5vNAwyOi<_Y$>P z5MdwE)*QwW6E5}%ZwS?Ch+7Em`)$FgZPC39hn0}qE5J(6oCcG@%|z5?k+IP`#;c>NCz+stt#>-CYJQh{9Wt+P!YZb?_jxzI;hY*-a2xfs z40VU-IIF0xYz=;yL>T2$C$LkK!fCgc;`cALP{h>hWj zdR#pR^yi;wL|hDsF=WpsNsnCj1yL`2Ob?6%iErU^)1`*+7>_Q4070Irv z(iu6OCr{2H4y#Gj0NH?4u&N0AZ1R=RX+eUr-FWh(q5Vp+8ez>fbN(#IbpP18{IJvi z$1lAnAO7#3zdZT#&&OS~l>raBMiJ9do2^^vISU2$H(+<+u7JVlx^Qe(sJ{ zs+S%!XAi_zM{No)whV70i@jYmws`htwx~ajVFvH#3n&EDX8SW-CEKEfo zb`z~V*_Pr=>}4fx-z7Uz1VJw=rb(1KHPK^|sLT*cT&QO*`O#3{q)X}})6zk2sLIb~ zaXA6CgwFE9K^57SyjZbTg?dy<3Bgwpil&@h8Iyz@*KpE4N<=+tyb}!hWsHziDQYeP zY04V&pn?}fzcL!YQ>P*nY&lX2ZN>J92zRQ(Ss#lZbd*$^LqCQ&YM36pMBRS}CT{i_ zdVPBO{#1oEhx4ejo$GAGI`d|FeshQ13Z&|Es|S6lEqa+ByZ;VQzPw|RPDem4NuV>$ zb7H5*-A2s!GI^V4crFnjAjDHTQZyxV^Xr8USz5?Tk6a(qnOMoRzl}L4V|J!*ozN-C z^ot|3nzY=5N9p4G3jO+!n!cZg0#^0)&WI(J__tgm{bVOot%#7B~{(JGFDF5xh*u;OjlXB@l+$gPXKBf%> zk-|;HII!9SYut$N84VP7$o3QAiGATcPy}sOiN;zN~0brpM?1Er&~I z>d^@ikv$!2!7owwzjD0BUh~V6j!IUY8$7#`B1`K2O$`1f!b4u(yyRnK=)*a&Op{j?;!Q@R+@U^KxMJd;JLDMp2WVdS_yLn*sD2= zVOl+RBonc}@>K3_SAW~aDnON6$5mq!SuCt;dD88)8iuv_*4uwhiNkWs+ zX2=vVw(OVbR>wU+$2?XXKw1p%K8x1Cm6QO_R;z5Y1RB>`vObDd8~^4Ylj8uE~+8g)+bh0RI*s#1UZgO>|@%F7;Cmp(4iK2dh( zWzTSX#ah*GX4L@J&MSGuMuqgd+{ny#*x5XV*WV!McvXi8g|aW(uqTh2lwZ|Wb_-+3 zs)hdSkAGO+{Ss8BLmEWc-g@b`vCnYy{AvEX84ggjIN-HJu@aH3-tKjxJo_Uq1y$`a zD(Qd}kFc{zO6WvQ!36qOZw%E)A`y|sjEv3c!#m?gk_>(EVr>k>%y8Q=-rNNa}%E9Dwc&+|8D zkkyxX9oc}6sVl`Sl?s1k z%D&&Kt|c2FB1)APtEUR}#n5SM;q}@}&8WspMUkp07XKo1l zA{=;_dpg&183EF$W@@J4u1kYkt476GwDq3@+^$(l-k*YgxKa0#N( zR}lVm4sWu2V-PXAJtz3W&U?RY^nbC9NaQ-5@7Wc(Bz#+SL}yaW)AN#3y5cla$-{F* z*Lv8@JF2GgrzA7ECo>XZ4@X#oPVY>$W?u&3RghBzXBlmU)V)~Zc4I-%`X0Il8~4w6 z=9kh-b%5&#Y0nIKQzGAVe$~l{xKdeQT(L9~H;--rhpoO}ObqRb0 z`+pPN>_XJPjRba$I0=3164d>B7j-{&mtPc405^_(e~x~Ou`l=4lX40y){&wO^bYkS zIfk6MNFI<1HY4_}Olmb$W-Fi0sJ?`Vrc|IU4XRh~&SYJ<2?>eYb2`Uk^A<#Pl7uv| zU{BKv4uCrZEs>Mgv#p1@tXME48ay!{6I?NMDl0UCyKO>z9B3cl#`tQ@GXaO{CChV@ zxn_QCJ;6K{W_nZOwn4Ufk$)i)s#_`&xbwBd#cETk!p3xY7GfF|L=K~`BGY>MU5=JO z;g27+CTp-KU%9bUUCo^A!(t6ub7E?1t>D-s;K>fv^yrj|>aKzTWsKmG-*oBX#Ke z?8<&s2dF4Q$t~0~N2b8z5f#L27W)zHr^;xNf7;!=|G%5^8T0=eEP|U+BBB9sY8})Bjj*-~Vl<(bBtRi2keJ|n zN(9k=DGo1b+6W8kqKGIr8!4>^EJ8D)O<;yyQ`rymVz(;GS&G_fgnXK_00(SAa_wRl zi96-_RLdi3;)-U&;w9yEIl)@5c((I5v_(F-B#aOVr({Mr_WL4Y98Z)o^2x`1LI!*4 zzev#EiRdL$dTiih?jAZw&t0!ad-ZnB@Tm|I#$D9i-PxISQFlgWjL+rYdtbk$UDPei zrHi`HcHYu%&vdAkm+$UbuDgHiRd%<#v-i|=DF3HBqb_ec@4ehWd(WQVWZwHPo@Kh* z|N3e3d5anL{f6^?mV@`R-D&_enD>hu7+yTD-o7HdiAUqvk`vdxt!(DI&-SZ#urPHv z3r$hn*~wta&eNNrxbrN7DLXG(p!lbD6VHtFbmt#8!|^N}p6@Yu3i7etMOznSE|M8QGSwtt!p%+YOUZvKn9Pd&zjt5kKh4Mg+<*3BcO(DZ zMY(hPZ{q%~kVu&y>>B=(Sse}{eLBQ0lRu6r#PaP!U@e%JSw;GwMqU2UI&3t0q-gDvqj3D2y;rYb#~ z1w@k*k3FLl6IVHjZsf2YBi9h5x)(gA4< zsfaisgBhkl`T;iaky*VO7hqc04m*ZZ3ddt`RM##7{#;V*D}tu@QZC|B68Stth1C4* zq;I$F&7Q^3f&pu>Ss>%Ho><*V0F>$aW#0av4PC`{Eln%N4WNops+RD;atLO&1?;*vkY*Wd{c@kprXI$F}6uWHa3t&P}#OFZ0^3*rOcrEe=ET zPSbi9Ea&o4i>x)R9w(Eoe#pDkk1MB=Ewz8uGi>H zrs49GSDPId+75PTu1vCL5OsC5I`7A9dis3)#NCpZihJE2>iQ&@MAI(X-GM!1au4AR zLG}hG^Y7ZnWBTY9Fc$SQDEpP#$*)qw+0~S2D^dbuDv;E9Bq(dnLayhM!yp@H0fqVy zPw_uhXaCIhmM2Ok%A1KdQ9_iq5pgC5QUnvf`3Z!(4*H4uJ_0|lG36psaUV%UxPB0* z&!<+L)Kt};pgz1WN~xusv-+Y}I{AO>eS34;IP&2C{1iCa`-_#eD9etWEzfzjoX70= zW|DYqC#kK;)eJ;J62=t40Z7@JiSM&tp#hNKOO#~!ky`7IR7`@6Mx)W_ZZx_zZw83t zC}5L}a0-l?PSi!O7z+uGil9D^31sX`7{Wn-#B4HPp)f;k0iB;-)u=h8`A~;=AebR{ zqQF$2#>n|qs*O2&6zM?6PPFBxMBPe)O8JR2CO<^)$yL*^-{{Rij+3XvLnlK}^Ao1n zejABP8mlas!W_9o} zI{hfjVo_8|$s!$;ZiL~zf2xtTfW*_nI!2L>klMvmBvl9 z0L+N08`chb&qHS*cfy$^ib~|tBR+=Zsl`;4qI&wYOcgQl)v>A`!ZY>aSwS!>gz}E% z*mCq*b*t*0o@pJM8D@t^$aPVcGfxY?(&JptTCoGJYljbHXCxZ1-Xg5_{T<}#;pYb` ziU$m5{iO82vXYV}G!)*5BtMba51dWpmYFFilDAysmG)IjJE&YasB{b8%&kW8_YyZe+}$1x~axxO%=jULZkQ`TDGmY<=1IX06wt zyW06UGWIZ9BDG&pz>5Z_7;qi;K_{4{?cFW&?~?04#N2G(RizQ{M9FYe#O7Z(ML zr~+SFC}#SVdjBPI4G|1(lM{YBGbXjO+D?Scd4jGQ2nAQY%%uMP|^-c4_j@6P}G^D`Z!Mqb<2p9f$E4qkgBO z{(PTK2&X>kchFWE$JJI}b(-{F-KI4I?S)TiWhZF*fQ-oXnTo?b4#S^m0`5om%a_j< zEg+xiSE-kagrogMf!ldQ-HZ}>3u}FSMPi%|hao8mw0Yx{ba|gn>al4s`v0=4)a2TF zdHV#JkfS*$v?^zXwKVWb5S2~Dmhd{a(B&Tmfb*{BL(!XD&4RpE#r!N%7Hq3JSyxoR z4Sa!UqN`9Sea@%}+5la^XQ6h^Wjz(TpHKP{la`v3nUc8Qs8_)rR0EWU_9iT8MYn3V zX7)4Z;nZkxuJ!P4m95exJiE881~tpBmaI{3)UnDMg;$*BDx6}2f^^doq;5S+U1geq ztjL7otM)7?SK6b4QOwDdvQ$)UCu|$xVv)tJTDC3r2V1>Ma(5eZo6(l|c)dJawH3aR z`l^rpw_5y%imF*t{=fe2%iT)+$Ns@n{KtL#9;*I>oqzRQhqXe^r&__P`OTLN^29?~ zc^;qCpT=4Z^2GAgt=e-?1B@X}Uybq4A3iJndvUHPn#<+t$mX#PiY z56MAjR=?7(w#Xk42vBHJ&ire3S-Xu&diTZs;<{!3#e&}|OQ#;Q#?d@U^>zMMlK*+S zg>~Hj*xlbR-~WEP|8ZZx2ax|!KzMfOq0W@D6QnHeDkgl4W1);R;j=i)R;d3F>Iz7d z%)4`0lNSUP6NA+38WrmrY4!82z`HOc7j5D=o}U=6+F{kCtb~_LjfF*cg!#-o*velp zmG`9P?xg$IUoP58*#8kM(jRsT9(qqrM?v5xafr5joXD?rEZC-ZMnas>DLIGs-J6@t zTyt~xliNXCI?;=wW8o`T_tq(p zN=#-oN~_##Y7)vhGkJhK4I}2nCjsavkp4I_B?p0U<0Od>d%a1XXx-CMQk3;X%;~5n zDJ8sdG6^?;c3rvb;C~CP43i`a)n>_RV&H!Bt71`)MHyP7k@0gN^2BN8p|0kjXX!p2w}OthE2Dv&MDhf7#!u*8kgmvj6Vq zcklbZO6E)>k#Kbj6GDVWB*~*-v?sP%cq#tVPUR6v^opMEZ!<-Y^;7t!YaT9`FQK7h zYZK-s>bo9i=luh^3Bl<5iQMMJz(n#I97a( z1^J=!DeR5iasi@pAGUGc2raMQ)6`-MsRK?Ab!zNm_%lE2Y=qJfs+;7RI2?xQU0uy! z>&(p!H_4)B)n7|3u?pbayDUeegKw-E^xWb(MEwy9>|e=;!SC|LW+@z@q-NwjRYJHe zINh2+kyvHn;ABdPO3WceC)a0MY^d%5D!)0R5i%;*WaO|9;CZ*I_>GZb~KW@u=|sud2_5aYU~KDmG;1QFmNidfXutruar z=FqBADEB3q^^1H60o==SVxhnC1pqyK2pi1aaWW-bke}qk!y}~s)UAqKW;ZQQ@@ipT z^@?rLY_r&*bbG*Sh!m=080#KD9f!Og6aP}A6ND{GNKcPztRzU+fS#)WnCJO9*4Aql z4e96|j_Q{y+9!9(39@3ST39p|Q>A zsxWqYKHxOLF`PLsE7YpsGlpSGBpI}}Opzxopv)KED=f&Vlp+A&71~nkS?)w$tq|@MuoG#52Z{c`~^cntf&l zxvFzdsJVFPBCCXZN7uM47f}4Ff(3t|QGnbo|MDgH`{q|AT@PJV{_^wj+540C|2jlx z`RGwV65=N$KwHuVvr5I^+#Jd$vdzs+XB%l9Gg7&_Ri*xL#yxbfj+r1AYh#kxq;= z8m^JBFl1L&@n^6-RH#uMF8LU;0(F&y?N^S{~`U{0~3`6ldA&1EZX6Lh3^M97&3 zO&sU3qG%Hjhp>{)HSr5(yX8zalT)eoM=Ti7= zv524vrjf;}X0Bjw?I^iuMFxN{(RQ6Cft!=3cr~~>#N3xqdF7UfoCgZqR6NRqsT!^Z z7psw0iGn#%`6VSIRwyLU)`USz9HAwtvw5klDX`0x#a~3_GeHoN4I+`VbfoSvp>m6Zl;Q2Y5mhdvOe|VJ5S+`m;JTnmO2oL?G9aRYr zyoM>Lb(h}Ip?N(dlc%4emEz6>AUW%7@>d9gg*zKSa zJjK8fApye3$0{B@VQ{0_F+30PlY_u~EeFSYX|KL<-yVSgCYoJ5MEhW=KKNS8h$Df_`-}&AdCXYK(G}yDA;SSIA8}~=*D8~tOURqz@s?g%RCkM|PoS8h&my11 zU=l||I!ZZUtcxpkGeTHuZ||`OC9h)tTld#`zxr4R90eRVI|JIzfBU=T{BH+)2T$j} z_wu`U`(IxbBvNryjFVSJ&2AooD3U@1ZXnLRVO4XPGH1yQVAJ8SDg2$?_B4rHik8-5 zcQc9^hD=fl5Uu%Ot!$6#Qii#?lwqBncZ#mYR`qMHq1L6Y@UrA2c~2&78W#Dtj7ze5 zX7@W(<83t27A3BA=u}F7RC9!pL(m{AiM0yw^c~@a02x)X03jHB6oj90GNjiFfw?3z zPkmH^WUdt3myNBhJwK-|_F2653c4ZV%5k(=&iw=x$je#8AjZ05UTT7G|5X<$Y>bv?2(76HBE(44WTDrq*;MUx+uCEJc&E1>|4Cyru zDdsaPkBN$D0mBj`t3G3Ayp;28u5fEzDkdN99C7skVxtx9ZZU*3L($@xa;|_JrdnI& zJZttX;96fr739Kz)-~~Z<>o_KZtjhAtDp46C!=U^&z%K3HlTS%%)sW*z7S*pH_GdC zLDYq~+?MXk8cgPpx6`|n)*wEQ4v#qF#<)5qP| zd^IFp%HlKMYj8MC#w#0rC0O+)ALjm;Cd5xtUK>SMM#ySjhLk4bX4A0*M{cz8g9fwl zjIpG_bmZ16x6o@19J&3PFmnq=svoz0-)_Fn|NcxJ0!S8V8cwxE73w23iOaLpXciY5 zHk-zpN4j!~*K8dZFer`&khB?Pm3)B}hO4uXYYrwsZkKSVIqO)r6T(osO60Y=A<73Y z_V9rn3)086)jIXYT7Trg!xx@K&CpJ=2Psy#gVhf4!Aa7&Ki}0Mett1 znPb4#z+1(Uvmlr?yK&4QmYDYyT{ulpZt1`=U>~{r#ulf`tg(VpcZbfKJ6vvsA>3x2 z**nrQ3#;L~H9O|y`dwmXb2a;$oYfrtmKn9BWZjI}&sTNB-QNGhq7l1||EIsR|DqiK zf3UN^_vHV%kKY6OejJ{jH6G(IA<8cDnqiyyCDYS3t3$nYqBZp9xyvsR+ z^!ICV2o+&9IE3cAaf%=s+&HaHrP839ol1|*A@l|(cz{Lu`#?XwFNe}OF&De5t|axY z71D8s64PkIJj`z>!{x0iWW$9>&+yy63IW z)3mOQza8gQEGz)}ZTpyD2n)~ls{W-~7`OE<0nkV8TUywO(X6`Nr3>S3me;L47iwL7 z$Gii8Naa^nZZteexnMg*Q%yR;@#DDc)R{TE)2T%9^?&tS#{-0CD zICtR$vUu{*c!F}An%zNpo7?$>tiJBXF;q|BrMyEHh+C$Csex4MBFe1Gti5f1wL_KC z-aHk#qobt{%T}5bT~yy&tz*S2ZZ;3-O{q4krEIgAUv1uO*Ve3!HKmxTVo`LjXbM>q zxfB=Lv*?yGdm2ANO&8_)m_zJk9SU=qbDksB@YTrSZ^F*}6 zvo<-{T!f5?fhaO_UVX-EWwSYsa%b>1GppNl90R+5&3L z^3LupUR~tX+P2>?yEKleg=HF8A}%d+n;+)2Th@PkYyU4N0c|M+)>i-P#m+%F{%`-q zQ~j@d`K`zQyOIO=OmfcMT>n)}`DlE<> zepUT|{82kJ;~H#ow>Rq5i^PGIoyGN0VAUYOfC}6BxD=@}7h*e+?4}Eor-0>0L5|a8 zy!?D-MUC2;r-Ga=h32F1=I8CwoIo_AuPTygIxV>@5{pu?u_ z?GHgon{2ng;OPj;84H)_ZQnmG! z?hfr?VZUb4aA!vfm#wnO=b8fG@W^el^|N3Gts-@IcC?z@&|81Kz4f!+7E$?{G(A;E zx|TL|L#URHE=>c9tP(p>dZSRuAGb1uC({=CWulDvaHIBtCmndjml9O52Zkubv)_L`HTV_!f*G}1IxuSY&t+=Mkl}e>H1G9Wou3IQ0 z?B>Q#$6Ug+o>Wh}r8^A zrzWbwM;GjEH2s9R9VFR+MsCBPi`-oHRTIV9hhL&Ek%>n9oA?sdSURe6g}IzLO#!dd z5a?C(04VU!{wAJP#adRx7zY7**6m8QNSa$mo3go<0ul=x1)j9Ra@NRa-+E>USfRvi z?V82)e{W2}2^~d@lO=V`7X5!`e}AW>|M&L}p7j5F`E8(6oJbiXpw>K0uiP*qG)QR( zMYdz?U*ZuFp0j~2##A7Y#xdiGKw?b75TaGk1SkHOMx$-SNr)3V)f-;^97ln(fg&7_0L535%&OdZB9it7e}K*`@=Y>k(&ZEJcc9DHO61_0fPN zSA;|vBI-NOaW*#4#n0cpIdh!fe)~=8#7;nB5(OmkDbaej+!YTsJlLVN6Z8=6de`2y ziI-u5CXCMx5%cL`ugA%ViiFR)eJ^1CCE*@ry@BdqbuYVweti}R77|B}0%iTrP#Q}` zGiwIu;h26h-B0_@C5?hZBu#KSdWU0YLJ}<1Ux~TGyT;~`FN8Nt!%zh?!jZK3YBE#0 z4RU`ZVaU*D#>2o>Nc_y$rKD}bP$~#wDMvWY0)>QB!(+~Z6iylbi7xmI{i57G=mJN7 zrsz0tjb7sfhisHjv?h+{vq_Ic3E?rPf^@b)k;xw*5>NoZhS_}9z*Uob5+xZzjsshZ zQhZ|0rZgY|VZ$lL`H03Oj0qR$YE1nx@^K_pE;w$0ixpE6vKU3=N^=oPr6R9*xWcs^ zv$dfKj_`2ZdzPGXB1n`xQ~0R!evu=DIma^xA({~7 zg_w`2F`~m65(eo=0g+spp|ATvTlq~NEV2bCI-cVMWRP0q9;hS13Tf0>;P{0O(Tt_& zilt$ILV8K$8$k#n*9pgnMnlFYN<^rALD-X|4hto3A4iBrBEgYQG_V0VbT%@!v^j30 zAoz>?vLWf;F#8+Gnto)@gtLLv&^1ONcjdY|l~P|MB=SkVvh+c4E1k^gscJ8kUIWXs zi6H6dI3i&jkI3r~3(>}#{~9x)94~>wp!M;y~c*g?LhVC)6L=zU|0mqGa7dkp4IQYzI zLO#F*2>NGhXXo@!vP2L6_!o5?Y0$L6J=I>mK|YZ|0g~BC=d!b59X072h3Qaq-9Q#$ zO9a?JKmkB{1I#e1+l*)57UGC%FgOD4>-z86LsXe+a+2axh`=0vr^LqJ@MrZHqAo+ zRe~sa=bKL$oNU#R>zMHbSzwMfx1?R@Cn0=nPVBlM=VI)W>@IQ63#iM`?}9}Vy(9N8 zsK4Y{TzKP3@rDICc!9b>$EhPhee=7H8LGLpUh@Uy3-^5-#5GTg5SCx~j74$;THWjg%Rak}V~lPP%9 z^+TcPL4`fwR1oxAQ6u>cZE2|i?EMXpBuQ2uh!2v`@=x@a_&VJR5c0{MrK?62nf1{h zGYP#=T~#wvY*%+tRXww-VN~rI;hE`Ek>N4!9@U-G)4(AK(;-e;9g+;~$rd5b4(?0` zNOnSY;s9yU-AM?J4@q{%$q)v+tdL|#_W=h24$k~5!Xv^XGBPWxr+c;ncDgdc{rU6f z?$4h;fBtj+{vZFTZ~TD&Yd_ujR`Qdd_w&E!x$l1U#eaM6w|Bn%2k(CSkNw~`efW$1 zm)@8C<}bbciGTdgH+=X1$-d^x{{GrO|5N|wn?C&Szwu}P?I&MZzx$0}{s%^X=}Ug_ z!QVglJKwwVKYab+`~KC(|LM*j`@nznm%jMF{JH<;NAAWS`*)Mi{_no|H~zxE{O0KA zKKoOD?_)pl`uG3EKl&%X=)d3n#b@{b=8qqLSNK)$`@|rO{N7K!|8uW=^vAy9 zlb`h$|GzUkM0^&9?+A4cEt@n89ew}0kOzx6F!KmEz=?~lLc?|s1!z406Ozwb*n z{vu~b|LoSU|M1^^wzK}R|NRgB{%61B*N(pAXa4e~|Kx)|_)mW>`oyn(!>_;n^FR6n z|J9%B{?R{v^Z)*acmD8C{_wZ`i~sF&fAw27zVtW3zwvv%^$R|6`5#^V$*;S*wfeU{ z{YU@R%u-*vtkf6*_0^fx~F{@?QZpZBvbeft0T zneY9(f9eN<-}~B+(69LU7yt9$`tk?A|65mn>3aP6pYu8NSHA82zwgifEHSfpZc|b@$3KU^Zv$f{?I4i`PQ55?H~TRKREdGX#2;0`}2;UUH+Dr{@V9=-}KTi zf6G7peYgMH&;F7xf9>19@bX`8{{sK$mw)#E_5Q#1JzstLdzXLq(x<-cJHG4N*nj*( zy$^oXi$8z*!SDFG-~NqX_~d8*<~#44p8odl{Nks6<;CBOzxhvo!-L=b^rwFDQ$PA! z>{ox`ef+n7=c|7CyT9$%$q#(~cmCM&1Mkm#-$y^^Xa0Xn@B28r{mOT;Pp%wBZ~U9@ z`n;FF>x=%v=X~+sTKx<9omUH*fsE zAOHG0Kl0r_|FN(C-LHD)ncw~0e>MJsA9?0qzVDff=e_=fc#K#=PtnBVyz7r3<*Yk~ z6vLq3-4Z`L6F3gfRL1J+>gu&CSLDB|tE{wcZEbyhb?wT=>NBfr*REY( zeFm&9td=!T!Z@VQte&~7V&$Ha2SyR$kYf_DUJC#pax^4#(gWL&!#-rF1ppqyA!0r7 zP7444JP^S#>H*zJj!lM5mI?C-1Fx)~hQi`XBf%VRV&VyEfm``!c<*Pl>9@{qoW&lQj z#3%xcB-BSMlA|QTeBuS@6on*40XY2HTOiO~0Wd^Q5e0k%x#$)Q+{Xb5CjdtvVF*A< zk|+Rtgus15!vF*c0-ONM89)(7G^Us#FhGze6tNXB2+;%F$06pE6#%0^bU+e@uurJ$ zlHfk(BM>4O;AjXq@<(8R>6mp|BO*jN;yh-(t`SYgC*v0OMJ*j)x{xu%S(kC>pJX}? zkB8=OPk!>&*H<5`Z(Qlb(Xe%bCie*qWV4wL@2S4p@>0RHJfL30l#CG{p@g-@5Jw#1 z2vMueU){S8DOv%$k>6Sz!SJq4O|Fw;a`Tub|=QB516VTd=owZhg zhlueWU?aGG^;*w=;f0Os8|yEuT@PM_5N>R&UKw2PZ>+7pxPEP2{C?rZt1kv#eW#*48^OT)lc_ z^@Xb&>wltsq1bAl+VOu1!vwK2F92%C|JwDn>l+(|@qc~o>V^IPSe{E@i^LO(ha;Z1 zPA-AN{p}BXx0K22?FJ~~cz_Y@fzAERtygxW@!Ps|34Ap}zO>d}4oM$|Acho<5l57X zulnV-)D_C?E~MBG5oBluM1&)0TLM0kwq+Osa*8O$0g^^#G4l$*ksl_~IJEVcuwaT7!$ag##Dzs2 z0LBT0L$nn_CaR}IB#CJ9og9^dfOch>M#)y>wTsMWHyHtwpQSoy07_dQQVJauZGH_k z{SNr@<$zESOr(Mr7Vaq)x*bPDQ9DJXXI6=(Rz1*ew*a_w3G8%+9rag{^`3eyRxsm< z$@n2OQJ-(aF_H-kX*(x){f!pLNjfWVi;QE)^|AuM0LFTKE9>#0q>pHXIAS0UAs-Mr zW~Lb5&e@X-#i{h}#3*7TJm5OH{D+vAJ-ym22|ZU-Cr#gxzeA)rGr}~34O0NaklaTB2+#l~AqTtLtONE5W0DUw zxAXu^H~~vAj>S6C)Pf_yktkR6GvJ2_<6=OvjPvCcA%7o%r5I6JvdEe>4}jr)IAO~x zAizuv?f@(WL?{_xGGvLD({|E-xY|MSn$vh&(oV|jGkd_FBz>g40pKOcEr)c7xZMr4 ztpt`5ChGbM3dg{QF_e7+BPOIGxMqki3-T6C+3B;=#9+T;6y_nPa?wl#cO1hooMhTm zPw<^V5{4p|pljzY5H`si#Kos6gp0Wg#C79t6R}JM+q$z@0y3>1$P|KNE=$iO5DOI; z+LUGMY-S!V(_WU-OVj}da+-i)n0iMj(#veH#FD>>aul1<^0h~WTH6v!4SmD2+c zAC>sH1^XyWSqRmyg_W+T7Yb(n2n9)qs8FUr{zof{^b1%be58Cjkr}DWf}a4h7;=9E zViL${nxaAGtT;)VN0|Qs@mZHccEY+a7~=?w=J0g0bkoV$8z&*hafrOMc-9qF$nja| z9yEzK9xEkZs>Xr(2)5FB$`)f&&V3U3DCY7H?Xv0WVm&znN+yep6!=6BIEC9%|AI|1 z(+VEtOF;T>BA?5~Rtj1vVNn5!r11lmkkE%>MI$F`z|mM}R3uy2A}wb=F{?(>UI{Q9 zMuc(fgE0vZz)@iu5ZSXtdn7=5*413+zjaWgG-U<(B_Z9Il0MSrSs!KE6>8U?=#S!W zlR)c+07)$?HLNbC2L>=?sE#2+Y)k*kNv3NAGg*r{>Yh#OB5zN-gIS1BTvsNfLk2d* zf95Go6i@vSjc+zAG5LH7hUw*IL8ut8VMv`AO&)rlD|IDi_EVa^@8zp_?Ebz&= zON-9PE{8)o$c&UEnNDiVzOEHh4;<{gynA?b@R8%&n|nKNl3N6^UNvVNP&`mse9Rd zI5Dmh2s@olN3WU8k_oe{X;y^2zz|Fj`pGaQg9kvp2+5EEHX=zF2sNU6spxoW??!s3%xWWbMHPHjMX$Hq zHZdDB#my+=r7|lC!xGFEAWBl|vo=+vnz+0vt-5#*ZR7KvAdqUDQWTvjVmBj2- zT5B#b{l_?ATr|oUMv2VsOZ63)4l5fyhCW(uRySokWQIaa0xzv*S5!jP%Zn*Kg&d{5 ztg9E958yZs&D<8xv&M`|%S+J%RC95fAknfDl7RcNLx%W7Zf!Ay^dyfXv8GT<4`JVt zp=t!M%K=Yl#K6tX!&k&C*(DU*-rU<&{d_2NyB3?$o|+-~)mF-C%s}douvi}@6s03J z_j2hT<1h+fNFsC(5DM;56o=TCyxo%)g`K_!vgD#1Lvu6XBNTC+ub}&3!bf>aLcHlv zLij#p>^`9ZNdFMCnW)}9@%f%uA<_=m9Y%zT9wV$I%(xJPRvAK_sW~g?IQoxkw<{YG zl{;RS7~-N7kB^WiIPqf5phqHafGOi1O(G+HyDFJVuq&Hxi%N@B8lS*V7$@Uw$CML2 zG-j?xKO}u;J-P=wo7;OkopEqUk``5ho+;5;7xS?P#*^b9+t@EuNHk28n%KDtiBIoB zWkj*g8W~pIEfZIE!3f=-ssE+gp|&Sj0U|g-CF_oa-A@J z;o#<8x=O-YhGLNuWB&vNAc?_%lCiSy6c@`Ka5PF+2_qZKv*-%y@sMwOi3hNq^F{){V=nZij*r^P+Bq1 zh3GU|Tc-U)F>!x{BHagyCENqDZKaiQPna3^I>N5R5dtyfBiZXzo2t1}Hj$9%y%hjM zMnIqv-^+&eJuwdN*)x2u5Ze}T8BdO?rACzCp$EFB!tCv8Td-?)Hj^-ss-_}grU`+i zjjHM96_!}gJ6Oy+zQn3K=pV|cCkD2$T+KqNtXlaEsE{b>A4*p+xpX>#5L#b)!vW+# zPDG$Ds%lH_(xrTn@(mEPt$2N`NOjn#2i{R%005Vs?e>LkgKU((L;i?>_BH`b#u15y zd|R$~a>Q%ux+P8MJs5-RuhiL;uQ^z{O*rZSHZ^Q3GBozz*F@i?Wv zZnJ%n&P=I?%Tez%(Gpt*O9?}RBvj*HsUNK%)FN%U=%Gs29R;4GN2-P)`F&yBNDo#O zDtAn8%4+AS3R3q5$TJ5ibAqbXi?fCyTer zCQaLFpHR*^GPqHw58b(9LY4KSq8`&OYiCjpPnnm{`IF4l+p~C`9 zZ*)n_OM#jqflzcZL2>ycKFAbtm<(}rTt%g;zN@5!@*58yg3hZdyr;GwJbI++M*I`R z-K6>o1(qs7GSZ@&@$54`AySAs~fuq2KK|m2>H=b8a<3P5@6c&O` zj02e=Bts8TN-DSr$&i^WAsNan{s>a&b3{FcxTk`hZ`?h4=>_$bgrVve`b)wGFC42# zwD8!+N=_lUfBaU0=;Syg!yBubm1wA6igv%Tw%S>3ss7`K7)AVztX=frnOWkxcX_!w zWXw109=cP*2o4cl09P}%T3Kb7MTZ*mV;HA)K)OCF7&^7uM7xu2-#Oapf!D-Di1}r0 z8;=mUoJ)K;vr&WrtygHpn}ki-Gx=#W#$(Qwk?lQ^3%jU~f4hQ)Ld5*R2iF(skgW3{MvFDZ6BT?)2VKRG_r_!slyNO7ZLVxXA2&6?tXgdvWG zcV&Jtncs=FQHVIQV`4;QdikVIX;C}HKBOGWX(0Pcv6)FpOie}O(yDOtX}5vwV#5W? z+=MQ6EBiuB0y`dIGYGJ9!3#qq7nhJ$%jzX^LwmLkK~9A+f$n#;A)#hIy(8VV3QSFg zJd2e^S4;vO(Xb=^-#Vb-v9PVmvN^WGAF9MYPUh93`# zIWyuoePcIhuJZN0ljA0$vI{yFc^$l~@+wK82LzXjwW78WMHD;Fc~nCDx5TY@Szxu5 z4>?Si(WR8`xyV%=slFH3z=df+_Q!@ipP-4GWvLZ__$*@|xj$;guPItbs>;7l(4+_2 z`4&U#$b)Z73%_kwL8YCc21+hZF*3~uMa~*44~Hou87TKwN&Bt12e>?d=o(HX7yW(PZcLpAI#1;kBnTg( z5c!-?a64`4>KSu>xiwKHw)!w^Rr1bBh^V$pj;z1WyUE3Jl*{JLI7m6Sn5yih)d7$v zFR&>=kh4TC%pUcqD^ZSoteBVgj3BaB84kWH>&;0_LNc5j#uUL|i$ucc#}OC3P<;XF6R^KE?v-=YTF?>y@eFGo zlMHx%#z41t@S(CAc617SaCn05_rRKY2hw~W5)+L1(aAIVHi=M{L#U>^5rZ7Ff!x~a zfo*b|@I&3rvawUeQPoI_DJC)&K8?fO*Ke#tBIl_KgwPEWUQ7`h$2oOSVz9DTl_HAE zQN-0FWftx$Vu{Vl(G^de*_T%7`y@zDen`hFdeE>3*T+>Enx3ZFy~Gfg;W5Q8-hfaK zdd6Aq&`*W462(a3BKuRMJe|HigR(V((GY3%cZj&!ah))Z#$YH9srWL531ni-$r!QARza3hE*^GK&TA7I%xR*$IS#q^fC_$84nie4tw#VT*ERj5N%g?m z>gt-i=Vx17PelJuv)1pURE>q{wcD~Q*OWX%w{Vm^P{EuGyso??D^U{4Lyd39&ULsW z69J-A;RwuGoAg{5kpHndT4nv_D4?P*FS3Z+Bsw63OYxNGT^3_fcR6#~&dxPkc`?PO zI7CAfG%qd7Gh115Pi5a^-Vv6dvH%;GTt#6<86z0niNcAH)=Qac6I|3w*_m&)vhDM8 zoq&=U+`^0t8#s5ePVFs<@A0fsX2|!+INqm3XjA1#nOZfS3B)Q_X)m>*4$cpFy=nv5 zfz4E-0_)^v@ulv^7TK)BWxL&=vNPCe+)ZYYwxw>)#0s(Z!0YYJTesSJuE@#Mq|+WE zZKUa-`wC0RmcBVeC*#c!)2FjTJjQ(1RZrd$Rf`)>u$pkS*((q0Su=~G{~7`bQ}OZX z2@rXL&kBY!!5rCO~dPdL&bai~t<@6v>DL zVgLB*U&@(`VMJ0lO*=J|N&ejCekYz~IeM5);&(y=zH+-EFMuY(#zJ=ew_5cdiGnD*#lSC z*7vY^t#~fx+9>B*TV21Rv)RJSTyI;(ST%=7<7!`9w#K{+LVSuM#Mp||#$tpSI0_k3 zrH^ec!fejon=-w$NKX~hy<}yUZl<=M)aXvc_Rxj>Tn_vNoMkQ37wNw}eRq<)@(-~i$jCw)SbH(X z^wKk5gVeWHH^fYrR^#Pe8!i>Gmny$=xa2-I$UfVEnU(s~Au}t%27_i+k`0H=tYjMw zoHAJ%@M^uRGXG~9Ijhc*vsN*3HtGjXX*Sp0*x4cTUz-q^txL{Me`=?kon(VY`f5hwib<|xXl&DOG4TIDn=t^?x@SX;P ziy6S$U5Ez?Mnq8MLnhJ}GHX7>%cDD8!Nmifp zEit9vFOs9;aanC0#fUP@IEv&6Sy9rydBef0a;FY#g%FQt^;K$6#BN#u_w>eJwpE^$ zT@@>6B`Ml=<(clVdi84wre`se#dL(saYy9Zu)88<1y zgodUuqG=Gbt-nf>gduJ6Tamspw>}t=y#)ZqaSx0q9*pB0x6`6P<*cSkWiIF_HC2Xs zqt!Ca^!y`{lpJS;V-hT7r;qJY>WvGPNS^PVhaa7>$q8l$Zz^{sgJK!Hm7xW027%3h z_-ca*R`HOROrB_p_I42xcV~)0@-P)|q~jSAD56GxX>DIRr!1f`BzE zES{Y~vrZ3esgT><{q(>hD+4bVi;S&9t_?~~PeJRnMZn z_rQy5t5>FoIwAqupRMllV1nSmkZx{_I!?0dcil^(@nkT%MOyxove?TDw{jLVb@NR} zXi}>zvFraR zV<5+0gZiQeisTW6g8}w++@)R^sI$!aHYu>XueQ+XsfisjRcjDVFDGp=K^2jmx(a~I zGmPZxCV>zouNvk}vE(V1JRIi@a7SHIWimsq8mTgCfIssKhgXOx{ptyjiyB4LCy_SNjBu_>J)Ce|70v8zM%JAV$VtnOBT zuN-0R+ayA5vHodq$D5p1*UYSSdL)r-B$9rQDgQqZsTBnADB zQrdc+=<20AfK|LoAV?C`oe{`pYf0J;EO4_h#?fYa&C4E+@HiQRC>i$=?Z$}uDB^I4 zs!mBMbuLkF8P`2OyER5R??tyT$L(wm?UK#zRt1mn!QCh$y9Xc4!=)bQNz|CZT(Q;1 zW{~o5yn-1gbaD%iF)#2a7&FN~|RP5ka-m#uc>|0(7#5X|O9Fw@=e-G?R1I^6ugWEDE#u|kt& z^{4|U%PfxzcrwdeI}1SBp-ZIAr_S?)D9dU%A4pl&Tb=}%vRrMZ0hOI2>y4qx^5S{5FQV9PQc^n?SKSF0(uvzb3DGS-x;U0`EP$Hua(kXg{N&ZkqI9UseD;xtFd za+%JL10$=%^HUD>m$PUW3HEoUwaq!h{gruqVxi7*?Q<5eGgo^wDPsYEXSMVf0C`qV ze}2%jCUSXCz@D-4CexEK8r(2j4)^;s=(D;Sy1>sG6tP(NvjzoD2S9Vwa;`$AfS@g^ z7#j%9L31W3v<77sz|b0&SOJIDpuAc@w1%ZOf<$W~@ACsiYf$=`VbK~5#|vPzCkGhK z-MufM(LN)g(d>|;rvV(z!EXwWR`Km=1xRyM=K><_3=nCKc&(=mB+c?|%mb5Fk$pix zX%*Dxhf1p;cowj<3X*4qORFGz0hsp00H)bdopV8^RS{SeXj&EhGr*=*kvtP{S{2bV zL#I^{e(!^)*)#o|@M)DK76zbJS;AQ$)GCRd4MeSy?Ac+|DoK9^0I69^{WC$SIaZ*v zfT*7UIwSRfYDG@Y0;x8gmnooXB^zXsuxgduT>z`SCxF%LDCQEhTGsgQ9dNZm zh3AG>s~#AS5n#<-nMFXX)oG76P-@l&hx;XwBNwoEd7Zd?Iif*jnzadkv_X zo2&DH9jhqG1w3Z$m|sATz5CE(?v^_n_?Vlf3x2GwGn@f{tbzdt1X&#e3j-mm7#%hY zS?#E32t-y<%##a6R+wfM2u79*%V`Qn=45BlfMkyOZzf2xjLEZsl2u7)3M`qmQkfr^ ztg7s4XtK=zKQlO)#jy*XEaPRd0A=N3T@YoprJn_)tg`q5Oj$Dq<^U=yGf)LpR?ET@ z3szRHUm32fwq_2%GJrZ6yo?20W?|l_FoPOQvoc>5sAd^+Pd%<#xz3-l$Y%A;KL@s1 z)=e(Z&8DK8IXmKG#y2bT@OTl<%H>~RoShxxY^qeBN|dwwNr5K;=ge9|Ee7eVbU*+! z!8*&cF+18>;ZTxP@oYqrP==d99Hr-1awEGQ+^oRV9Pnl?wzQ%d!yt!pmSd|P(#+o1 zdon=H4sLF4RpFRz-&B>)BR91c7-wNr4OFDN3L?!et%#Fmf6I4z6_#i^wpiyD7|+A{ znKLl0tb1#}WMy$BY&MlKC<@4^`-pJqaD!2xlM0JOl(GV#^vsLj3I<2+Fr_Xwy^+%y zBw;AinRq|La^ybBm1EbQDK{&yGYSY^hJ1P6tS+SvCT!DuOiePFg9^*^Jw25NGIEJh zZW=&{UAhDgNQl5qC~T8WX?Zp2sq$1^7bbi}D1KY1VA_Yi?26)#d-;bi$AtR9RFcp`t4kdt1tPIu`Y&z&@g5%+#nakIdbIwgIrOBD*AFNe8VCUuC!=rBe%=>Tx*a)s)z1D-U)9G}; zeuyALVyNmE|8!`rC{F`lQ4=sRVGe>0hr>q9#z`3J#eGwTMHbg_%DN)dW+VfL<}8B@ zlkn2M$0TX#(`j_%O!eI}rt$P9L zV;FgB>mFTGKya!FQol$hlOEU|+$LN`sz<2@&Ed*6{EAU7dEK`vy~Ok%5-?ZVNs&71 zVPV7;q&{;o(CMtoj zIczJ_&RTSPmpjMPapt0i@AT}&lr&Gp84Mw>cGDKSIEvvoijl)))|&*56^sN@1pAbX zg_)Kx>BgcQ(L!RgHIQo){W3L0WT+s3a^J`Ep%h+`ZUfW7kZo!(>=>47?1CcA2G)QA zne+_fj&fXcf4(3wix;xZJhA5~>iM}q^zqEvc}}dky1-45xm+(T;P=;G7!;9w9^>GxE;jxZBDSSlH5J%`3M-d77$BaXsI7sMJoSY;z zsfHox!*JT?G?=rTLf9V1%pajK>?m)wpfx3-W@xSDmB0%I##J0B*YQp^7MRtS{w!F z0VWNKmkruHWk~#!Dd}`@tWed*(j|2~M&mxB#})lSUf@xwRMb~_Awl`$2tmsG2s+v# z{gn3Xx-?wxWMr{jVkR&Xjl75@!x%EV7?l%UIVvrkQWh4TX5xdI1*gqfkpjHGnA%(y zIEeSDf7fw;gZQ4t9$DKfr8<-lN@m$gJZIFUl1$EmMpml%Y(*^=dueKM(~+0XSf3`S zON%JNMqDb1gI<`!j08b0qk^Uyr^mL zPE9bP&J6;p+VggS|MVG&|70}F)3Fm#;x^rXaDI78cOA-gx!7x%1NP}jM4>TFJ0}K> zJNu##Xx!A#fIs6Vcqa52H_0<&&$!7xJ;*a|fQk*^zN72tP%*I5UqT%aAtVntLR|oJ`qt@d-tQS$i*@!s#dJPPLA= z)YOUr=0?={ROw*YQZbK*xv${BSojih&ZjUIW}I1qYaE1>qdOTxpac`(iZ-v{Dcw7i z;koKBbvVQl9+sB2M18=yd#Kagjssg21-?o8@>DT6(mR(X>QLQ2L?XS*Oou3oedR<( zhe8#$_$KM=7~sg>sk0d~r8MVD9#K1mA=ov4KyHr7=r+*7^?jt8Cm&XC@{69$niZ+2 z82w>aMarfVJ9niU4L4)V%L8QF#7`tVzq(2&#+`9+Npq&=CcCB<%Z>w774=lF z53Jhm*>4)u8An6J3TF%-U!_a@H?R7LM1*QA2>WjdV4>rMRo2VQTpL9qc|ol{XQ7U@ zse!8!*sNJJXHrlWv_Vc?rtfn_O-F%Ji^MVll%pXoS?`Lcl+t>+(G#+q5-cJ6nLj|4 z!%S!(jIiQXOnHtamo#^{v2cB*rP<9iV!b;^LgYA<)v_xk(o{`)`BdqohX>%Eun6w0 z=;$Kf)kpAh}~PBdB!Y|am|=1cuJo4bV^?` zmu#E!hzCdoU)?T-?lhiO3tVM;e|p?nhXi#;QQ`j<{1+odhO^_7%qORaq5$+KR-)Vq z(L#wez1Y3V{OH_n@nfr8py#XN(ww zL(~J8&5o4Wiw6%Mf_o1i-UE*wf#(!6o!qxakK{MZKtS$Cm-DP7W3?$;qN6^l~YADk!o`%ZH8TJ{6aZ_Sv*N$EnY$6hc}$l9n$) zIzo5!se5UQYKmhLpfH``wd;F?A_D*=HN^@bQK%0%rl+}mLMigOIg_mHSvjI4x}h%L zAP#9oppJ^C4akg7nQcZZ8C3a(M6FT&6Rf`|)uUyf>q;%#k~W}#nxJ*DVTuHkZkMTdJ+QXEaV2{%8lsde zIJ7K<^b628Cg$*#a$i*nNikU}oAo4`PaP$HiX)Hwe@Gf>RhGG_#})&`poK?%PLmxDR~~Y0BAp_TDaW}VUB#BP?Wy4@-t3xG?e+(d(1=m!5Ahv z0%@`Vq2soi!_#*GVm`%kUqcWmU*Rs1Fhdd{b&6&e&+KNx zM=0W&T7I!x&$L5k@;xPl??cA!6B^{cRLjmSKS4;I6_Av2X&wBy1i5W3HK8!O0x||` ztDaC4(C3H(7{((QC1XUf4-{8od9Fbh+9~ZvSut%B345l>DV%hW(yFUQ4lN>|PcQk+ zDVQLk2K`}8o_CVF4H}ZbLMEw{rnABc6Xxf5Ar%(1X05EqGiOD0Y=)#D*C`{&fPF|> zJJ}mG%QQK~XX*83$m9ZCn+omB9lg=$8sQ*7QK5DKw56VEYtPY2{#y*CLK1x_RSH&$ zM@~Un`t7c$`kAyyMyq+}ll{fu!s~mgEkd2e$g7>{^>&5Wa&yQmayyd-cJ{@Y1o>oi z$i)b_W&dj?T73#&rnz=s<;if*4P@DT6Rm}MT-C}2RtoG``0OgYD$icCHmKlEe$yVP z(g%yfJ|Q83QK5ON%ga}xj5J>+ROp#A1M9bQ1RoXp5yNj6r4Oczvx-(oi#-%1XOag+ zQ6SZ1n}s+i3{AzRe7}c<2-d2;!Ut^`9$fMLZiKlg<7Hf?UojHFl<5K3L(yuIuIV|2 z)Q?(Kzow1X^pws_BlfU-S3$Ee>ySs49Mbw*3bt7PM~__@ly7OcPzM+4!2bSJtAi3; zN)xqEHTK;7y0%YOj-O&*mM~8lKz*&zb(bLkqY~5^k^40U*%k~)7$E9e1c_CT!EVzr z91`kGnr10_#sEh!w_DMkB5S?%*+jxFRce_}=`N`WLkbXwIArJ3L}|e~NX=2cIg?V` zEIPY|`;u!M4UAl-KHK6mA09Ew9B^JLyIh@9bZFtSrDIz=wr$(CZQIzfZQHh!9ox2T z+nsaI=pNnuwqBR&udiy>EKwheAR%5wqly+;5sfgvJrH}SBN3Zx^uDISHRdzI$23z5 zf6gkB@0D4h?`_-JnnOQE-LEjZE>(~b~$ax-d51lh!f9SU*B{pS`XJJmpy$xfDuaeuh{=? zZ1N3))vp@`rU&*WUX=CQkCT=M$nou7@_d~Ib_d|Bt=K997%&h2B9i`5jP zAn-sW5mXR`5W}A!KVan4XM%Z(zM(7=Jd#h_^5?W>7d$fwp^$NmIQ5R;5Q~pmIc+`^ zP)U~*?*(SRA0Xz>tA>koamPNdX0}leC!KlH)kZiU$fM2rC<=%Ol^ z=I;lhX;KeoQdTp)Fe!qg!>oe9=$Ow1c;pv66BD9HNGyu|iyJ_&PZ@k-vS(XRc-q!1 zi}wC}ig+ssaL|?rkH}ar&K9vo%$0c@A zO|o>RR2)SpONPYNIw1NaVS(fV;#J_37e`@%v!{;skg*<~!ZsEzKp0y@`G^b+#C5fD zwEWN47Pi6$neN!aYNWaRMjt5Ru*3;m&o|?_ zvLmUIJHCh`;*VL{hc1@pVAA%E0(x#})7!e~=zsE@pEZgZ^;3j=BpvQN4`FK;UF} zDJL$tP)(;%*$l@nP6(iaumRy%p7R$yorzpN^z|%1mx3%qxZQO{QfIk+_VAq*f7inq zhCB8F^0w|ZxM;rJ;qBK@SSIZggUheQ4?~lO#fa z78RLXQ1w7LM8biKvh8HR-^w6;wsm*%!eCca@ zeXx!Ct$~P;)+~Og0ECtBg=kicpgni|VRt&a@Zf7|U|{7M+j_^{Fgesvb$njDl|pNX z0~rDDr9&sM>a5yDF-p-0=WxZf_u()bUF2-rotBK72MUT)JhY(^j>I6Wa1RmNbh${8 z!E`;7#0;*>g%%1m?vg~aghtLF40tqtyk>nN>Lcv-b5}keL{uK>2GrfL1C1kxsrs{` zAY7t}=!O=&3#(W%tHeTGEc3LyVZm74vbqv(1x!k*G~nppS`LHSWVx-%&8co`@|wUw zn%t#}U=5{B9kI;!cn2qX-JgTy|6&Fm)|y?YOn2~ zn`Y?82Hvx+0iFnqN2g;BuD-CBzLT%hMKaERrei$2E2WFCA9hh_Qz##L43jOGlY5DS_pmy4+f0s zd*S&vCfpM%EouehlVzN>5Yc{IC5KENJb!THz4n%2*!`OT=8)#buiU zs?L#XG|x~&2z8J$KgXpBtKW`lfd$>?dd;blPA;3@yI?TyZJs$YZnK%Brzd^4CpoNm z7{B`xI5;9Qx2zkrbq=6}&L>@J8E2;{gKaFX0(2xM{RV+SL29RmWY3b(RKJ@fhg}sr zE6P0*ZpyD+a|z>*G=%pxC&kjhzl4quHrJ(OHm)DaUs@3Etv(Z=QuX178bO;nb_q`2Wqj~Zl00vd`_&8qXlc=?=1T^VIh{IaQV6bZxAAFyNE7IPb`)SN{wt?6vdN!TiM%|axQiYp^%?khV$ zqE$sfKF;hgm7n~8878kSbR2^~7v>RXYghV{cs*%T^qS~HN~?}@bl^FSj7Jrn=}<{= znVnP+(fhtQzQg3k!I_4;N&eBYH2&_a+Q^tzC%P4J6}vJ`@@C+POyJA~Fa#Yyk72^0bqggs+rBVx*8+ zEL%?>8ydIK&4ea_j(`os>6}sbUVw%&ZQ9F^k79P}PN|bJ-`m&`nz7P|N2MQF21fB>+eOJJ~ zQc&>y;Je6a#`;QMvn9QnF4a!>8} zsU?NN2DDKqR*j4e+69z`6jcw0dVM5B+Y~dZQ?3L6C)H>Pe}e8nUb3SrMS#~q(GgIl z$x${qK3d5fJ^BRaPDOxSzDdDYVk9MAct@cmDg7$NU(V6oD__Qwo+@)RFD{q@1QPSQ z6L6@a`oXG%N@Cpy$qI`GHf_G=2ndV52$eZB`iDjdARmZBx^jfH*D8Xqcrk{wzTI~O z7*j<0XPtr1lB*qhKo-=gq)k6ybwK%7mc^F4n=sr3O-OnNF+e;N)(kMTXf!)mW29m=0BpI>fmJXnT{FY-M+PvGUd*5ym#tL$ z9GwGx4n>zUwED@gLz0!eE^>B^<P5Z}!WLu^+&{P9hR^zAIMw@2%$EHfJ z^Y({3#jNk5=REs*-c(P_)9JE#=PW}Pw*(OH`bc{Kn6MZ$dm#0Ln0nXm;BS`PFhls^ zVKvoDQuU*BVKf;IALe5(*Y?^|Dc53NN~zOBW{+A9#*;6v>7*4aj`Y&c$_n)R&-(EC zdhoX|_DsN24-Q6BPz8aJSm$iRMf@kytqs^bW)yN(RRpG>i5 zro!*o!0$_}UZuyM_xGpf{qLFc=E^_s{}}~r`Y~Fx&Js03b?Gz;Bx#*NRgEYtm z*+`rFjnZ4vzv<&2tKd?VpG=+n3|{8pxnqjKeBsB$w<|VT-$pL2v3ea9{J-{W0l|b$ zHx#x$rO+R{K8m4QwB+RqrPaI>!PnN~zK{=lmh z`$;%$!(Z=&&qi}IQ4f3vafJd%jLbs#>R+F}Pv_^B4Bu7<>&;ew9)1qo(O7b=h85&LdnRWRGxqYW0U9vp4&VF1P7jN&cnr&#?NJsKspOc;l<6 zOG#k!$G~v}W5beBT73VmsU^enKe#XN5Pa_V2AQ|9qp_4?09Z*bUq;)R#6l+R`IRR@ zN)2yit#FWakevAf&A7xcdu3}NrE$gPt8Cip@)an|IwYe@dtjm)KSe$BM z96OgN%h&P;{moB#0xeqrE5siW8gKycQ;;L^P{D(_QHJRXLJoiMPUFJy5|))eRJL)! zpd8SYK1MY7%QP5AP&rneY6cAKlFZn3R=ICf)u>9rS->YKfJ8`{UpX(IySb4hecg<5 zq{za2;M_lP6c>PWazwP=MTuW`uW>!SxEu)V!SpnE&htKHxK2~NQ#UtHK8Q_qW{xD8 zm%^7V(r!(?NC|0sy-1O<$twcmAR!h#jh&{1j1vcqui5P4r>uibm*Et7=;4SL55Quo zL!2|*DI?FYjR-050V0E0%qx&M>1-LNOHy57klbL8$eJ&yVfb-n7$RMh_2!}zPfbQp zFjT(g*^YjErHD4-W#qC+Z{(CdL`*y|W+06S(;_~|9?ZVa0jWx?k;GleuAb#=6ahK( zw*ggf_&$Kr+p!Zv3S{#kL;m{h{)Dzw!2|YOHZkmg!Ld&Mb6*z)t&y$bH7l5vx=JE4 zaTnn&JSqQNzm>p7%gtzlZtZI`y<~L7sHm;YJ zO1-LuOqCpLR5fl6m={wnr+2lr!HXjA1Xu7M9?rrB*xUsAXBFbuY_$i)6wmi|A}_pL zLo8IuER7fnN4`2-c;^rHb4lsT%j$pS`Ek=iK6_JK!RjYcGp0>YxtzAIKL{`2Rf$xZ zNI$1VcL3bb^jvWCJSn^N z9x0Qu0pwRy!tDwKd;mT$+?v_Y&LnF93$#&2#o|EP#zubCf1ng?Iyg$~7(oXE;lEY}CvU(mB%3352CoTxRnrK(F)!VzA%3q#<2(I;!JjN%3>9Wiu|VR7dgS*m>suy*y{bEF z^T>z;s@h*{FOlHYNrmiI%H zrQyfdd(#3Yk(?4aW_Db$F|0y(Qj7BzHN4NlZnYX-s?p^(=bc?1O&(4Ubsfo$^RhQP z6*t^Wo5boIUfJq%sK-Gp3xa&%sUy%kBNp1RcVK3lz6mYaw1cvD;N_S zme)o%2gX$D$sEnwiJe0XR1HWZq=Qoh)thd{12*1n=lYKCq*__^c&kodV_4i{{(ivx zJ@3^2)pG8HOZ92d`oPDs!pB@+y8sxiTF31%vj9s7s{>Cf+eXt9oM!7Ssr6!d($r9b zs+5r#hmZX1Q;ejQECb!52D)t93c)q}ES3*ra1i7hp@Fiv2zuMG2yvO(aR(0jqMx1M zvm-lm)MjhW`+#rXFM6^3D*n!!BBl3X*(qC}aJ2na4MMS-aw|#KbX{l1uFlfMVgS&i z9E`6i?0F^1m$N3-R@ifkFgglwR2Fm4`VH`nm1? z5bZIU5@X||??&YFJMExxpg|SW>eC;3xWs~~d1npyqpfzL!{0RD*&{Nz$RaA``eWT5 zvFHwghEC6@bORQXJH?5yC@THw_afhSMncARkVBnMABw+LFFu}I9j~n1uQpXlj)$~- zb$ib z4|JgJJ3`Ynm%$N9KT(*8gNdZcqFTV1S3d#qSW?V8Io=#cbwq<-8Nldme}Yhupzde6 zV-4<1Hw)_=JIZ4DE(yZ?J{;VUHnOSbdY2o%Zm;_Sg69c?JPOmjEclb#cv--gO`s+x z`Z)I{$~V(lpfzcET}9PCPicEY6sqTC_2GUp@ZkpcTl1U0WP_SuBVk}Uj-5&a&new@ z)<=*ZT#b%4b)?wI2jd_ZS2tR1cUyj@MUc3pK|9+7M>>6$rABBtW!KKLtA2RNg z2&J&1Y{wpjUiToEDa~`e$)5{G*Ei6DFKGjPrOYn+RiK1FaB_UD{3TajmICIJrzJCP^sn ziflh&<}3Nb(u1?}c?dQDc)zzlV_oEY!dac~*>+GCQfV~dwvqO{xMkITPP?3|ayB73 zKz2Xiz?q>Ffq7JSU5VuY=re4}J8bbpS*vpYdC5{U?_r)|swrX-@fWlab%k4sadNKB zc_?AUIT~y}y-h;1Rv^eK-B6^VF(^01ik*gVR$=Z;W4h>)TBXxIIJJBn$1=dbH|i%L9E7u%UY5EJSiu89J@WGE3OvK8_*zb8;lhB%4(g2%)j#h+M^H0e!eLsh1o{_B?s0pD(G=e z8cH)NY0?XJbZ)dc5eg7PFL0H&(xQ2h*VJy`m{zfJ`%s%QTZ~96F6#+%#LH^$H`jqA zRx&rlYuk(#8yy4-lg*#TA}G-@qS%Dq{_p>ly!s6z<-@Xfi|E@UhtS_6+R(9$+Gm28 z=gM#EE~_}F=xXV(^>BPClLVwwDJQcxCE!Q~e)3ZTI*Zl3YeLWSB{u=L^eB%Nw_CO! zvUlo@EMI>&Sag40th-K-Roj+Te8NaLS4?5Ix$T+I0LucI?ee#KX8$ddi`0l(Ox3L| zb!u*WuGJwsHf)s8iT|kE&Coc&?&JE(RZ)&dHaS#s;tE_g&jMY}NEed8V zW^~%os{!s@c_WnZ(M*=sDQLC!>~cz!+fZ3A=#s# z(aQxO_7|h7WZn^6X;9^abxS$ZjiVC9jmL@`70y zC*8PZsIRl`+v?vpnbDvaxdAgIV&)V${nhtMbM*dKEmq|U-LAUU`YuvM{XZ_PnN8mrN)+OsFGwoFk>foX_a-NlJLj!$S;pI zP66d$Jo@5^`PcRT>H6t(J$e_l_;EWJ{~tIsTKPde=Tq8dQ(@EU4YFr|<`!rKkou3M z!$mm$AG|!Tu*IvTJ;3CZYN)NEU*GPxVsPbH@z*f<&lckrr~3f)j~0MBnBa8IkQZF- zJ?6z9m^WePoqe9==_u;3D|6-~B4;>39Udtu=Y=Pa>31Wmvo=UQu`G2VtC}!t>sPticfx9-XD*nN^lw4fq2Q*UKeeFalx7l<*^soiAar->7}MtNA$okqM#0wMUo)s%0gwl&k&@l zJ<)H0`F!`XzHWm!Gx@*Sb1-uq@af@aDSGK?|I^px>OJ`9rk)!*=LZW9HrK?lwNrZt z#Z~R`h*1C@k--NZGhfc zVHeL#S)@cAI1#(B5sJfzLSzHpzUm;Fz!le*Iff?W*b#6fx}XHAeK1oNNR_NTVG(XM3p7EVpp~@SQ87nn?evW1*TD_n{g!_(V2eqmq)TE`Js2?lo+4o+-QQBUO>WZ$R1Fa zNtX~ym4|A^KBpcJMyZ3+@BWuE2Lg+&&#AkC6r(|6&9(r&qz7;IcImQ@A|=jpLgG5|KuB zcX>iYrI*&M{&VF2#m~?Jy>w#-m&$#Ec$R1iQlxvHps1sh%lT4Ds!rj49+p%)t&G~k zk|UN1J{iIo5+Jqs@cq;Z7Q=Y{!togm>w*4^W^Tw5U6EV$8iFz-i=1v+=lc}@B3FK2 zNpl^~h(&KqYeqN+=lNTt@HM*Fw2S$$&E=;=R~unS4Da|AQDyi=4%->Wqa2LwHG#uT zz#OWHER7r{Z4!JsLGq$ZpXT0TGbYVoxoqx+2GQWFkTyR3?0FoQ)LtuySK=H1UP1mS z8G3vJKl0Q6AfgUCx&YW@7-$y2FmQr>d*-COpE+VFCVX!rK;r?xf)OaJg2#jG&=ctY zMTfRWs64?~Fld1tHW4(O%J=@wut{AKRjcb_&QT=7LT}t9A~hJJC4^@~7*nR2EtBJy zo~;4H$}<0MJJ~)F+wlNzdTn@>&)qVFGcRd{3?XML?`_eTVAG;3L1S^3bbQpZNE~5G zkN(4gy0lVmw2xn$j7(JLn1&}cb)_j^L3%!?xa&+hzU)MhX2mmC`~Di(vmPG~cW|db zU+vhlKGEJsT1y#4Ze)mz)qb@pv9m}T6sRS zR;>u|aeQ||k5B|;!I(umXe!Zy2GCstvt_H9onozQFRrnzZnoRr?eyR#Y6y}+e4Kzb zvY?e$fG`-AQtWmA7-8l4Fl5h)Vqj~z<<5dFxjudi+N}R6X!CA&HtIMC8D<9GqBL7k zT-o5_USVVRIG)^=HN;HyX_Tfk`kw5bzCLetWpaTh57EFaRp&Fa*xjdebcU*AHB%69 z(@lm#w_VTEeoD9MqFn>~u-SGxFAb?gmtM_JyaTFlnNUYcj&DSGC02Gve7A?$nlQQ3 zZjC#9NG5IJ!m-Bcbu_=- z8wArj)totkCb4W$|6_!sklSCuKX%(!jEjvt87Q0zEbROkskOPr#lgG8#<{$n9Q@lp z2q%(dcxFQH{adDKR&Lf5g|oZ5yu`!1x>k{?m+>$l5WGW7+29Dtd}4~!XjzqYez)9H zWUZ?Uwyp_k-2BwRGdKRz*vv-aA7M_J?r?;-BW|nZbySnCYjUiNtnegjz_ZuLTw6IG zpi-PN-CvsNXo5WLyipaLVwH2=X^La@_!<1~Xxe%B!n7Lc$k?R}tfqsE<))~vo7(zL zi`I!iN<4D~DpjhSwLQ{ktH`vA9gU}sj)XD#=JsD8<_(v<=dS+(G`yv4pKE$a%tW2Q zQ1EK9>U)z{y%aa<&2UYTb_XF=Tg@0+EH>`1Q<69{wH*2_l8b`NChca*R*siBM=M8l zU{Yq{`Wz8KoTml&bMw8%Tp}f3j<%i&%Z}e|<=uka6kKUz(?=Io)Y(+#?f+KS9wYxP z_UV&ze|D+$p7`Q;XLTIPn(A|~jfZVas5y^OIqGA79()P@qp2jOaO|v zvF&v_++GXmF`@SXbRI|t)3p{z@5o^WJ4~OR+bbVsQAOj*9V(3_%VyZ{FL>rG;6)kyD&=rgAb5(tHkPUyc z!x7g9!}$^2A0RFv9sOp+bnJgp&W3{yg2LcRM9d2#7UbY|Y8MR8U6@EOJXF@1zijef zl8SkjM&ucBR?Oqt*B(aVquzqcoet`kUN0J89u*`>74i_+04atasPDHDT6=;Ds!hGm!vFr58&;VyZ=pT+zIr) za$6VdRpZ}6#k@f>81o^EDY9@A3gDVY!OT3s2|bw8q8V-|oRs}>VGJm^rvUpK zOETtz7Qvtqa9#4Yxef>*FztK5rc?K*FYT+7YV?4H|LNia0A3~JbC%8!Wn2|^%A_>A zMl;TG3Xt#luyH@N4l5gnA({awR!S9 zs_yxb7Np^j3jRS5=F3^q6v1Z;FdT3jy%5V>44z<$0i?!Y2{Vj2ywH58L5lR3uB~zS zVH$1Ur*x;YC)__SHIHb&bX-k0frC}?L|rOS3G zE35ady=j-LCaxb31Q} z1FXF!ifk{Ar5ok;D5*-!tC|NZ(#ogeB;Hg9R4G^r+&AD5}R+|Nq7lUIKL*B8uYcb;FM&|j4g;@qxBR#Z3( z&`?a4nPy#GXNFAnWX}h@4KB&3%J>t6b2O#{Z_)hA>JLgBOmCCt6(^%RUnp2+dpcUN zy4QxSmJwgUC|$Pb6$U*hx z>=6shR7YQ%-G|pG_xKwxf<5!=`p2x~-FJCewN{tn)pwaymF|--_DG}X=cFCcfVAIvnZ=Q$TC35@o-2qSM$0p6-GRY#nv4 z^C~St2|I6h>2q;T6`vlh@M`li?~%3C{U1h1-j~Z2t2_8(tqx>dF63y1q3r|rSDupU zW#2?t-#KN)Z9o(ckHJx-&%b^f$`yCrbWALVa#j6e^I*VyAIy1xls=?UI^u`whD$W! zV1+u2VIp@fjEn5_e%vTVT^vItHGUk+cF8^pm|3_3kjwNz0zKFk}Kjg5wWhLUjPE#f109P_~WQsOB zAmBmvaq}b8GLP1K#6n8El$(feh!&-3DvGoOLk|$<71k{Tq28nN$$v3XttJY|vxdE> zAKa+KxZ{<~CRrer&ol3dFNCo(8COg_DoQsy0OeKOPS{70*s$PCj!iE?mvgJ<=e08= z*&I-I&C|H1k3F{Eq!Dnro<7*2iniO*Xr`@NW@R?iWT=+!#%;{krDGv1Em~V*^la6f z>zu{J$x=ZoktT?!QjU{Cy16XQix?$U^Bp@9Fo$d#2@u&T#b?;&NKni;z&c90Y}Jgf zy#2hNz}0Vnt90;-E7YgF9d46NDJ`BsO=-z9uFpb8m^hby?Z|!q1U?$Z}sP60OC{18UEHQ-^lB@aTR5|O?vHVrdp}}bMRB6qxIVX<&81xyYmfh4(rC# z;HoJZ`Z`;T9{8cObMwi7$Czf?VA0GJXc(dyZ*^YNF*(TLc zM0A#lPILq~eU}t*yv+;ljVUpF$WXgDYR_3T1nL;$wV*jDc@{eM*C&D7ou!|s<1-ha z%FXkwrqMj<(pTjkm8^c;M9Hxa41~!!r7)B(f0in-K!0X_EmND9pg(@wx2e6nhuCxC z+nqJ*n45U{5Rb^%VCDTwUs}UMZ*CA3(6#@P81En^g_g;i|`ZpRf%iQ{eS+zXT!Oh)FLRi zh=+tf-q?BeK=vR=Apk|h;Xu7&5SwJoF#K`&`8 zZtY8)1@!zz;&SS8RDz7VF9afvCbZ^8ro^az--F_{z%il_^2BJ#icI%O2fr(M z25N}oapdg_mcP@2F}B`A&jOV$H`_e9!cjqGB*)%?dI~>6rJ$@#%mb*5fS;ef%&P>c$GS_(SCwL|uYx~C?#C#l zHw6e-k@_{yj?YX=+`rvi*<3|CUCOJJ+T@G2)%Lf&K&pm*ZI_6R&Y0) zvSL1^ON`MKoVd3JAn)RjOg8G`cYW-%5OV*{Ku()FsW}>hXrUD56>R7M1e5fo=0+@p z7?#YQDH8kvVVnjvY2b~gK$kf$uzdd=Q2=3O|KY6MU-_<-lrHEF!?YTY`Vp?G?+;%j zo%0hMwjeytJ+*n@I?vRd9V(Y~y}kCB1wlvvX%nFj zT!bUT_0qV52L%AhD>8O36jS$+86(0C9qgGe@ACNU@-uL;@M1=Wx0Bh!H1cJ4iW50X z@J<$~z#m37(-kI0SfGH7n5KAYlqxMCi)5a5<^_R8KN(H0JQ45CMv7g)A_6m|F^Ouw zlmKfGK+6u99!Gh)DZnS*@B%s`nClFir&Co{BAQooNt0e%q_pPIMP2B5l<1wFA1ox6 zfMh6WW2KA?nZm?^18p;Dv5d@;aw?rB?&8jyZ5U%FYQJ0s<}Rwx(II%QIdp zI%2PKg}CF?QF4nSz)KEW;m^mnwjjrjby^;(tIjab)FKaOh!DkC&!rmsDSBQJT8VGc z>8HeVYJ<3ZkAA_^KjkqLqTJ|)zsgVgI!ZpWftX_XKc`dIjWL1WeY9i2AX1{cbPpqw2>U6PU_-dYy(blHN*8mh?mL^xx}c5aPR(-s{H`P!%;I$AZSJG=>>H| z4v+OegTqGWl85!;fg_vhssS~WgZ|wk+615osX>UJL_AU6EV6X|N;62xoH3jUxxDm4 zhCaMPWQ`gy*85Y(eHh>I|j0%=oxThJO71 zk^E31B0hcSE)~s`Bubt6Bs9V(Ajk4poJW8r@ra@!_Nm8D$Q1E<7!3A78o6W&-(ge4Io zptK5`?}=*%Pmmu_mc9J|60ilp-ISetNVKH}Mb-{WO3t$mEgeOYM1~LucZ~XQ=7-VK z%2P09v40^LiCHA^9*>EY|g!3ks}FSu;vCvV+tiTpE;?odq1m zKoVKg(=9~cxa%GnRbIy$fK`|53f*G(f0T(*8QOln*JS%`GMhbHuo#c;#fJhn`ovMD* zhhp5aLo7xJxZXk{)pITBj6x-Bo(rI8%tab*Y9gy^XRBVMQa~~f?@tOROVcvkCPb8H zX^FQT7C{uULW|QCFwKjuhIO1^%BjeS(k=DQ-qX64CTWvbLOpY@%j>TS#UMNNboV!jc)C4ST&*EZ1`4e$c|O=CLMV&h$;`@m4+HH1sTE zy5N4-i_;J_+gH$V#J!PDj~fhjo}EZNE#H1GeVb$-%w}BVZAKU{-cqv(bdZQ3 zDW64YTH?eQ7&dQeY9qr(Bha;^2Cl(jM3{yV+5l7@?7toa88pCtvu2FX%&`YCVa&k# zyd6yg(}1#61T-FtSd)5qsxv8g77y44wuBd5Qca+y{hFm519m&q+i$NUQcZ_Dg6}95 zjLF*S`T_=BORS$GhH+oQL=>J?=yI**TU0D}jAkeucyP3$6W*)O^K+#w4MGm0qkj^B zxAXyV9tox7&$-^vb-uTviuP{m?Cj~>7#E{c?7`d^_=v4-_E>I!(a%M`oQh_VKu2FY zC2?WqI8d54CC*4tFA`6vVvc9x6g81Pl@zA)<0uLO#b3Rkm}$uo?N3FF4TlxBrYaCm zU@qQF-OHXsD)ti^o}>phx&ta^OS_Pvt(hCkrEUM2idpSfBJ7lmbqMkP5eksqLNa$A zo$GJPjs_fZQuawWpH`%WR5=T;;8C%IIQF04zYQBgd{+jsViKWNVE-U^D59n=-znXM zt6EIHEG!$%Utkt~g@tY=G*o-j+5O3h(WMmR%2qZfLDy2Z^9q^zKu=oee7kp z8ccOFw~2m(?Tmt-I6|_Oc6!2W27*l^Z#w@_JY9(rAP&HL8bs93aUi%gC&e9y6QGvax5t#765Kab5<|EEU%X52nE|1Epg_W%rlhB$BzY5 zmZmc(n0Jbt6)j2A5dGP$>Bf_g!9!B$4ca%Gl28`TiZNu*fb&C(qo0HBY~jJb`oJu#I;1!5Ztq0?L=Z0MnFH9D3pE=QOqaoEUIN+*vEn-kuq+czl z5cb|RZl~NJLJ1Xj-vPG7&7bDv*f92L{&UCpPk$=K`Cs9rxYu1lc8vph#87f19#}2Bz3ElRIXGq!wQzCJiR0l(r;7eQ*+y90HgpUo z9nrhsG3doqdN3U2XEV&bE0V|A_3z&>_Vjvagv!`KIYFqT+nF9Gw9vfi=xW~&V#e#= z)XSvUyi$61c-J=TkE|{vcs3(}KJNMU8^WP>Q{Vu7SJ;EN@L?1ZmeW2g!F;+~2ZW$^ z9*z-0iVR@T`U$|}kF1(x8z+A22tSf6^{B*A%qBTUB0(^*6Ota`QBlug zI2Rk)Jc^g9IE{+Hm$Fk@<{NySz__g01@>{jgO~;4xOnKmBdyYjbrA7@ODQFAV*Vk` z%~P`cGZklK+p{tRLoE5J^4L}U-5v9cKgRvX9c{J&T1WQxl zb#oyF9E{Et`41N2{%CeVoQL7ub+-M->w9$DdA}kM|KD3{$v%g-Rrw{&s`N-pHseTiOS;jPw5 zqH+R2o&1$?^!R0drenk=qI^V0R>JoXPhrJpqwB%wKY8VO6nTU9@$Xf%m z`qYn;ii(Q%o)ggEQ?4gUTCYJtHn15D>H55LV&d1+!d2dwrlidBV|x0G=a)$%9Z5h7 z^&Rz#l%a!)Iv8i8*5)Tqsd4tdZmd2OvE^wJ25$VC^x(ZZvX-lu5st;=m+Cu~)!bT2 zvMq~!LfLpnYC}@g^lE1xQPt@pI3HQQ9ZyqW#doZ&r$T^9CDYkehtm@(eM-DtpN;%y zbC8G%IbUW1<>%-%j^QWb(s$d9C!y$EF$Z}{Uxxy3(S427GRd8aJqX0-Demzi?n=@) zB6nl&DFKYqHG`G)ipv7|lJu`MDOAkd7(GUaZQkGt3P{od>1+YI`Ak=smD+k-j&G<|d>(z0>kT4)+@T zNkk=2@Aj+eFx&qKmq4wK*6e6ZJ|;{n>fqdw09M^YVNHezf<#nGu4l#c zcqaV0L8o!3-%ZB_TM{8{bC_!VC_z+#53X|DlSQRFmp11)uLXX?!P@6n;}AmbCzrjCA-UhG1jOTNKUcwgmt8Njjl2u8&b` z$~6>4Kfo!EN&Q_?*NCBtNls4TZJzN>EDp%Odv6Zc?GqE_Dhc9mo8#_$@jQj@QofCe z?M_~F&2cA>UBF<*R2)^IK@RW8R7?T(QO=qUM8ZktYq^-5Gbof+>G3DcSYCXde+ve4v#~*4cm;bC;2!)OxtLowzm*z}aIBi=Nf5h9 z*c}11_7mb60n18E>Y|*gBaVwRVF_39_ijke5A(|5+EM}%n5yw1dFNF&e)}5@*g|tu z_8qD|rwM{(52c6R?6OD?p*lxJ)!a>u%sDX+p6M)M)iztyLX3ndsTwu>d1aB z*r&gEuPDr+Ui83>%k}z^x-j?6z&RLatefnBp`nTh%A1Hd&B@S=u|Fc#sQe|QfGGh6 zbpTs7(Q^Pb&iU(wYgzCUzig=gW%y5)8tqT(kli>6XDFFV-y z0*R~t)Pfyt`}#t82&3iBS0gVkJs2srmkcoVDg+s^_S^oL2bd5%PIiBxJAERD6$TRc zTSW$-ns)~RnfgHAvoX(43!ScZ4`U!uTif@h!>6$7jBg^v6o(U?OxG4Z-`=)@1R)^q zycP*3o6#;K1!|@M;au!3N% zcB&Jg!ooOgDp(CTN_dRi9fS?tdDN9Esaut7t)*+9hMy zeX?V&{G>TAj`#^saNCaF-_j^wSdcA!)O`UC%a2wc_nVCKL38wNGe8%G$OLwjG2iP~ zh>AB0sy52-mHoc^QHsDcg5c6Emad$0QB~zM*bv1M=H7<37I4N}57?n`1O@8`9=HYi zl6H>P%JDmB%&170@;9q7nhJK*mt+*gLn!cd;-fClw<6Hv8MB+Hgc6_2Zq}yODZ1ES zQx~#HA%K)0_0=J3s(1E$Z%-AHF#_wuBK2FdeSK|LUUb$cP3-TF_3gJEsbgm&swztVIOvE2?hTQB1ldT_;)PPK2aV{piNQ!#Kz z#YrTFmj-XSb)qg4eq(^8>HT`JBw2j-{Or+1Lz!I#ASh3hJ05hF)H$8MM=11O%+9R)1fG(|Ghy$6s-hVNH_&! zPzA6|ucuJ&VZlll39@HP98Ae5SR5^Y*%kVz>ODl5U7=wSVl^NeW9rA8e4KJ3rp&J( zYFFq7RS!j`;==(NsO3vwnTTDN2(b`kXR6*q1=#{D^XUZ%h!9J#%!FfR+TP$YZnHE{ zn6e;i#4_tR=Eg&@0msaOtP#sB<(L}}D_t7UvMk6NvCMLg`9NT{G%ahyGOIY|g8g*V{SaGbZNjbb0BNNGRryU1A*D{w5$ostm2pt0%#35W)5UcSY{Q+d?+AWgk>sl z%$cQ8FSKZv1h6sjR3LX!ssE>yNa$XdCT=VMvNyI!wb<{!05T(zZ9dEzgX}}*Of9ti z7eJPr$&H6u^XrmdFpWxF$trp+fNT^~KcYc$Krbt5_ZY2m zrGa~~4YK364dZ0g1hCOSfiS@auo9q~ax$01vP^96x?T$)Q!O_hUJW1Q5H6^QNZ>ZT zEKe;NR@<^usKXeWR}>fxPfdg9XYh7E_A#9e9dt5Aa7EpPw9sT0M)OznZk$G&Jjk&@ zW}-~NN@{vFScZcX(JJ6kieCvZ?_XIG%S1dn#nE&zmYu~Tk8*gAJ~yv_)hh{j$qHcx z@rF3Z=E|}lYnHOVBpOSCU8%T*8H@U=h zm!@jDT3K@)Q`tPQ@6VGYHA>p|wRgLvr|T!061rtEqC@8G++|Gcd}*pY z0htP?-Y5od(rX?NKgJ`%0}>H|bblKfh!;S1?8hP^{Nyx+M=8j{#!tPZt8AG zX%JRC2Qm_I>Ml5?%YjUHd9w>$U%5iVzwQnWnt&`|9%&fAz7fbEJR`tuvq}TC+ z2^gP&78MH#K9l=zs72kOdb)a_1=*!Q*3i7DdOcN1i4hJmH|4fP@p4MtDVpIq8j&=y z?ENoId@?l11QCL=;HW_`<12KgDrch@7ujYPxj2v@YrkUwX(Pr_`xxlo$!Ys$SH5z& zLPI&(CURL0Wa|36iu_wyC6bVDMyt$qbUO=OUuj~<_C}7&Ns`#4QLl<)_B|?qb7FML zJoJhR9;=+0-^bpBK)PbZJU1vtV}pm%5@a(P99>}Q%k?)iWYd7o;u#9!*@*CdNVrRa z2v105&|ToIvsgq(L^@G8Hbd&nauP+!g-XJEb0Ar~xP^|N05bgLrvNtwniOTftO7Dk z+2Y`SLQ5}haa>t)K_%_^2NerDrY9(F=t1Pi=@q`(h6EpTr^YG7ed@%qVuldiJqfs>!RNci}I zY(QS%q}Tw;nQ~LWX?Le%76*;u1S!BJq|XqA6nyvCf2wJzVYVsYZXvgFN@+JFTX2n% zngZ^oGc0c$)S3crEqRtJptG5omTR>y3*)xgmJ6ju2TK9B&AD7GjgIOz^K!A&T$5%1 zw|f5N3~hTT8JKGo*%WX$nuWOnu=glaU1@0qxNGHNPQ~5_l#LnH?{V&2v%scDb=6GG zIlwK<)x06ltI5`E+2gL0uQ>%=!;HT{6JvW2yko7=KOE~xA>^uXtv!A1!N<@tvl!L zhQcaS8gbP%XWo4fI#(mWZPTw8OH-BWR+F%A0!lUo+|6Ws-UJ9$l$szjwSfDk^FAX5 zxT@UGwSfDkvp=K8;>b1!bfK&YxNkZWG%`+`DeW`!=6 zMoRu#b3>P5;0BiK9o3aGL_ZA3tpRW~d7?{T^e{3-Uzf%$$`;)aaGRGex}ksE$~mJO z0&erNMqd|j-)QD&bnT=1jpmO=T63t#A>Bxh`zEtUBkkr@kxANqAhP+nq)S$lWRtG= zwrW1HFZFcEmsmYgF0l00BX(%;$rYiuq%`^?ACfjrc z;I{duq10rZs{q_K>ok-`?^UNXE`u{5G_+icXuvI33U=A=dn za8+40s{psnOpTgi+%`XTu{7eU+bq?^Qj@8=5^&#qu4>ejt8Oz^7t1O%?wikBjhb@R zZT9M7X%<`QhI3e#T)*CXAG&5vH#eQhdIKT11mJEmpY`TJZkfxP+s$fy&tcgJaM#Lh zodVziWw&k|>E<>vT;FpP%aumX(|42S`hEj)X^gw2Y}fZ2YK@;Htv}~=NubdMS+8#n z1}l|jPm;E2oC{@Xj9WUHv-QyJ;iPk30dU)t&Z;zvt#qBl&UF~Kv8kO`0o=0bo$CO% zu?e10U5e)l8nz+ER1bPA3KlnNTvC4(*kZl!e4wSe2ygwUv2 ztn+Ing>DA84ND7+>Jmd20k=|W=vu&SYI5kNL8-2jAi5TCo0=keNx-d?COQS&14W-buhB+`XalSq0Y;J(>Z z(x|cN{I(NHZ$JphMlYmqF0FJ9LcoE=l*PV>IGJG@B*9$o8|`c4k$H2;rON=PnZ*oy z*&NgNt27IsyiGA(D79&(KYV|5e67sV*UluJW@=tKJM*=(F{d3EM6xqhE+G1e<|Gjz zq2p|fFv@1W%+Pj=qNlzoWrNq}Sk6YTRulE|!s2wbX1WLE1$r#dT`Bl zO9!t_AbN$4%=bj2!kK)bseHmOAa-W9Qp&nua6ZCrWA=W9ewh*#8=PsVL$sJ!5OtK& z2r-PKpcuK%9vlv!zQ;Tzd`5+$IjbDU2cOVAU&<4_n~zN?$%D`5o-efvRtG{|a#{#k z=1iCnzwEW2;+HBgw}3;)E+K1l;OU^{`vXc(c9M< z_$`22$OM&Q+;BO#nPzvl=rt68+v)qWlaKE;FCzxryv2!joHvTZx)rKGwl4 zjD0_`lsAW)Z1w~XbcR?I$W}O6cTu^6GP)9k(3cKS1xLMv24?TuszLZ-m z%}1qEyw!dP*U{_qqds8uqE?kKb(XbFEFpGpdTFvab)>a}Ow-p%*-e56>Ij3sT+hXD zI%iTDj|E&I^638Fr7kG7%7v+81F%H1SUkpS1EdF~U_hzWGEAK^09q=>;xP&Ud=Q!j zloE9Vyu7@gIaraW=1au!5nm#vMB@B} z`NV`m2(b{vg9lGQaX)XYFtZu}@9e>jao4^-&vljtU@~>(m_3c6g+}r#l)UswJ=bN! zbuQ$tO1VROu1+Zcm&w%EB#mnUxo&XPYb;A^BHN68*|Pc(UPtD>4aGXUlqa9d)oBjE zWi$9~J_Oecz?w{c1z0_dJbvXdV{&yG0dP@9zeWJuynKG^VNU9{|76 z41eo8!ry47zw#`9xjGHyz;80+UwO8_Tpb&L4-o}*ly8UTLtIggg+!rRYVP_|4})TAB-Qb0KBR z(io^8jlN|8jTmppg^$&P(6dZi^g){pR2F2H7OR9tnWj@v21p~%F-6; z900+wD#UJG2g*eqYUwaGDOkW<6bF#Vf!<@wePvnNKQITt-`EJ^zt_jP`8Xxu!)BgY zLTq`&0__;dCnS9|9Wi*ejMY2M-`GgCq=DsF?W`LNtC#BnkOmRq7kB{xPjoGWBNIwV zA5u! z4CDlkBMoXC2CvWuRZE3sg6kw4hW=dsL*QBH6M;r#%s5GT$)=R0Jydf5R6l>H1>==| z{nQ+cG?)-^zwd)hxh?>wEMWXieZG+^WYt3Mlrf>7@~cjt2*p)|WGgQ7eH|%B#p_cn zMpw9h<+@@_lRO4jc>&Ngy1!s)UY5R8$^o!RvK!+g?Pv4dL@h=VOyF`w2aeC?`Q}6f|;<9qU6Dz@@~);IUIPE^W?El#P9~LJC{Dfxrr^S zi6rTkvXDx&x*eTWGfAiMfv9IoNf-AlV(HRiOb&pldwn%0$pntn=U9b?QSmh)!mD6; zpqfBy9u+RTAe?w;G`I2gUX<$|VRbYXjbW`CVB--8v$s{um5;Gc_F^UGw|y_`A&LJ*c8~HsOAG{KyND~T^5X~6HCQvHGMA`7959O>+s@P zr~Z$UNU8y5%p-m(b2kNY!(m@fI59Z}uh5bFq+&`jctxcXlHp*EI1W_!OL*ua*%kJE zM_ayaTl9Wq=S;1XJm`7vIW{5##yoAAu%&>}N)(v~gyv)c~5Hr`m#?aQVEs36Z z#4dKnlV82jzjmfk6pF)se?p^aJaSw%>zg`h z5}$s=3F*%;4f?qbIu81QaWqrP=a})CI;WwM8#o!O_=0j)>mS^_y=HDaBY}F#>9ktL zZbPs;O(CSs(-4Ne*ApZ{=Vbm8yaqpYlYjneh%lc(cM!O3O8gn3frzm057lDH7f`yp zt=4cjbXg#nPg-_8G@JLhmYjZVA*4pbaWr)}W6>!V;*xRirFy6v>OZ?s!NUK7JW2yH$S%_00$Bi>*Yd7hA{(Rc z)%JE}Z^?XPL2~nYX*%!iI_mASLs|J`UuukjNr|CjA03nQT#!g)p3Mw7yb&=mHqHJ3 zI%KzO=vcC$KSwmORFq`%SCqT>&gzP zfY_TM6M{m7R;FVT!ki^jqAno*6Jgke%ZaCaH$@kT*qtKCbu1aqOhxlF3lLp>D&*EV z=%d}Y$nCmtbE;aaLXMv52+^o3=O#D2 zxHQP~-=hJ--i!uv`*B1sBsiEaq>h-xdUjf^BOkb{tl-bP2%~=sp1^1_D8~ zEl4>IC(4mUQniF1s#FCYx|~u76A7o>5EEF+3Y4KY)+0M}JoC4Q`}&9bZ|LdMk2HMx zQ~^cqo(eqAjlCjaC;)G9e@|6pMYpY*-_CXrXERG<}p_|dg`#g2?+?t zet*g?dlBo~&3h74doVzc3K0|0abRUXg%gfFSkp=LM4*63GK0CYK$A%E)B=ASTD%w1 z$i$|f>}7o4ILFC@Hc|qhl&R#OA>sbqLBGi65^>BqvIwR*w`0mh1ot#uB-l*FS`oG$ z9{PArJbj##<7?41Il?R!5ui;RctrL5Yb@$>1?+1W4eKfLRvXG>T_oCN}Yy zNku{;b@G(o81oKWt)7lRtX~kTvlC2+r!%O$dYcjpJRw~)iX*Gx z5Md98nw$c{N!*ag({bbiCO#WsUsA^qM-(2v%^en!Kuqa4a-ebUC0NNKb#@eGSC+(( zDREO)gxmIzMT%Xkc#9a zbZxoN@H;KrXxN9GTu>GZ#DWZdJ-6^n6EviZG9sgfONnWeAeQWv22$V^Rsad@tzk)T z4mybt7~=ty8KFyKe^!kiCX>+fc4H1Nmh?eKBEo@(xhEX3)NnFm7sNBI1SBxaY39a$ z`E=N=P})DlK9S!QLC9G#GBq4@JSFbAGNq@|Vg#lt!;S)SiA2O>H;Os2V0}`E$_ScpEwp@=xaO19+c0Em?HYr+pq|9sRZK|f)?y%C8n2?=^L z8Zh3|qlg|0dOi)}FZ~Xz!eZAF!_B02cb!2xqjyZNLP-n&dh#VCt~_sE%nh5>?8^eg z{>p$DtPK!yVLe@;w>#+V?)D;<{;=B{EP%zp+1*WNwK_0%7XZT?IWzEx<3JgZb_dS$ zEIinFOkE0Ttgi`=XBlV=o=afJ<)_flm?UTM3=R%Vr`1{=5`#)eaH8~AK`x{Sn;{{I zGzf-K&l3nD?aKWkSe`%uQUl|jvPX?1$MtDIQohWI4!I=2BA_XgAvs#^wnUOv>u5Yy z3(`+dfzO7V&hj~Whv*W6TF;3q<@zqVBQdafU4xivM&@M{lOaiL$l4Qw*@LidWYtqZ+TdhMYQ+e27nE9guvIS5rY zEzRN;f@-Xz z5T@|SdE6A-@49G;1sX|S#tCS0US4Hu?#kB%HY6p$`j#0lO52@4+f{OtwyLLFn{dv* zD#rQgeSqGv3j+DycK5qzZ?HG$DjoY`4~aO03q(oT#wJPamNiXC~VrQqT7_j2jMpV<92`56Lx7G@hB(6qv1vNn}Sbm3D9s?s+Od4yG zHw|3ILne_$={HFf1H<1X*H_AtTIxRRf$GI&fiX!ZdkVGm3J{G1@yCdh3Fe7q$bjti z`!}h4@|}Wm51nZ##4;CO5>66|451bT4nu;un%5X#Fi6QK5kqQV%9%Y6xx*GhJ}AyN zZu+$uFQXVI zY&`9+1|FEZQyLLaDD5UHXSeGT(5)|75(#Cf^kg5*FR)l^aGK&-(jdCADckt2Q0 zJw1&?3zrRW;K`aDXQgQ$>rD-2zr~Pc#w-pz^hx6XYL`=LMUV8KJ@sc#Pgq^;bj(#n7tQcFK|;MV#Sxgc z;eeS_pI+1^>!Rsf1M-EqF-Ubdm|KecF$)CwJtlz*D)IN&J-@`<6DVU~HD=sNj5!V> zLOi&BHn$uRLqlM-!)|itg8^vC<;OTuWQsEGko_u{}62P}FI z;q=xRglmr>!9c0kk0CJ{VfQ>u{AaH7yZW|5L~z*`nMZ2&bhYyd+*X?_`A;fHc03E~ z&TCSs-%-N4xzjxT`8bgl;fX7l*MV`Xb+e#q)gSfhy2%A;%5BZ{y-OVOg$lXD$3CVr zo0S3MNUt39#SFqizQgoj&dE$*#pDBG@o_d%djf74Hx`V?|bh-)G*}2&5sF|MAz(YH)lG~e(gN`Ii zIuF=oAnAbY1a9VjR&9Tzfd{TIfB*SMNAlHRVsw(f|NJ9dJxPVe1E+GFqpNVWM7Sb) zKgJ`%0}>JO1gT`CY>X}_x$GhVcqX+@Nru~+@U~GjWx}j8xj2%P42BMRu%Qlmjk!-r zqO=IvF~DvgdDK%bOA3nW@vZ`+%Qz=)CE9~7qx6c@J#tFGRmW+yP6G5_ z^}1<4jD5eq`(l6a-QTqQ9a0U@p}{SobDT>mka`Z=k}h1{g`wzQ><-~b#kP$YhxAF- zBB=CReTP}H6L>QZ9Eqetis zbx9zI6ph0si)haopdDGEtv|Ip|Jj1A!*keJB_2|toF~Z_ zmxPg_bUwwBawo)5cj2`DsXI_UF2JF}#4$kELO5!*fTSPx`(G-~j$R7!30N-5u=h|7rK&`R?A{VE15u@TbAv?!m$HKcT@5tvOR- z5n=wP!L`TAFK$DMl?Cmvg^(0cCydVz(Md4oIPpemA!JDGp=J$|#I{m_`4C;~wQv|F zf9^TEe|2_SUi$d(5FMd6+Gu87+ej(~3XvpN+Ns%R6Y3_eBBP8)h0{XHT9>?jkZecE z1VGnEb0e;{rffzIkr9Y2ujUqY<%CMU^gVVNK(y+<&n8TmZ<1%9J7F+sos&7dgg9*V z^n6=AG$npWc&mpZG7Ehikya0l;{aS~T0OIb)(lhgN=Y`Cg2W;E`K{zMUEtC!gktWe zGpn@awNzU@0j-$GJ{Px)<{>#mS{Q6yuu`EIVt>+8Njj@3K5B8ov&(r@G zy9ZnPe;efyN;QlO8G3}yPG9|ZPYZ^<6S&A6Q^F6?(dp6gKS0C=T_t;yAb&ZDRDOe0 z>OMZ{AHUMJY#hLY3YQ2Wm5)b{(Ek?aG&EWlyftqe+R75=-!L}O z|BS~f8Uqnd6fUF&_2++g@7c3K?))D-+k3G+|F=>8_@n={RY3xp5P+xsuU}g&*$cX$ zvqSJfl8V0+F<#CjaNQ|6L}|6w2NK0xs`ygFMgjB4k;10A738D!#~+9Wt{-~@wH5w3 z7ShR9!jT=c(T+#m2({12yp7sFyno+DZN;hDXa{nlw!c66(3b!EKkZHj^}c>plm6q6 zo_^=PXaw0L1fvQk-Yf7#K69tUi+vhQPE`IE_48|W!D&2l!sL$Tu%({lgO&QVQtge* ztx6A_lldX~;}7JVlR5hOwUx#XU^-rrl*+B2jSsOM;XtlR#eHzJvvZ~=IgT6xU7_D& z7Loi{*_;HP`T3GatT;rwE%TvQ+{Y>A-nI5oc5t)%s78=Y3{z^pjk1R`?V0?0O3pH1dJk|jWIHA*+Y{tckq7`&OLYQD(+5nUzjUhVVbZqT8uKV?D+ zex$u2iQ5%!{oE+i!|T@)&=&T6wg8A1w|NQQc+)OD6l{SXf8P9Evh z?UOUJ(PRf{oXcQX7R>2BJ0>r7r-QCgKm#d2q1{22OlyJ`un6stSs2Z&E$-y2qL9-d z8lyH2LnnI}lSYT=&oHS39SXx){5{WS9-otW7d=)k=!Y*$kRd;#$BMxLv(xQL*->F& z>tsRW>rgzqMyDvdWL8*?chKfOV$tJ=fJQ}nv3Y1D*`oTl#SwRxngo+QgwIi?mPSVHYQTnCs8E?YDF&Bm^kHzykWxBl%w4lK2$KSjX;Q6 zeszx#q5%t98~3>#i{Xdfye&G$k0{j27=YxZs z{r}nEU~g;xzm0Nd_J1oSQ|fYVd^9UbLk96A8_@11sbEOQi2$miG-b|m{-fQ8U9qNC z&#DIG!}{CEcFwUq&mYs)j_Jh=P}#FhL-Z)?8KDuQ(D9f!3ps^%Oo^Y5il4whR7Gh3N`@eRbz1`lRU6fC%@xbXM9fHV!+G@!D z#qNkic(9A0G;mx3w3;*2|STC*(EAk~G0o-OZgO{Et4JOX{cOZ?e z6LcePH~D zL~RyC*oU+=M{&f2i+#cyLUkJAB?R~VWx=U!(VYy3m5|#jz)H`Y29y599#mNX+(LsY zur6%8zU}y#@QAvrZpOuSGnUy5fg&CQ-#$%ahUp|!RG9dA#A|3F5uuYbSp@rMtI-u@ zV}e;PzsMs`KPWxcp%PW3qUBeLOFL?|_`khe1@l&3{X#BMzLaah;Ra7&8FvwcUl8u7 z_?Ib*z)HpdZ)vx=C`@mA@h1BtYV6Lcf0Wo=hVo8 z+o-2is5?X-7sS(HKGUeB`_BGfoYoP##B-Hw%Y^zb*1p8*xoQ$z&O>n!Q9r4$@9aAR z6(J#O`W20ciy<+F?Aavgk?TGu>V>bVO9S*@`_8@&eFLFoFly5vB7BTpNP(jw z*|k+VBd7KB=|_meY7#X-HXs$OD#AXSJP|rANKm#LPoFllUny22thr{+p9PurA3GPH z2ED)jtMl~J|NZ)}r(eH5Zlj$Hc+eG!n2y?P-O4XyG8M&{Vz&5twmKm5~;KZ62Tw>7=~b7g8NT(A_8PbDQkkWG_bHfhroa!sS96zt6w5Eqfz1K z_E@D#Yoj*gP5Vg@ZvL%5^fLWw$43io96{dDApY_`RNJh;8B?2?oG{bcZnJ9CNnHd zMW1yOtv%V6;!NyiC2rp(J5mHeCo85&l=@(z$0SjiA(psM&s_4Op`J;X)I+AFgWgb; zpUvWO0%{4J<%NSP(v`eeu~vn8R7wfKlL$pq&Mu8fLXK-VX%8i$o;BVnhWs){NU9Vy z7lAZojd@VP3!>i`4dAI$5el{(DTTIT`$UBMpu<_8h@W(nRGULThB<1O9==5FUjq|2 z`wYGQ@ZtRj71kWiqt14&vk~jeo9X$@9dav>s?)9>^rg1wWqxe`8lZf6$0D7MfLxG3 zXPW24PLJC~%=a>Rn`d|~5g;JMQ#w*KC3ExZxei%c$V-o0AJdsw%d~%pIVfXxrf;3l zDarJUBeb5h-2F%C;(H4HdXSpFmxcmX_4Uq(6_)ttTqFHtCsVD6kXLAoslPxRylXc3 zV9RRqAD!Vzv)E66S}gy)cu|!9o++v<&!&>~BS0pIgjptjXjFs$q;C-6 z&ku}Q79b=4L{p+_qqZ_nwDS)_K)|Tt&Drr1smwTITY5#ci$DDIH$C&Cl^!ofB`IC(sr_fs|Fe+)*Ur_=@0~T%%)AO$ zki`*H_sjR#bWDCi2aqPa<^OkZLd>xW}6(@%&aUC+WK7{A()040Cie}H@CBk7ScQ*5@133k9W-}YPmg%d+{I<~gmU&dJVVc2g{UzLN zI4m|priig)zf89}?f^RGvEncXsmxTaP#nN`e#lqsQkSj za$?f|&|u8af1ok;{SkK0RbF*SMvx{zsFR;AjH}Ud>I@9gMvh9G(1coEo59S`a|bwN4EG&qk4~r7OXPbiNTY@m)aGwqGF;5cnAR-e|xaxW(0cYQHeVmfyvvK(~)FDwd>YU;Wo0IxgrT+GZFBkZfmp!g7eO#n{ zqU_Ggp5bSMrFB3h8&bk(uwXvv~@yzd_LPstyqfWnZ>oPaZWXzpAZl z7silP3;o$2|FFFKC8$h?G>Edjb<%HRpW*2FLH@fL4p6l?;FUzN5|ORm?scj>`y(y| zRqZh<>3|fGKF&je;66M10BJE{FuvcXx|g;RCKsV>v6+QvJ0(v)zgzloMB#M=JotN`8{hi(E~mq4n|08ijXT01mYDc68{ zetdHVS$&Duk`3sXx>Cwgsc=bT^6+ZF*v(rX$T-auW{)N*mB(DskLAAgHIVy{k`3+I z-7MZ*+4o!3wPXWCM5*#(^;Dt07&>h&yk2{$8P#~HC{i`W;zu$^nXcP;K)8M^)f9CV z&Lx>|)NDcZY!J%G7d`CGNV{W`w|o8c1IlXhzYY(&p8MZ}-GhAo$NlFA+xy>JDYq~G zTf)4EaNuF?>0Hlc1W03=shNhmE)8z28Wm&F)_eXJ#;`aJc)pwSpBuK5`JxB2JpIfY zio=(NQWj#@Dh^j*U-D<+XzrOvwCySJXO5WmwIQgYnK2Wk?TX`qb5!73-6#HFAZeB~ zQIyf^jpikdbVQ6~?dtuasdZdst9blbnNgw?SS2GTRxGE4mZpkF(bPF39GnI$OJ{mt zk%?PuhVPU_wC)rH_40izjq01(N!d|m4{Ms3T|}khnf+5Dc4q5J>!+KSZDIB;vu%a# zD(x~!8=B8SROc9w6_?&*Q@qpJERG<9D+r)c{B)-Xn|$w%2#Mf1hJAz~MVBh{HnVXqAI+VycJYbyO+&r{IA zC5T2(ApGeZ-emd4AYycTPVl*%_r7cNf6+xGa-G&c*d@6jysJ8*Gb!fjdC4hVavG`R z;W?sfJ#6MJRa5y>l9}9-8HuomBdkHEccxmiFN5$p$SH!ejCMlmp09Abu^?!D2VH@U z`=5B`m(ojhfa?fp#|(L0BELMb?xas))=8xk35nZrS|?-k7DRQD zgfy{WPtywyfI9>&k(1Z6t%td+STH0SJTV^=TrqVjD>Q<;Z9;q;XdmFl_-f5F0f*`( z%X5>tW`13If_W^=^rpsL2HEOG{)I@WZmCG%&NmVlt4*m28`I@kh-p+1IgGxFOzY`) zIa&gRKYrGltihgq<;G5RHFL5Li#2G?iK(r%hGUa}Cp%Qrqf;t6r;{)HdhMfB+UvTH z)RFJAOZ!zFprQyRw@}X_@bhR&$I;g@%`&DW@drMFEITXDLuzQ~p~` z{!aroH_-tWz5jo)_dM_abFh8?e>>$4^Zy$pf}2qyqCRkH9n=Jku(k?fG@%zHKp`iP znBe1-2%`T|9A4725f;=%5m9b7Qd$pKgl0sWzzn;lvLEKfZdI1E6tmR``7~z%4%mX^ z+Qlvscgl}bEsv;)E1C_9mz3A#1Z%zG+2GG;hkS8K7$Fi)$&7I9_e8`vo+xGHi;ww) z^!L<%k)Z!3qLWPNv4M}dduSm&cfB6%)!R11r$R^=w^4g{FqpMbdq!rA&*k5H-@T=6 z)Go}WjoQx!Z)v+@I#kQcclRvU-Cy@AyW1V?9heT~|Fmb+@FUw6lGt$A}uh+xzEF7Ni9xQ?5dv`hW=h>O> z?(Kco7|l~XLEkwf6jSAaOcaU0BVY0#i;<_wlmHzi;}n`gNYp2P7EcfjAOwPgKyD{q z@*s;7$X}|4*ik_~x^1*`PUa$+0VGpR0w!GF!HTxkupM>`rxcDS;Ha)$1pK+A*p~!N@r7K(g(UKMhzhCs z+ezPU+M7L#p#=lhVzWTTXFajHl>jKy^~=2dK^wY??UppH7(b9a)~7rZ-t`sy&O15x zpTM@TnK_sF@RXYVDy!NPO(9^GUv4VOQ=M}%Z$xy?tqk0&&>WQx`s(dxXPv+3#c@e_ATVk+*nJE-lGU=mH+XmOXCc>f$zhOhq};CpA^IC#VPSi&APS=d8Zyl}-&EXk+dkMLg2J6N}65n9X$HVphk79brM9A0QIAd>%&TILI;o5BRBGXGrjL70Ep? z_8^2LXR-EcF=t2~3dTK%@u)Mlzzy^`4#57b!;iu)W=W-_47-x^D(aX3us{M7_1`%e zBV0lsLc(gr+P zLRdS0cvK72FQJFnrmwbCCP6yIx`D*4+`5S-fC*4_#nMIZJLm(@9e-|-q8zyNijUxU zYBE)XsNOzJQ$!lbId9MC~?8V&-YW zm-{)TvzG5byKTDks-~oerccOsvtv;&8yl|i%8@{qnG2o z(H6{hn5gKmEp0Q6wl$-Yqhf7bVJZ;cc%|U(#Z~o+Tk&&AWN;O6y?i2;BD$^!@6~fD zr7FEFGH78txA|ugPgb(yvrEF!j^tEFemKQwx6@I7zKdssQy1-a&`unN#adT7O#0_` z)tQ0%!lksp391^93HkCt`QaY<{u>&B`LX@$ufJHZfOw`?QZ5$}N6(seZpRI6Cy+>M zSm)~siD^6@`y@xu>eeaY@-Cj0&!$4@|HIBwlS=D(_6am0o#rT0D<2islE4d2R5lP7 zxYxBaL;jxWuE9=;q1_Y2cwGJ&#MuZ)2?rX<+&K7cse^QY)1H z0CR+kKdW;m^U)S}bp+}Bjh+q|U1*kx@|*ekvc6I6B{>kyVk`Y=hx`tX0GTTJ$iIfm z+I3XWyImA(mUT3Z)FrS+rcG3?_#XTu`JK6r@k2czg*#9e7pc{5F z7J5f*M~2`>p^tW49Ld(&7woa~f%rJ07vv1;_r88j)U|eMerk8njt=yq;FxLE)}wW@ zp_$4pU~&?A06W=3(b$!@oLv~xceN`_|7q(j%n~a*rAjfGNf#}5A0=wz56 zS*SEhRuuy8R)5MS^=OLFdKw8ndm;^-W`5M!95k#mRf|^kr7|8QD3Y8-gKBADAatdJ z5W#>&g;V`r2*q>1#g*0gzq)K(Q~Z}_gJS-_XIuU6cFL{ue-+G`1|s6>6(+a{O-Ph_ z!DvftHStpDr;W-J66q6NZ*Mb6kM*z6re}U^7%!n>V2cTJ+&~JhTl8V1< z{{gmQN7hg=pub8!ePz6 zM3Ld(IBMW~XC%z`*`<~I z8FUZjYE(9tbPY*@y26izIp)5ne=RQ&l_-&SoPm0tIuT z;!8?IEI>%0of(6gI6zB6=kdALra&)O8h>^wzYqj2*+3FGizn(GQ^@yyMOpH*|T0TWq6_>+8!RdrR`M-KR6XzP>Ls} zQ7NKm(43f@k*ewx3#1=kyi~^q-e!kBb@4HagXra;i#!Iy7(z#*blu53?0gRCM0D4g zX(UbZvo@78b@jB(904n>(N{VGJE`7klN_g07!V2NeapgakCnd5Y(Z^&R{ zM9_~wzagihHNRx_HdQv#nS*`;X)7XAne`jLzibS@BXV+!Y z3wB+`J$*dpEavEv@pGSH4~~yGwC!t!&Cn_2P4ak4F3pO&+0-YHOwnb5OG40ygE5`N z9A>POEA&5WA7JOolCi3q$vtbJis@|ZHk$fU!n%VCrFJ9+JC0=Z;0t!8gCvJr+% zPzoTe>0+&DkLpo|dAXF#I=Sx@Jw01Bu6c%97P`Vof|H~pnXqYCq-`0OV08@lJ5=kf zRMDCO*Sd7dg+D5}!bp42T^0gsW%|=^gd25aM9EAK-smSm_$eo2`lV4f=Vb1vM!BBM zlVba^vBlccd+O|%*>|rX8#1m8N00NdpCAKyK8hIlSa-}v4G@)-IHwZkpZ<#cZS^wG zrVGohd^25wyzNC3OXa2FxAF(jsRFc^1{fVQ_lDW@Tk^)bJTIKJcQqLp;xE*vn9r>^ zCd#J;6icA2`i`CPT+Fvx;d$vM!{_6fKO&#|lXMRA(z6XU%>E zTxzQ*cGe}Ak0-AcJT{qL>Bn^)hjUHdcmcyDw+v(QS-4`NnaPwO*d+>Fjw0@9^4 zKGR-zhvR6vveK99t6b&7+?~>hxKYeYz3B22va08Milb?@>X_?CGFsW7LT&uOSX7}p za_dt&GipgclKmPtbE}V7|GcpMV)eDY{RedkAW@`hImH^qUhk<&oZqENwK!9;S~b=< z(vw@fX6-mLgY0Txk~X5O5-+fTaAg{D$;Bkl?c5wn?mE_OgfNgU0(q@wi2TKiy?j8& z4E1SSXQAXmG~LVcLsgA^CG{I1VcO~jz*IJ;dWd~1hMXoGaBa4nH3|bw=DmV3$8=lL z-ztWjhTW{$jAItD#J;a+!l~-zng$%x?L9Z&*yMDXGnNtRZqRshgU2nigzKC$n~yUjGFYb z*cbH>i*^8b2%Q1Jg6 zym+y-|J_EpL;K(S?Ek!3zu_;F|L5+_ez3?J_56YnZph4+2j+4{K4`rb6QAAFiXLB? z$*k<}W%si6_S$-T6*YV~(cgek>#lvhGL-XPS(WbC(@P=X*3av1Y)uP!-uf&}>tg(i z=e&xB1)XlTjR}^}c(+%zFO~LjUF#Bbde3c3jg1)9qT5ZHFmC2}UE6Y@&eewdbCrwH z8@HRyO@s+GyeU7fRm=75KOqy*gp(R0&;tLj-4_M>&x_sd`@h>McW3`ORd{m~Mj#6% z?~NrWol~_rD6Mlnn~*iu%@~Ht0lbuT$m-&nVPHynDm4)$+GSGTR=*baDyhBsRiuWF z1!GvcQjK>}`Dmqv6(`GV?$DZ2tX2xyYBj%Dy;`p=IU8#VF;kpH*1V!2WNqY9SZMEJ zI~Up0*bz#G$nQrDu$MI`)FNl29k^NZLjB6_lc8ZX@!2CT^+=L@p2&$wj;NCb>v`7k zydtv2f;c9_aV81RIhps^xM#lA@ij>0QO49Dm5`kIh$OT1Ak7O6^sEgF%MtNPrc%Fx ztT>%hVk&Yfm)5ezvCvatibuXQXr*)V*v5wJuHTuhX)y;~&JwY>Ka0^RK&f1&ji_NI zg60QV>@ZudDVwmjJNZ4e=2C7$>SUKwqfb|kv24d{HdR?mToPkeGg{SjbWO{Zy;=9$ zd}WLs1(9&cEvOJHZ_pUBUiF~yif)8@q*Z@PE<_ho5RjFNN3#ZRk$uL(g210t zx|-F2^$T36e8d}|B(|`+8Y#(&yBmzfrR!NAb+ZAzB&Eyux}d8y(>r^#aCMSbs@rZb zx>T-d0m@XMM3_6~Ha^tVTh@Mjefuvb9<5IVwkZGC!Qgqp|8IYr|La!DdhEX|8Gt`X z#JQR0zX~VsjqMkvQ*HKz&)2i~su6C+*joT*GqbE}*32SX>2R0n8IX3RH;+aWRnWs*S;undMJ{9L3Re`Tb0i8ZD|G3v#;D zH1CBqKdl$15W0>hVFudO7Sv?za{gv$E%#+jc9#EH4%=#c=j@u*w(Tqlt{ix2KRJ8! z%{N>xGD9f>TgR)*nZk0$r}93oshO!x@1@B}aXghg-Y8;f^^GA778%VrZ&1ftn-o&b z_N%v9wXyfC9`q_Zd2$P*QUJ>NLyu2{fv8aOoFU*?r}WY?1Nz%bw0qELyc4Bj$2IW3 zv_H$(Wpf@w)U)hsX9=0Bqj+JvLiUma=q#Np@{as$>%|W`t{UDxu~rVXJ8`kP*X8>9 zzs;%2tpE%3|AQC%dHw&z-of_$->sCp^Z(N7u&e`${)iNHeI>g?eK^?1EEo?4lDO>T zMZUI401iL3t91RunL&$4y}>|>$rYpRu6MNEWV9wCUzMb%@<^A$rfdnt)X}+ZK%vF# z%__@{93Q7di6S~zrkS-#&uEfG>J`lK%+I`bOqIO~drB%+RN7O@#}#No0!aVs^_xGl zge_V;zN)6zrYGa!2$v60?f1|?u1{H&PEnm$$1)1jV(bw#m=x576o;K;qbv0yM=jgJ zp5@et1j}^ZyZY0hW|q&5q)Y*g)bCXH}ARen0=5vKJ^@wWS- zaL@ht0w*s<<#EugEK_AdqT`rz5~N1Ob~|sl!GV`h4oxv~_7gKw71W^7NA^0n_!)EC zNwQ)ZsSblars}e*swmVx{5AMBFy4rN7QY51nvNP=&0OxBhJe$laP-Pr095x+{w$sp z$y$=c7<(Ri((6gFNUB>eAIs{R3dmXDz;mP)mZC_13&5=hz0eFV{T&Bh>k$gbMEN)GD5HY*BSrtK z#&T2CEu8MdA}BYfU^>O`}!_4NO1JwiWYPFXC_ z$*b3*<%FF5M%<|7P>j)HE$2eG%pDADYeF?q65Key;tV{xN&ehgHCtHn>U5+!;`=`T?p=zdSlLpNMHuZtoaX5^7{ z`&8M4+y(|Ou_z2&8C&FoK*TF!Ziu(uKzt3GE)Z zl=}A?PByFIne?(Si;bWobJEO|Bh(&kWtGFdeNJRH7XWj`0L;9T=X>A=;ZC&g2oi!r zOGtbwYgQ^p2eQ?aw)Y52EGo1P)=QNwA(NU?E*>}Vixn#@Oa&U(QH!9aL_X;79j)DK zLmQM*%LUq0h;1d@LcnqA&5!jAWmUNiw3~P(&2cpfik@Rtn5Lv;l#=5Bp8qs+V0(HN z;42MTQ9F+|D*U-cF87`C=!8gs@L7!>9gNe%qc21f034-Xr3YVxXQ&QEg28`IE6kKE zK&8F8W}` z>G(-HPI8NGmgY-hd3?&$|b^Sr;c(k4}oUY}_L%mpVF# zXOFm}?jP-ksTI`;w0tr@HU8Y9L+u|0dcwTlZ3vRq%0>VvkD&{3Kc#IET{PfYqICd5 zTG^2w@xbHFn?BNY2I%%uA#$A6J$BE+NbnA8!d`g%qUO+;8rG&Rawyad(jA8gc9{(CA}@Iw9f?MqY%y;D;M~zkj_1%n?Ed# z3k{bIfgXM~MO`9H10Y~X`!Jcex;ID$`_M;o%Asm7h(0%0j_7odHykd5x2B+{^kR$R zK{60RW*Iv7lgaTRa!+_AlqTOCIQ}5rTZk@D=2upEJYxYk_4|X!rs{Y6H!ytlgA#%Y znup+?$1dM&BglLUQX5I{Rp(Z9g3yOs;s|^lLXWXK3>X4)fQcS*8P-GF>FkTGb3_}p z<;>)PUG}?h?Rliw;M>}4*+l3!*!(0b%KeUaVa4lR8W>wpRVd#Cw4D1bQCYXk z4N5Iq=?*uZd=z=b*OMf9fBG7^^5=6`fI`l&h!ILw)yF>?M0i%o-)ih~;Ego?_yf8Z zE82GNKVkOdOVnBS%I3RwVr$cRRcv;grfF<5qFx<$FE6)c#rer}dUba3yt@IRxA?s^ z<#F#KL`L(0v-$R&d)U=VC+s*jitl_2!u#Ja+?`EqqrAc9UW_-r&h*D3jPF}*4mQ4f z$NUq+{@8-qx?@q>#{ZBt!O#5xW;C$Vv&$FL)ZhB8n(QwOhz}0_yCdR*@t+tHf9!YO zK6EhfFOQ2^Hj_Ddq`9#fMNZ?o5q^9zoM#Z^vs6)VZpW@n7D(mvol=@zaZvzezfd-D z=EIHh9YH-E4EA?;`E)Q~jeoSW^dmd*y9hpO4gD>F*y+xHc)}n$tHayMSPwlgPd|H1 zbz$ZUez=|3CG6)anPK-X@kSRQG4QK1n#g-P_=A6cDeYF~*ykmP&feJmLN zDHe?TEExYiEExX>STNpYL3A4Mx>{J7Q>MZ$gvSBS9a0x=?(OhZemY8o!{Dtz%ddAHUQr_4Y9Xc<4?GiIj{1TJc73Q9Z za!|@&jcwaeRO*EjhK@EI6PRwWpDm?cpbHI~(959vn@&NrF)k3iA*Wz$WvuieiOtn~ zjx3frN?%(7mFLK_*Ra*2kU=pNvcs72a!;c}6?Xv2J1pi@R7so1yrN^-i?dg0^vYLD z={wrjXc1Iw>0liD?(*SVArd&ZxZ-YlyyyZylyhMxl_dDA@C+UE!RNPd;Zheo--b`vz zsvJtgJlYhya%SpaS3SC}!{9s>3A`pQgfu9&Rj=>Rv^q++$ePRFM#H!|Vd9dg<_}Oq z2rsv_iRf@ph4Qyewm)aaa=8DT$0o3p4rY|R8=E63v@EKnoS|14TNG!wOH-N!Y9z_8 zWfSsXiU3ROdWF5-Sk$p+q^vpG*u~`0RNY#8Fcj5k5^2{Ywi;sQ9MB!4+ zlhst&u*~i^p4H*o)zRBhErNhY!|uOH?J&utL$?>rB;L}CAiQ=D-oWZ8YRhYf^SXdS z=^O5z{(p;`aHjnxwy(XhN)~Qp(V1d}36Xcm{~jfkaX#6Q5+ptPrVsIBcJtl`W`$Xd z!Wv9yCyX;$9VXty{~nFL;jk7DUy9xd&Hu|x)qG81>`VC08kuLN3& z3%0$+$2v*oBV)C zuLWseDH~Q~^53jQ>>%(q!-^e9X3DBip$Kn-PXv*QUm^fA^OAiAZMKb;aTQ1}1T*z` zG+M9MsbmsUV;7?$EODb(lV>kZr+h^98zEln0-f80+ga0&M#$$Eat-8)78XN@P#V@& zd7fH3Gxuw0QRK>bt7f&|Voytxa?oEuo?XM>WD1k%0KPk!PNw_fYI6DV?DZvFom^a; zoL){|OyTSTo}HaOpIlDPPN#78J)E5W0zXbppYH>z&=kBS=j(_-RdRBWiYek2^0rwP z+PW%(Lh3~=7YGZpLaTX*kG51UL|dtIQK(Y+=u_`(C;gutSAY6^`h5C)`h5EQO`m@S P00960Z!dN-02B%UC|UHo literal 0 HcmV?d00001 diff --git a/charts/limesurvey-1/limesurvey-tt-0.2.60.tgz b/charts/limesurvey-1/limesurvey-tt-0.2.60.tgz new file mode 100644 index 0000000000000000000000000000000000000000..90b1865feef0456f24f7b556678c4c140d5a219e GIT binary patch literal 575474 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 I(`IGGiCSGpz(9Fw1G?#(w#9*sW07Kg2$f-xWc~ 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¬&`u`4M= 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Ɏ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 literal 0 HcmV?d00001 diff --git a/charts/limesurvey-1/templates/NOTES.txt b/charts/limesurvey-1/templates/NOTES.txt new file mode 100644 index 0000000..9391f3f --- /dev/null +++ b/charts/limesurvey-1/templates/NOTES.txt @@ -0,0 +1,26 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "limesurvey.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "limesurvey.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "limesurvey.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "limesurvey.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080/admin to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} +2. Get your limesurvey login credentials by running: + + echo User: {{ .Values.limesurvey.admin.username }} + echo Password: $(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "limesurvey.secretName" . }} -o jsonpath="{.data.limesurvey-admin-password}" | base64 --decode) diff --git a/charts/limesurvey-1/templates/_helpers.tpl b/charts/limesurvey-1/templates/_helpers.tpl new file mode 100644 index 0000000..10f50a3 --- /dev/null +++ b/charts/limesurvey-1/templates/_helpers.tpl @@ -0,0 +1,105 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "limesurvey.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "limesurvey.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{- define "limesurvey.mariadb.fullname" -}} +{{- printf "%s-mariadb" .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "limesurvey.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "limesurvey.labels" -}} +helm.sh/chart: {{ include "limesurvey.chart" . }} +{{ include "limesurvey.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "limesurvey.selectorLabels" -}} +app.kubernetes.io/name: {{ include "limesurvey.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "limesurvey.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "limesurvey.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} + +{{/* +Return the MariaDB Secret Name +*/}} +{{- define "limesurvey.databaseSecretName" -}} +{{- if .Values.mariadb.enabled }} + {{- if .Values.mariadb.auth.existingSecret -}} + {{- printf "%s" .Values.mariadb.auth.existingSecret -}} + {{- else -}} + {{- printf "%s" (include "limesurvey.mariadb.fullname" .) -}} + {{- end -}} +{{- else if .Values.externalDatabase.existingSecret -}} + {{- printf "%s" .Values.externalDatabase.existingSecret -}} +{{- else -}} + {{- printf "%s-mariadb" (include "limesurvey.fullname" .) -}} +{{- end -}} +{{- end -}} + +{{/* +Return the LimeSurvey Secret Name +*/}} +{{- define "limesurvey.secretName" -}} +{{- if .Values.limesurvey.admin.existingSecret -}} +{{- printf "%s" .Values.limesurvey.admin.existingSecret -}} +{{- else -}} +{{- printf "%s" (include "limesurvey.fullname" .) -}} +{{- end -}} +{{- end -}} + +{{/* +Return the LimeSurvey SMTP Secret Name +*/}} +{{- define "limesurvey.smtpSecretName" -}} +{{- if .Values.limesurvey.smtp.existingSecret -}} +{{- printf "%s" .Values.limesurvey.smtp.existingSecret -}} +{{- else -}} +{{- printf "%s-smtp" (include "limesurvey.fullname" .) -}} +{{- end -}} +{{- end -}} diff --git a/charts/limesurvey-1/templates/deployment.yaml b/charts/limesurvey-1/templates/deployment.yaml new file mode 100644 index 0000000..95b99d3 --- /dev/null +++ b/charts/limesurvey-1/templates/deployment.yaml @@ -0,0 +1,228 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "limesurvey.fullname" . }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "limesurvey.selectorLabels" . | nindent 6 }} + {{- if .Values.deployment.updateStrategy }} + strategy: {{- toYaml .Values.deployment.updateStrategy | nindent 4 }} + {{- end }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "limesurvey.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "limesurvey.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + volumeMounts: + - name: limesurvey-main + mountPath: "/var/www/html/plugins" + subPath: "plugins" + - name: limesurvey-main + mountPath: "/var/www/html/upload" + subPath: "upload" + - name: limesurvey-main + mountPath: "/var/lime/sessions" + subPath: "sessions" + - name: limesurvey-main + mountPath: "/var/www/html/application/config" + subPath: "config" + {{- range .Values.extraVolumeMounts }} + - name: {{ .name }} + mountPath: {{ .mountPath }} + subPath: {{ .subPath | default "" }} + readOnly: {{ .readOnly }} + {{- end }} + {{- range .Values.extraEmptyDirMounts }} + - name: {{ .name }} + mountPath: {{ .mountPath }} + {{- end }} + env: + - name: LIMESURVEY_DB_TYPE + {{- if eq .Values.mariadb.enabled true }} + value: "mysql" + {{- else }} + value: {{ .Values.externalDatabase.type }} + {{- end }} + - name: LIMESURVEY_DB_HOST + {{- if eq .Values.mariadb.enabled true }} + value: {{ include "limesurvey.mariadb.fullname" . }} + {{- else }} + value: {{ .Values.externalDatabase.host }} + {{- end }} + - name: LIMESURVEY_DB_PORT + {{- if eq .Values.mariadb.enabled true }} + value: {{ coalesce .Values.mariadb.primary.service.ports.mysql .Values.mariadb.primary.service.port 3306 | quote }} + {{- else }} + value: {{ coalesce .Values.externalDatabase.port 3306 | quote }} + {{- end }} + - name: LIMESURVEY_DB_USER + {{- if eq .Values.mariadb.enabled true }} + value: {{ .Values.mariadb.auth.username }} + {{- else }} + value: {{ .Values.externalDatabase.username }} + {{- end }} + - name: LIMESURVEY_DB_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "limesurvey.databaseSecretName" . }} + key: mariadb-password + - name: LIMESURVEY_DB_NAME + {{- if eq .Values.mariadb.enabled true }} + value: {{ .Values.mariadb.auth.database }} + {{- else }} + value: {{ .Values.externalDatabase.database }} + {{- end }} + - name: LIMESURVEY_ADMIN_USER + value: {{ .Values.limesurvey.admin.username | quote }} + - name: LIMESURVEY_ADMIN_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "limesurvey.secretName" . }} + key: limesurvey-admin-password + - name: LIMESURVEY_ADMIN_NAME + value: {{ .Values.limesurvey.admin.name | quote }} + - name: LIMESURVEY_ADMIN_EMAIL + value: {{ .Values.limesurvey.admin.email | quote }} + - name: LIMESURVEY_TABLE_PREFIX + value: {{ .Values.limesurvey.tablePrefix | quote }} + - name: LIMESURVEY_DEBUG + value: {{ .Values.limesurvey.debug | quote }} + - name: LIMESURVEY_SQL_DEBUG + value: {{ .Values.limesurvey.sqlDebug | quote }} + - name: LIMESURVEY_USE_INNODB + value: {{ .Values.limesurvey.useInnodb | quote }} + - name: LIMESURVEY_DB_SESSIONS + value: {{ .Values.limesurvey.dbSessions | quote }} + - name: LIMESURVEY_DONT_SHOW_SCRIPT_NAME + value: {{ .Values.limesurvey.dontShowScriptName | quote }} + - name: TZ + value: {{ .Values.limesurvey.tz | quote }} + - name: LIMESURVEY_SMTP_HOST + value: {{ .Values.limesurvey.smtp.host | quote }} + - name: LIMESURVEY_SMTP_USER + value: {{ .Values.limesurvey.smtp.user | quote }} + - name: LIMESURVEY_SMTP_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "limesurvey.smtpSecretName" . }} + key: limesurvey-smtp-password + - name: LIMESURVEY_SMTP_SSL + value: {{ .Values.limesurvey.smtp.ssl | quote }} + - name: LIMESURVEY_FROM_EMAIL + value: {{ .Values.limesurvey.smtp.from_email | quote }} + - name: LIMESURVEY_SMTP_DEBUG + value: {{ .Values.limesurvey.smtp.debug | quote }} + imagePullPolicy: {{ .Values.image.pullPolicy }} + {{- if .Values.deployment.lifecycleHooks }} + lifecycle: {{- toYaml .Values.deployment.lifecycleHooks | nindent 12 }} + {{- end }} + ports: + - name: http + containerPort: {{ .Values.service.port }} + protocol: TCP + {{- if .Values.limesurvey.livenessProbe.enabled }} + livenessProbe: + httpGet: + path: / + port: http + httpHeaders: + - name: X-Forwarded-Proto + value: https + {{- end }} + {{- if .Values.limesurvey.readinessProbe.enabled }} + readinessProbe: + httpGet: + path: / + port: http + httpHeaders: + - name: X-Forwarded-Proto + value: https + {{- end }} + resources: + {{- toYaml .Values.resources | nindent 12 }} + initContainers: + - name: db-isalive + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + env: + - name: LIMESURVEY_DB_HOST + {{- if eq .Values.mariadb.enabled true }} + value: {{ include "limesurvey.mariadb.fullname" . }} + {{- else }} + value: {{ .Values.externalDatabase.host }} + {{- end }} + - name: LIMESURVEY_DB_PORT + {{- if eq .Values.mariadb.enabled true }} + value: {{ coalesce .Values.mariadb.primary.service.ports.mysql .Values.mariadb.primary.service.port 3306 | quote }} + {{- else }} + value: {{ coalesce .Values.externalDatabase.port 3306 | quote }} + {{- end }} + imagePullPolicy: {{ .Values.image.pullPolicy }} + command: + - "sh" + - "-c" + - "until nc -z -v -w30 ${LIMESURVEY_DB_HOST} ${LIMESURVEY_DB_PORT}; do echo waiting for db; sleep 5; done;" + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + volumes: + - name: limesurvey-main + {{- if .Values.persistence.enabled }} + persistentVolumeClaim: + claimName: {{ .Values.persistence.existingClaim | default (include "limesurvey.fullname" .) }} + {{- else }} + emptyDir: {} + {{- end -}} + {{- range .Values.extraVolumeMounts }} + - name: {{ .name }} + {{- if .existingClaim }} + persistentVolumeClaim: + claimName: {{ .existingClaim }} + {{- else if .hostPath }} + hostPath: + path: {{ .hostPath }} + {{- else if .configMap }} + configMap: + name: {{ .configMap }} + {{- with .items }} + items: + {{- toYaml . | nindent 14 }} + {{- end }} + {{- else }} + emptyDir: {} + {{- end }} + {{- end }} + {{- range .Values.extraEmptyDirMounts }} + - name: {{ .name }} + emptyDir: {} + {{- end -}} diff --git a/charts/limesurvey-1/templates/hpa.yaml b/charts/limesurvey-1/templates/hpa.yaml new file mode 100644 index 0000000..86c133a --- /dev/null +++ b/charts/limesurvey-1/templates/hpa.yaml @@ -0,0 +1,28 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "limesurvey.fullname" . }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "limesurvey.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/charts/limesurvey-1/templates/ingress.yaml b/charts/limesurvey-1/templates/ingress.yaml new file mode 100644 index 0000000..6120b3e --- /dev/null +++ b/charts/limesurvey-1/templates/ingress.yaml @@ -0,0 +1,58 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "limesurvey.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + - host: {{ .Values.ingress.hostname | quote }} + http: + paths: + - path: / + pathType: ImplementationSpecific + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} +{{- end }} + + + diff --git a/charts/limesurvey-1/templates/pvc.yaml b/charts/limesurvey-1/templates/pvc.yaml new file mode 100644 index 0000000..7c4ba08 --- /dev/null +++ b/charts/limesurvey-1/templates/pvc.yaml @@ -0,0 +1,32 @@ +{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }} +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: {{ template "limesurvey.fullname" . }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} + {{- with .Values.persistence.annotations }} + annotations: +{{ toYaml . | indent 4 }} + {{- end }} + {{- with .Values.persistence.finalizers }} + finalizers: +{{ toYaml . | indent 4 }} + {{- end }} +spec: + accessModes: + {{- range .Values.persistence.accessModes }} + - {{ . | quote }} + {{- end }} + resources: + requests: + storage: {{ .Values.persistence.size | quote }} + {{- if .Values.persistence.storageClass }} + storageClassName: {{ .Values.persistence.storageClass }} + {{- end -}} + {{- with .Values.persistence.selectorLabels }} + selector: + matchLabels: +{{ toYaml . | indent 6 }} + {{- end }} +{{- end -}} diff --git a/charts/limesurvey-1/templates/secrets.yaml b/charts/limesurvey-1/templates/secrets.yaml new file mode 100644 index 0000000..8ed3532 --- /dev/null +++ b/charts/limesurvey-1/templates/secrets.yaml @@ -0,0 +1,48 @@ +{{- if not .Values.limesurvey.admin.existingSecret }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "limesurvey.secretName" . }} + namespace: {{ .Release.Namespace | quote }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} +type: Opaque +data: + {{- if .Values.limesurvey.admin.password }} + limesurvey-admin-password: {{ .Values.limesurvey.admin.password | b64enc | quote }} + {{- else }} + limesurvey-admin-password: {{ randAlphaNum 15 | b64enc | quote }} + {{- end }} +{{- end }} + +{{- if not (or .Values.mariadb.enabled .Values.externalDatabase.existingSecret) }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "limesurvey.databaseSecretName" . }} + namespace: {{ .Release.Namespace | quote }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} +type: Opaque +data: + mariadb-password: {{ required "externalDatabase.password is required" .Values.externalDatabase.password | b64enc | quote }} +{{- end }} +{{- if not .Values.limesurvey.smtp.existingSecret }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "limesurvey.smtpSecretName" . }} + namespace: {{ .Release.Namespace | quote }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} +type: Opaque +data: + {{- if .Values.limesurvey.smtp.password }} + limesurvey-smtp-password: {{ .Values.limesurvey.smtp.password | b64enc | quote }} + {{- else }} + limesurvey-smtp-password: {{ randAlphaNum 15 | b64enc | quote }} + {{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/limesurvey-1/templates/service.yaml b/charts/limesurvey-1/templates/service.yaml new file mode 100644 index 0000000..ef5d8be --- /dev/null +++ b/charts/limesurvey-1/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "limesurvey-genes.fullname" . }} + labels: + {{- include "limesurvey-genes.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "limesurvey-genes.selectorLabels" . | nindent 4 }} diff --git a/charts/limesurvey-1/templates/serviceaccount.yaml b/charts/limesurvey-1/templates/serviceaccount.yaml new file mode 100644 index 0000000..53b708d --- /dev/null +++ b/charts/limesurvey-1/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "limesurvey.serviceAccountName" . }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/limesurvey-1/templates/tests/test-connection.yaml b/charts/limesurvey-1/templates/tests/test-connection.yaml new file mode 100644 index 0000000..b5db5bb --- /dev/null +++ b/charts/limesurvey-1/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "limesurvey.fullname" . }}-test-connection" + labels: + {{- include "limesurvey.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "limesurvey.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/charts/limesurvey-1/values.schema.json b/charts/limesurvey-1/values.schema.json new file mode 100644 index 0000000..6945e87 --- /dev/null +++ b/charts/limesurvey-1/values.schema.json @@ -0,0 +1,31 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "ingress": { + "type": "object", + "form": true, + "title": "Ingress Details", + "properties": { + "enabled": { + "description": "Enable Ingress", + "type": "boolean", + "default": true, + "x-onyxia": { + "hidden": true, + "overwriteDefaultWith": "k8s.ingress" + } + }, + "hostname": { + "type": "string", + "form": true, + "title": "Hostname", + "x-onyxia": { + "hidden": true, + "overwriteDefaultWith": "{{project.id}}-{{k8s.randomSubdomain}}-0.{{k8s.domain}}" + } + } + } + } + } +} diff --git a/charts/limesurvey-1/values.yaml b/charts/limesurvey-1/values.yaml new file mode 100644 index 0000000..f195c53 --- /dev/null +++ b/charts/limesurvey-1/values.yaml @@ -0,0 +1,231 @@ +# Default values for limesurvey. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +# -- (int) Numbers of replicas +replicaCount: 1 + +image: + # -- The docker image repository to use + repository: adamzammit/limesurvey + # -- The docker image pull policy + pullPolicy: IfNotPresent + # -- The docker image tag to use + # @default -- vhart appVersion + tag: "" + +imagePullSecrets: [] +# -- String to override the default generated name +nameOverride: "" +# -- String to override the default generated fullname +fullnameOverride: "" + +deployment: {} + +serviceAccount: + # -- Specifies whether a service account should be created + create: true + # -- Annotations to add to the service account + annotations: {} + # -- The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +# -- Annotations for the pods +podAnnotations: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # runAsNonRoot: true + # readOnlyRootFilesystem: true + # runAsUser: 1000 + +service: + # -- Specifies what type of Service should be created + type: ClusterIP + # -- Default Service port + port: 80 + +ingress: + enabled: true + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hostname: limesurvey-genes.lab.groupe-genes.fr + # -- Ingress tls + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +limesurvey: + admin: + # -- The full name of the Limesurvey administrator + name: Lime Administrator + # -- The email address of the Limesurvey administrator + email: lime@lime.lime + # -- The username of the Limesurvey administrator) + username: admin + # -- The password of the Limesurvey administrator + password: "admin" + # -- Use existing secret (admin.password will be ignored). + # secret must contain the key limesurvey-admin-password + existingSecret: "" + smtp: + # -- set the SMTP host - you can also specify a different port than 25 by using this format: [hostname:port], e.g. "smtp.example.com:587") + host: "" + # -- only set this if your server requires authorization - if you set it you HAVE to set a password too + user: "" + # -- SMTP authorization password - empty password is not allowed + password: "" + # -- Use existing secret (smtp.password will be ignored). + # secret must contain the key limesurvey-smtp-password + existingSecret: "" + # -- set this to "ssl" to use SSL/TLS or "tls" to use StartTLS for SMTP connection + ssl: "" + # -- The email address where messages will be sent from + from_email: your-email@example.net + # -- set this to any value to enable SMTP debug mode + debug: "" + + # -- Set this to "myprefix_" if you want your table names to have the myprefix_ + tablePrefix: "lime_" + # -- Debug level of Limesurvey, 0 is off, 1 for errors, 2 for strict PHP and to be able to edit standard templates + debug: "0" + # -- Debug level of Limesurvey for SQL, 0 is off, 1 is on - note requires LIMESURVEY_DEBUG set to 2 + sqlDebug: "0" + # -- Leave blank or don't set to use standard MyISAM database. Set to any value to use InnoDB + useInnodb: "true" + # -- Leave blank or don't set to use file based sessions. Set to any value to use DB based sessions + dbSessions: "" + # -- Leave blank or don't set to show the script name `index.php` in URLs. Set to any value to omit the script name + dontShowScriptName: "" + # -- Time zone name. If set, will configure PHP and LimeSurvey to use this time zone + tz: "Europe/Berlin" + + + livenessProbe: + enabled: true + readinessProbe: + enabled: true + +persistence: + # -- Enable persistence using Persistent Volume Claims + # ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ + enabled: true + storageClass: null + accessModes: + - ReadWriteOnce + size: 5Gi + annotations: + helm.sh/resource-policy: "keep" + finalizers: + - kubernetes.io/pvc-protection + selectorLabels: {} + existingClaim: null + +# -- This allows you to mount additional volumes +# into the Limesurvey container +extraVolumeMounts: [] +# - name: extra-volume-0 +# mountPath: /mnt/volume0 +# readOnly: true +# existingClaim: volume-claim +# - name: extra-volume-1 +# mountPath: /mnt/volume1 +# readOnly: true +# hostPath: /usr/shared/ +# - name: extra-volume-configmap +# configMap: limesurvey +# items: +# - key: config.php +# path: application/config/config.php + +# -- This allows you to mount additional "emptyDirs" +# into the Limesurvey container +extraEmptyDirMounts: [] +# - name: extra-empty-dir +# mountPath: /var/lib/foobar + +# MariaDB chart configuration +# ref: https://github.com/bitnami/charts/tree/main/bitnami/mariadb +mariadb: + # -- Deploy a MariaDB server + enabled: true + auth: + database: limesurvey + username: limesurvey + password: changeme + # -- Use existing secret (auth.rootPassword, auth.password, and auth.replicationPassword will be ignored). + # secret must contain the keys mariadb-root-password, mariadb-replication-password and mariadb-password + existingSecret: "" + + architecture: standalone + + primary: + persistence: + # -- Enable persistence using Persistent Volume Claims + # ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ + enabled: true + # -- Use an existing Persistent Volume Claim (must be created ahead of time) + # existingClaim: "" + # storageClass: "" + accessMode: ReadWriteOnce + size: 8Gi + # -- Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if primary.resources is set (primary.resources is recommended for production). + # More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15 + resourcesPreset: "none" + +## -- Use an externally provisioned database instance +## Ignored when mariadb.enabled is set to true +externalDatabase: + # -- Type of external database ("mysql" or "pgsql") + type: mysql + # -- External Database server host + host: mariadb.example.com + # -- External Database server port + port: 3306 + # -- External Database username + username: limesurvey + # -- External Database user password + password: "" + # -- External Database database name + database: limesurvey + # -- Use an existing secret for retrieving the database password. + # The secret must contain the field "mariadb-password" + existingSecret: "" + +# -- Set the resources requests and limits +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +# -- Set the node selector for the pod. +nodeSelector: {} + +# -- Set the tolerations for the pod. +tolerations: [] + +# -- Set the affinity for the pod. +affinity: {} diff --git a/charts/limesurvey-library/.helmignore b/charts/limesurvey-library/.helmignore new file mode 100644 index 0000000..faeb926 --- /dev/null +++ b/charts/limesurvey-library/.helmignore @@ -0,0 +1,24 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +tests/ diff --git a/charts/limesurvey-library/Chart.lock b/charts/limesurvey-library/Chart.lock new file mode 100644 index 0000000..89fe5c3 --- /dev/null +++ b/charts/limesurvey-library/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: mariadb + repository: https://charts.bitnami.com/bitnami + version: 11.4.2 +digest: sha256:a5ca7e087e742d524a85deb34ff5db712500f9ffcd353ffd5c0596f274c9cfda +generated: "2022-12-20T08:34:28.907756617+01:00" diff --git a/charts/limesurvey-library/Chart.yaml b/charts/limesurvey-library/Chart.yaml new file mode 100644 index 0000000..b7fcfd3 --- /dev/null +++ b/charts/limesurvey-library/Chart.yaml @@ -0,0 +1,19 @@ +apiVersion: v2 +appVersion: 5-apache +dependencies: +- condition: mariadb.enabled + name: mariadb + repository: https://charts.bitnami.com/bitnami + version: 11.x +description: Limesurvey is the number one open-source survey software. +icon: https://raw.githubusercontent.com/martialblog/helm-charts/master/limesurvey/icon.png +maintainers: +- email: markus@martialblog.de + name: martialblog +name: limesurvey +sources: +- https://github.com/martialblog/helm-charts +- https://github.com/martialblog/docker-limesurvey/ +- https://limesurvey.org/ +type: application +version: 0.8.0 diff --git a/charts/limesurvey-library/README.md b/charts/limesurvey-library/README.md new file mode 100644 index 0000000..814e275 --- /dev/null +++ b/charts/limesurvey-library/README.md @@ -0,0 +1,181 @@ +# LimeSurvey + +[LimeSurvey](https://limesurvey.org/) is the number one open-source survey software. + +## TL;DR + +```console +helm repo add martialblog https://martialblog.github.io/helm-charts +helm repo update + +helm install my-release \ + --set mariadb.enabled=true \ + --set mariadb.auth.rootPassword=CHANGE-ME \ + --set mariadb.auth.password=CHANGE-ME \ + martialblog/limesurvey +``` + +## Introduction + +This chart bootstraps LimeSurvey deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. + +It also packages the [Bitnami MariaDB chart](https://artifacthub.io/packages/helm/bitnami/mariadb) which is required for bootstrapping a MariaDB deployment for the database requirements of the application. You can also provide your own database instance. + +## Prerequisites + +- Kubernetes 1.13+ +- Helm 3+ +- PV provisioner support in the underlying infrastructure + +## Parameters + +### Global parameters + +| Name | Description | Value | +| ------------------------- | ----------------------------------------------- | ----- | +| `global.imageRegistry` | Global Docker image registry | `nil` | + +### LimeSurvey Image parameters + +| Name | Description | Value | +| ------------------- | ---------------------------------------------------- | --------------------- | +| `image.registry` | LimeSurvey image registry | `docker.io` | +| `image.repository` | LimeSurvey image repository | `martialblog/limesurvey` | +| `image.tag` | LimeSurvey image tag (immutable tags are recommended) | `5-apache` | +| `image.pullPolicy` | LimeSurvey image pull policy | `IfNotPresent` | +| `image.pullSecrets` | LimeSurvey image pull secrets | `[]` | + +### LimeSurvey Configuration parameters + +| Name | Description | Value | +| -------------------------------------- | ----------------------------------------------- | ------------------ | +| `limesurvey.admin.user` | LimeSurvey initial Admin Username | `admin` | +| `limesurvey.admin.password` | LimeSurvey initial Admin Password | `nil` | +| `limesurvey.admin.name` | LimeSurvey initial Admin Full Name | `Administrator` | +| `limesurvey.admin.email` | LimeSurvey initial Admin Email | `admin@example.com` | +| `limesurvey.listenPort` | LimeSurvey Container port for webserver | `8080` | +| `limesurvey.publicUrl` | LimeSurvey Public URL for public scripts | `nil` | +| `limesurvey.baseUrl` | LimeSurvey Application Base URL | `nil` | +| `limesurvey.mysqlEngine` | MySQL engine used for survey tables (MyISAM or InnoDB) | `MyISAM` | +| `limesurvey.urlFormat` | LimeSurvey URL Format (path|get) | `nil` | +| `limesurvey.showScriptName` | LimeSurvey Script name in URL (true|false) | `true` | +| `limesurvey.tablePrefix` | LimeSurvey Database table prefix; set this to a single whitespace if you don't want a table prefix. | `lime_` | +| `limesurvey.tableSession` | LimeSurvey Table sessions; For storing sessions in the database | `false` | +| `limesurvey.debug` | LimeSurvey Debug level (0, 1, 2) | `0` | +| `limesurvey.debugSql` | LimeSurvey SQL Debug level (0, 1, 2) | `0` | +| `limesurvey.encrypt.keypair` | LimeSurvey Data encryption keypair | `nil` | +| `limesurvey.encrypt.publicKey` | LimeSurvey Data encryption public key | `nil` | +| `limesurvey.encrypt.secretKey` | LimeSurvey Data encryption secret key | `nil` | +| `limesurvey.encrypt.nonce` | LimeSurvey Data encryption nonce | `nil` | +| `limesurvey.encrypt.secretBoxKey` | LimeSurvey Data encryption secret box key | `nil` | + +### Persistence Parameters + +| Name | Description | Value | +| --------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------- | +| `persistence.enabled` | Enable persistence using Persistent Volume Claims | `true` | +| `persistence.accessModes` | Persistent Volume access modes | `[ReadWriteOnce]` | +| `persistence.size` | Persistent Volume size | `5Gi` | +| `persistence.storageClassName` | Persistent Volume storage class name | `nil` | +| `persistence.subPath` | Persistent Volume sub path | `nil` | +| `persistence.finalizers` | Persistent Volume finalizers | `[kubernetes.io/pvc-protection]` | +| `persistence.selectorLabels` | Persistent Volume selector labels | `{}` | +| `persistence.annotations` | persistent volume claim annotations | `{}` | +| `persistence.existingClaim` | The name of an existing PVC to use for persistence | `nil` | + +### Traffic Exposure Parameters + +| Name | Description | Value | +| ------------------------- | ----------------------------------------------- | ----- | +| `service.type` | LimeSurvey service type | `ClusterIP` | +| `service.port` | LimeSurvey service port | `80` | +| `ingress.enabled` | Enable ingress record generation for LimeSurvey | `false` | +| `ingress.className` | IngressClass that will be be used to implement the Ingress | `""` | +| `ingress.hosts` | An array with hosts for the Ingress | `limesurvey.local` | +| `ingress.annotations` | Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations. | `{}` | +| `ingress.tls` | Enable TLS configuration for the host defined at `ingress.hostname` parameter | `false` | + +### Other parameters + +| Name | Description | Value | +| ------------------------- | ------------------------------------------------ | ----- | +| `imagePullSecrets` | Docker registry secret names as an array | `[]` | +| `nameOverride` | String to override the Chart Name | `nil` | +| `fullnameOverride` | String to fully override the Chart Name | `nil` | +| `extraVolumeMounts` | Additional volumes as an array | `[]` | +| `extraEmptyDirMounts` | Additional emptyDir volumes as an array | `[]` | +| `nodeSelector` | Node labels for pod assignment | `{}` | +| `tolerations` | Tolerations for pod assignment | `{}` | +| `affinity` | Affinity for pod assignment | `{}` | +| `podAnnotations` | Annotations for LimeSurvey pods | `[]` | +| `updateStrategy.type` | Deployment strategy type | `RollingUpdate` | +| `updateStrategy.rollingUpdate` | Deployment rolling update configuration parameters | `{}` | +| `replicaCount` | Number of LimeSurvey replicas to deploy | `1` | +| `autoscaling.enabled` | Enable Horizontal POD autoscaling for LimeSurvey | `false` | +| `autoscaling.minReplicas` | Minimum number of LimeSurvey replicas | `1` | +| `autoscaling.maxReplicas` | Maximum number of LimeSurvey replicas | `11` | +| `autoscaling.targetCPUUtilizationPercentage` | Target CPU utilization percentage | `80` | +| `podSecurityContext.fsGroup` | Set LimeSurvey pod's Security Context fsGroup | `33` | +| `podSecurityContext.runAsUser` | Set LimeSurvey pod's Security Context runAsUser | `33` | +| `podSecurityContext.runAsGroup` | Set LimeSurvey pod's Security Context runAsGroup | `33` | +| `containerSecurityContext.enabled` | Enable LimeSurvey containers' Security Context | `true` | +| `containerSecurityContext.allowPrivilegeEscalation` | Default LimeSurvey containers' Security Context | `true` | + +### Database Parameters + +LimeSurvey requires a [MySQL- or PostgreSQL-compatible database](https://manual.limesurvey.org/Installation_-_LimeSurvey_CE#Create_a_database_user). + +You can either provide your own: +```yaml +externalDatabase: + host: hostname.example + database: limesurvey-db + username: limesurvey + password: "your-super-secret-password" +``` + +or you can let the Helm chart provision one for you (based on [Bitnami MariaDB Helm chart](https://artifacthub.io/packages/helm/bitnami/mariadb)): +```yaml +mariadb: + enabled: true + auth: + rootPassword: "please-change-me" + database: limesurvey + username: limesurvey + password: "please-change-me" +``` + +In both cases the application will automatically be configured to use these credentials. +Please refer to the [values.yaml](./values.yaml) for all possible configuration values. + +## Configuration and installation details + +### LimeSurvey Administrator Password + +If the initial Admin Password `limesurvey.admin.password` is not provided it will be set to a random string. You can extract the password from the Secret: + +```bash +kubectl get secrets --template={{.data.limesurvey-admin-password}} | base64 -d +``` + +## Upgrading + +### To 0.6.0 + +This release bumps the Bitnami MariaDB to 10.6. Follow the official instructions [official instructions](https://mariadb.com/kb/en/upgrading-from-mariadb-105-to-mariadb-106/). + +## Testing + +This Helm chart is tested with [helm unittest](https://github.com/quintush/helm-unittest) ([test format spec](https://github.com/quintush/helm-unittest/blob/master/DOCUMENT.md)). +You can find the test specifications in the `./tests/` directory. +Tests are automatically run in CI. + +To run the tests locally, use the following command: + +``` +# Required for pulling the MariaDB chart +helm repo add bitnami https://charts.bitnami.com/bitnami +helm dependency build + +podman run --rm -v "${PWD}:/apps" docker.io/quintush/helm-unittest:3.7.1-0.2.8 --helm3 . +```` diff --git a/charts/limesurvey-library/charts/mariadb/.helmignore b/charts/limesurvey-library/charts/mariadb/.helmignore new file mode 100644 index 0000000..f0c1319 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/charts/limesurvey-library/charts/mariadb/Chart.lock b/charts/limesurvey-library/charts/mariadb/Chart.lock new file mode 100644 index 0000000..5d7370a --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://charts.bitnami.com/bitnami + version: 2.2.2 +digest: sha256:49ca75cf23ba5eb7df4becef52580f98c8bd8194eb80368b9d7b875f6eefa8e5 +generated: "2022-12-15T08:09:23.256191892Z" diff --git a/charts/limesurvey-library/charts/mariadb/Chart.yaml b/charts/limesurvey-library/charts/mariadb/Chart.yaml new file mode 100644 index 0000000..6028225 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/Chart.yaml @@ -0,0 +1,30 @@ +annotations: + category: Database +apiVersion: v2 +appVersion: 10.6.11 +dependencies: +- name: common + repository: https://charts.bitnami.com/bitnami + tags: + - bitnami-common + version: 2.x.x +description: MariaDB is an open source, community-developed SQL database server that + is widely in use around the world due to its enterprise features, flexibility, and + collaboration with leading tech firms. +home: https://github.com/bitnami/charts/tree/main/bitnami/mariadb +icon: https://bitnami.com/assets/stacks/mariadb/img/mariadb-stack-220x234.png +keywords: +- mariadb +- mysql +- database +- sql +- prometheus +maintainers: +- name: Bitnami + url: https://github.com/bitnami/charts +name: mariadb +sources: +- https://github.com/bitnami/containers/tree/main/bitnami/mariadb +- https://github.com/prometheus/mysqld_exporter +- https://mariadb.org +version: 11.4.2 diff --git a/charts/limesurvey-library/charts/mariadb/README.md b/charts/limesurvey-library/charts/mariadb/README.md new file mode 100644 index 0000000..3e46799 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/README.md @@ -0,0 +1,559 @@ + + +# MariaDB packaged by Bitnami + +MariaDB is an open source, community-developed SQL database server that is widely in use around the world due to its enterprise features, flexibility, and collaboration with leading tech firms. + +[Overview of MariaDB](https://mariadb.org/) + +Trademarks: This software listing is packaged by Bitnami. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. + +## TL;DR + +```bash +$ helm repo add my-repo https://charts.bitnami.com/bitnami +$ helm install my-release my-repo/mariadb +``` + +## Introduction + +This chart bootstraps a [MariaDB](https://github.com/bitnami/containers/tree/main/bitnami/mariadb) replication cluster deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. + +MariaDB is developed as open source software and as a relational database it provides an SQL interface for accessing data. The latest versions of MariaDB also include GIS and JSON features. + +Bitnami charts can be used with [Kubeapps](https://kubeapps.dev/) for deployment and management of Helm Charts in clusters. + +## Prerequisites + +- Kubernetes 1.19+ +- Helm 3.2.0+ +- PV provisioner support in the underlying infrastructure + +## Installing the Chart + +To install the chart with the release name `my-release`: + +```bash +$ helm install my-release my-repo/mariadb +``` + +The command deploys MariaDB on the Kubernetes cluster in the default configuration. The [Parameters](#parameters) section lists the parameters that can be configured during installation. + +> **Tip**: List all releases using `helm list` + +## Uninstalling the Chart + +To uninstall/delete the `my-release` deployment: + +```bash +$ helm delete my-release +``` + +The command removes all the Kubernetes components associated with the chart and deletes the release. + +## Parameters + +### Global parameters + +| Name | Description | Value | +| ------------------------- | ----------------------------------------------- | ----- | +| `global.imageRegistry` | Global Docker Image registry | `""` | +| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` | +| `global.storageClass` | Global storage class for dynamic provisioning | `""` | + + +### Common parameters + +| Name | Description | Value | +| ------------------------ | --------------------------------------------------------------------------------------- | --------------- | +| `kubeVersion` | Force target Kubernetes version (using Helm capabilities if not set) | `""` | +| `nameOverride` | String to partially override mariadb.fullname | `""` | +| `fullnameOverride` | String to fully override mariadb.fullname | `""` | +| `clusterDomain` | Default Kubernetes cluster domain | `cluster.local` | +| `commonAnnotations` | Common annotations to add to all MariaDB resources (sub-charts are not considered) | `{}` | +| `commonLabels` | Common labels to add to all MariaDB resources (sub-charts are not considered) | `{}` | +| `schedulerName` | Name of the scheduler (other than default) to dispatch pods | `""` | +| `runtimeClassName` | Name of the Runtime Class for all MariaDB pods | `""` | +| `extraDeploy` | Array of extra objects to deploy with the release (evaluated as a template) | `[]` | +| `diagnosticMode.enabled` | Enable diagnostic mode (all probes will be disabled and the command will be overridden) | `false` | +| `diagnosticMode.command` | Command to override all containers in the deployment | `["sleep"]` | +| `diagnosticMode.args` | Args to override all containers in the deployment | `["infinity"]` | + + +### MariaDB common parameters + +| Name | Description | Value | +| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | +| `image.registry` | MariaDB image registry | `docker.io` | +| `image.repository` | MariaDB image repository | `bitnami/mariadb` | +| `image.tag` | MariaDB image tag (immutable tags are recommended) | `10.6.11-debian-11-r12` | +| `image.digest` | MariaDB image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `""` | +| `image.pullPolicy` | MariaDB image pull policy | `IfNotPresent` | +| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` | +| `image.debug` | Specify if debug logs should be enabled | `false` | +| `architecture` | MariaDB architecture (`standalone` or `replication`) | `standalone` | +| `auth.rootPassword` | Password for the `root` user. Ignored if existing secret is provided. | `""` | +| `auth.database` | Name for a custom database to create | `my_database` | +| `auth.username` | Name for a custom user to create | `""` | +| `auth.password` | Password for the new user. Ignored if existing secret is provided | `""` | +| `auth.replicationUser` | MariaDB replication user | `replicator` | +| `auth.replicationPassword` | MariaDB replication user password. Ignored if existing secret is provided | `""` | +| `auth.existingSecret` | Use existing secret for password details (`auth.rootPassword`, `auth.password`, `auth.replicationPassword` will be ignored and picked up from this secret). The secret has to contain the keys `mariadb-root-password`, `mariadb-replication-password` and `mariadb-password` | `""` | +| `auth.forcePassword` | Force users to specify required passwords | `false` | +| `auth.usePasswordFiles` | Mount credentials as files instead of using environment variables | `false` | +| `auth.customPasswordFiles` | Use custom password files when `auth.usePasswordFiles` is set to `true`. Define path for keys `root` and `user`, also define `replicator` if `architecture` is set to `replication` | `{}` | +| `initdbScripts` | Dictionary of initdb scripts | `{}` | +| `initdbScriptsConfigMap` | ConfigMap with the initdb scripts (Note: Overrides `initdbScripts`) | `""` | + + +### MariaDB Primary parameters + +| Name | Description | Value | +| ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------- | +| `primary.name` | Name of the primary database (eg primary, master, leader, ...) | `primary` | +| `primary.command` | Override default container command on MariaDB Primary container(s) (useful when using custom images) | `[]` | +| `primary.args` | Override default container args on MariaDB Primary container(s) (useful when using custom images) | `[]` | +| `primary.lifecycleHooks` | for the MariaDB Primary container(s) to automate configuration before or after startup | `{}` | +| `primary.hostAliases` | Add deployment host aliases | `[]` | +| `primary.configuration` | MariaDB Primary configuration to be injected as ConfigMap | `""` | +| `primary.existingConfigmap` | Name of existing ConfigMap with MariaDB Primary configuration. | `""` | +| `primary.updateStrategy.type` | MariaDB primary statefulset strategy type | `RollingUpdate` | +| `primary.rollingUpdatePartition` | Partition update strategy for Mariadb Primary statefulset | `""` | +| `primary.podAnnotations` | Additional pod annotations for MariaDB primary pods | `{}` | +| `primary.podLabels` | Extra labels for MariaDB primary pods | `{}` | +| `primary.podAffinityPreset` | MariaDB primary pod affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `primary.podAntiAffinityPreset` | MariaDB primary pod anti-affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` | `soft` | +| `primary.nodeAffinityPreset.type` | MariaDB primary node affinity preset type. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `primary.nodeAffinityPreset.key` | MariaDB primary node label key to match Ignored if `primary.affinity` is set. | `""` | +| `primary.nodeAffinityPreset.values` | MariaDB primary node label values to match. Ignored if `primary.affinity` is set. | `[]` | +| `primary.affinity` | Affinity for MariaDB primary pods assignment | `{}` | +| `primary.nodeSelector` | Node labels for MariaDB primary pods assignment | `{}` | +| `primary.tolerations` | Tolerations for MariaDB primary pods assignment | `[]` | +| `primary.schedulerName` | Name of the k8s scheduler (other than default) | `""` | +| `primary.podManagementPolicy` | podManagementPolicy to manage scaling operation of MariaDB primary pods | `""` | +| `primary.topologySpreadConstraints` | Topology Spread Constraints for MariaDB primary pods assignment | `[]` | +| `primary.priorityClassName` | Priority class for MariaDB primary pods assignment | `""` | +| `primary.runtimeClassName` | Runtime Class for MariaDB primary pods | `""` | +| `primary.podSecurityContext.enabled` | Enable security context for MariaDB primary pods | `true` | +| `primary.podSecurityContext.fsGroup` | Group ID for the mounted volumes' filesystem | `1001` | +| `primary.containerSecurityContext.enabled` | MariaDB primary container securityContext | `true` | +| `primary.containerSecurityContext.runAsUser` | User ID for the MariaDB primary container | `1001` | +| `primary.containerSecurityContext.runAsNonRoot` | Set Controller container's Security Context runAsNonRoot | `true` | +| `primary.resources.limits` | The resources limits for MariaDB primary containers | `{}` | +| `primary.resources.requests` | The requested resources for MariaDB primary containers | `{}` | +| `primary.startupProbe.enabled` | Enable startupProbe | `false` | +| `primary.startupProbe.initialDelaySeconds` | Initial delay seconds for startupProbe | `120` | +| `primary.startupProbe.periodSeconds` | Period seconds for startupProbe | `15` | +| `primary.startupProbe.timeoutSeconds` | Timeout seconds for startupProbe | `5` | +| `primary.startupProbe.failureThreshold` | Failure threshold for startupProbe | `10` | +| `primary.startupProbe.successThreshold` | Success threshold for startupProbe | `1` | +| `primary.livenessProbe.enabled` | Enable livenessProbe | `true` | +| `primary.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `120` | +| `primary.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | +| `primary.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `1` | +| `primary.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | +| `primary.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `primary.readinessProbe.enabled` | Enable readinessProbe | `true` | +| `primary.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `30` | +| `primary.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `primary.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `1` | +| `primary.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `3` | +| `primary.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `primary.customStartupProbe` | Override default startup probe for MariaDB primary containers | `{}` | +| `primary.customLivenessProbe` | Override default liveness probe for MariaDB primary containers | `{}` | +| `primary.customReadinessProbe` | Override default readiness probe for MariaDB primary containers | `{}` | +| `primary.startupWaitOptions` | Override default builtin startup wait check options for MariaDB primary containers | `{}` | +| `primary.extraFlags` | MariaDB primary additional command line flags | `""` | +| `primary.extraEnvVars` | Extra environment variables to be set on MariaDB primary containers | `[]` | +| `primary.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars for MariaDB primary containers | `""` | +| `primary.extraEnvVarsSecret` | Name of existing Secret containing extra env vars for MariaDB primary containers | `""` | +| `primary.persistence.enabled` | Enable persistence on MariaDB primary replicas using a `PersistentVolumeClaim`. If false, use emptyDir | `true` | +| `primary.persistence.existingClaim` | Name of an existing `PersistentVolumeClaim` for MariaDB primary replicas | `""` | +| `primary.persistence.subPath` | Subdirectory of the volume to mount at | `""` | +| `primary.persistence.storageClass` | MariaDB primary persistent volume storage Class | `""` | +| `primary.persistence.annotations` | MariaDB primary persistent volume claim annotations | `{}` | +| `primary.persistence.accessModes` | MariaDB primary persistent volume access Modes | `["ReadWriteOnce"]` | +| `primary.persistence.size` | MariaDB primary persistent volume size | `8Gi` | +| `primary.persistence.selector` | Selector to match an existing Persistent Volume | `{}` | +| `primary.extraVolumes` | Optionally specify extra list of additional volumes to the MariaDB Primary pod(s) | `[]` | +| `primary.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the MariaDB Primary container(s) | `[]` | +| `primary.initContainers` | Add additional init containers for the MariaDB Primary pod(s) | `[]` | +| `primary.sidecars` | Add additional sidecar containers for the MariaDB Primary pod(s) | `[]` | +| `primary.service.type` | MariaDB Primary Kubernetes service type | `ClusterIP` | +| `primary.service.ports.mysql` | MariaDB Primary Kubernetes service port for MariaDB | `3306` | +| `primary.service.ports.metrics` | MariaDB Primary Kubernetes service port for metrics | `9104` | +| `primary.service.nodePorts.mysql` | MariaDB Primary Kubernetes service node port | `""` | +| `primary.service.clusterIP` | MariaDB Primary Kubernetes service clusterIP IP | `""` | +| `primary.service.loadBalancerIP` | MariaDB Primary loadBalancerIP if service type is `LoadBalancer` | `""` | +| `primary.service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | +| `primary.service.loadBalancerSourceRanges` | Address that are allowed when MariaDB Primary service is LoadBalancer | `[]` | +| `primary.service.extraPorts` | Extra ports to expose (normally used with the `sidecar` value) | `[]` | +| `primary.service.annotations` | Provide any additional annotations which may be required | `{}` | +| `primary.service.sessionAffinity` | Session Affinity for Kubernetes service, can be "None" or "ClientIP" | `None` | +| `primary.service.sessionAffinityConfig` | Additional settings for the sessionAffinity | `{}` | +| `primary.pdb.create` | Enable/disable a Pod Disruption Budget creation for MariaDB primary pods | `false` | +| `primary.pdb.minAvailable` | Minimum number/percentage of MariaDB primary pods that must still be available after the eviction | `1` | +| `primary.pdb.maxUnavailable` | Maximum number/percentage of MariaDB primary pods that can be unavailable after the eviction | `""` | +| `primary.revisionHistoryLimit` | Maximum number of revisions that will be maintained in the StatefulSet | `10` | + + +### MariaDB Secondary parameters + +| Name | Description | Value | +| ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------- | +| `secondary.name` | Name of the secondary database (eg secondary, slave, ...) | `secondary` | +| `secondary.replicaCount` | Number of MariaDB secondary replicas | `1` | +| `secondary.command` | Override default container command on MariaDB Secondary container(s) (useful when using custom images) | `[]` | +| `secondary.args` | Override default container args on MariaDB Secondary container(s) (useful when using custom images) | `[]` | +| `secondary.lifecycleHooks` | for the MariaDB Secondary container(s) to automate configuration before or after startup | `{}` | +| `secondary.hostAliases` | Add deployment host aliases | `[]` | +| `secondary.configuration` | MariaDB Secondary configuration to be injected as ConfigMap | `""` | +| `secondary.existingConfigmap` | Name of existing ConfigMap with MariaDB Secondary configuration. | `""` | +| `secondary.updateStrategy.type` | MariaDB secondary statefulset strategy type | `RollingUpdate` | +| `secondary.rollingUpdatePartition` | Partition update strategy for Mariadb Secondary statefulset | `""` | +| `secondary.podAnnotations` | Additional pod annotations for MariaDB secondary pods | `{}` | +| `secondary.podLabels` | Extra labels for MariaDB secondary pods | `{}` | +| `secondary.podAffinityPreset` | MariaDB secondary pod affinity preset. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `secondary.podAntiAffinityPreset` | MariaDB secondary pod anti-affinity preset. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard` | `soft` | +| `secondary.nodeAffinityPreset.type` | MariaDB secondary node affinity preset type. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `secondary.nodeAffinityPreset.key` | MariaDB secondary node label key to match Ignored if `secondary.affinity` is set. | `""` | +| `secondary.nodeAffinityPreset.values` | MariaDB secondary node label values to match. Ignored if `secondary.affinity` is set. | `[]` | +| `secondary.affinity` | Affinity for MariaDB secondary pods assignment | `{}` | +| `secondary.nodeSelector` | Node labels for MariaDB secondary pods assignment | `{}` | +| `secondary.tolerations` | Tolerations for MariaDB secondary pods assignment | `[]` | +| `secondary.topologySpreadConstraints` | Topology Spread Constraints for MariaDB secondary pods assignment | `[]` | +| `secondary.priorityClassName` | Priority class for MariaDB secondary pods assignment | `""` | +| `secondary.runtimeClassName` | Runtime Class for MariaDB secondary pods | `""` | +| `secondary.schedulerName` | Name of the k8s scheduler (other than default) | `""` | +| `secondary.podManagementPolicy` | podManagementPolicy to manage scaling operation of MariaDB secondary pods | `""` | +| `secondary.podSecurityContext.enabled` | Enable security context for MariaDB secondary pods | `true` | +| `secondary.podSecurityContext.fsGroup` | Group ID for the mounted volumes' filesystem | `1001` | +| `secondary.containerSecurityContext.enabled` | MariaDB secondary container securityContext | `true` | +| `secondary.containerSecurityContext.runAsUser` | User ID for the MariaDB secondary container | `1001` | +| `secondary.containerSecurityContext.runAsNonRoot` | Set Controller container's Security Context runAsNonRoot | `true` | +| `secondary.resources.limits` | The resources limits for MariaDB secondary containers | `{}` | +| `secondary.resources.requests` | The requested resources for MariaDB secondary containers | `{}` | +| `secondary.startupProbe.enabled` | Enable startupProbe | `false` | +| `secondary.startupProbe.initialDelaySeconds` | Initial delay seconds for startupProbe | `120` | +| `secondary.startupProbe.periodSeconds` | Period seconds for startupProbe | `15` | +| `secondary.startupProbe.timeoutSeconds` | Timeout seconds for startupProbe | `5` | +| `secondary.startupProbe.failureThreshold` | Failure threshold for startupProbe | `10` | +| `secondary.startupProbe.successThreshold` | Success threshold for startupProbe | `1` | +| `secondary.livenessProbe.enabled` | Enable livenessProbe | `true` | +| `secondary.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `120` | +| `secondary.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | +| `secondary.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `1` | +| `secondary.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | +| `secondary.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `secondary.readinessProbe.enabled` | Enable readinessProbe | `true` | +| `secondary.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `30` | +| `secondary.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `secondary.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `1` | +| `secondary.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `3` | +| `secondary.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `secondary.customStartupProbe` | Override default startup probe for MariaDB secondary containers | `{}` | +| `secondary.customLivenessProbe` | Override default liveness probe for MariaDB secondary containers | `{}` | +| `secondary.customReadinessProbe` | Override default readiness probe for MariaDB secondary containers | `{}` | +| `secondary.startupWaitOptions` | Override default builtin startup wait check options for MariaDB secondary containers | `{}` | +| `secondary.extraFlags` | MariaDB secondary additional command line flags | `""` | +| `secondary.extraEnvVars` | Extra environment variables to be set on MariaDB secondary containers | `[]` | +| `secondary.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars for MariaDB secondary containers | `""` | +| `secondary.extraEnvVarsSecret` | Name of existing Secret containing extra env vars for MariaDB secondary containers | `""` | +| `secondary.persistence.enabled` | Enable persistence on MariaDB secondary replicas using a `PersistentVolumeClaim` | `true` | +| `secondary.persistence.subPath` | Subdirectory of the volume to mount at | `""` | +| `secondary.persistence.storageClass` | MariaDB secondary persistent volume storage Class | `""` | +| `secondary.persistence.annotations` | MariaDB secondary persistent volume claim annotations | `{}` | +| `secondary.persistence.accessModes` | MariaDB secondary persistent volume access Modes | `["ReadWriteOnce"]` | +| `secondary.persistence.size` | MariaDB secondary persistent volume size | `8Gi` | +| `secondary.persistence.selector` | Selector to match an existing Persistent Volume | `{}` | +| `secondary.extraVolumes` | Optionally specify extra list of additional volumes to the MariaDB secondary pod(s) | `[]` | +| `secondary.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the MariaDB secondary container(s) | `[]` | +| `secondary.initContainers` | Add additional init containers for the MariaDB secondary pod(s) | `[]` | +| `secondary.sidecars` | Add additional sidecar containers for the MariaDB secondary pod(s) | `[]` | +| `secondary.service.type` | MariaDB secondary Kubernetes service type | `ClusterIP` | +| `secondary.service.ports.mysql` | MariaDB secondary Kubernetes service port for MariaDB | `3306` | +| `secondary.service.ports.metrics` | MariaDB secondary Kubernetes service port for metrics | `9104` | +| `secondary.service.nodePorts.mysql` | MariaDB secondary Kubernetes service node port | `""` | +| `secondary.service.clusterIP` | MariaDB secondary Kubernetes service clusterIP IP | `""` | +| `secondary.service.loadBalancerIP` | MariaDB secondary loadBalancerIP if service type is `LoadBalancer` | `""` | +| `secondary.service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | +| `secondary.service.loadBalancerSourceRanges` | Address that are allowed when MariaDB secondary service is LoadBalancer | `[]` | +| `secondary.service.extraPorts` | Extra ports to expose (normally used with the `sidecar` value) | `[]` | +| `secondary.service.annotations` | Provide any additional annotations which may be required | `{}` | +| `secondary.service.sessionAffinity` | Session Affinity for Kubernetes service, can be "None" or "ClientIP" | `None` | +| `secondary.service.sessionAffinityConfig` | Additional settings for the sessionAffinity | `{}` | +| `secondary.pdb.create` | Enable/disable a Pod Disruption Budget creation for MariaDB secondary pods | `false` | +| `secondary.pdb.minAvailable` | Minimum number/percentage of MariaDB secondary pods that should remain scheduled | `1` | +| `secondary.pdb.maxUnavailable` | Maximum number/percentage of MariaDB secondary pods that may be made unavailable | `""` | +| `secondary.revisionHistoryLimit` | Maximum number of revisions that will be maintained in the StatefulSet | `10` | + + +### RBAC parameters + +| Name | Description | Value | +| --------------------------------------------- | -------------------------------------------------------------- | ------- | +| `serviceAccount.create` | Enable the creation of a ServiceAccount for MariaDB pods | `true` | +| `serviceAccount.name` | Name of the created ServiceAccount | `""` | +| `serviceAccount.annotations` | Annotations for MariaDB Service Account | `{}` | +| `serviceAccount.automountServiceAccountToken` | Automount service account token for the server service account | `false` | +| `rbac.create` | Whether to create and use RBAC resources or not | `false` | + + +### Volume Permissions parameters + +| Name | Description | Value | +| -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | +| `volumePermissions.enabled` | Enable init container that changes the owner and group of the persistent volume(s) mountpoint to `runAsUser:fsGroup` | `false` | +| `volumePermissions.image.registry` | Init container volume-permissions image registry | `docker.io` | +| `volumePermissions.image.repository` | Init container volume-permissions image repository | `bitnami/bitnami-shell` | +| `volumePermissions.image.tag` | Init container volume-permissions image tag (immutable tags are recommended) | `11-debian-11-r61` | +| `volumePermissions.image.digest` | Init container volume-permissions image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `""` | +| `volumePermissions.image.pullPolicy` | Init container volume-permissions image pull policy | `IfNotPresent` | +| `volumePermissions.image.pullSecrets` | Specify docker-registry secret names as an array | `[]` | +| `volumePermissions.resources.limits` | Init container volume-permissions resource limits | `{}` | +| `volumePermissions.resources.requests` | Init container volume-permissions resource requests | `{}` | + + +### Metrics parameters + +| Name | Description | Value | +| -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | +| `metrics.enabled` | Start a side-car prometheus exporter | `false` | +| `metrics.image.registry` | Exporter image registry | `docker.io` | +| `metrics.image.repository` | Exporter image repository | `bitnami/mysqld-exporter` | +| `metrics.image.tag` | Exporter image tag (immutable tags are recommended) | `0.14.0-debian-11-r67` | +| `metrics.image.digest` | Exporter image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `""` | +| `metrics.image.pullPolicy` | Exporter image pull policy | `IfNotPresent` | +| `metrics.image.pullSecrets` | Specify docker-registry secret names as an array | `[]` | +| `metrics.annotations` | Annotations for the Exporter pod | `{}` | +| `metrics.extraArgs` | Extra args to be passed to mysqld_exporter | `{}` | +| `metrics.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the MariaDB metrics container(s) | `{}` | +| `metrics.containerSecurityContext.enabled` | Enable security context for MariaDB metrics container | `false` | +| `metrics.resources.limits` | The resources limits for MariaDB prometheus exporter containers | `{}` | +| `metrics.resources.requests` | The requested resources for MariaDB prometheus exporter containers | `{}` | +| `metrics.livenessProbe.enabled` | Enable livenessProbe | `true` | +| `metrics.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `120` | +| `metrics.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | +| `metrics.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `1` | +| `metrics.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | +| `metrics.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `metrics.readinessProbe.enabled` | Enable readinessProbe | `true` | +| `metrics.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `30` | +| `metrics.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `metrics.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `1` | +| `metrics.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `3` | +| `metrics.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `metrics.serviceMonitor.enabled` | Create ServiceMonitor Resource for scraping metrics using PrometheusOperator | `false` | +| `metrics.serviceMonitor.namespace` | Namespace which Prometheus is running in | `""` | +| `metrics.serviceMonitor.jobLabel` | The name of the label on the target service to use as the job name in prometheus. | `""` | +| `metrics.serviceMonitor.interval` | Interval at which metrics should be scraped | `30s` | +| `metrics.serviceMonitor.scrapeTimeout` | Specify the timeout after which the scrape is ended | `""` | +| `metrics.serviceMonitor.relabelings` | RelabelConfigs to apply to samples before scraping | `[]` | +| `metrics.serviceMonitor.metricRelabelings` | MetricRelabelConfigs to apply to samples before ingestion | `[]` | +| `metrics.serviceMonitor.honorLabels` | honorLabels chooses the metric's labels on collisions with target labels | `false` | +| `metrics.serviceMonitor.selector` | ServiceMonitor selector labels | `{}` | +| `metrics.serviceMonitor.labels` | Extra labels for the ServiceMonitor | `{}` | +| `metrics.prometheusRule.enabled` | if `true`, creates a Prometheus Operator PrometheusRule (also requires `metrics.enabled` to be `true` and `metrics.prometheusRule.rules`) | `false` | +| `metrics.prometheusRule.namespace` | Namespace for the PrometheusRule Resource (defaults to the Release Namespace) | `""` | +| `metrics.prometheusRule.additionalLabels` | Additional labels that can be used so PrometheusRule will be discovered by Prometheus | `{}` | +| `metrics.prometheusRule.rules` | Prometheus Rule definitions | `[]` | + + +### NetworkPolicy parameters + +| Name | Description | Value | +| ---------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ------- | +| `networkPolicy.enabled` | Enable network policies | `false` | +| `networkPolicy.metrics.enabled` | Enable network policy for metrics (prometheus) | `false` | +| `networkPolicy.metrics.namespaceSelector` | Monitoring namespace selector labels. These labels will be used to identify the prometheus' namespace. | `{}` | +| `networkPolicy.metrics.podSelector` | Monitoring pod selector labels. These labels will be used to identify the Prometheus pods. | `{}` | +| `networkPolicy.ingressRules.primaryAccessOnlyFrom.enabled` | Enable ingress rule that makes primary mariadb nodes only accessible from a particular origin. | `false` | +| `networkPolicy.ingressRules.primaryAccessOnlyFrom.namespaceSelector` | Namespace selector label that is allowed to access the primary node. This label will be used to identified the allowed namespace(s). | `{}` | +| `networkPolicy.ingressRules.primaryAccessOnlyFrom.podSelector` | Pods selector label that is allowed to access the primary node. This label will be used to identified the allowed pod(s). | `{}` | +| `networkPolicy.ingressRules.primaryAccessOnlyFrom.customRules` | Custom network policy for the primary node. | `{}` | +| `networkPolicy.ingressRules.secondaryAccessOnlyFrom.enabled` | Enable ingress rule that makes primary mariadb nodes only accessible from a particular origin. | `false` | +| `networkPolicy.ingressRules.secondaryAccessOnlyFrom.namespaceSelector` | Namespace selector label that is allowed to acces the secondary nodes. This label will be used to identified the allowed namespace(s). | `{}` | +| `networkPolicy.ingressRules.secondaryAccessOnlyFrom.podSelector` | Pods selector label that is allowed to access the secondary nodes. This label will be used to identified the allowed pod(s). | `{}` | +| `networkPolicy.ingressRules.secondaryAccessOnlyFrom.customRules` | Custom network policy for the secondary nodes. | `{}` | +| `networkPolicy.egressRules.denyConnectionsToExternal` | Enable egress rule that denies outgoing traffic outside the cluster, except for DNS (port 53). | `false` | +| `networkPolicy.egressRules.customRules` | Custom network policy rule | `{}` | + + +The above parameters map to the env variables defined in [bitnami/mariadb](https://github.com/bitnami/containers/tree/main/bitnami/mariadb). For more information please refer to the [bitnami/mariadb](https://github.com/bitnami/containers/tree/main/bitnami/mariadb) image documentation. + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, + +```bash +$ helm install my-release \ + --set auth.rootPassword=secretpassword,auth.database=app_database \ + my-repo/mariadb +``` + +The above command sets the MariaDB `root` account password to `secretpassword`. Additionally it creates a database named `my_database`. + +> NOTE: Once this chart is deployed, it is not possible to change the application's access credentials, such as usernames or passwords, using Helm. To change these application credentials after deployment, delete any persistent volumes (PVs) used by the chart and re-deploy it, or use the application's built-in administrative tools if available. + +Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example, + +```bash +$ helm install my-release -f values.yaml my-repo/mariadb +``` + +> **Tip**: You can use the default [values.yaml](values.yaml) + +## Configuration and installation details + +### [Rolling VS Immutable tags](https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/) + +It is strongly recommended to use immutable tags in a production environment. This ensures your deployment does not change automatically if the same tag is updated with a different image. + +Bitnami will release a new chart updating its containers if a new version of the main container, significant changes, or critical vulnerabilities exist. + +### Change MariaDB version + +To modify the MariaDB version used in this chart you can specify a [valid image tag](https://hub.docker.com/r/bitnami/mariadb/tags/) using the `image.tag` parameter. For example, `image.tag=X.Y.Z`. This approach is also applicable to other images like exporters. + +### Initialize a fresh instance + +The [Bitnami MariaDB](https://github.com/bitnami/containers/tree/main/bitnami/mariadb) image allows you to use your custom scripts to initialize a fresh instance. Custom scripts may be specified using the `initdbScripts` parameter. Alternatively, an external ConfigMap may be created with all the initialization scripts and the ConfigMap passed to the chart via the `initdbScriptsConfigMap` parameter. Note that this will override the `initdbScripts` parameter. + +The allowed extensions are `.sh`, `.sql` and `.sql.gz`. + +These scripts are treated differently depending on their extension. While `.sh` scripts are executed on all the nodes, `.sql` and `.sql.gz` scripts are only executed on the primary nodes. This is because `.sh` scripts support conditional tests to identify the type of node they are running on, while such tests are not supported in `.sql` or `.sql.gz` files. + +[Refer to the chart documentation for more information and a usage example](https://docs.bitnami.com/kubernetes/infrastructure/mariadb/configuration/customize-new-instance/). + +### Sidecars and Init Containers + +If additional containers are needed in the same pod as MariaDB (such as additional metrics or logging exporters), they can be defined using the sidecars parameter. + +The Helm chart already includes sidecar containers for the Prometheus exporters. These can be activated by adding the `--set enable-metrics=true` parameter at deployment time. The `sidecars` parameter should therefore only be used for any extra sidecar containers. [See an example of configuring and using sidecar containers](https://docs.bitnami.com/kubernetes/infrastructure/mariadb/configuration/configure-sidecar-init-containers/). + +Similarly, additional containers can be added to MariaDB pods using the `initContainers` parameter. [See an example of configuring and using init containers](https://docs.bitnami.com/kubernetes/infrastructure/mariadb/configuration/configure-sidecar-init-containers/). + +## Persistence + +The [Bitnami MariaDB](https://github.com/bitnami/containers/tree/main/bitnami/mariadb) image stores the MariaDB data and configurations at the `/bitnami/mariadb` path of the container. + +The chart mounts a [Persistent Volume](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) volume at this location. The volume is created using dynamic volume provisioning, by default. An existing PersistentVolumeClaim can also be defined. + +If you encounter errors when working with persistent volumes, refer to our [troubleshooting guide for persistent volumes](https://docs.bitnami.com/kubernetes/faq/troubleshooting/troubleshooting-persistence-volumes/). + +### Adjust permissions of persistent volume mountpoint + +As the image run as non-root by default, it is necessary to adjust the ownership of the persistent volume so that the container can write data into it. + +By default, the chart is configured to use Kubernetes Security Context to automatically change the ownership of the volume. However, this feature does not work in all Kubernetes distributions. + +As an alternative, this chart supports using an initContainer to change the ownership of the volume before mounting it in the final destination. You can enable this initContainer by setting `volumePermissions.enabled` to `true`. + +## Troubleshooting + +Find more information about how to deal with common errors related to Bitnami's Helm charts in [this troubleshooting guide](https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues). + +## Upgrading + +It's necessary to set the `auth.rootPassword` parameter when upgrading for readiness/liveness probes to work properly. When you install this chart for the first time, some notes will be displayed providing the credentials you must use under the 'Administrator credentials' section. Please note down the password and run the command below to upgrade your chart: + +```bash +$ helm upgrade my-release my-repo/mariadb --set auth.rootPassword=[ROOT_PASSWORD] +``` + +| Note: you need to substitute the placeholder _[ROOT_PASSWORD]_ with the value obtained in the installation notes. + +### To 11.0.0 + +This major release bumps default MariaDB branch to 10.6. Follow the [official instructions](https://mariadb.com/kb/en/upgrading-from-mariadb-105-to-mariadb-106/) from upgrading between 10.5 and 10.6. + +No major issues are expected during the upgrade. + +### To 10.0.0 + +This major release renames several values in this chart and adds missing features, in order to be inline with the rest of assets in the Bitnami charts repository. + +Affected values: + +- `primary.service.port` was deprecated, we recommend using `primary.service.ports.mysql` instead. +- `primary.service.nodePort` was deprecated, we recommend using `primary.service.nodePorts.mysql` instead. +- `secondary.service.port` was deprecated, we recommend using `secondary.service.ports.mysql` instead. +- `secondary.service.nodePort` was deprecated, we recommend using `secondary.service.nodePorts.mysql` instead. +- `metrics.serviceMonitor.additionalLabels` was deprecated, we recommend using `metrics.serviceMonitor.selector` instead. +- `primary.pdb.enabled` renamed as `primary.pdb.create`. +- `secondary.pdb.enabled` renamed as `secondary.pdb.create`. +- `primary.updateStrategy` changed from String type (previously default to 'rollingUpdate') to Object type, allowing users to configure other updateStrategy parameters, similar to other charts. +- Removed value `primary.rollingUpdatePartition`, now configured using `primary.updateStrategy` setting `primary.updateStrategy.rollingUpdate.partition`. +- `secondary.updateStrategy` changed from String type (previously default to 'rollingUpdate') to Object type, allowing users to configure other updateStrategy parameters, similar to other charts. +- Removed value `secondary.rollingUpdatePartition`, now configured using `secondary.updateStrategy` setting `secondary.updateStrategy.rollingUpdate.partition`. +- `metrics.serviceMonitor.relabellings`, previously used to configure ServiceMonitor metricRelabelings, has been replaced with the value `metrics.serviceMonitor.metricRelabelings`, and new value `metrics.serviceMonitor.relabelings` can be used to set ServiceMonitor relabelings parameter + +### To 9.0.0 + +[On November 13, 2020, Helm v2 support was formally finished](https://github.com/helm/charts#status-of-the-project), this major version is the result of the required changes applied to the Helm Chart to be able to incorporate the different features added in Helm v3 and to be consistent with the Helm project itself regarding the Helm v2 EOL. + +[Learn more about this change and related upgrade considerations](https://docs.bitnami.com/kubernetes/infrastructure/mariadb/administration/upgrade-helm3/). + +### To 8.0.0 + +- Several parameters were renamed or disappeared in favor of new ones on this major version: + - The terms _master_ and _slave_ have been replaced by the terms _primary_ and _secondary_. Therefore, parameters prefixed with `master` or `slave` are now prefixed with `primary` or `secondary`, respectively. + - `securityContext.*` is deprecated in favor of `primary.podSecurityContext`, `primary.containerSecurityContext`, `secondary.podSecurityContext`, and `secondary.containerSecurityContext`. + - Credentials parameter are reorganized under the `auth` parameter. + - `replication.enabled` parameter is deprecated in favor of `architecture` parameter that accepts two values: `standalone` and `replication`. +- The default MariaDB version was updated from 10.3 to 10.5. According to the official documentation, upgrading from 10.3 should be painless. However, there are some things that have changed which could affect an upgrade: + - [Incompatible changes upgrading from MariaDB 10.3 to MariaDB 10.4](https://mariadb.com/kb/en/upgrading-from-mariadb-103-to-mariadb-104/#incompatible-changes-between-103-and-104). + - [Incompatible changes upgrading from MariaDB 10.4 to MariaDB 10.5](https://mariadb.com/kb/en/upgrading-from-mariadb-104-to-mariadb-105/#incompatible-changes-between-104-and-105). +- Chart labels were adapted to follow the [Helm charts standard labels](https://helm.sh/docs/chart_best_practices/labels/#standard-labels). +- This version also introduces `bitnami/common`, a [library chart](https://helm.sh/docs/topics/library_charts/#helm) as a dependency. More documentation about this new utility could be found [here](https://github.com/bitnami/charts/tree/main/bitnami/common#bitnami-common-library-chart). Please, make sure that you have updated the chart dependencies before executing any upgrade. + +Consequences: + +Backwards compatibility is not guaranteed. To upgrade to `8.0.0`, install a new release of the MariaDB chart, and migrate the data from your previous release. You have 2 alternatives to do so: + +- Create a backup of the database, and restore it on the new release using tools such as [mysqldump](https://mariadb.com/kb/en/mysqldump/). +- Reuse the PVC used to hold the master data on your previous release. To do so, use the `primary.persistence.existingClaim` parameter. The following example assumes that the release name is `mariadb`: + +```bash +$ helm install mariadb my-repo/mariadb --set auth.rootPassword=[ROOT_PASSWORD] --set primary.persistence.existingClaim=[EXISTING_PVC] +``` + +| Note: you need to substitute the placeholder _[EXISTING_PVC]_ with the name of the PVC used on your previous release, and _[ROOT_PASSWORD]_ with the root password used in your previous release. + +### To 7.0.0 + +Helm performs a lookup for the object based on its group (apps), version (v1), and kind (Deployment). Also known as its GroupVersionKind, or GVK. Changing the GVK is considered a compatibility breaker from Kubernetes' point of view, so you cannot "upgrade" those objects to the new GVK in-place. Earlier versions of Helm 3 did not perform the lookup correctly which has since been fixed to match the spec. + +In https://github.com/helm/charts/pull/17308 the `apiVersion` of the statefulset resources was updated to `apps/v1` in tune with the api's deprecated, resulting in compatibility breakage. + +This major version bump signifies this change. + +### To 6.0.0 + +MariaDB version was updated from 10.1 to 10.3, there are no changes in the chart itself. According to the official documentation, upgrading from 10.1 should be painless. However, there are some things that have changed which could affect an upgrade: + +- [Incompatible changes upgrading from MariaDB 10.1 to MariaDB 10.2](https://mariadb.com/kb/en/library/upgrading-from-mariadb-101-to-mariadb-102//#incompatible-changes-between-101-and-102) +- [Incompatible changes upgrading from MariaDB 10.2 to MariaDB 10.3](https://mariadb.com/kb/en/library/upgrading-from-mariadb-102-to-mariadb-103/#incompatible-changes-between-102-and-103) + +### To 5.0.0 + +Backwards compatibility is not guaranteed unless you modify the labels used on the chart's deployments. +Use the workaround below to upgrade from versions previous to 5.0.0. The following example assumes that the release name is mariadb: + +```console +$ kubectl delete statefulset opencart-mariadb --cascade=false +``` + +## License + +Copyright © 2022 Bitnami + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. \ No newline at end of file diff --git a/charts/limesurvey-library/charts/mariadb/charts/common/.helmignore b/charts/limesurvey-library/charts/mariadb/charts/common/.helmignore new file mode 100644 index 0000000..50af031 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/charts/common/.helmignore @@ -0,0 +1,22 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/charts/limesurvey-library/charts/mariadb/charts/common/Chart.yaml b/charts/limesurvey-library/charts/mariadb/charts/common/Chart.yaml new file mode 100644 index 0000000..f9ba944 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/charts/common/Chart.yaml @@ -0,0 +1,23 @@ +annotations: + category: Infrastructure +apiVersion: v2 +appVersion: 2.2.2 +description: A Library Helm Chart for grouping common logic between bitnami charts. + This chart is not deployable by itself. +home: https://github.com/bitnami/charts/tree/main/bitnami/common +icon: https://bitnami.com/downloads/logos/bitnami-mark.png +keywords: +- common +- helper +- template +- function +- bitnami +maintainers: +- name: Bitnami + url: https://github.com/bitnami/charts +name: common +sources: +- https://github.com/bitnami/charts +- https://www.bitnami.com/ +type: library +version: 2.2.2 diff --git a/charts/limesurvey-library/charts/mariadb/charts/common/README.md b/charts/limesurvey-library/charts/mariadb/charts/common/README.md new file mode 100644 index 0000000..ec43a5f --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/charts/common/README.md @@ -0,0 +1,351 @@ +# Bitnami Common Library Chart + +A [Helm Library Chart](https://helm.sh/docs/topics/library_charts/#helm) for grouping common logic between bitnami charts. + +## TL;DR + +```yaml +dependencies: + - name: common + version: 1.x.x + repository: https://charts.bitnami.com/bitnami +``` + +```bash +$ helm dependency update +``` + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.names.fullname" . }} +data: + myvalue: "Hello World" +``` + +## Introduction + +This chart provides a common template helpers which can be used to develop new charts using [Helm](https://helm.sh) package manager. + +Bitnami charts can be used with [Kubeapps](https://kubeapps.dev/) for deployment and management of Helm Charts in clusters. + +## Prerequisites + +- Kubernetes 1.19+ +- Helm 3.2.0+ + +## Parameters + +The following table lists the helpers available in the library which are scoped in different sections. + +### Affinities + +| Helper identifier | Description | Expected Input | +|-------------------------------|------------------------------------------------------|------------------------------------------------| +| `common.affinities.nodes.soft` | Return a soft nodeAffinity definition | `dict "key" "FOO" "values" (list "BAR" "BAZ")` | +| `common.affinities.nodes.hard` | Return a hard nodeAffinity definition | `dict "key" "FOO" "values" (list "BAR" "BAZ")` | +| `common.affinities.pods.soft` | Return a soft podAffinity/podAntiAffinity definition | `dict "component" "FOO" "context" $` | +| `common.affinities.pods.hard` | Return a hard podAffinity/podAntiAffinity definition | `dict "component" "FOO" "context" $` | +| `common.affinities.topologyKey` | Return a topologyKey definition | `dict "topologyKey" "FOO"` | + +### Capabilities + +| Helper identifier | Description | Expected Input | +|------------------------------------------------|------------------------------------------------------------------------------------------------|-------------------| +| `common.capabilities.kubeVersion` | Return the target Kubernetes version (using client default if .Values.kubeVersion is not set). | `.` Chart context | +| `common.capabilities.cronjob.apiVersion` | Return the appropriate apiVersion for cronjob. | `.` Chart context | +| `common.capabilities.deployment.apiVersion` | Return the appropriate apiVersion for deployment. | `.` Chart context | +| `common.capabilities.statefulset.apiVersion` | Return the appropriate apiVersion for statefulset. | `.` Chart context | +| `common.capabilities.ingress.apiVersion` | Return the appropriate apiVersion for ingress. | `.` Chart context | +| `common.capabilities.rbac.apiVersion` | Return the appropriate apiVersion for RBAC resources. | `.` Chart context | +| `common.capabilities.crd.apiVersion` | Return the appropriate apiVersion for CRDs. | `.` Chart context | +| `common.capabilities.policy.apiVersion` | Return the appropriate apiVersion for podsecuritypolicy. | `.` Chart context | +| `common.capabilities.networkPolicy.apiVersion` | Return the appropriate apiVersion for networkpolicy. | `.` Chart context | +| `common.capabilities.apiService.apiVersion` | Return the appropriate apiVersion for APIService. | `.` Chart context | +| `common.capabilities.hpa.apiVersion` | Return the appropriate apiVersion for Horizontal Pod Autoscaler | `.` Chart context | +| `common.capabilities.supportsHelmVersion` | Returns true if the used Helm version is 3.3+ | `.` Chart context | + +### Errors + +| Helper identifier | Description | Expected Input | +|-----------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------| +| `common.errors.upgrade.passwords.empty` | It will ensure required passwords are given when we are upgrading a chart. If `validationErrors` is not empty it will throw an error and will stop the upgrade action. | `dict "validationErrors" (list $validationError00 $validationError01) "context" $` | + +### Images + +| Helper identifier | Description | Expected Input | +|-----------------------------|------------------------------------------------------|---------------------------------------------------------------------------------------------------------| +| `common.images.image` | Return the proper and full image name | `dict "imageRoot" .Values.path.to.the.image "global" $`, see [ImageRoot](#imageroot) for the structure. | +| `common.images.pullSecrets` | Return the proper Docker Image Registry Secret Names (deprecated: use common.images.renderPullSecrets instead) | `dict "images" (list .Values.path.to.the.image1, .Values.path.to.the.image2) "global" .Values.global` | +| `common.images.renderPullSecrets` | Return the proper Docker Image Registry Secret Names (evaluates values as templates) | `dict "images" (list .Values.path.to.the.image1, .Values.path.to.the.image2) "context" $` | + +### Ingress + +| Helper identifier | Description | Expected Input | +|-------------------------------------------|-------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `common.ingress.backend` | Generate a proper Ingress backend entry depending on the API version | `dict "serviceName" "foo" "servicePort" "bar"`, see the [Ingress deprecation notice](https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/) for the syntax differences | +| `common.ingress.supportsPathType` | Prints "true" if the pathType field is supported | `.` Chart context | +| `common.ingress.supportsIngressClassname` | Prints "true" if the ingressClassname field is supported | `.` Chart context | +| `common.ingress.certManagerRequest` | Prints "true" if required cert-manager annotations for TLS signed certificates are set in the Ingress annotations | `dict "annotations" .Values.path.to.the.ingress.annotations` | + +### Labels + +| Helper identifier | Description | Expected Input | +|-----------------------------|-----------------------------------------------------------------------------|-------------------| +| `common.labels.standard` | Return Kubernetes standard labels | `.` Chart context | +| `common.labels.matchLabels` | Labels to use on `deploy.spec.selector.matchLabels` and `svc.spec.selector` | `.` Chart context | + +### Names + +| Helper identifier | Description | Expected Input | +|-----------------------------------|-----------------------------------------------------------------------|-------------------| +| `common.names.name` | Expand the name of the chart or use `.Values.nameOverride` | `.` Chart context | +| `common.names.fullname` | Create a default fully qualified app name. | `.` Chart context | +| `common.names.namespace` | Allow the release namespace to be overridden | `.` Chart context | +| `common.names.fullname.namespace` | Create a fully qualified app name adding the installation's namespace | `.` Chart context | +| `common.names.chart` | Chart name plus version | `.` Chart context | + +### Secrets + +| Helper identifier | Description | Expected Input | +|-----------------------------------|--------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `common.secrets.name` | Generate the name of the secret. | `dict "existingSecret" .Values.path.to.the.existingSecret "defaultNameSuffix" "mySuffix" "context" $` see [ExistingSecret](#existingsecret) for the structure. | +| `common.secrets.key` | Generate secret key. | `dict "existingSecret" .Values.path.to.the.existingSecret "key" "keyName"` see [ExistingSecret](#existingsecret) for the structure. | +| `common.secrets.passwords.manage` | Generate secret password or retrieve one if already created. | `dict "secret" "secret-name" "key" "keyName" "providedValues" (list "path.to.password1" "path.to.password2") "length" 10 "strong" false "chartName" "chartName" "context" $`, length, strong and chartNAme fields are optional. | +| `common.secrets.exists` | Returns whether a previous generated secret already exists. | `dict "secret" "secret-name" "context" $` | + +### Storage + +| Helper identifier | Description | Expected Input | +|-------------------------------|---------------------------------------|---------------------------------------------------------------------------------------------------------------------| +| `common.storage.class` | Return the proper Storage Class | `dict "persistence" .Values.path.to.the.persistence "global" $`, see [Persistence](#persistence) for the structure. | + +### TplValues + +| Helper identifier | Description | Expected Input | +|---------------------------|----------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------| +| `common.tplvalues.render` | Renders a value that contains template | `dict "value" .Values.path.to.the.Value "context" $`, value is the value should rendered as template, context frequently is the chart context `$` or `.` | + +### Utils + +| Helper identifier | Description | Expected Input | +|--------------------------------|------------------------------------------------------------------------------------------|------------------------------------------------------------------------| +| `common.utils.fieldToEnvVar` | Build environment variable name given a field. | `dict "field" "my-password"` | +| `common.utils.secret.getvalue` | Print instructions to get a secret value. | `dict "secret" "secret-name" "field" "secret-value-field" "context" $` | +| `common.utils.getValueFromKey` | Gets a value from `.Values` object given its key path | `dict "key" "path.to.key" "context" $` | +| `common.utils.getKeyFromList` | Returns first `.Values` key with a defined value or first of the list if all non-defined | `dict "keys" (list "path.to.key1" "path.to.key2") "context" $` | + +### Validations + +| Helper identifier | Description | Expected Input | +|--------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `common.validations.values.single.empty` | Validate a value must not be empty. | `dict "valueKey" "path.to.value" "secret" "secret.name" "field" "my-password" "subchart" "subchart" "context" $` secret, field and subchart are optional. In case they are given, the helper will generate a how to get instruction. See [ValidateValue](#validatevalue) | +| `common.validations.values.multiple.empty` | Validate a multiple values must not be empty. It returns a shared error for all the values. | `dict "required" (list $validateValueConf00 $validateValueConf01) "context" $`. See [ValidateValue](#validatevalue) | +| `common.validations.values.mariadb.passwords` | This helper will ensure required password for MariaDB are not empty. It returns a shared error for all the values. | `dict "secret" "mariadb-secret" "subchart" "true" "context" $` subchart field is optional and could be true or false it depends on where you will use mariadb chart and the helper. | +| `common.validations.values.mysql.passwords` | This helper will ensure required password for MySQL are not empty. It returns a shared error for all the values. | `dict "secret" "mysql-secret" "subchart" "true" "context" $` subchart field is optional and could be true or false it depends on where you will use mysql chart and the helper. | +| `common.validations.values.postgresql.passwords` | This helper will ensure required password for PostgreSQL are not empty. It returns a shared error for all the values. | `dict "secret" "postgresql-secret" "subchart" "true" "context" $` subchart field is optional and could be true or false it depends on where you will use postgresql chart and the helper. | +| `common.validations.values.redis.passwords` | This helper will ensure required password for Redis® are not empty. It returns a shared error for all the values. | `dict "secret" "redis-secret" "subchart" "true" "context" $` subchart field is optional and could be true or false it depends on where you will use redis chart and the helper. | +| `common.validations.values.cassandra.passwords` | This helper will ensure required password for Cassandra are not empty. It returns a shared error for all the values. | `dict "secret" "cassandra-secret" "subchart" "true" "context" $` subchart field is optional and could be true or false it depends on where you will use cassandra chart and the helper. | +| `common.validations.values.mongodb.passwords` | This helper will ensure required password for MongoDB® are not empty. It returns a shared error for all the values. | `dict "secret" "mongodb-secret" "subchart" "true" "context" $` subchart field is optional and could be true or false it depends on where you will use mongodb chart and the helper. | + +### Warnings + +| Helper identifier | Description | Expected Input | +|------------------------------|----------------------------------|------------------------------------------------------------| +| `common.warnings.rollingTag` | Warning about using rolling tag. | `ImageRoot` see [ImageRoot](#imageroot) for the structure. | + +## Special input schemas + +### ImageRoot + +```yaml +registry: + type: string + description: Docker registry where the image is located + example: docker.io + +repository: + type: string + description: Repository and image name + example: bitnami/nginx + +tag: + type: string + description: image tag + example: 1.16.1-debian-10-r63 + +pullPolicy: + type: string + description: Specify a imagePullPolicy. Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' + +pullSecrets: + type: array + items: + type: string + description: Optionally specify an array of imagePullSecrets (evaluated as templates). + +debug: + type: boolean + description: Set to true if you would like to see extra information on logs + example: false + +## An instance would be: +# registry: docker.io +# repository: bitnami/nginx +# tag: 1.16.1-debian-10-r63 +# pullPolicy: IfNotPresent +# debug: false +``` + +### Persistence + +```yaml +enabled: + type: boolean + description: Whether enable persistence. + example: true + +storageClass: + type: string + description: Ghost data Persistent Volume Storage Class, If set to "-", storageClassName: "" which disables dynamic provisioning. + example: "-" + +accessMode: + type: string + description: Access mode for the Persistent Volume Storage. + example: ReadWriteOnce + +size: + type: string + description: Size the Persistent Volume Storage. + example: 8Gi + +path: + type: string + description: Path to be persisted. + example: /bitnami + +## An instance would be: +# enabled: true +# storageClass: "-" +# accessMode: ReadWriteOnce +# size: 8Gi +# path: /bitnami +``` + +### ExistingSecret + +```yaml +name: + type: string + description: Name of the existing secret. + example: mySecret +keyMapping: + description: Mapping between the expected key name and the name of the key in the existing secret. + type: object + +## An instance would be: +# name: mySecret +# keyMapping: +# password: myPasswordKey +``` + +#### Example of use + +When we store sensitive data for a deployment in a secret, some times we want to give to users the possibility of using theirs existing secrets. + +```yaml +# templates/secret.yaml +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.names.fullname" . }} + labels: + app: {{ include "common.names.fullname" . }} +type: Opaque +data: + password: {{ .Values.password | b64enc | quote }} + +# templates/dpl.yaml +--- +... + env: + - name: PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "common.secrets.name" (dict "existingSecret" .Values.existingSecret "context" $) }} + key: {{ include "common.secrets.key" (dict "existingSecret" .Values.existingSecret "key" "password") }} +... + +# values.yaml +--- +name: mySecret +keyMapping: + password: myPasswordKey +``` + +### ValidateValue + +#### NOTES.txt + +```console +{{- $validateValueConf00 := (dict "valueKey" "path.to.value00" "secret" "secretName" "field" "password-00") -}} +{{- $validateValueConf01 := (dict "valueKey" "path.to.value01" "secret" "secretName" "field" "password-01") -}} + +{{ include "common.validations.values.multiple.empty" (dict "required" (list $validateValueConf00 $validateValueConf01) "context" $) }} +``` + +If we force those values to be empty we will see some alerts + +```console +$ helm install test mychart --set path.to.value00="",path.to.value01="" + 'path.to.value00' must not be empty, please add '--set path.to.value00=$PASSWORD_00' to the command. To get the current value: + + export PASSWORD_00=$(kubectl get secret --namespace default secretName -o jsonpath="{.data.password-00}" | base64 -d) + + 'path.to.value01' must not be empty, please add '--set path.to.value01=$PASSWORD_01' to the command. To get the current value: + + export PASSWORD_01=$(kubectl get secret --namespace default secretName -o jsonpath="{.data.password-01}" | base64 -d) +``` + +## Upgrading + +### To 1.0.0 + +[On November 13, 2020, Helm v2 support was formally finished](https://github.com/helm/charts#status-of-the-project), this major version is the result of the required changes applied to the Helm Chart to be able to incorporate the different features added in Helm v3 and to be consistent with the Helm project itself regarding the Helm v2 EOL. + +**What changes were introduced in this major version?** + +- Previous versions of this Helm Chart use `apiVersion: v1` (installable by both Helm 2 and 3), this Helm Chart was updated to `apiVersion: v2` (installable by Helm 3 only). [Here](https://helm.sh/docs/topics/charts/#the-apiversion-field) you can find more information about the `apiVersion` field. +- Use `type: library`. [Here](https://v3.helm.sh/docs/faq/#library-chart-support) you can find more information. +- The different fields present in the *Chart.yaml* file has been ordered alphabetically in a homogeneous way for all the Bitnami Helm Charts + +**Considerations when upgrading to this version** + +- If you want to upgrade to this version from a previous one installed with Helm v3, you shouldn't face any issues +- If you want to upgrade to this version using Helm v2, this scenario is not supported as this version doesn't support Helm v2 anymore +- If you installed the previous version with Helm v2 and wants to upgrade to this version with Helm v3, please refer to the [official Helm documentation](https://helm.sh/docs/topics/v2_v3_migration/#migration-use-cases) about migrating from Helm v2 to v3 + +**Useful links** + +- https://docs.bitnami.com/tutorials/resolve-helm2-helm3-post-migration-issues/ +- https://helm.sh/docs/topics/v2_v3_migration/ +- https://helm.sh/blog/migrate-from-helm-v2-to-helm-v3/ + +## License + +Copyright © 2022 Bitnami + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/charts/limesurvey-library/charts/mariadb/charts/common/templates/_affinities.tpl b/charts/limesurvey-library/charts/mariadb/charts/common/templates/_affinities.tpl new file mode 100644 index 0000000..81902a6 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/charts/common/templates/_affinities.tpl @@ -0,0 +1,106 @@ +{{/* vim: set filetype=mustache: */}} + +{{/* +Return a soft nodeAffinity definition +{{ include "common.affinities.nodes.soft" (dict "key" "FOO" "values" (list "BAR" "BAZ")) -}} +*/}} +{{- define "common.affinities.nodes.soft" -}} +preferredDuringSchedulingIgnoredDuringExecution: + - preference: + matchExpressions: + - key: {{ .key }} + operator: In + values: + {{- range .values }} + - {{ . | quote }} + {{- end }} + weight: 1 +{{- end -}} + +{{/* +Return a hard nodeAffinity definition +{{ include "common.affinities.nodes.hard" (dict "key" "FOO" "values" (list "BAR" "BAZ")) -}} +*/}} +{{- define "common.affinities.nodes.hard" -}} +requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: {{ .key }} + operator: In + values: + {{- range .values }} + - {{ . | quote }} + {{- end }} +{{- end -}} + +{{/* +Return a nodeAffinity definition +{{ include "common.affinities.nodes" (dict "type" "soft" "key" "FOO" "values" (list "BAR" "BAZ")) -}} +*/}} +{{- define "common.affinities.nodes" -}} + {{- if eq .type "soft" }} + {{- include "common.affinities.nodes.soft" . -}} + {{- else if eq .type "hard" }} + {{- include "common.affinities.nodes.hard" . -}} + {{- end -}} +{{- end -}} + +{{/* +Return a topologyKey definition +{{ include "common.affinities.topologyKey" (dict "topologyKey" "BAR") -}} +*/}} +{{- define "common.affinities.topologyKey" -}} +{{ .topologyKey | default "kubernetes.io/hostname" -}} +{{- end -}} + +{{/* +Return a soft podAffinity/podAntiAffinity definition +{{ include "common.affinities.pods.soft" (dict "component" "FOO" "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "context" $) -}} +*/}} +{{- define "common.affinities.pods.soft" -}} +{{- $component := default "" .component -}} +{{- $extraMatchLabels := default (dict) .extraMatchLabels -}} +preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: {{- (include "common.labels.matchLabels" .context) | nindent 10 }} + {{- if not (empty $component) }} + {{ printf "app.kubernetes.io/component: %s" $component }} + {{- end }} + {{- range $key, $value := $extraMatchLabels }} + {{ $key }}: {{ $value | quote }} + {{- end }} + topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }} + weight: 1 +{{- end -}} + +{{/* +Return a hard podAffinity/podAntiAffinity definition +{{ include "common.affinities.pods.hard" (dict "component" "FOO" "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "context" $) -}} +*/}} +{{- define "common.affinities.pods.hard" -}} +{{- $component := default "" .component -}} +{{- $extraMatchLabels := default (dict) .extraMatchLabels -}} +requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchLabels: {{- (include "common.labels.matchLabels" .context) | nindent 8 }} + {{- if not (empty $component) }} + {{ printf "app.kubernetes.io/component: %s" $component }} + {{- end }} + {{- range $key, $value := $extraMatchLabels }} + {{ $key }}: {{ $value | quote }} + {{- end }} + topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }} +{{- end -}} + +{{/* +Return a podAffinity/podAntiAffinity definition +{{ include "common.affinities.pods" (dict "type" "soft" "key" "FOO" "values" (list "BAR" "BAZ")) -}} +*/}} +{{- define "common.affinities.pods" -}} + {{- if eq .type "soft" }} + {{- include "common.affinities.pods.soft" . -}} + {{- else if eq .type "hard" }} + {{- include "common.affinities.pods.hard" . -}} + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-library/charts/mariadb/charts/common/templates/_capabilities.tpl b/charts/limesurvey-library/charts/mariadb/charts/common/templates/_capabilities.tpl new file mode 100644 index 0000000..9d9b760 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/charts/common/templates/_capabilities.tpl @@ -0,0 +1,154 @@ +{{/* vim: set filetype=mustache: */}} + +{{/* +Return the target Kubernetes version +*/}} +{{- define "common.capabilities.kubeVersion" -}} +{{- if .Values.global }} + {{- if .Values.global.kubeVersion }} + {{- .Values.global.kubeVersion -}} + {{- else }} + {{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}} + {{- end -}} +{{- else }} +{{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for poddisruptionbudget. +*/}} +{{- define "common.capabilities.policy.apiVersion" -}} +{{- if semverCompare "<1.21-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "policy/v1beta1" -}} +{{- else -}} +{{- print "policy/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for networkpolicy. +*/}} +{{- define "common.capabilities.networkPolicy.apiVersion" -}} +{{- if semverCompare "<1.7-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "extensions/v1beta1" -}} +{{- else -}} +{{- print "networking.k8s.io/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for cronjob. +*/}} +{{- define "common.capabilities.cronjob.apiVersion" -}} +{{- if semverCompare "<1.21-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "batch/v1beta1" -}} +{{- else -}} +{{- print "batch/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for deployment. +*/}} +{{- define "common.capabilities.deployment.apiVersion" -}} +{{- if semverCompare "<1.14-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "extensions/v1beta1" -}} +{{- else -}} +{{- print "apps/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for statefulset. +*/}} +{{- define "common.capabilities.statefulset.apiVersion" -}} +{{- if semverCompare "<1.14-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "apps/v1beta1" -}} +{{- else -}} +{{- print "apps/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for ingress. +*/}} +{{- define "common.capabilities.ingress.apiVersion" -}} +{{- if .Values.ingress -}} +{{- if .Values.ingress.apiVersion -}} +{{- .Values.ingress.apiVersion -}} +{{- else if semverCompare "<1.14-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "extensions/v1beta1" -}} +{{- else if semverCompare "<1.19-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "networking.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "networking.k8s.io/v1" -}} +{{- end }} +{{- else if semverCompare "<1.14-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "extensions/v1beta1" -}} +{{- else if semverCompare "<1.19-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "networking.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "networking.k8s.io/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for RBAC resources. +*/}} +{{- define "common.capabilities.rbac.apiVersion" -}} +{{- if semverCompare "<1.17-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "rbac.authorization.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "rbac.authorization.k8s.io/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for CRDs. +*/}} +{{- define "common.capabilities.crd.apiVersion" -}} +{{- if semverCompare "<1.19-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "apiextensions.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "apiextensions.k8s.io/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for APIService. +*/}} +{{- define "common.capabilities.apiService.apiVersion" -}} +{{- if semverCompare "<1.10-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "apiregistration.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "apiregistration.k8s.io/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for Horizontal Pod Autoscaler. +*/}} +{{- define "common.capabilities.hpa.apiVersion" -}} +{{- if semverCompare "<1.23-0" (include "common.capabilities.kubeVersion" .context) -}} +{{- if .beta2 -}} +{{- print "autoscaling/v2beta2" -}} +{{- else -}} +{{- print "autoscaling/v2beta1" -}} +{{- end -}} +{{- else -}} +{{- print "autoscaling/v2" -}} +{{- end -}} +{{- end -}} + +{{/* +Returns true if the used Helm version is 3.3+. +A way to check the used Helm version was not introduced until version 3.3.0 with .Capabilities.HelmVersion, which contains an additional "{}}" structure. +This check is introduced as a regexMatch instead of {{ if .Capabilities.HelmVersion }} because checking for the key HelmVersion in <3.3 results in a "interface not found" error. +**To be removed when the catalog's minimun Helm version is 3.3** +*/}} +{{- define "common.capabilities.supportsHelmVersion" -}} +{{- if regexMatch "{(v[0-9])*[^}]*}}$" (.Capabilities | toString ) }} + {{- true -}} +{{- end -}} +{{- end -}} diff --git a/charts/limesurvey-library/charts/mariadb/charts/common/templates/_errors.tpl b/charts/limesurvey-library/charts/mariadb/charts/common/templates/_errors.tpl new file mode 100644 index 0000000..a79cc2e --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/charts/common/templates/_errors.tpl @@ -0,0 +1,23 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Through error when upgrading using empty passwords values that must not be empty. + +Usage: +{{- $validationError00 := include "common.validations.values.single.empty" (dict "valueKey" "path.to.password00" "secret" "secretName" "field" "password-00") -}} +{{- $validationError01 := include "common.validations.values.single.empty" (dict "valueKey" "path.to.password01" "secret" "secretName" "field" "password-01") -}} +{{ include "common.errors.upgrade.passwords.empty" (dict "validationErrors" (list $validationError00 $validationError01) "context" $) }} + +Required password params: + - validationErrors - String - Required. List of validation strings to be return, if it is empty it won't throw error. + - context - Context - Required. Parent context. +*/}} +{{- define "common.errors.upgrade.passwords.empty" -}} + {{- $validationErrors := join "" .validationErrors -}} + {{- if and $validationErrors .context.Release.IsUpgrade -}} + {{- $errorString := "\nPASSWORDS ERROR: You must provide your current passwords when upgrading the release." -}} + {{- $errorString = print $errorString "\n Note that even after reinstallation, old credentials may be needed as they may be kept in persistent volume claims." -}} + {{- $errorString = print $errorString "\n Further information can be obtained at https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues/#credential-errors-while-upgrading-chart-releases" -}} + {{- $errorString = print $errorString "\n%s" -}} + {{- printf $errorString $validationErrors | fail -}} + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-library/charts/mariadb/charts/common/templates/_images.tpl b/charts/limesurvey-library/charts/mariadb/charts/common/templates/_images.tpl new file mode 100644 index 0000000..46c659e --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/charts/common/templates/_images.tpl @@ -0,0 +1,76 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Return the proper image name +{{ include "common.images.image" ( dict "imageRoot" .Values.path.to.the.image "global" $) }} +*/}} +{{- define "common.images.image" -}} +{{- $registryName := .imageRoot.registry -}} +{{- $repositoryName := .imageRoot.repository -}} +{{- $separator := ":" -}} +{{- $termination := .imageRoot.tag | toString -}} +{{- if .global }} + {{- if .global.imageRegistry }} + {{- $registryName = .global.imageRegistry -}} + {{- end -}} +{{- end -}} +{{- if .imageRoot.digest }} + {{- $separator = "@" -}} + {{- $termination = .imageRoot.digest | toString -}} +{{- end -}} +{{- printf "%s/%s%s%s" $registryName $repositoryName $separator $termination -}} +{{- end -}} + +{{/* +Return the proper Docker Image Registry Secret Names (deprecated: use common.images.renderPullSecrets instead) +{{ include "common.images.pullSecrets" ( dict "images" (list .Values.path.to.the.image1, .Values.path.to.the.image2) "global" .Values.global) }} +*/}} +{{- define "common.images.pullSecrets" -}} + {{- $pullSecrets := list }} + + {{- if .global }} + {{- range .global.imagePullSecrets -}} + {{- $pullSecrets = append $pullSecrets . -}} + {{- end -}} + {{- end -}} + + {{- range .images -}} + {{- range .pullSecrets -}} + {{- $pullSecrets = append $pullSecrets . -}} + {{- end -}} + {{- end -}} + + {{- if (not (empty $pullSecrets)) }} +imagePullSecrets: + {{- range $pullSecrets }} + - name: {{ . }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Return the proper Docker Image Registry Secret Names evaluating values as templates +{{ include "common.images.renderPullSecrets" ( dict "images" (list .Values.path.to.the.image1, .Values.path.to.the.image2) "context" $) }} +*/}} +{{- define "common.images.renderPullSecrets" -}} + {{- $pullSecrets := list }} + {{- $context := .context }} + + {{- if $context.Values.global }} + {{- range $context.Values.global.imagePullSecrets -}} + {{- $pullSecrets = append $pullSecrets (include "common.tplvalues.render" (dict "value" . "context" $context)) -}} + {{- end -}} + {{- end -}} + + {{- range .images -}} + {{- range .pullSecrets -}} + {{- $pullSecrets = append $pullSecrets (include "common.tplvalues.render" (dict "value" . "context" $context)) -}} + {{- end -}} + {{- end -}} + + {{- if (not (empty $pullSecrets)) }} +imagePullSecrets: + {{- range $pullSecrets }} + - name: {{ . }} + {{- end }} + {{- end }} +{{- end -}} diff --git a/charts/limesurvey-library/charts/mariadb/charts/common/templates/_ingress.tpl b/charts/limesurvey-library/charts/mariadb/charts/common/templates/_ingress.tpl new file mode 100644 index 0000000..831da9c --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/charts/common/templates/_ingress.tpl @@ -0,0 +1,68 @@ +{{/* vim: set filetype=mustache: */}} + +{{/* +Generate backend entry that is compatible with all Kubernetes API versions. + +Usage: +{{ include "common.ingress.backend" (dict "serviceName" "backendName" "servicePort" "backendPort" "context" $) }} + +Params: + - serviceName - String. Name of an existing service backend + - servicePort - String/Int. Port name (or number) of the service. It will be translated to different yaml depending if it is a string or an integer. + - context - Dict - Required. The context for the template evaluation. +*/}} +{{- define "common.ingress.backend" -}} +{{- $apiVersion := (include "common.capabilities.ingress.apiVersion" .context) -}} +{{- if or (eq $apiVersion "extensions/v1beta1") (eq $apiVersion "networking.k8s.io/v1beta1") -}} +serviceName: {{ .serviceName }} +servicePort: {{ .servicePort }} +{{- else -}} +service: + name: {{ .serviceName }} + port: + {{- if typeIs "string" .servicePort }} + name: {{ .servicePort }} + {{- else if or (typeIs "int" .servicePort) (typeIs "float64" .servicePort) }} + number: {{ .servicePort | int }} + {{- end }} +{{- end -}} +{{- end -}} + +{{/* +Print "true" if the API pathType field is supported +Usage: +{{ include "common.ingress.supportsPathType" . }} +*/}} +{{- define "common.ingress.supportsPathType" -}} +{{- if (semverCompare "<1.18-0" (include "common.capabilities.kubeVersion" .)) -}} +{{- print "false" -}} +{{- else -}} +{{- print "true" -}} +{{- end -}} +{{- end -}} + +{{/* +Returns true if the ingressClassname field is supported +Usage: +{{ include "common.ingress.supportsIngressClassname" . }} +*/}} +{{- define "common.ingress.supportsIngressClassname" -}} +{{- if semverCompare "<1.18-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "false" -}} +{{- else -}} +{{- print "true" -}} +{{- end -}} +{{- end -}} + +{{/* +Return true if cert-manager required annotations for TLS signed +certificates are set in the Ingress annotations +Ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations +Usage: +{{ include "common.ingress.certManagerRequest" ( dict "annotations" .Values.path.to.the.ingress.annotations ) }} +*/}} +{{- define "common.ingress.certManagerRequest" -}} +{{ if or (hasKey .annotations "cert-manager.io/cluster-issuer") (hasKey .annotations "cert-manager.io/issuer") (hasKey .annotations "kubernetes.io/tls-acme") }} + {{- true -}} +{{- end -}} +{{- end -}} diff --git a/charts/limesurvey-library/charts/mariadb/charts/common/templates/_labels.tpl b/charts/limesurvey-library/charts/mariadb/charts/common/templates/_labels.tpl new file mode 100644 index 0000000..252066c --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/charts/common/templates/_labels.tpl @@ -0,0 +1,18 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Kubernetes standard labels +*/}} +{{- define "common.labels.standard" -}} +app.kubernetes.io/name: {{ include "common.names.name" . }} +helm.sh/chart: {{ include "common.names.chart" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end -}} + +{{/* +Labels to use on deploy.spec.selector.matchLabels and svc.spec.selector +*/}} +{{- define "common.labels.matchLabels" -}} +app.kubernetes.io/name: {{ include "common.names.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end -}} diff --git a/charts/limesurvey-library/charts/mariadb/charts/common/templates/_names.tpl b/charts/limesurvey-library/charts/mariadb/charts/common/templates/_names.tpl new file mode 100644 index 0000000..617a234 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/charts/common/templates/_names.tpl @@ -0,0 +1,66 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "common.names.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "common.names.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "common.names.fullname" -}} +{{- if .Values.fullnameOverride -}} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Create a default fully qualified dependency name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +Usage: +{{ include "common.names.dependency.fullname" (dict "chartName" "dependency-chart-name" "chartValues" .Values.dependency-chart "context" $) }} +*/}} +{{- define "common.names.dependency.fullname" -}} +{{- if .chartValues.fullnameOverride -}} +{{- .chartValues.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .chartName .chartValues.nameOverride -}} +{{- if contains $name .context.Release.Name -}} +{{- .context.Release.Name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .context.Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Allow the release namespace to be overridden for multi-namespace deployments in combined charts. +*/}} +{{- define "common.names.namespace" -}} +{{- default .Release.Namespace .Values.namespaceOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a fully qualified app name adding the installation's namespace. +*/}} +{{- define "common.names.fullname.namespace" -}} +{{- printf "%s-%s" (include "common.names.fullname" .) (include "common.names.namespace" .) | trunc 63 | trimSuffix "-" -}} +{{- end -}} diff --git a/charts/limesurvey-library/charts/mariadb/charts/common/templates/_secrets.tpl b/charts/limesurvey-library/charts/mariadb/charts/common/templates/_secrets.tpl new file mode 100644 index 0000000..a1708b2 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/charts/common/templates/_secrets.tpl @@ -0,0 +1,165 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Generate secret name. + +Usage: +{{ include "common.secrets.name" (dict "existingSecret" .Values.path.to.the.existingSecret "defaultNameSuffix" "mySuffix" "context" $) }} + +Params: + - existingSecret - ExistingSecret/String - Optional. The path to the existing secrets in the values.yaml given by the user + to be used instead of the default one. Allows for it to be of type String (just the secret name) for backwards compatibility. + +info: https://github.com/bitnami/charts/tree/main/bitnami/common#existingsecret + - defaultNameSuffix - String - Optional. It is used only if we have several secrets in the same deployment. + - context - Dict - Required. The context for the template evaluation. +*/}} +{{- define "common.secrets.name" -}} +{{- $name := (include "common.names.fullname" .context) -}} + +{{- if .defaultNameSuffix -}} +{{- $name = printf "%s-%s" $name .defaultNameSuffix | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{- with .existingSecret -}} +{{- if not (typeIs "string" .) -}} +{{- with .name -}} +{{- $name = . -}} +{{- end -}} +{{- else -}} +{{- $name = . -}} +{{- end -}} +{{- end -}} + +{{- printf "%s" $name -}} +{{- end -}} + +{{/* +Generate secret key. + +Usage: +{{ include "common.secrets.key" (dict "existingSecret" .Values.path.to.the.existingSecret "key" "keyName") }} + +Params: + - existingSecret - ExistingSecret/String - Optional. The path to the existing secrets in the values.yaml given by the user + to be used instead of the default one. Allows for it to be of type String (just the secret name) for backwards compatibility. + +info: https://github.com/bitnami/charts/tree/main/bitnami/common#existingsecret + - key - String - Required. Name of the key in the secret. +*/}} +{{- define "common.secrets.key" -}} +{{- $key := .key -}} + +{{- if .existingSecret -}} + {{- if not (typeIs "string" .existingSecret) -}} + {{- if .existingSecret.keyMapping -}} + {{- $key = index .existingSecret.keyMapping $.key -}} + {{- end -}} + {{- end }} +{{- end -}} + +{{- printf "%s" $key -}} +{{- end -}} + +{{/* +Generate secret password or retrieve one if already created. + +Usage: +{{ include "common.secrets.passwords.manage" (dict "secret" "secret-name" "key" "keyName" "providedValues" (list "path.to.password1" "path.to.password2") "length" 10 "strong" false "chartName" "chartName" "context" $) }} + +Params: + - secret - String - Required - Name of the 'Secret' resource where the password is stored. + - key - String - Required - Name of the key in the secret. + - providedValues - List - Required - The path to the validating value in the values.yaml, e.g: "mysql.password". Will pick first parameter with a defined value. + - length - int - Optional - Length of the generated random password. + - strong - Boolean - Optional - Whether to add symbols to the generated random password. + - chartName - String - Optional - Name of the chart used when said chart is deployed as a subchart. + - context - Context - Required - Parent context. + +The order in which this function returns a secret password: + 1. Already existing 'Secret' resource + (If a 'Secret' resource is found under the name provided to the 'secret' parameter to this function and that 'Secret' resource contains a key with the name passed as the 'key' parameter to this function then the value of this existing secret password will be returned) + 2. Password provided via the values.yaml + (If one of the keys passed to the 'providedValues' parameter to this function is a valid path to a key in the values.yaml and has a value, the value of the first key with a value will be returned) + 3. Randomly generated secret password + (A new random secret password with the length specified in the 'length' parameter will be generated and returned) + +*/}} +{{- define "common.secrets.passwords.manage" -}} + +{{- $password := "" }} +{{- $subchart := "" }} +{{- $chartName := default "" .chartName }} +{{- $passwordLength := default 10 .length }} +{{- $providedPasswordKey := include "common.utils.getKeyFromList" (dict "keys" .providedValues "context" $.context) }} +{{- $providedPasswordValue := include "common.utils.getValueFromKey" (dict "key" $providedPasswordKey "context" $.context) }} +{{- $secretData := (lookup "v1" "Secret" (include "common.names.namespace" .context) .secret).data }} +{{- if $secretData }} + {{- if hasKey $secretData .key }} + {{- $password = index $secretData .key | quote }} + {{- else }} + {{- printf "\nPASSWORDS ERROR: The secret \"%s\" does not contain the key \"%s\"\n" .secret .key | fail -}} + {{- end -}} +{{- else if $providedPasswordValue }} + {{- $password = $providedPasswordValue | toString | b64enc | quote }} +{{- else }} + + {{- if .context.Values.enabled }} + {{- $subchart = $chartName }} + {{- end -}} + + {{- $requiredPassword := dict "valueKey" $providedPasswordKey "secret" .secret "field" .key "subchart" $subchart "context" $.context -}} + {{- $requiredPasswordError := include "common.validations.values.single.empty" $requiredPassword -}} + {{- $passwordValidationErrors := list $requiredPasswordError -}} + {{- include "common.errors.upgrade.passwords.empty" (dict "validationErrors" $passwordValidationErrors "context" $.context) -}} + + {{- if .strong }} + {{- $subStr := list (lower (randAlpha 1)) (randNumeric 1) (upper (randAlpha 1)) | join "_" }} + {{- $password = randAscii $passwordLength }} + {{- $password = regexReplaceAllLiteral "\\W" $password "@" | substr 5 $passwordLength }} + {{- $password = printf "%s%s" $subStr $password | toString | shuffle | b64enc | quote }} + {{- else }} + {{- $password = randAlphaNum $passwordLength | b64enc | quote }} + {{- end }} +{{- end -}} +{{- printf "%s" $password -}} +{{- end -}} + +{{/* +Reuses the value from an existing secret, otherwise sets its value to a default value. + +Usage: +{{ include "common.secrets.lookup" (dict "secret" "secret-name" "key" "keyName" "defaultValue" .Values.myValue "context" $) }} + +Params: + - secret - String - Required - Name of the 'Secret' resource where the password is stored. + - key - String - Required - Name of the key in the secret. + - defaultValue - String - Required - The path to the validating value in the values.yaml, e.g: "mysql.password". Will pick first parameter with a defined value. + - context - Context - Required - Parent context. + +*/}} +{{- define "common.secrets.lookup" -}} +{{- $value := "" -}} +{{- $defaultValue := required "\n'common.secrets.lookup': Argument 'defaultValue' missing or empty" .defaultValue -}} +{{- $secretData := (lookup "v1" "Secret" (include "common.names.namespace" .context) .secret).data -}} +{{- if and $secretData (hasKey $secretData .key) -}} + {{- $value = index $secretData .key -}} +{{- else -}} + {{- $value = $defaultValue | toString | b64enc -}} +{{- end -}} +{{- printf "%s" $value -}} +{{- end -}} + +{{/* +Returns whether a previous generated secret already exists + +Usage: +{{ include "common.secrets.exists" (dict "secret" "secret-name" "context" $) }} + +Params: + - secret - String - Required - Name of the 'Secret' resource where the password is stored. + - context - Context - Required - Parent context. +*/}} +{{- define "common.secrets.exists" -}} +{{- $secret := (lookup "v1" "Secret" (include "common.names.namespace" .context) .secret) }} +{{- if $secret }} + {{- true -}} +{{- end -}} +{{- end -}} diff --git a/charts/limesurvey-library/charts/mariadb/charts/common/templates/_storage.tpl b/charts/limesurvey-library/charts/mariadb/charts/common/templates/_storage.tpl new file mode 100644 index 0000000..60e2a84 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/charts/common/templates/_storage.tpl @@ -0,0 +1,23 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Return the proper Storage Class +{{ include "common.storage.class" ( dict "persistence" .Values.path.to.the.persistence "global" $) }} +*/}} +{{- define "common.storage.class" -}} + +{{- $storageClass := .persistence.storageClass -}} +{{- if .global -}} + {{- if .global.storageClass -}} + {{- $storageClass = .global.storageClass -}} + {{- end -}} +{{- end -}} + +{{- if $storageClass -}} + {{- if (eq "-" $storageClass) -}} + {{- printf "storageClassName: \"\"" -}} + {{- else }} + {{- printf "storageClassName: %s" $storageClass -}} + {{- end -}} +{{- end -}} + +{{- end -}} diff --git a/charts/limesurvey-library/charts/mariadb/charts/common/templates/_tplvalues.tpl b/charts/limesurvey-library/charts/mariadb/charts/common/templates/_tplvalues.tpl new file mode 100644 index 0000000..2db1668 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/charts/common/templates/_tplvalues.tpl @@ -0,0 +1,13 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Renders a value that contains template. +Usage: +{{ include "common.tplvalues.render" ( dict "value" .Values.path.to.the.Value "context" $) }} +*/}} +{{- define "common.tplvalues.render" -}} + {{- if typeIs "string" .value }} + {{- tpl .value .context }} + {{- else }} + {{- tpl (.value | toYaml) .context }} + {{- end }} +{{- end -}} diff --git a/charts/limesurvey-library/charts/mariadb/charts/common/templates/_utils.tpl b/charts/limesurvey-library/charts/mariadb/charts/common/templates/_utils.tpl new file mode 100644 index 0000000..b1ead50 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/charts/common/templates/_utils.tpl @@ -0,0 +1,62 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Print instructions to get a secret value. +Usage: +{{ include "common.utils.secret.getvalue" (dict "secret" "secret-name" "field" "secret-value-field" "context" $) }} +*/}} +{{- define "common.utils.secret.getvalue" -}} +{{- $varname := include "common.utils.fieldToEnvVar" . -}} +export {{ $varname }}=$(kubectl get secret --namespace {{ include "common.names.namespace" .context | quote }} {{ .secret }} -o jsonpath="{.data.{{ .field }}}" | base64 -d) +{{- end -}} + +{{/* +Build env var name given a field +Usage: +{{ include "common.utils.fieldToEnvVar" dict "field" "my-password" }} +*/}} +{{- define "common.utils.fieldToEnvVar" -}} + {{- $fieldNameSplit := splitList "-" .field -}} + {{- $upperCaseFieldNameSplit := list -}} + + {{- range $fieldNameSplit -}} + {{- $upperCaseFieldNameSplit = append $upperCaseFieldNameSplit ( upper . ) -}} + {{- end -}} + + {{ join "_" $upperCaseFieldNameSplit }} +{{- end -}} + +{{/* +Gets a value from .Values given +Usage: +{{ include "common.utils.getValueFromKey" (dict "key" "path.to.key" "context" $) }} +*/}} +{{- define "common.utils.getValueFromKey" -}} +{{- $splitKey := splitList "." .key -}} +{{- $value := "" -}} +{{- $latestObj := $.context.Values -}} +{{- range $splitKey -}} + {{- if not $latestObj -}} + {{- printf "please review the entire path of '%s' exists in values" $.key | fail -}} + {{- end -}} + {{- $value = ( index $latestObj . ) -}} + {{- $latestObj = $value -}} +{{- end -}} +{{- printf "%v" (default "" $value) -}} +{{- end -}} + +{{/* +Returns first .Values key with a defined value or first of the list if all non-defined +Usage: +{{ include "common.utils.getKeyFromList" (dict "keys" (list "path.to.key1" "path.to.key2") "context" $) }} +*/}} +{{- define "common.utils.getKeyFromList" -}} +{{- $key := first .keys -}} +{{- $reverseKeys := reverse .keys }} +{{- range $reverseKeys }} + {{- $value := include "common.utils.getValueFromKey" (dict "key" . "context" $.context ) }} + {{- if $value -}} + {{- $key = . }} + {{- end -}} +{{- end -}} +{{- printf "%s" $key -}} +{{- end -}} diff --git a/charts/limesurvey-library/charts/mariadb/charts/common/templates/_warnings.tpl b/charts/limesurvey-library/charts/mariadb/charts/common/templates/_warnings.tpl new file mode 100644 index 0000000..ae10fa4 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/charts/common/templates/_warnings.tpl @@ -0,0 +1,14 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Warning about using rolling tag. +Usage: +{{ include "common.warnings.rollingTag" .Values.path.to.the.imageRoot }} +*/}} +{{- define "common.warnings.rollingTag" -}} + +{{- if and (contains "bitnami/" .repository) (not (.tag | toString | regexFind "-r\\d+$|sha256:")) }} +WARNING: Rolling tag detected ({{ .repository }}:{{ .tag }}), please note that it is strongly recommended to avoid using rolling tags in a production environment. ++info https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/ +{{- end }} + +{{- end -}} diff --git a/charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_cassandra.tpl b/charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_cassandra.tpl new file mode 100644 index 0000000..ded1ae3 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_cassandra.tpl @@ -0,0 +1,72 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Validate Cassandra required passwords are not empty. + +Usage: +{{ include "common.validations.values.cassandra.passwords" (dict "secret" "secretName" "subchart" false "context" $) }} +Params: + - secret - String - Required. Name of the secret where Cassandra values are stored, e.g: "cassandra-passwords-secret" + - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false +*/}} +{{- define "common.validations.values.cassandra.passwords" -}} + {{- $existingSecret := include "common.cassandra.values.existingSecret" . -}} + {{- $enabled := include "common.cassandra.values.enabled" . -}} + {{- $dbUserPrefix := include "common.cassandra.values.key.dbUser" . -}} + {{- $valueKeyPassword := printf "%s.password" $dbUserPrefix -}} + + {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}} + {{- $requiredPasswords := list -}} + + {{- $requiredPassword := dict "valueKey" $valueKeyPassword "secret" .secret "field" "cassandra-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}} + + {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}} + + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for existingSecret. + +Usage: +{{ include "common.cassandra.values.existingSecret" (dict "context" $) }} +Params: + - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false +*/}} +{{- define "common.cassandra.values.existingSecret" -}} + {{- if .subchart -}} + {{- .context.Values.cassandra.dbUser.existingSecret | quote -}} + {{- else -}} + {{- .context.Values.dbUser.existingSecret | quote -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for enabled cassandra. + +Usage: +{{ include "common.cassandra.values.enabled" (dict "context" $) }} +*/}} +{{- define "common.cassandra.values.enabled" -}} + {{- if .subchart -}} + {{- printf "%v" .context.Values.cassandra.enabled -}} + {{- else -}} + {{- printf "%v" (not .context.Values.enabled) -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for the key dbUser + +Usage: +{{ include "common.cassandra.values.key.dbUser" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false +*/}} +{{- define "common.cassandra.values.key.dbUser" -}} + {{- if .subchart -}} + cassandra.dbUser + {{- else -}} + dbUser + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_mariadb.tpl b/charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_mariadb.tpl new file mode 100644 index 0000000..b6906ff --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_mariadb.tpl @@ -0,0 +1,103 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Validate MariaDB required passwords are not empty. + +Usage: +{{ include "common.validations.values.mariadb.passwords" (dict "secret" "secretName" "subchart" false "context" $) }} +Params: + - secret - String - Required. Name of the secret where MariaDB values are stored, e.g: "mysql-passwords-secret" + - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false +*/}} +{{- define "common.validations.values.mariadb.passwords" -}} + {{- $existingSecret := include "common.mariadb.values.auth.existingSecret" . -}} + {{- $enabled := include "common.mariadb.values.enabled" . -}} + {{- $architecture := include "common.mariadb.values.architecture" . -}} + {{- $authPrefix := include "common.mariadb.values.key.auth" . -}} + {{- $valueKeyRootPassword := printf "%s.rootPassword" $authPrefix -}} + {{- $valueKeyUsername := printf "%s.username" $authPrefix -}} + {{- $valueKeyPassword := printf "%s.password" $authPrefix -}} + {{- $valueKeyReplicationPassword := printf "%s.replicationPassword" $authPrefix -}} + + {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}} + {{- $requiredPasswords := list -}} + + {{- $requiredRootPassword := dict "valueKey" $valueKeyRootPassword "secret" .secret "field" "mariadb-root-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}} + + {{- $valueUsername := include "common.utils.getValueFromKey" (dict "key" $valueKeyUsername "context" .context) }} + {{- if not (empty $valueUsername) -}} + {{- $requiredPassword := dict "valueKey" $valueKeyPassword "secret" .secret "field" "mariadb-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}} + {{- end -}} + + {{- if (eq $architecture "replication") -}} + {{- $requiredReplicationPassword := dict "valueKey" $valueKeyReplicationPassword "secret" .secret "field" "mariadb-replication-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredReplicationPassword -}} + {{- end -}} + + {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}} + + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for existingSecret. + +Usage: +{{ include "common.mariadb.values.auth.existingSecret" (dict "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false +*/}} +{{- define "common.mariadb.values.auth.existingSecret" -}} + {{- if .subchart -}} + {{- .context.Values.mariadb.auth.existingSecret | quote -}} + {{- else -}} + {{- .context.Values.auth.existingSecret | quote -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for enabled mariadb. + +Usage: +{{ include "common.mariadb.values.enabled" (dict "context" $) }} +*/}} +{{- define "common.mariadb.values.enabled" -}} + {{- if .subchart -}} + {{- printf "%v" .context.Values.mariadb.enabled -}} + {{- else -}} + {{- printf "%v" (not .context.Values.enabled) -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for architecture + +Usage: +{{ include "common.mariadb.values.architecture" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false +*/}} +{{- define "common.mariadb.values.architecture" -}} + {{- if .subchart -}} + {{- .context.Values.mariadb.architecture -}} + {{- else -}} + {{- .context.Values.architecture -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for the key auth + +Usage: +{{ include "common.mariadb.values.key.auth" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false +*/}} +{{- define "common.mariadb.values.key.auth" -}} + {{- if .subchart -}} + mariadb.auth + {{- else -}} + auth + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_mongodb.tpl b/charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_mongodb.tpl new file mode 100644 index 0000000..f820ec1 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_mongodb.tpl @@ -0,0 +1,108 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Validate MongoDB® required passwords are not empty. + +Usage: +{{ include "common.validations.values.mongodb.passwords" (dict "secret" "secretName" "subchart" false "context" $) }} +Params: + - secret - String - Required. Name of the secret where MongoDB® values are stored, e.g: "mongodb-passwords-secret" + - subchart - Boolean - Optional. Whether MongoDB® is used as subchart or not. Default: false +*/}} +{{- define "common.validations.values.mongodb.passwords" -}} + {{- $existingSecret := include "common.mongodb.values.auth.existingSecret" . -}} + {{- $enabled := include "common.mongodb.values.enabled" . -}} + {{- $authPrefix := include "common.mongodb.values.key.auth" . -}} + {{- $architecture := include "common.mongodb.values.architecture" . -}} + {{- $valueKeyRootPassword := printf "%s.rootPassword" $authPrefix -}} + {{- $valueKeyUsername := printf "%s.username" $authPrefix -}} + {{- $valueKeyDatabase := printf "%s.database" $authPrefix -}} + {{- $valueKeyPassword := printf "%s.password" $authPrefix -}} + {{- $valueKeyReplicaSetKey := printf "%s.replicaSetKey" $authPrefix -}} + {{- $valueKeyAuthEnabled := printf "%s.enabled" $authPrefix -}} + + {{- $authEnabled := include "common.utils.getValueFromKey" (dict "key" $valueKeyAuthEnabled "context" .context) -}} + + {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") (eq $authEnabled "true") -}} + {{- $requiredPasswords := list -}} + + {{- $requiredRootPassword := dict "valueKey" $valueKeyRootPassword "secret" .secret "field" "mongodb-root-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}} + + {{- $valueUsername := include "common.utils.getValueFromKey" (dict "key" $valueKeyUsername "context" .context) }} + {{- $valueDatabase := include "common.utils.getValueFromKey" (dict "key" $valueKeyDatabase "context" .context) }} + {{- if and $valueUsername $valueDatabase -}} + {{- $requiredPassword := dict "valueKey" $valueKeyPassword "secret" .secret "field" "mongodb-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}} + {{- end -}} + + {{- if (eq $architecture "replicaset") -}} + {{- $requiredReplicaSetKey := dict "valueKey" $valueKeyReplicaSetKey "secret" .secret "field" "mongodb-replica-set-key" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredReplicaSetKey -}} + {{- end -}} + + {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}} + + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for existingSecret. + +Usage: +{{ include "common.mongodb.values.auth.existingSecret" (dict "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MongoDb is used as subchart or not. Default: false +*/}} +{{- define "common.mongodb.values.auth.existingSecret" -}} + {{- if .subchart -}} + {{- .context.Values.mongodb.auth.existingSecret | quote -}} + {{- else -}} + {{- .context.Values.auth.existingSecret | quote -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for enabled mongodb. + +Usage: +{{ include "common.mongodb.values.enabled" (dict "context" $) }} +*/}} +{{- define "common.mongodb.values.enabled" -}} + {{- if .subchart -}} + {{- printf "%v" .context.Values.mongodb.enabled -}} + {{- else -}} + {{- printf "%v" (not .context.Values.enabled) -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for the key auth + +Usage: +{{ include "common.mongodb.values.key.auth" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MongoDB® is used as subchart or not. Default: false +*/}} +{{- define "common.mongodb.values.key.auth" -}} + {{- if .subchart -}} + mongodb.auth + {{- else -}} + auth + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for architecture + +Usage: +{{ include "common.mongodb.values.architecture" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MongoDB® is used as subchart or not. Default: false +*/}} +{{- define "common.mongodb.values.architecture" -}} + {{- if .subchart -}} + {{- .context.Values.mongodb.architecture -}} + {{- else -}} + {{- .context.Values.architecture -}} + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_mysql.tpl b/charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_mysql.tpl new file mode 100644 index 0000000..74472a0 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_mysql.tpl @@ -0,0 +1,103 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Validate MySQL required passwords are not empty. + +Usage: +{{ include "common.validations.values.mysql.passwords" (dict "secret" "secretName" "subchart" false "context" $) }} +Params: + - secret - String - Required. Name of the secret where MySQL values are stored, e.g: "mysql-passwords-secret" + - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false +*/}} +{{- define "common.validations.values.mysql.passwords" -}} + {{- $existingSecret := include "common.mysql.values.auth.existingSecret" . -}} + {{- $enabled := include "common.mysql.values.enabled" . -}} + {{- $architecture := include "common.mysql.values.architecture" . -}} + {{- $authPrefix := include "common.mysql.values.key.auth" . -}} + {{- $valueKeyRootPassword := printf "%s.rootPassword" $authPrefix -}} + {{- $valueKeyUsername := printf "%s.username" $authPrefix -}} + {{- $valueKeyPassword := printf "%s.password" $authPrefix -}} + {{- $valueKeyReplicationPassword := printf "%s.replicationPassword" $authPrefix -}} + + {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}} + {{- $requiredPasswords := list -}} + + {{- $requiredRootPassword := dict "valueKey" $valueKeyRootPassword "secret" .secret "field" "mysql-root-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}} + + {{- $valueUsername := include "common.utils.getValueFromKey" (dict "key" $valueKeyUsername "context" .context) }} + {{- if not (empty $valueUsername) -}} + {{- $requiredPassword := dict "valueKey" $valueKeyPassword "secret" .secret "field" "mysql-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}} + {{- end -}} + + {{- if (eq $architecture "replication") -}} + {{- $requiredReplicationPassword := dict "valueKey" $valueKeyReplicationPassword "secret" .secret "field" "mysql-replication-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredReplicationPassword -}} + {{- end -}} + + {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}} + + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for existingSecret. + +Usage: +{{ include "common.mysql.values.auth.existingSecret" (dict "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false +*/}} +{{- define "common.mysql.values.auth.existingSecret" -}} + {{- if .subchart -}} + {{- .context.Values.mysql.auth.existingSecret | quote -}} + {{- else -}} + {{- .context.Values.auth.existingSecret | quote -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for enabled mysql. + +Usage: +{{ include "common.mysql.values.enabled" (dict "context" $) }} +*/}} +{{- define "common.mysql.values.enabled" -}} + {{- if .subchart -}} + {{- printf "%v" .context.Values.mysql.enabled -}} + {{- else -}} + {{- printf "%v" (not .context.Values.enabled) -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for architecture + +Usage: +{{ include "common.mysql.values.architecture" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false +*/}} +{{- define "common.mysql.values.architecture" -}} + {{- if .subchart -}} + {{- .context.Values.mysql.architecture -}} + {{- else -}} + {{- .context.Values.architecture -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for the key auth + +Usage: +{{ include "common.mysql.values.key.auth" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false +*/}} +{{- define "common.mysql.values.key.auth" -}} + {{- if .subchart -}} + mysql.auth + {{- else -}} + auth + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_postgresql.tpl b/charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_postgresql.tpl new file mode 100644 index 0000000..164ec0d --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_postgresql.tpl @@ -0,0 +1,129 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Validate PostgreSQL required passwords are not empty. + +Usage: +{{ include "common.validations.values.postgresql.passwords" (dict "secret" "secretName" "subchart" false "context" $) }} +Params: + - secret - String - Required. Name of the secret where postgresql values are stored, e.g: "postgresql-passwords-secret" + - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false +*/}} +{{- define "common.validations.values.postgresql.passwords" -}} + {{- $existingSecret := include "common.postgresql.values.existingSecret" . -}} + {{- $enabled := include "common.postgresql.values.enabled" . -}} + {{- $valueKeyPostgresqlPassword := include "common.postgresql.values.key.postgressPassword" . -}} + {{- $valueKeyPostgresqlReplicationEnabled := include "common.postgresql.values.key.replicationPassword" . -}} + {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}} + {{- $requiredPasswords := list -}} + {{- $requiredPostgresqlPassword := dict "valueKey" $valueKeyPostgresqlPassword "secret" .secret "field" "postgresql-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredPostgresqlPassword -}} + + {{- $enabledReplication := include "common.postgresql.values.enabled.replication" . -}} + {{- if (eq $enabledReplication "true") -}} + {{- $requiredPostgresqlReplicationPassword := dict "valueKey" $valueKeyPostgresqlReplicationEnabled "secret" .secret "field" "postgresql-replication-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredPostgresqlReplicationPassword -}} + {{- end -}} + + {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to decide whether evaluate global values. + +Usage: +{{ include "common.postgresql.values.use.global" (dict "key" "key-of-global" "context" $) }} +Params: + - key - String - Required. Field to be evaluated within global, e.g: "existingSecret" +*/}} +{{- define "common.postgresql.values.use.global" -}} + {{- if .context.Values.global -}} + {{- if .context.Values.global.postgresql -}} + {{- index .context.Values.global.postgresql .key | quote -}} + {{- end -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for existingSecret. + +Usage: +{{ include "common.postgresql.values.existingSecret" (dict "context" $) }} +*/}} +{{- define "common.postgresql.values.existingSecret" -}} + {{- $globalValue := include "common.postgresql.values.use.global" (dict "key" "existingSecret" "context" .context) -}} + + {{- if .subchart -}} + {{- default (.context.Values.postgresql.existingSecret | quote) $globalValue -}} + {{- else -}} + {{- default (.context.Values.existingSecret | quote) $globalValue -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for enabled postgresql. + +Usage: +{{ include "common.postgresql.values.enabled" (dict "context" $) }} +*/}} +{{- define "common.postgresql.values.enabled" -}} + {{- if .subchart -}} + {{- printf "%v" .context.Values.postgresql.enabled -}} + {{- else -}} + {{- printf "%v" (not .context.Values.enabled) -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for the key postgressPassword. + +Usage: +{{ include "common.postgresql.values.key.postgressPassword" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false +*/}} +{{- define "common.postgresql.values.key.postgressPassword" -}} + {{- $globalValue := include "common.postgresql.values.use.global" (dict "key" "postgresqlUsername" "context" .context) -}} + + {{- if not $globalValue -}} + {{- if .subchart -}} + postgresql.postgresqlPassword + {{- else -}} + postgresqlPassword + {{- end -}} + {{- else -}} + global.postgresql.postgresqlPassword + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for enabled.replication. + +Usage: +{{ include "common.postgresql.values.enabled.replication" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false +*/}} +{{- define "common.postgresql.values.enabled.replication" -}} + {{- if .subchart -}} + {{- printf "%v" .context.Values.postgresql.replication.enabled -}} + {{- else -}} + {{- printf "%v" .context.Values.replication.enabled -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for the key replication.password. + +Usage: +{{ include "common.postgresql.values.key.replicationPassword" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false +*/}} +{{- define "common.postgresql.values.key.replicationPassword" -}} + {{- if .subchart -}} + postgresql.replication.password + {{- else -}} + replication.password + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_redis.tpl b/charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_redis.tpl new file mode 100644 index 0000000..dcccfc1 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_redis.tpl @@ -0,0 +1,76 @@ + +{{/* vim: set filetype=mustache: */}} +{{/* +Validate Redis® required passwords are not empty. + +Usage: +{{ include "common.validations.values.redis.passwords" (dict "secret" "secretName" "subchart" false "context" $) }} +Params: + - secret - String - Required. Name of the secret where redis values are stored, e.g: "redis-passwords-secret" + - subchart - Boolean - Optional. Whether redis is used as subchart or not. Default: false +*/}} +{{- define "common.validations.values.redis.passwords" -}} + {{- $enabled := include "common.redis.values.enabled" . -}} + {{- $valueKeyPrefix := include "common.redis.values.keys.prefix" . -}} + {{- $standarizedVersion := include "common.redis.values.standarized.version" . }} + + {{- $existingSecret := ternary (printf "%s%s" $valueKeyPrefix "auth.existingSecret") (printf "%s%s" $valueKeyPrefix "existingSecret") (eq $standarizedVersion "true") }} + {{- $existingSecretValue := include "common.utils.getValueFromKey" (dict "key" $existingSecret "context" .context) }} + + {{- $valueKeyRedisPassword := ternary (printf "%s%s" $valueKeyPrefix "auth.password") (printf "%s%s" $valueKeyPrefix "password") (eq $standarizedVersion "true") }} + {{- $valueKeyRedisUseAuth := ternary (printf "%s%s" $valueKeyPrefix "auth.enabled") (printf "%s%s" $valueKeyPrefix "usePassword") (eq $standarizedVersion "true") }} + + {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}} + {{- $requiredPasswords := list -}} + + {{- $useAuth := include "common.utils.getValueFromKey" (dict "key" $valueKeyRedisUseAuth "context" .context) -}} + {{- if eq $useAuth "true" -}} + {{- $requiredRedisPassword := dict "valueKey" $valueKeyRedisPassword "secret" .secret "field" "redis-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredRedisPassword -}} + {{- end -}} + + {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for enabled redis. + +Usage: +{{ include "common.redis.values.enabled" (dict "context" $) }} +*/}} +{{- define "common.redis.values.enabled" -}} + {{- if .subchart -}} + {{- printf "%v" .context.Values.redis.enabled -}} + {{- else -}} + {{- printf "%v" (not .context.Values.enabled) -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right prefix path for the values + +Usage: +{{ include "common.redis.values.key.prefix" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether redis is used as subchart or not. Default: false +*/}} +{{- define "common.redis.values.keys.prefix" -}} + {{- if .subchart -}}redis.{{- else -}}{{- end -}} +{{- end -}} + +{{/* +Checks whether the redis chart's includes the standarizations (version >= 14) + +Usage: +{{ include "common.redis.values.standarized.version" (dict "context" $) }} +*/}} +{{- define "common.redis.values.standarized.version" -}} + + {{- $standarizedAuth := printf "%s%s" (include "common.redis.values.keys.prefix" .) "auth" -}} + {{- $standarizedAuthValues := include "common.utils.getValueFromKey" (dict "key" $standarizedAuth "context" .context) }} + + {{- if $standarizedAuthValues -}} + {{- true -}} + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_validations.tpl b/charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_validations.tpl new file mode 100644 index 0000000..9a814cf --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/charts/common/templates/validations/_validations.tpl @@ -0,0 +1,46 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Validate values must not be empty. + +Usage: +{{- $validateValueConf00 := (dict "valueKey" "path.to.value" "secret" "secretName" "field" "password-00") -}} +{{- $validateValueConf01 := (dict "valueKey" "path.to.value" "secret" "secretName" "field" "password-01") -}} +{{ include "common.validations.values.empty" (dict "required" (list $validateValueConf00 $validateValueConf01) "context" $) }} + +Validate value params: + - valueKey - String - Required. The path to the validating value in the values.yaml, e.g: "mysql.password" + - secret - String - Optional. Name of the secret where the validating value is generated/stored, e.g: "mysql-passwords-secret" + - field - String - Optional. Name of the field in the secret data, e.g: "mysql-password" +*/}} +{{- define "common.validations.values.multiple.empty" -}} + {{- range .required -}} + {{- include "common.validations.values.single.empty" (dict "valueKey" .valueKey "secret" .secret "field" .field "context" $.context) -}} + {{- end -}} +{{- end -}} + +{{/* +Validate a value must not be empty. + +Usage: +{{ include "common.validations.value.empty" (dict "valueKey" "mariadb.password" "secret" "secretName" "field" "my-password" "subchart" "subchart" "context" $) }} + +Validate value params: + - valueKey - String - Required. The path to the validating value in the values.yaml, e.g: "mysql.password" + - secret - String - Optional. Name of the secret where the validating value is generated/stored, e.g: "mysql-passwords-secret" + - field - String - Optional. Name of the field in the secret data, e.g: "mysql-password" + - subchart - String - Optional - Name of the subchart that the validated password is part of. +*/}} +{{- define "common.validations.values.single.empty" -}} + {{- $value := include "common.utils.getValueFromKey" (dict "key" .valueKey "context" .context) }} + {{- $subchart := ternary "" (printf "%s." .subchart) (empty .subchart) }} + + {{- if not $value -}} + {{- $varname := "my-value" -}} + {{- $getCurrentValue := "" -}} + {{- if and .secret .field -}} + {{- $varname = include "common.utils.fieldToEnvVar" . -}} + {{- $getCurrentValue = printf " To get the current value:\n\n %s\n" (include "common.utils.secret.getvalue" .) -}} + {{- end -}} + {{- printf "\n '%s' must not be empty, please add '--set %s%s=$%s' to the command.%s" .valueKey $subchart .valueKey $varname $getCurrentValue -}} + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-library/charts/mariadb/charts/common/values.yaml b/charts/limesurvey-library/charts/mariadb/charts/common/values.yaml new file mode 100644 index 0000000..f2df68e --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/charts/common/values.yaml @@ -0,0 +1,5 @@ +## bitnami/common +## It is required by CI/CD tools and processes. +## @skip exampleValue +## +exampleValue: common-chart diff --git a/charts/limesurvey-library/charts/mariadb/templates/NOTES.txt b/charts/limesurvey-library/charts/mariadb/templates/NOTES.txt new file mode 100644 index 0000000..c1039e6 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/templates/NOTES.txt @@ -0,0 +1,75 @@ +CHART NAME: {{ .Chart.Name }} +CHART VERSION: {{ .Chart.Version }} +APP VERSION: {{ .Chart.AppVersion }} + +** Please be patient while the chart is being deployed ** + +{{- if .Values.diagnosticMode.enabled }} +The chart has been deployed in diagnostic mode. All probes have been disabled and the command has been overwritten with: + + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 4 }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 4 }} + +Get the list of pods by executing: + + kubectl get pods --namespace {{ .Release.Namespace }} -l app.kubernetes.io/instance={{ .Release.Name }} + +Access the pod you want to debug by executing + + kubectl exec --namespace {{ .Release.Namespace }} -ti -- bash + +In order to replicate the container startup scripts execute this command: + + /opt/bitnami/scripts/mariadb/entrypoint.sh /opt/bitnami/scripts/mariadb/run.sh + +{{- else }} + +Tip: + + Watch the deployment status using the command: kubectl get pods -w --namespace {{ .Release.Namespace }} -l app.kubernetes.io/instance={{ .Release.Name }} + +Services: + + echo Primary: {{ include "mariadb.primary.fullname" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}:{{ coalesce .Values.primary.service.ports.mysql .Values.primary.service.port }} +{{- if eq .Values.architecture "replication" }} + echo Secondary: {{ include "mariadb.secondary.fullname" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}:{{ coalesce .Values.secondary.service.ports.mysql .Values.secondary.service.port }} +{{- end }} + +Administrator credentials: + + Username: root + Password : $(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "mariadb.secretName" . }} -o jsonpath="{.data.mariadb-root-password}" | base64 -d) + +To connect to your database: + + 1. Run a pod that you can use as a client: + + kubectl run {{ include "common.names.fullname" . }}-client --rm --tty -i --restart='Never' --image {{ template "mariadb.image" . }} --namespace {{ .Release.Namespace }} --command -- bash + + 2. To connect to primary service (read/write): + + mysql -h {{ include "mariadb.primary.fullname" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }} -uroot -p {{ .Values.auth.database }} + +{{- if eq .Values.architecture "replication" }} + + 3. To connect to secondary service (read-only): + + mysql -h {{ include "mariadb.secondary.fullname" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }} -uroot -p {{ .Values.auth.database }} +{{- end }} + +To upgrade this helm chart: + + 1. Obtain the password as described on the 'Administrator credentials' section and set the 'auth.rootPassword' parameter as shown below: + + ROOT_PASSWORD=$(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "mariadb.secretName" . }} -o jsonpath="{.data.mariadb-root-password}" | base64 -d) + helm upgrade --namespace {{ .Release.Namespace }} {{ .Release.Name }} my-repo/mariadb --set auth.rootPassword=$ROOT_PASSWORD + +{{- include "common.warnings.rollingTag" .Values.image }} +{{- include "common.warnings.rollingTag" .Values.metrics.image }} +{{- include "common.warnings.rollingTag" .Values.volumePermissions.image }} +{{- include "mariadb.validateValues" . }} +{{- if not .Values.auth.customPasswordFiles -}} + {{- $passwordValidationErrors := include "common.validations.values.mariadb.passwords" (dict "secret" (include "common.names.fullname" .) "context" $) -}} + {{- include "common.errors.upgrade.passwords.empty" (dict "validationErrors" (list $passwordValidationErrors) "context" $) -}} +{{- end }} +{{- end }} diff --git a/charts/limesurvey-library/charts/mariadb/templates/_helpers.tpl b/charts/limesurvey-library/charts/mariadb/templates/_helpers.tpl new file mode 100644 index 0000000..5a67bd5 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/templates/_helpers.tpl @@ -0,0 +1,149 @@ +{{/* vim: set filetype=mustache: */}} + +{{- define "mariadb.primary.fullname" -}} +{{- if eq .Values.architecture "replication" }} +{{- printf "%s-%s" (include "common.names.fullname" .) .Values.primary.name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- include "common.names.fullname" . -}} +{{- end -}} +{{- end -}} + +{{- define "mariadb.secondary.fullname" -}} +{{- printf "%s-%s" (include "common.names.fullname" .) .Values.secondary.name | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Return the proper MariaDB image name +*/}} +{{- define "mariadb.image" -}} +{{ include "common.images.image" (dict "imageRoot" .Values.image "global" .Values.global) }} +{{- end -}} + +{{/* +Return the proper metrics image name +*/}} +{{- define "mariadb.metrics.image" -}} +{{ include "common.images.image" (dict "imageRoot" .Values.metrics.image "global" .Values.global) }} +{{- end -}} + +{{/* +Return the proper image name (for the init container volume-permissions image) +*/}} +{{- define "mariadb.volumePermissions.image" -}} +{{ include "common.images.image" (dict "imageRoot" .Values.volumePermissions.image "global" .Values.global) }} +{{- end -}} + +{{/* +Return the proper Docker Image Registry Secret Names +*/}} +{{- define "mariadb.imagePullSecrets" -}} +{{ include "common.images.pullSecrets" (dict "images" (list .Values.image .Values.metrics.image .Values.volumePermissions.image) "global" .Values.global) }} +{{- end -}} + +{{ template "mariadb.initdbScriptsCM" . }} +{{/* +Get the initialization scripts ConfigMap name. +*/}} +{{- define "mariadb.initdbScriptsCM" -}} +{{- if .Values.initdbScriptsConfigMap -}} +{{- printf "%s" .Values.initdbScriptsConfigMap -}} +{{- else -}} +{{- printf "%s-init-scripts" (include "mariadb.primary.fullname" .) -}} +{{- end -}} +{{- end -}} + +{{/* +Create the name of the service account to use +*/}} +{{- define "mariadb.serviceAccountName" -}} +{{- if .Values.serviceAccount.create -}} + {{ default (include "common.names.fullname" .) .Values.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.serviceAccount.name }} +{{- end -}} +{{- end -}} + +{{/* +Return the configmap with the MariaDB Primary configuration +*/}} +{{- define "mariadb.primary.configmapName" -}} +{{- if .Values.primary.existingConfigmap -}} + {{- printf "%s" (tpl .Values.primary.existingConfigmap $) -}} +{{- else -}} + {{- printf "%s" (include "mariadb.primary.fullname" .) -}} +{{- end -}} +{{- end -}} + +{{/* +Return true if a configmap object should be created for MariaDB Secondary +*/}} +{{- define "mariadb.primary.createConfigmap" -}} +{{- if and .Values.primary.configuration (not .Values.primary.existingConfigmap) }} + {{- true -}} +{{- else -}} +{{- end -}} +{{- end -}} + +{{/* +Return the configmap with the MariaDB Primary configuration +*/}} +{{- define "mariadb.secondary.configmapName" -}} +{{- if .Values.secondary.existingConfigmap -}} + {{- printf "%s" (tpl .Values.secondary.existingConfigmap $) -}} +{{- else -}} + {{- printf "%s" (include "mariadb.secondary.fullname" .) -}} +{{- end -}} +{{- end -}} + +{{/* +Return true if a configmap object should be created for MariaDB Secondary +*/}} +{{- define "mariadb.secondary.createConfigmap" -}} +{{- if and (eq .Values.architecture "replication") .Values.secondary.configuration (not .Values.secondary.existingConfigmap) }} + {{- true -}} +{{- else -}} +{{- end -}} +{{- end -}} + +{{/* +Return the secret with MariaDB credentials +*/}} +{{- define "mariadb.secretName" -}} + {{- if .Values.auth.existingSecret -}} + {{- printf "%s" .Values.auth.existingSecret -}} + {{- else -}} + {{- printf "%s" (include "common.names.fullname" .) -}} + {{- end -}} +{{- end -}} + +{{/* +Return true if a secret object should be created for MariaDB +*/}} +{{- define "mariadb.createSecret" -}} +{{- if not (or .Values.auth.existingSecret .Values.auth.customPasswordFiles) }} + {{- true -}} +{{- end -}} +{{- end -}} + +{{/* +Compile all warnings into a single message, and call fail. +*/}} +{{- define "mariadb.validateValues" -}} +{{- $messages := list -}} +{{- $messages := append $messages (include "mariadb.validateValues.architecture" .) -}} +{{- $messages := without $messages "" -}} +{{- $message := join "\n" $messages -}} + +{{- if $message -}} +{{- printf "\nVALUES VALIDATION:\n%s" $message | fail -}} +{{- end -}} +{{- end -}} + +{{/* Validate values of MariaDB - must provide a valid architecture */}} +{{- define "mariadb.validateValues.architecture" -}} +{{- if and (ne .Values.architecture "standalone") (ne .Values.architecture "replication") -}} +mariadb: architecture + Invalid architecture selected. Valid values are "standalone" and + "replication". Please set a valid architecture (--set architecture="xxxx") +{{- end -}} +{{- end -}} diff --git a/charts/limesurvey-library/charts/mariadb/templates/extra-list.yaml b/charts/limesurvey-library/charts/mariadb/templates/extra-list.yaml new file mode 100644 index 0000000..9ac65f9 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/templates/extra-list.yaml @@ -0,0 +1,4 @@ +{{- range .Values.extraDeploy }} +--- +{{ include "common.tplvalues.render" (dict "value" . "context" $) }} +{{- end }} diff --git a/charts/limesurvey-library/charts/mariadb/templates/networkpolicy-egress.yaml b/charts/limesurvey-library/charts/mariadb/templates/networkpolicy-egress.yaml new file mode 100644 index 0000000..84f5d83 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/templates/networkpolicy-egress.yaml @@ -0,0 +1,33 @@ +{{- if and .Values.networkPolicy.enabled (or .Values.networkPolicy.egressRules.denyConnectionsToExternal .Values.networkPolicy.egressRules.customRules) }} +apiVersion: {{ include "common.capabilities.networkPolicy.apiVersion" . }} +kind: NetworkPolicy +metadata: + name: {{ printf "%s-egress" (include "common.names.fullname" .) }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + podSelector: + matchLabels: + {{- include "common.labels.standard" . | nindent 6 }} + policyTypes: + - Egress + egress: + {{- if .Values.networkPolicy.egressRules.denyConnectionsToExternal }} + - ports: + - port: 53 + protocol: UDP + - port: 53 + protocol: TCP + - to: + - namespaceSelector: {} + {{- end }} + {{- if .Values.networkPolicy.egressRules.customRules }} + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.egressRules.customRules "context" $) | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/limesurvey-library/charts/mariadb/templates/primary/configmap.yaml b/charts/limesurvey-library/charts/mariadb/templates/primary/configmap.yaml new file mode 100644 index 0000000..ae4d5b1 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/templates/primary/configmap.yaml @@ -0,0 +1,18 @@ +{{- if (include "mariadb.primary.createConfigmap" .) }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "mariadb.primary.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: primary + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +data: + my.cnf: |- +{{ .Values.primary.configuration | indent 4 }} +{{- end -}} diff --git a/charts/limesurvey-library/charts/mariadb/templates/primary/initialization-configmap.yaml b/charts/limesurvey-library/charts/mariadb/templates/primary/initialization-configmap.yaml new file mode 100644 index 0000000..f85903c --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/templates/primary/initialization-configmap.yaml @@ -0,0 +1,11 @@ +{{- if and .Values.initdbScripts (not .Values.initdbScriptsConfigMap) }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ printf "%s-init-scripts" (include "mariadb.primary.fullname" .) }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: primary +data: +{{- include "common.tplvalues.render" (dict "value" .Values.initdbScripts "context" .) | nindent 2 }} +{{ end }} diff --git a/charts/limesurvey-library/charts/mariadb/templates/primary/networkpolicy-ingress.yaml b/charts/limesurvey-library/charts/mariadb/templates/primary/networkpolicy-ingress.yaml new file mode 100644 index 0000000..125d0dd --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/templates/primary/networkpolicy-ingress.yaml @@ -0,0 +1,56 @@ +{{- if and .Values.networkPolicy.enabled (or .Values.networkPolicy.metrics.enabled .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.enabled) }} +apiVersion: {{ include "common.capabilities.networkPolicy.apiVersion" . }} +kind: NetworkPolicy +metadata: + name: {{ printf "%s-ingress" (include "common.names.fullname" .) }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + podSelector: + matchLabels: + app.kubernetes.io/component: primary + {{- include "common.labels.standard" . | nindent 6 }} + ingress: + {{- if and .Values.metrics.enabled .Values.networkPolicy.metrics.enabled (or .Values.networkPolicy.metrics.namespaceSelector .Values.networkPolicy.metrics.podSelector) }} + - from: + {{- if .Values.networkPolicy.metrics.namespaceSelector }} + - namespaceSelector: + matchLabels: + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.metrics.namespaceSelector "context" $) | nindent 14 }} + {{- end }} + {{- if .Values.networkPolicy.metrics.podSelector }} + - podSelector: + matchLabels: + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.metrics.podSelector "context" $) | nindent 14 }} + {{- end }} + {{- end }} + {{- if and .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.enabled (or .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.namespaceSelector .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.podSelector) }} + - from: + {{- if .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.namespaceSelector }} + - namespaceSelector: + matchLabels: + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.namespaceSelector "context" $) | nindent 14 }} + {{- end }} + {{- if .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.podSelector }} + - podSelector: + matchLabels: + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.podSelector "context" $) | nindent 14 }} + {{- end }} + {{- end }} + {{- if and .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.enabled (eq .Values.architecture "replication") }} + - from: + - podSelector: + matchLabels: + app.kubernetes.io/component: secondary + {{- include "common.labels.standard" . | nindent 14 }} + {{- end }} + {{- if .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.customRules }} + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.customRules "context" $) | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/limesurvey-library/charts/mariadb/templates/primary/pdb.yaml b/charts/limesurvey-library/charts/mariadb/templates/primary/pdb.yaml new file mode 100644 index 0000000..d923058 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/templates/primary/pdb.yaml @@ -0,0 +1,25 @@ +{{- if .Values.primary.pdb.create }} +apiVersion: {{ include "common.capabilities.policy.apiVersion" . }} +kind: PodDisruptionBudget +metadata: + name: {{ include "mariadb.primary.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: primary + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- if .Values.primary.pdb.minAvailable }} + minAvailable: {{ .Values.primary.pdb.minAvailable }} + {{- end }} + {{- if .Values.primary.pdb.maxUnavailable }} + maxUnavailable: {{ .Values.primary.pdb.maxUnavailable }} + {{- end }} + selector: + matchLabels: {{ include "common.labels.matchLabels" . | nindent 6 }} + app.kubernetes.io/component: primary +{{- end }} diff --git a/charts/limesurvey-library/charts/mariadb/templates/primary/statefulset.yaml b/charts/limesurvey-library/charts/mariadb/templates/primary/statefulset.yaml new file mode 100644 index 0000000..fd26089 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/templates/primary/statefulset.yaml @@ -0,0 +1,394 @@ +apiVersion: {{ include "common.capabilities.statefulset.apiVersion" . }} +kind: StatefulSet +metadata: + name: {{ include "mariadb.primary.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: primary + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + replicas: 1 + revisionHistoryLimit: {{ .Values.primary.revisionHistoryLimit }} + selector: + matchLabels: {{ include "common.labels.matchLabels" . | nindent 6 }} + app.kubernetes.io/component: primary + serviceName: {{ include "mariadb.primary.fullname" . }} + {{- if .Values.primary.updateStrategy }} + updateStrategy: {{- toYaml .Values.primary.updateStrategy | nindent 4 }} + {{- end }} + template: + metadata: + annotations: + {{- if (include "mariadb.primary.createConfigmap" .) }} + checksum/configuration: {{ include (print $.Template.BasePath "/primary/configmap.yaml") . | sha256sum }} + {{- end }} + {{- if .Values.primary.podAnnotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.primary.podAnnotations "context" $) | nindent 8 }} + {{- end }} + labels: {{- include "common.labels.standard" . | nindent 8 }} + app.kubernetes.io/component: primary + {{- if .Values.primary.podLabels }} + {{- include "common.tplvalues.render" (dict "value" .Values.primary.podLabels "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 8 }} + {{- end }} + spec: + {{- include "mariadb.imagePullSecrets" . | nindent 6 }} + {{- if .Values.primary.hostAliases }} + hostAliases: {{- include "common.tplvalues.render" (dict "value" .Values.primary.hostAliases "context" $) | nindent 8 }} + {{- end }} + {{- if or .Values.primary.schedulerName .Values.schedulerName }} + schedulerName: {{ (coalesce .Values.primary.schedulerName .Values.schedulerName) | quote }} + {{- end }} + serviceAccountName: {{ template "mariadb.serviceAccountName" . }} + {{- if .Values.primary.affinity }} + affinity: {{- include "common.tplvalues.render" (dict "value" .Values.primary.affinity "context" $) | nindent 8 }} + {{- else }} + affinity: + podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.primary.podAffinityPreset "component" "primary" "context" $) | nindent 10 }} + podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.primary.podAntiAffinityPreset "component" "primary" "context" $) | nindent 10 }} + nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.primary.nodeAffinityPreset.type "key" .Values.primary.nodeAffinityPreset.key "values" .Values.primary.nodeAffinityPreset.values) | nindent 10 }} + {{- end }} + {{- if .Values.primary.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" (dict "value" .Values.primary.nodeSelector "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.primary.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.primary.tolerations "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.primary.schedulerName }} + schedulerName: {{ .Values.primary.schedulerName }} + {{- end }} + {{- if .Values.primary.topologySpreadConstraints }} + topologySpreadConstraints: {{- include "common.tplvalues.render" (dict "value" .Values.primary.topologySpreadConstraints "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.primary.priorityClassName }} + priorityClassName: {{ .Values.primary.priorityClassName | quote }} + {{- else if .Values.priorityClassName }} + priorityClassName: {{ .Values.priorityClassName | quote }} + {{- end }} + {{- if .Values.primary.runtimeClassName }} + runtimeClassName: {{ .Values.primary.runtimeClassName | quote }} + {{- else if .Values.runtimeClassName }} + runtimeClassName: {{ .Values.runtimeClassName | quote }} + {{- end }} + {{- if .Values.primary.podSecurityContext.enabled }} + securityContext: {{- omit .Values.primary.podSecurityContext "enabled" | toYaml | nindent 8 }} + {{- end }} + {{- if or .Values.primary.initContainers (and .Values.primary.podSecurityContext.enabled .Values.volumePermissions.enabled .Values.primary.persistence.enabled) }} + initContainers: + {{- if .Values.primary.initContainers }} + {{- include "common.tplvalues.render" (dict "value" .Values.primary.initContainers "context" $) | nindent 8 }} + {{- end }} + {{- if and .Values.primary.podSecurityContext.enabled .Values.volumePermissions.enabled .Values.primary.persistence.enabled }} + - name: volume-permissions + image: {{ include "mariadb.volumePermissions.image" . }} + imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }} + command: + - /bin/bash + - -ec + - | + chown -R {{ .Values.primary.containerSecurityContext.runAsUser }}:{{ .Values.primary.podSecurityContext.fsGroup }} /bitnami/mariadb + securityContext: + runAsUser: 0 + {{- if .Values.volumePermissions.resources }} + resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }} + {{- end }} + volumeMounts: + - name: data + mountPath: /bitnami/mariadb + {{- if .Values.primary.persistence.subPath }} + subPath: {{ .Values.primary.persistence.subPath }} + {{- end }} + {{- end }} + {{- end }} + containers: + - name: mariadb + image: {{ include "mariadb.image" . }} + imagePullPolicy: {{ .Values.image.pullPolicy | quote }} + {{- if .Values.primary.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.primary.containerSecurityContext "enabled" | toYaml | nindent 12 }} + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} + {{- else if .Values.primary.command }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.primary.command "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }} + {{- else if .Values.primary.args }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.primary.args "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.primary.lifecycleHooks }} + lifecycle: {{- include "common.tplvalues.render" (dict "value" .Values.primary.lifecycleHooks "context" $) | nindent 12 }} + {{- end }} + env: + - name: BITNAMI_DEBUG + value: {{ ternary "true" "false" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }} + {{- if .Values.auth.usePasswordFiles }} + - name: MARIADB_ROOT_PASSWORD_FILE + value: {{ default "/opt/bitnami/mariadb/secrets/mariadb-root-password" .Values.auth.customPasswordFiles.root }} + {{- else }} + - name: MARIADB_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "mariadb.secretName" . }} + key: mariadb-root-password + {{- end }} + {{- if not (empty .Values.auth.username) }} + - name: MARIADB_USER + value: {{ .Values.auth.username | quote }} + {{- if .Values.auth.usePasswordFiles }} + - name: MARIADB_PASSWORD_FILE + value: {{ default "/opt/bitnami/mariadb/secrets/mariadb-password" .Values.auth.customPasswordFiles.user }} + {{- else }} + - name: MARIADB_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "mariadb.secretName" . }} + key: mariadb-password + {{- end }} + {{- end }} + - name: MARIADB_DATABASE + value: {{ .Values.auth.database | quote }} + {{- if eq .Values.architecture "replication" }} + - name: MARIADB_REPLICATION_MODE + value: "master" + - name: MARIADB_REPLICATION_USER + value: {{ .Values.auth.replicationUser | quote }} + {{- if .Values.auth.usePasswordFiles }} + - name: MARIADB_REPLICATION_PASSWORD_FILE + value: {{ default "/opt/bitnami/mariadb/secrets/mariadb-replication-password" .Values.auth.customPasswordFiles.replicator }} + {{- else }} + - name: MARIADB_REPLICATION_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "mariadb.secretName" . }} + key: mariadb-replication-password + {{- end }} + {{- end }} + {{- if .Values.primary.extraFlags }} + - name: MARIADB_EXTRA_FLAGS + value: "{{ .Values.primary.extraFlags }}" + {{- end }} + {{- if .Values.primary.startupWaitOptions }} + - name: MARIADB_STARTUP_WAIT_RETRIES + value: "{{ .Values.primary.startupWaitOptions.retries | default 300 }}" + - name: MARIADB_STARTUP_WAIT_SLEEP_TIME + value: "{{ .Values.primary.startupWaitOptions.sleepTime | default 2 }}" + {{- end }} + {{- if .Values.primary.extraEnvVars }} + {{- include "common.tplvalues.render" (dict "value" .Values.primary.extraEnvVars "context" $) | nindent 12 }} + {{- end }} + {{- if or .Values.primary.extraEnvVarsCM .Values.primary.extraEnvVarsSecret }} + envFrom: + {{- if .Values.primary.extraEnvVarsCM }} + - configMapRef: + name: {{ .Values.primary.extraEnvVarsCM }} + {{- end }} + {{- if .Values.primary.extraEnvVarsSecret }} + - secretRef: + name: {{ .Values.primary.extraEnvVarsSecret }} + {{- end }} + {{- end }} + ports: + - name: mysql + containerPort: 3306 + {{- if not .Values.diagnosticMode.enabled }} + {{- if .Values.primary.customStartupProbe }} + startupProbe: {{- include "common.tplvalues.render" (dict "value" .Values.primary.customStartupProbe "context" $) | nindent 12 }} + {{- else if .Values.primary.startupProbe.enabled }} + startupProbe: {{- omit .Values.primary.startupProbe "enabled" | toYaml | nindent 12 }} + exec: + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_ROOT_PASSWORD_FILE") + fi + mysqladmin status -uroot -p"${password_aux}" + {{- end }} + {{- if .Values.primary.customLivenessProbe }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.primary.customLivenessProbe "context" $) | nindent 12 }} + {{- else if .Values.primary.livenessProbe.enabled }} + livenessProbe: {{- omit .Values.primary.livenessProbe "enabled" | toYaml | nindent 12 }} + exec: + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_ROOT_PASSWORD_FILE") + fi + mysqladmin status -uroot -p"${password_aux}" + {{- end }} + {{- if .Values.primary.customReadinessProbe }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.primary.customReadinessProbe "context" $) | nindent 12 }} + {{- else if .Values.primary.readinessProbe.enabled }} + readinessProbe: {{- omit .Values.primary.readinessProbe "enabled" | toYaml | nindent 12 }} + exec: + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_ROOT_PASSWORD_FILE") + fi + mysqladmin status -uroot -p"${password_aux}" + {{- end }} + {{- end }} + {{- if .Values.primary.resources }} + resources: {{ toYaml .Values.primary.resources | nindent 12 }} + {{- end }} + volumeMounts: + - name: data + mountPath: /bitnami/mariadb + {{- if .Values.primary.persistence.subPath }} + subPath: {{ .Values.primary.persistence.subPath }} + {{- end }} + {{- if or .Values.initdbScriptsConfigMap .Values.initdbScripts }} + - name: custom-init-scripts + mountPath: /docker-entrypoint-initdb.d + {{- end }} + {{- if or .Values.primary.configuration .Values.primary.existingConfigmap }} + - name: config + mountPath: /opt/bitnami/mariadb/conf/my.cnf + subPath: my.cnf + {{- end }} + {{- if and .Values.auth.usePasswordFiles (not .Values.auth.customPasswordFiles) }} + - name: mariadb-credentials + mountPath: /opt/bitnami/mariadb/secrets/ + {{- end }} + {{- if .Values.primary.extraVolumeMounts }} + {{- include "common.tplvalues.render" (dict "value" .Values.primary.extraVolumeMounts "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.metrics.enabled }} + - name: metrics + image: {{ include "mariadb.metrics.image" . }} + imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }} + {{- if .Values.metrics.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.metrics.containerSecurityContext "enabled" | toYaml | nindent 12 }} + {{- end }} + env: + {{- if .Values.auth.usePasswordFiles }} + - name: MARIADB_ROOT_PASSWORD_FILE + value: {{ default "/opt/bitnami/mysqld-exporter/secrets/mariadb-root-password" .Values.auth.customPasswordFiles.root }} + {{- else }} + - name: MARIADB_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "mariadb.secretName" . }} + key: mariadb-root-password + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }} + {{- else }} + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_ROOT_PASSWORD_FILE") + fi + DATA_SOURCE_NAME="root:${password_aux}@(localhost:3306)/" /bin/mysqld_exporter {{- range .Values.metrics.extraArgs.primary }} {{ . }} {{- end }} + {{- end }} + ports: + - name: metrics + containerPort: 9104 + {{- if not .Values.diagnosticMode.enabled }} + {{- if .Values.metrics.livenessProbe.enabled }} + livenessProbe: {{- omit .Values.metrics.livenessProbe "enabled" | toYaml | nindent 12 }} + httpGet: + path: /metrics + port: metrics + {{- end }} + {{- if .Values.metrics.readinessProbe.enabled }} + readinessProbe: {{- omit .Values.metrics.readinessProbe "enabled" | toYaml | nindent 12 }} + httpGet: + path: /metrics + port: metrics + {{- end }} + {{- end }} + {{- if .Values.metrics.resources }} + resources: {{- toYaml .Values.metrics.resources | nindent 12 }} + {{- end }} + volumeMounts: + {{- if and .Values.auth.usePasswordFiles (not .Values.auth.customPasswordFiles) }} + - name: mariadb-credentials + mountPath: /opt/bitnami/mysqld-exporter/secrets/ + {{- end }} + {{- if .Values.metrics.extraVolumeMounts.primary }} + {{- include "common.tplvalues.render" (dict "value" .Values.metrics.extraVolumeMounts.primary "context" $) | nindent 12 }} + {{- end }} + {{- end }} + {{- if .Values.primary.sidecars }} + {{- include "common.tplvalues.render" (dict "value" .Values.primary.sidecars "context" $) | nindent 8 }} + {{- end }} + volumes: + {{- if or .Values.primary.configuration .Values.primary.existingConfigmap }} + - name: config + configMap: + name: {{ include "mariadb.primary.configmapName" . }} + {{- end }} + {{- if or .Values.initdbScriptsConfigMap .Values.initdbScripts }} + - name: custom-init-scripts + configMap: + name: {{ template "mariadb.initdbScriptsCM" . }} + {{- end }} + {{- if and .Values.auth.usePasswordFiles (not .Values.auth.customPasswordFiles) }} + - name: mariadb-credentials + secret: + secretName: {{ template "mariadb.secretName" . }} + items: + - key: mariadb-root-password + path: mariadb-root-password + - key: mariadb-password + path: mariadb-password + {{- if eq .Values.architecture "replication" }} + - key: mariadb-replication-password + path: mariadb-replication-password + {{- end }} + {{- end }} + {{- if .Values.primary.extraVolumes }} + {{- include "common.tplvalues.render" (dict "value" .Values.primary.extraVolumes "context" $) | nindent 8 }} + {{- end }} + {{- if and .Values.primary.persistence.enabled .Values.primary.persistence.existingClaim }} + - name: data + persistentVolumeClaim: + claimName: {{ tpl .Values.primary.persistence.existingClaim . }} + {{- else if not .Values.primary.persistence.enabled }} + - name: data + emptyDir: {} + {{- else if and .Values.primary.persistence.enabled (not .Values.primary.persistence.existingClaim) }} + volumeClaimTemplates: + - metadata: + name: data + labels: {{ include "common.labels.matchLabels" . | nindent 10 }} + app.kubernetes.io/component: primary + {{- if .Values.primary.persistence.annotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.primary.persistence.annotations "context" $ ) | nindent 10 }} + {{- end }} + spec: + accessModes: + {{- range .Values.primary.persistence.accessModes }} + - {{ . | quote }} + {{- end }} + resources: + requests: + storage: {{ .Values.primary.persistence.size | quote }} + {{ include "common.storage.class" (dict "persistence" .Values.primary.persistence "global" .Values.global) }} + {{- if .Values.primary.persistence.selector }} + selector: {{- include "common.tplvalues.render" (dict "value" .Values.primary.persistence.selector "context" $) | nindent 10 }} + {{- end -}} + {{- end }} diff --git a/charts/limesurvey-library/charts/mariadb/templates/primary/svc.yaml b/charts/limesurvey-library/charts/mariadb/templates/primary/svc.yaml new file mode 100644 index 0000000..85d3156 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/templates/primary/svc.yaml @@ -0,0 +1,61 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "mariadb.primary.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: primary + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + annotations: + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.primary.service.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.primary.service.annotations "context" $ ) | nindent 4 }} + {{- end }} + {{- if and .Values.metrics.enabled .Values.metrics.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.annotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.primary.service.type }} + {{- if and .Values.primary.service.clusterIP (eq .Values.primary.service.type "ClusterIP") }} + clusterIP: {{ .Values.primary.service.clusterIP }} + {{- end }} + {{- if and .Values.primary.service.externalTrafficPolicy (or (eq .Values.primary.service.type "LoadBalancer") (eq .Values.primary.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.primary.service.externalTrafficPolicy | quote }} + {{- end }} + {{- if and (eq .Values.primary.service.type "LoadBalancer") .Values.primary.service.loadBalancerSourceRanges }} + loadBalancerSourceRanges: {{ .Values.primary.service.loadBalancerSourceRanges }} + {{ end }} + {{- if (and (eq .Values.primary.service.type "LoadBalancer") (not (empty .Values.primary.service.loadBalancerIP))) }} + loadBalancerIP: {{ .Values.primary.service.loadBalancerIP }} + {{- end }} + {{- if .Values.primary.service.sessionAffinity }} + sessionAffinity: {{ .Values.primary.service.sessionAffinity }} + {{- end }} + {{- if .Values.primary.service.sessionAffinityConfig }} + sessionAffinityConfig: {{- include "common.tplvalues.render" (dict "value" .Values.primary.service.sessionAffinityConfig "context" $) | nindent 4 }} + {{- end }} + ports: + - name: mysql + port: {{ coalesce .Values.primary.service.ports.mysql .Values.primary.service.port }} + protocol: TCP + targetPort: mysql + {{- if (and (or (eq .Values.primary.service.type "NodePort") (eq .Values.primary.service.type "LoadBalancer")) (coalesce .Values.primary.service.nodePorts.mysql .Values.primary.service.nodePort)) }} + nodePort: {{ coalesce .Values.primary.service.nodePorts.mysql .Values.primary.service.nodePort }} + {{- else if eq .Values.primary.service.type "ClusterIP" }} + nodePort: null + {{- end }} + {{- if and .Values.metrics.enabled (gt (.Values.primary.service.ports.metrics | int) 0) }} + - name: metrics + port: {{ .Values.primary.service.ports.metrics }} + protocol: TCP + targetPort: metrics + {{- end }} + {{- if .Values.primary.service.extraPorts }} + {{- include "common.tplvalues.render" (dict "value" .Values.primary.service.extraPorts "context" $) | nindent 4 }} + {{- end }} + selector: {{ include "common.labels.matchLabels" . | nindent 4 }} + app.kubernetes.io/component: primary diff --git a/charts/limesurvey-library/charts/mariadb/templates/prometheusrules.yaml b/charts/limesurvey-library/charts/mariadb/templates/prometheusrules.yaml new file mode 100644 index 0000000..523e533 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/templates/prometheusrules.yaml @@ -0,0 +1,26 @@ +{{- if and .Values.metrics.enabled .Values.metrics.prometheusRule.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ include "common.names.fullname" . }} + {{- if .Values.metrics.prometheusRule.namespace }} + namespace: {{ .Values.metrics.prometheusRule.namespace }} + {{- else }} + namespace: {{ .Release.Namespace | quote }} + {{- end }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: metrics + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.metrics.prometheusRule.additionalLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.prometheusRule.additionalLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + groups: + - name: {{ include "common.names.fullname" . }} + rules: {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.prometheusRule.rules "context" $ ) | nindent 6 }} +{{- end }} diff --git a/charts/limesurvey-library/charts/mariadb/templates/role.yaml b/charts/limesurvey-library/charts/mariadb/templates/role.yaml new file mode 100644 index 0000000..a561f51 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/templates/role.yaml @@ -0,0 +1,21 @@ +{{- if and .Values.serviceAccount.create .Values.rbac.create }} +apiVersion: {{ include "common.capabilities.rbac.apiVersion" . }} +kind: Role +metadata: + name: {{ include "common.names.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +rules: + - apiGroups: + - "" + resources: + - endpoints + verbs: + - get +{{- end }} diff --git a/charts/limesurvey-library/charts/mariadb/templates/rolebinding.yaml b/charts/limesurvey-library/charts/mariadb/templates/rolebinding.yaml new file mode 100644 index 0000000..671aa6e --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/templates/rolebinding.yaml @@ -0,0 +1,21 @@ +{{- if and .Values.serviceAccount.create .Values.rbac.create }} +kind: RoleBinding +apiVersion: {{ include "common.capabilities.rbac.apiVersion" . }} +metadata: + name: {{ include "common.names.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +subjects: + - kind: ServiceAccount + name: {{ include "mariadb.serviceAccountName" . }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: {{ include "common.names.fullname" . -}} +{{- end }} diff --git a/charts/limesurvey-library/charts/mariadb/templates/secondary/configmap.yaml b/charts/limesurvey-library/charts/mariadb/templates/secondary/configmap.yaml new file mode 100644 index 0000000..4cfec64 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/templates/secondary/configmap.yaml @@ -0,0 +1,18 @@ +{{- if (include "mariadb.secondary.createConfigmap" .) }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "mariadb.secondary.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: secondary + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +data: + my.cnf: |- +{{ .Values.secondary.configuration | indent 4 }} +{{- end -}} diff --git a/charts/limesurvey-library/charts/mariadb/templates/secondary/networkpolicy-ingress.yaml b/charts/limesurvey-library/charts/mariadb/templates/secondary/networkpolicy-ingress.yaml new file mode 100644 index 0000000..51a8885 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/templates/secondary/networkpolicy-ingress.yaml @@ -0,0 +1,49 @@ +{{- if and .Values.networkPolicy.enabled (eq .Values.architecture "replication") (or .Values.networkPolicy.metrics.enabled .Values.networkPolicy.ingressRules.secondaryAccessOnlyFrom.enabled) }} +apiVersion: {{ include "common.capabilities.networkPolicy.apiVersion" . }} +kind: NetworkPolicy +metadata: + name: {{ printf "%s-ingress-secondary" (include "common.names.fullname" .) }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + podSelector: + matchLabels: + app.kubernetes.io/component: secondary + {{- include "common.labels.standard" . | nindent 6 }} + ingress: + {{- if and .Values.metrics.enabled .Values.networkPolicy.metrics.enabled (or .Values.networkPolicy.metrics.namespaceSelector .Values.networkPolicy.metrics.podSelector) }} + - from: + {{- if .Values.networkPolicy.metrics.namespaceSelector }} + - namespaceSelector: + matchLabels: + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.metrics.namespaceSelector "context" $) | nindent 14 }} + {{- end }} + {{- if .Values.networkPolicy.metrics.podSelector }} + - podSelector: + matchLabels: + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.metrics.podSelector "context" $) | nindent 14 }} + {{- end }} + {{- end }} + {{- if and .Values.networkPolicy.ingressRules.secondaryAccessOnlyFrom.enabled (or .Values.networkPolicy.ingressRules.secondaryAccessOnlyFrom.namespaceSelector .Values.networkPolicy.ingressRules.secondaryAccessOnlyFrom.podSelector) }} + - from: + {{- if .Values.networkPolicy.ingressRules.secondaryAccessOnlyFrom.namespaceSelector }} + - namespaceSelector: + matchLabels: + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingressRules.secondaryAccessOnlyFrom.namespaceSelector "context" $) | nindent 14 }} + {{- end }} + {{- if .Values.networkPolicy.ingressRules.secondaryAccessOnlyFrom.podSelector }} + - podSelector: + matchLabels: + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingressRules.secondaryAccessOnlyFrom.podSelector "context" $) | nindent 14 }} + {{- end }} + {{- end }} + {{- if .Values.networkPolicy.ingressRules.secondaryAccessOnlyFrom.customRules }} + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingressRules.secondaryAccessOnlyFrom.customRules "context" $) | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/limesurvey-library/charts/mariadb/templates/secondary/pdb.yaml b/charts/limesurvey-library/charts/mariadb/templates/secondary/pdb.yaml new file mode 100644 index 0000000..cae28ff --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/templates/secondary/pdb.yaml @@ -0,0 +1,25 @@ +{{- if and (eq .Values.architecture "replication") .Values.secondary.pdb.create }} +apiVersion: {{ include "common.capabilities.policy.apiVersion" . }} +kind: PodDisruptionBudget +metadata: + name: {{ include "mariadb.secondary.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: secondary + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- if .Values.secondary.pdb.minAvailable }} + minAvailable: {{ .Values.secondary.pdb.minAvailable }} + {{- end }} + {{- if .Values.secondary.pdb.maxUnavailable }} + maxUnavailable: {{ .Values.secondary.pdb.maxUnavailable }} + {{- end }} + selector: + matchLabels: {{ include "common.labels.matchLabels" . | nindent 6 }} + app.kubernetes.io/component: secondary +{{- end }} diff --git a/charts/limesurvey-library/charts/mariadb/templates/secondary/statefulset.yaml b/charts/limesurvey-library/charts/mariadb/templates/secondary/statefulset.yaml new file mode 100644 index 0000000..c88d4ad --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/templates/secondary/statefulset.yaml @@ -0,0 +1,365 @@ +{{- if eq .Values.architecture "replication" }} +apiVersion: {{ include "common.capabilities.statefulset.apiVersion" . }} +kind: StatefulSet +metadata: + name: {{ include "mariadb.secondary.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: secondary + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + replicas: {{ .Values.secondary.replicaCount }} + revisionHistoryLimit: {{ .Values.secondary.revisionHistoryLimit }} + selector: + matchLabels: {{ include "common.labels.matchLabels" . | nindent 6 }} + app.kubernetes.io/component: secondary + serviceName: {{ include "mariadb.secondary.fullname" . }} + podManagementPolicy: {{ .Values.secondary.podManagementPolicy }} + {{- if .Values.secondary.updateStrategy }} + updateStrategy: {{- toYaml .Values.secondary.updateStrategy | nindent 4 }} + {{- end }} + template: + metadata: + annotations: + {{- if (include "mariadb.secondary.createConfigmap" .) }} + checksum/configuration: {{ include (print $.Template.BasePath "/secondary/configmap.yaml") . | sha256sum }} + {{- end }} + {{- if .Values.secondary.podAnnotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.secondary.podAnnotations "context" $) | nindent 8 }} + {{- end }} + labels: {{- include "common.labels.standard" . | nindent 8 }} + app.kubernetes.io/component: secondary + {{- if .Values.secondary.podLabels }} + {{- include "common.tplvalues.render" (dict "value" .Values.secondary.podLabels "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 8 }} + {{- end }} + spec: + {{- include "mariadb.imagePullSecrets" . | nindent 6 }} + {{- if or .Values.secondary.schedulerName .Values.schedulerName }} + schedulerName: {{ (coalesce .Values.secondary.schedulerName .Values.schedulerName) | quote }} + {{- end }} + serviceAccountName: {{ template "mariadb.serviceAccountName" . }} + {{- if .Values.secondary.hostAliases }} + hostAliases: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.hostAliases "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.secondary.affinity }} + affinity: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.affinity "context" $) | nindent 8 }} + {{- else }} + affinity: + podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.secondary.podAffinityPreset "component" "secondary" "context" $) | nindent 10 }} + podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.secondary.podAntiAffinityPreset "component" "secondary" "context" $) | nindent 10 }} + nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.secondary.nodeAffinityPreset.type "key" .Values.secondary.nodeAffinityPreset.key "values" .Values.secondary.nodeAffinityPreset.values) | nindent 10 }} + {{- end }} + {{- if .Values.secondary.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.nodeSelector "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.secondary.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.tolerations "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.secondary.topologySpreadConstraints }} + topologySpreadConstraints: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.topologySpreadConstraints "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.secondary.priorityClassName }} + priorityClassName: {{ .Values.secondary.priorityClassName | quote }} + {{- else if .Values.priorityClassName }} + priorityClassName: {{ .Values.priorityClassName | quote }} + {{- end }} + {{- if .Values.secondary.runtimeClassName }} + runtimeClassName: {{ .Values.secondary.runtimeClassName | quote }} + {{- else if .Values.runtimeClassName }} + runtimeClassName: {{ .Values.runtimeClassName | quote }} + {{- end }} + {{- if .Values.secondary.podSecurityContext.enabled }} + securityContext: {{- omit .Values.secondary.podSecurityContext "enabled" | toYaml | nindent 8 }} + {{- end }} + {{- if or .Values.secondary.initContainers (and .Values.secondary.podSecurityContext.enabled .Values.volumePermissions.enabled .Values.secondary.persistence.enabled) }} + initContainers: + {{- if .Values.secondary.initContainers }} + {{- include "common.tplvalues.render" (dict "value" .Values.secondary.initContainers "context" $) | nindent 8 }} + {{- end }} + {{- if and .Values.secondary.podSecurityContext.enabled .Values.volumePermissions.enabled .Values.secondary.persistence.enabled }} + - name: volume-permissions + image: {{ include "mariadb.volumePermissions.image" . }} + imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }} + command: + - /bin/bash + - -ec + - | + chown -R {{ .Values.secondary.containerSecurityContext.runAsUser }}:{{ .Values.secondary.podSecurityContext.fsGroup }} /bitnami/mariadb + securityContext: + runAsUser: 0 + {{- if .Values.volumePermissions.resources }} + resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }} + {{- end }} + volumeMounts: + - name: data + mountPath: /bitnami/mariadb + {{- if .Values.secondary.persistence.subPath }} + subPath: {{ .Values.secondary.persistence.subPath }} + {{- end }} + {{- end }} + {{- end }} + containers: + - name: mariadb + image: {{ include "mariadb.image" . }} + imagePullPolicy: {{ .Values.image.pullPolicy | quote }} + {{- if .Values.secondary.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.secondary.containerSecurityContext "enabled" | toYaml | nindent 12 }} + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} + {{- else if .Values.secondary.command }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.command "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }} + {{- else if .Values.secondary.args }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.args "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.secondary.lifecycleHooks }} + lifecycle: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.lifecycleHooks "context" $) | nindent 12 }} + {{- end }} + env: + - name: BITNAMI_DEBUG + value: {{ ternary "true" "false" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }} + - name: MARIADB_REPLICATION_MODE + value: "slave" + - name: MARIADB_MASTER_HOST + value: {{ include "mariadb.primary.fullname" . }} + - name: MARIADB_MASTER_PORT_NUMBER + value: {{ coalesce .Values.primary.service.ports.mysql .Values.primary.service.port | quote }} + - name: MARIADB_MASTER_ROOT_USER + value: "root" + {{- if .Values.auth.usePasswordFiles }} + - name: MARIADB_MASTER_ROOT_PASSWORD_FILE + value: {{ default "/opt/bitnami/mariadb/secrets/mariadb-root-password" .Values.auth.customPasswordFiles.root }} + {{- else }} + - name: MARIADB_MASTER_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "mariadb.secretName" . }} + key: mariadb-root-password + {{- end }} + - name: MARIADB_REPLICATION_USER + value: {{ .Values.auth.replicationUser | quote }} + {{- if .Values.auth.usePasswordFiles }} + - name: MARIADB_REPLICATION_PASSWORD_FILE + value: {{ default "/opt/bitnami/mariadb/secrets/mariadb-replication-password" .Values.auth.customPasswordFiles.replicator }} + {{- else }} + - name: MARIADB_REPLICATION_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "mariadb.secretName" . }} + key: mariadb-replication-password + {{- end }} + {{- if .Values.secondary.extraFlags }} + - name: MARIADB_EXTRA_FLAGS + value: "{{ .Values.secondary.extraFlags }}" + {{- end }} + {{- if .Values.secondary.startupWaitOptions }} + - name: MARIADB_STARTUP_WAIT_RETRIES + value: "{{ .Values.secondary.startupWaitOptions.retries | default 300 }}" + - name: MARIADB_STARTUP_WAIT_SLEEP_TIME + value: "{{ .Values.secondary.startupWaitOptions.sleepTime | default 2 }}" + {{- end }} + {{- if .Values.secondary.extraEnvVars }} + {{- include "common.tplvalues.render" (dict "value" .Values.secondary.extraEnvVars "context" $) | nindent 12 }} + {{- end }} + {{- if or .Values.secondary.extraEnvVarsCM .Values.secondary.extraEnvVarsSecret }} + envFrom: + {{- if .Values.secondary.extraEnvVarsCM }} + - configMapRef: + name: {{ .Values.secondary.extraEnvVarsCM }} + {{- end }} + {{- if .Values.secondary.extraEnvVarsSecret }} + - secretRef: + name: {{ .Values.secondary.extraEnvVarsSecret }} + {{- end }} + {{- end }} + ports: + - name: mysql + containerPort: 3306 + {{- if not .Values.diagnosticMode.enabled }} + {{- if .Values.secondary.customStartupProbe }} + startupProbe: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.customStartupProbe "context" $) | nindent 12 }} + {{- else if .Values.secondary.startupProbe.enabled }} + startupProbe: {{- omit .Values.secondary.startupProbe "enabled" | toYaml | nindent 12 }} + exec: + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_MASTER_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_MASTER_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_MASTER_ROOT_PASSWORD_FILE") + fi + mysqladmin status -uroot -p"${password_aux}" + {{- end }} + {{- if .Values.secondary.customLivenessProbe }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.customLivenessProbe "context" $) | nindent 12 }} + {{- else if .Values.secondary.livenessProbe.enabled }} + livenessProbe: {{- omit .Values.secondary.livenessProbe "enabled" | toYaml | nindent 12 }} + exec: + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_MASTER_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_MASTER_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_MASTER_ROOT_PASSWORD_FILE") + fi + mysqladmin status -uroot -p"${password_aux}" + {{- end }} + {{- if .Values.secondary.customReadinessProbe }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.customReadinessProbe "context" $) | nindent 12 }} + {{- else if .Values.secondary.readinessProbe.enabled }} + readinessProbe: {{- omit .Values.secondary.readinessProbe "enabled" | toYaml | nindent 12 }} + exec: + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_MASTER_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_MASTER_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_MASTER_ROOT_PASSWORD_FILE") + fi + mysqladmin status -uroot -p"${password_aux}" + {{- end }} + {{- end }} + {{- if .Values.secondary.resources }} + resources: {{ toYaml .Values.secondary.resources | nindent 12 }} + {{- end }} + volumeMounts: + - name: data + mountPath: /bitnami/mariadb + {{- if .Values.secondary.persistence.subPath }} + subPath: {{ .Values.secondary.persistence.subPath }} + {{- end }} + {{- if or .Values.secondary.configuration .Values.secondary.existingConfigmap }} + - name: config + mountPath: /opt/bitnami/mariadb/conf/my.cnf + subPath: my.cnf + {{- end }} + {{- if and .Values.auth.usePasswordFiles (not .Values.auth.customPasswordFiles) }} + - name: mariadb-credentials + mountPath: /opt/bitnami/mariadb/secrets/ + {{- end }} + {{- if .Values.secondary.extraVolumeMounts }} + {{- include "common.tplvalues.render" (dict "value" .Values.secondary.extraVolumeMounts "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.metrics.enabled }} + - name: metrics + image: {{ include "mariadb.metrics.image" . }} + imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }} + {{- if .Values.metrics.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.metrics.containerSecurityContext "enabled" | toYaml | nindent 12 }} + {{- end }} + env: + {{- if .Values.auth.usePasswordFiles }} + - name: MARIADB_ROOT_PASSWORD_FILE + value: {{ default "/opt/bitnami/mysqld-exporter/secrets/mariadb-root-password" .Values.auth.customPasswordFiles.root }} + {{- else }} + - name: MARIADB_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "mariadb.secretName" . }} + key: mariadb-root-password + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }} + {{- else }} + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_ROOT_PASSWORD_FILE") + fi + DATA_SOURCE_NAME="root:${password_aux}@(localhost:3306)/" /bin/mysqld_exporter {{- range .Values.metrics.extraArgs.secondary }} {{ . }} {{- end }} + {{- end }} + ports: + - name: metrics + containerPort: 9104 + {{- if not .Values.diagnosticMode.enabled }} + {{- if .Values.metrics.livenessProbe.enabled }} + livenessProbe: {{- omit .Values.metrics.livenessProbe "enabled" | toYaml | nindent 12 }} + httpGet: + path: /metrics + port: metrics + {{- end }} + {{- if .Values.metrics.readinessProbe.enabled }} + readinessProbe: {{- omit .Values.metrics.readinessProbe "enabled" | toYaml | nindent 12 }} + httpGet: + path: /metrics + port: metrics + {{- end }} + {{- end }} + {{- if .Values.metrics.resources }} + resources: {{- toYaml .Values.metrics.resources | nindent 12 }} + {{- end }} + volumeMounts: + {{- if and .Values.auth.usePasswordFiles (not .Values.auth.customPasswordFiles) }} + - name: mariadb-credentials + mountPath: /opt/bitnami/mysqld-exporter/secrets/ + {{- end }} + {{- if .Values.metrics.extraVolumeMounts.secondary }} + {{- include "common.tplvalues.render" (dict "value" .Values.metrics.extraVolumeMounts.secondary "context" $) | nindent 12 }} + {{- end }} + {{- end }} + {{- if .Values.secondary.sidecars }} + {{- include "common.tplvalues.render" (dict "value" .Values.secondary.sidecars "context" $) | nindent 8 }} + {{- end }} + volumes: + {{- if or .Values.secondary.configuration .Values.secondary.existingConfigmap }} + - name: config + configMap: + name: {{ include "mariadb.secondary.configmapName" . }} + {{- end }} + {{- if and .Values.auth.usePasswordFiles (not .Values.auth.customPasswordFiles) }} + - name: mariadb-credentials + secret: + secretName: {{ template "mariadb.secretName" . }} + items: + - key: mariadb-root-password + path: mariadb-root-password + - key: mariadb-replication-password + path: mariadb-replication-password + {{- end }} + {{- if .Values.secondary.extraVolumes }} + {{- include "common.tplvalues.render" (dict "value" .Values.secondary.extraVolumes "context" $) | nindent 8 }} + {{- end }} + {{- if not .Values.secondary.persistence.enabled }} + - name: data + emptyDir: {} + {{- else }} + volumeClaimTemplates: + - metadata: + name: data + labels: {{ include "common.labels.matchLabels" . | nindent 10 }} + app.kubernetes.io/component: secondary + {{- if .Values.secondary.persistence.annotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.secondary.persistence.annotations "context" $ ) | nindent 10 }} + {{- end }} + spec: + accessModes: + {{- range .Values.secondary.persistence.accessModes }} + - {{ . | quote }} + {{- end }} + resources: + requests: + storage: {{ .Values.secondary.persistence.size | quote }} + {{ include "common.storage.class" (dict "persistence" .Values.secondary.persistence "global" .Values.global) }} + {{- if .Values.secondary.persistence.selector }} + selector: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.persistence.selector "context" $) | nindent 10 }} + {{- end -}} + {{- end }} +{{- end }} diff --git a/charts/limesurvey-library/charts/mariadb/templates/secondary/svc.yaml b/charts/limesurvey-library/charts/mariadb/templates/secondary/svc.yaml new file mode 100644 index 0000000..3d72171 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/templates/secondary/svc.yaml @@ -0,0 +1,63 @@ +{{- if eq .Values.architecture "replication" }} +apiVersion: v1 +kind: Service +metadata: + name: {{ include "mariadb.secondary.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: secondary + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + annotations: + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.secondary.service.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.secondary.service.annotations "context" $ ) | nindent 4 }} + {{- end }} + {{- if and .Values.metrics.enabled .Values.metrics.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.annotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.secondary.service.type }} + {{- if and .Values.secondary.service.clusterIP (eq .Values.secondary.service.type "ClusterIP") }} + clusterIP: {{ .Values.secondary.service.clusterIP }} + {{- end }} + {{- if and .Values.secondary.service.externalTrafficPolicy (or (eq .Values.secondary.service.type "LoadBalancer") (eq .Values.secondary.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.secondary.service.externalTrafficPolicy | quote }} + {{- end }} + {{- if and (eq .Values.secondary.service.type "LoadBalancer") .Values.secondary.service.loadBalancerSourceRanges }} + loadBalancerSourceRanges: {{ .Values.secondary.service.loadBalancerSourceRanges }} + {{ end }} + {{- if and (eq .Values.secondary.service.type "LoadBalancer") (not (empty .Values.secondary.service.loadBalancerIP)) }} + loadBalancerIP: {{ .Values.secondary.service.loadBalancerIP }} + {{- end }} + {{- if .Values.secondary.service.sessionAffinity }} + sessionAffinity: {{ .Values.secondary.service.sessionAffinity }} + {{- end }} + {{- if .Values.secondary.service.sessionAffinityConfig }} + sessionAffinityConfig: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.service.sessionAffinityConfig "context" $) | nindent 4 }} + {{- end }} + ports: + - name: mysql + port: {{ coalesce .Values.secondary.service.ports.mysql .Values.secondary.service.port }} + protocol: TCP + targetPort: mysql + {{- if (and (or (eq .Values.secondary.service.type "NodePort") (eq .Values.secondary.service.type "LoadBalancer")) (coalesce .Values.secondary.service.nodePorts.mysql .Values.secondary.service.nodePort)) }} + nodePort: {{ coalesce .Values.secondary.service.nodePorts.mysql .Values.secondary.service.nodePort }} + {{- else if eq .Values.secondary.service.type "ClusterIP" }} + nodePort: null + {{- end }} + {{- if and .Values.metrics.enabled (gt (.Values.secondary.service.ports.metrics | int) 0) }} + - name: metrics + port: {{ .Values.secondary.service.ports.metrics }} + protocol: TCP + targetPort: metrics + {{- end }} + {{- if .Values.secondary.service.extraPorts }} + {{- include "common.tplvalues.render" (dict "value" .Values.secondary.service.extraPorts "context" $) | nindent 4 }} + {{- end }} + selector: {{ include "common.labels.matchLabels" . | nindent 4 }} + app.kubernetes.io/component: secondary +{{- end }} diff --git a/charts/limesurvey-library/charts/mariadb/templates/secrets.yaml b/charts/limesurvey-library/charts/mariadb/templates/secrets.yaml new file mode 100644 index 0000000..2ff62ed --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/templates/secrets.yaml @@ -0,0 +1,35 @@ +{{- if eq (include "mariadb.createSecret" .) "true" }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.names.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +type: Opaque +data: + {{- if (not .Values.auth.forcePassword) }} + mariadb-root-password: {{ include "common.secrets.passwords.manage" (dict "secret" (include "common.names.fullname" .) "key" "mariadb-root-password" "providedValues" (list "auth.rootPassword") "context" $) }} + {{- else }} + mariadb-root-password: {{ required "A MariaDB Root Password is required!" .Values.auth.rootPassword | b64enc | quote }} + {{- end }} + {{- if (not (empty .Values.auth.username)) }} + {{- if (not .Values.auth.forcePassword) }} + mariadb-password: {{ include "common.secrets.passwords.manage" (dict "secret" (include "common.names.fullname" .) "key" "mariadb-password" "providedValues" (list "auth.password") "context" $) }} + {{- else }} + mariadb-password: {{ required "A MariaDB Database Password is required!" .Values.auth.password | b64enc | quote }} + {{- end }} + {{- end }} + {{- if eq .Values.architecture "replication" }} + {{- if (not .Values.auth.forcePassword) }} + mariadb-replication-password: {{ include "common.secrets.passwords.manage" (dict "secret" (include "common.names.fullname" .) "key" "mariadb-replication-password" "providedValues" (list "auth.replicationPassword") "context" $) }} + {{- else }} + mariadb-replication-password: {{ required "A MariaDB Replication Password is required!" .Values.auth.replicationPassword | b64enc | quote }} + {{- end }} + {{- end }} +{{- end }} diff --git a/charts/limesurvey-library/charts/mariadb/templates/serviceaccount.yaml b/charts/limesurvey-library/charts/mariadb/templates/serviceaccount.yaml new file mode 100644 index 0000000..03a6b4e --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/templates/serviceaccount.yaml @@ -0,0 +1,19 @@ +{{- if .Values.serviceAccount.create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "mariadb.serviceAccountName" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + annotations: + {{- if .Values.serviceAccount.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.serviceAccount.annotations "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }} +{{- end }} diff --git a/charts/limesurvey-library/charts/mariadb/templates/servicemonitor.yaml b/charts/limesurvey-library/charts/mariadb/templates/servicemonitor.yaml new file mode 100644 index 0000000..ca5bf7c --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/templates/servicemonitor.yaml @@ -0,0 +1,48 @@ +{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ include "common.names.fullname" . }} + {{- if .Values.metrics.serviceMonitor.namespace }} + namespace: {{ .Values.metrics.serviceMonitor.namespace }} + {{- else }} + namespace: {{ .Release.Namespace | quote }} + {{- end }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.labels }} + {{- include "common.tplvalues.render" (dict "value" .Values.metrics.serviceMonitor.labels "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + jobLabel: {{ .Values.metrics.serviceMonitor.jobLabel | quote }} + endpoints: + - port: metrics + {{- if .Values.metrics.serviceMonitor.interval }} + interval: {{ .Values.metrics.serviceMonitor.interval }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.scrapeTimeout }} + scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.honorLabels }} + honorLabels: {{ .Values.metrics.serviceMonitor.honorLabels }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.metricRelabelings }} + metricRelabelings: {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.serviceMonitor.metricRelabelings "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.relabelings }} + relabelings: {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.serviceMonitor.relabelings "context" $) | nindent 8 }} + {{- end }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace | quote }} + selector: + matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }} + {{- if .Values.metrics.serviceMonitor.selector }} + {{- include "common.tplvalues.render" (dict "value" .Values.metrics.serviceMonitor.selector "context" $) | nindent 6 }} + {{- end }} +{{- end }} diff --git a/charts/limesurvey-library/charts/mariadb/values.schema.json b/charts/limesurvey-library/charts/mariadb/values.schema.json new file mode 100644 index 0000000..500c4eb --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/values.schema.json @@ -0,0 +1,176 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "architecture": { + "type": "string", + "title": "MariaDB architecture", + "form": true, + "description": "Allowed values: `standalone` or `replication`" + }, + "auth": { + "type": "object", + "title": "Authentication configuration", + "form": true, + "properties": { + "rootPassword": { + "type": "string", + "title": "MariaDB root password", + "form": true, + "description": "Defaults to a random 10-character alphanumeric string if not set" + }, + "database": { + "type": "string", + "title": "MariaDB custom database", + "description": "Name of the custom database to be created during the 1st initialization of MariaDB", + "form": true + }, + "username": { + "type": "string", + "title": "MariaDB custom user", + "description": "Name of the custom user to be created during the 1st initialization of MariaDB. This user only has permissions on the MariaDB custom database", + "form": true + }, + "password": { + "type": "string", + "title": "Password for MariaDB custom user", + "description": "Defaults to a random 10-character alphanumeric string if not set", + "form": true, + "hidden": { + "value": false, + "path": "usePassword" + } + }, + "replicationUser": { + "type": "string", + "title": "MariaDB replication user", + "description": "Name of user used to manage replication.", + "form": true, + "hidden": { + "value": "standalone", + "path": "architecture" + } + }, + "replicationPassword": { + "type": "string", + "title": "Password for MariaDB replication user", + "description": "Defaults to a random 10-character alphanumeric string if not set", + "form": true, + "hidden": { + "value": "standalone", + "path": "architecture" + } + } + } + }, + "primary": { + "type": "object", + "title": "Primary replicas settings", + "form": true, + "properties": { + "persistence": { + "type": "object", + "title": "Persistence for primary replicas", + "form": true, + "properties": { + "enabled": { + "type": "boolean", + "form": true, + "title": "Enable persistence", + "description": "Enable persistence using Persistent Volume Claims" + }, + "size": { + "type": "string", + "title": "Persistent Volume Size", + "form": true, + "render": "slider", + "sliderMin": 1, + "sliderMax": 100, + "sliderUnit": "Gi", + "hidden": { + "value": false, + "path": "persistence/enabled" + } + } + } + } + } + }, + "secondary": { + "type": "object", + "title": "Secondary replicas settings", + "form": true, + "hidden": { + "value": false, + "path": "replication/enabled" + }, + "properties": { + "persistence": { + "type": "object", + "title": "Persistence for secondary replicas", + "form": true, + "properties": { + "enabled": { + "type": "boolean", + "form": true, + "title": "Enable persistence", + "description": "Enable persistence using Persistent Volume Claims" + }, + "size": { + "type": "string", + "title": "Persistent Volume Size", + "form": true, + "render": "slider", + "sliderMin": 1, + "sliderMax": 100, + "sliderUnit": "Gi", + "hidden": { + "value": false, + "path": "persistence/enabled" + } + } + } + } + } + }, + "volumePermissions": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "form": true, + "title": "Enable Init Containers", + "description": "Use an init container to set required folder permissions on the data volume before mounting it in the final destination" + } + } + }, + "metrics": { + "type": "object", + "form": true, + "title": "Prometheus metrics details", + "properties": { + "enabled": { + "type": "boolean", + "title": "Create Prometheus metrics exporter", + "description": "Create a side-car container to expose Prometheus metrics", + "form": true + }, + "serviceMonitor": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Create Prometheus Operator ServiceMonitor", + "description": "Create a ServiceMonitor to track metrics using Prometheus Operator", + "form": true, + "hidden": { + "value": false, + "path": "metrics/enabled" + } + } + } + } + } + } + } +} diff --git a/charts/limesurvey-library/charts/mariadb/values.yaml b/charts/limesurvey-library/charts/mariadb/values.yaml new file mode 100644 index 0000000..78d1b11 --- /dev/null +++ b/charts/limesurvey-library/charts/mariadb/values.yaml @@ -0,0 +1,1311 @@ +## @section Global parameters +## Global Docker image parameters +## Please, note that this will override the image parameters, including dependencies, configured to use the global value +## Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass +## + +## @param global.imageRegistry Global Docker Image registry +## @param global.imagePullSecrets Global Docker registry secret names as an array +## @param global.storageClass Global storage class for dynamic provisioning +## +global: + imageRegistry: "" + ## E.g. + ## imagePullSecrets: + ## - myRegistryKeySecretName + ## + imagePullSecrets: [] + storageClass: "" + +## @section Common parameters +## + +## @param kubeVersion Force target Kubernetes version (using Helm capabilities if not set) +## +kubeVersion: "" +## @param nameOverride String to partially override mariadb.fullname +## +nameOverride: "" +## @param fullnameOverride String to fully override mariadb.fullname +## +fullnameOverride: "" +## @param clusterDomain Default Kubernetes cluster domain +## +clusterDomain: cluster.local +## @param commonAnnotations Common annotations to add to all MariaDB resources (sub-charts are not considered) +## +commonAnnotations: {} +## @param commonLabels Common labels to add to all MariaDB resources (sub-charts are not considered) +## +commonLabels: {} +## @param schedulerName Name of the scheduler (other than default) to dispatch pods +## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ +## +schedulerName: "" +## @param runtimeClassName Name of the Runtime Class for all MariaDB pods +## ref: https://kubernetes.io/docs/concepts/containers/runtime-class/ +## +runtimeClassName: "" +## @param extraDeploy Array of extra objects to deploy with the release (evaluated as a template) +## +extraDeploy: [] + +## Enable diagnostic mode in the deployment +## +diagnosticMode: + ## @param diagnosticMode.enabled Enable diagnostic mode (all probes will be disabled and the command will be overridden) + ## + enabled: false + ## @param diagnosticMode.command Command to override all containers in the deployment + ## + command: + - sleep + ## @param diagnosticMode.args Args to override all containers in the deployment + ## + args: + - infinity + +## @section MariaDB common parameters +## + +## Bitnami MariaDB image +## ref: https://hub.docker.com/r/bitnami/mariadb/tags/ +## @param image.registry MariaDB image registry +## @param image.repository MariaDB image repository +## @param image.tag MariaDB image tag (immutable tags are recommended) +## @param image.digest MariaDB image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag +## @param image.pullPolicy MariaDB image pull policy +## @param image.pullSecrets Specify docker-registry secret names as an array +## @param image.debug Specify if debug logs should be enabled +## +image: + registry: docker.io + repository: bitnami/mariadb + tag: 10.6.11-debian-11-r12 + digest: "" + ## Specify a imagePullPolicy + ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' + ## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images + ## + 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/ + ## Example: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + pullSecrets: [] + ## Set to true if you would like to see extra information on logs + ## It turns BASH and/or NAMI debugging in the image + ## + debug: false +## @param architecture MariaDB architecture (`standalone` or `replication`) +## +architecture: standalone +## MariaDB Authentication parameters +## +auth: + ## @param auth.rootPassword Password for the `root` user. Ignored if existing secret is provided. + ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mariadb#setting-the-root-password-on-first-run + ## + rootPassword: "" + ## @param auth.database Name for a custom database to create + ## ref: https://github.com/bitnami/containers/blob/main/bitnami/mariadb/README.md#creating-a-database-on-first-run + ## + database: my_database + ## @param auth.username Name for a custom user to create + ## ref: https://github.com/bitnami/containers/blob/main/bitnami/mariadb/README.md#creating-a-database-user-on-first-run + ## + username: "" + ## @param auth.password Password for the new user. Ignored if existing secret is provided + ## + password: "" + ## @param auth.replicationUser MariaDB replication user + ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mariadb#setting-up-a-replication-cluster + ## + replicationUser: replicator + ## @param auth.replicationPassword MariaDB replication user password. Ignored if existing secret is provided + ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mariadb#setting-up-a-replication-cluster + ## + replicationPassword: "" + ## @param auth.existingSecret Use existing secret for password details (`auth.rootPassword`, `auth.password`, `auth.replicationPassword` will be ignored and picked up from this secret). The secret has to contain the keys `mariadb-root-password`, `mariadb-replication-password` and `mariadb-password` + ## + existingSecret: "" + ## @param auth.forcePassword Force users to specify required passwords + ## + forcePassword: false + ## @param auth.usePasswordFiles Mount credentials as files instead of using environment variables + ## + usePasswordFiles: false + ## @param auth.customPasswordFiles Use custom password files when `auth.usePasswordFiles` is set to `true`. Define path for keys `root` and `user`, also define `replicator` if `architecture` is set to `replication` + ## Example: + ## customPasswordFiles: + ## root: /vault/secrets/mariadb-root + ## user: /vault/secrets/mariadb-user + ## replicator: /vault/secrets/mariadb-replicator + ## + customPasswordFiles: {} +## @param initdbScripts Dictionary of initdb scripts +## Specify dictionary of scripts to be run at first boot +## Example: +## initdbScripts: +## my_init_script.sh: | +## #!/bin/bash +## echo "Do something." +## +initdbScripts: {} +## @param initdbScriptsConfigMap ConfigMap with the initdb scripts (Note: Overrides `initdbScripts`) +## +initdbScriptsConfigMap: "" + +## @section MariaDB Primary parameters +## + +## Mariadb Primary parameters +## +primary: + ## @param primary.name Name of the primary database (eg primary, master, leader, ...) + ## + name: primary + ## @param primary.command Override default container command on MariaDB Primary container(s) (useful when using custom images) + ## + command: [] + ## @param primary.args Override default container args on MariaDB Primary container(s) (useful when using custom images) + ## + args: [] + ## @param primary.lifecycleHooks for the MariaDB Primary container(s) to automate configuration before or after startup + ## + lifecycleHooks: {} + ## @param primary.hostAliases Add deployment host aliases + ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ + ## + hostAliases: [] + ## @param primary.configuration [string] MariaDB Primary configuration to be injected as ConfigMap + ## ref: https://mysql.com/kb/en/mysql/configuring-mysql-with-mycnf/#example-of-configuration-file + ## + configuration: |- + [mysqld] + skip-name-resolve + explicit_defaults_for_timestamp + basedir=/opt/bitnami/mariadb + plugin_dir=/opt/bitnami/mariadb/plugin + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + tmpdir=/opt/bitnami/mariadb/tmp + max_allowed_packet=16M + bind-address=* + pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid + log-error=/opt/bitnami/mariadb/logs/mysqld.log + character-set-server=UTF8 + collation-server=utf8_general_ci + slow_query_log=0 + slow_query_log_file=/opt/bitnami/mariadb/logs/mysqld.log + long_query_time=10.0 + + [client] + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + default-character-set=UTF8 + plugin_dir=/opt/bitnami/mariadb/plugin + + [manager] + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid + ## @param primary.existingConfigmap Name of existing ConfigMap with MariaDB Primary configuration. + ## NOTE: When it's set the 'configuration' parameter is ignored + ## + existingConfigmap: "" + ## @param primary.updateStrategy.type MariaDB primary statefulset strategy type + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies + ## + updateStrategy: + ## StrategyType + ## Can be set to RollingUpdate or OnDelete + ## + type: RollingUpdate + ## @param primary.rollingUpdatePartition Partition update strategy for Mariadb Primary statefulset + ## https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#partitions + ## + rollingUpdatePartition: "" + ## @param primary.podAnnotations Additional pod annotations for MariaDB primary pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + ## @param primary.podLabels Extra labels for MariaDB primary pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + ## + podLabels: {} + ## @param primary.podAffinityPreset MariaDB primary pod affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAffinityPreset: "" + ## @param primary.podAntiAffinityPreset MariaDB primary pod anti-affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` + ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAntiAffinityPreset: soft + ## Mariadb Primary node affinity preset + ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity + ## + nodeAffinityPreset: + ## @param primary.nodeAffinityPreset.type MariaDB primary node affinity preset type. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` + ## + type: "" + ## @param primary.nodeAffinityPreset.key MariaDB primary node label key to match Ignored if `primary.affinity` is set. + ## E.g. + ## key: "kubernetes.io/e2e-az-name" + ## + key: "" + ## @param primary.nodeAffinityPreset.values MariaDB primary node label values to match. Ignored if `primary.affinity` is set. + ## E.g. + ## values: + ## - e2e-az1 + ## - e2e-az2 + ## + values: [] + ## @param primary.affinity Affinity for MariaDB primary pods assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## Note: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set + ## + affinity: {} + ## @param primary.nodeSelector Node labels for MariaDB primary pods assignment + ## Ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + ## @param primary.tolerations Tolerations for MariaDB primary pods assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + ## @param primary.schedulerName Name of the k8s scheduler (other than default) + ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ + ## + schedulerName: "" + ## @param primary.podManagementPolicy podManagementPolicy to manage scaling operation of MariaDB primary pods + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-management-policies + ## + podManagementPolicy: "" + ## @param primary.topologySpreadConstraints Topology Spread Constraints for MariaDB primary pods assignment + ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ + ## E.g. + ## topologySpreadConstraints: + ## - maxSkew: 1 + ## topologyKey: topology.kubernetes.io/zone + ## whenUnsatisfiable: DoNotSchedule + ## + topologySpreadConstraints: [] + ## @param primary.priorityClassName Priority class for MariaDB primary pods assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/ + ## + priorityClassName: "" + ## @param primary.runtimeClassName Runtime Class for MariaDB primary pods + ## Ref: https://kubernetes.io/docs/concepts/containers/runtime-class/ + ## + runtimeClassName: "" + ## MariaDB primary Pod security context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param primary.podSecurityContext.enabled Enable security context for MariaDB primary pods + ## @param primary.podSecurityContext.fsGroup Group ID for the mounted volumes' filesystem + ## + podSecurityContext: + enabled: true + fsGroup: 1001 + ## MariaDB primary container security context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container + ## @param primary.containerSecurityContext.enabled MariaDB primary container securityContext + ## @param primary.containerSecurityContext.runAsUser User ID for the MariaDB primary container + ## @param primary.containerSecurityContext.runAsNonRoot Set Controller container's Security Context runAsNonRoot + ## + containerSecurityContext: + enabled: true + runAsUser: 1001 + runAsNonRoot: true + ## MariaDB primary container's resource requests and limits + ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ + ## We usually recommend not to specify default resources and to leave this as a conscious + ## choice for the user. This also increases chances charts run on environments with little + ## resources, such as Minikube. If you do want to specify resources, uncomment the following + ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. + ## @param primary.resources.limits The resources limits for MariaDB primary containers + ## @param primary.resources.requests The requested resources for MariaDB primary containers + ## + resources: + ## Example: + ## limits: + ## cpu: 100m + ## memory: 256Mi + ## + limits: {} + ## Examples: + ## requests: + ## cpu: 100m + ## memory: 256Mi + ## + requests: {} + ## Configure extra options for MariaDB primary containers' liveness, readiness and startup probes + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes) + ## @param primary.startupProbe.enabled Enable startupProbe + ## @param primary.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe + ## @param primary.startupProbe.periodSeconds Period seconds for startupProbe + ## @param primary.startupProbe.timeoutSeconds Timeout seconds for startupProbe + ## @param primary.startupProbe.failureThreshold Failure threshold for startupProbe + ## @param primary.startupProbe.successThreshold Success threshold for startupProbe + ## + startupProbe: + enabled: false + initialDelaySeconds: 120 + periodSeconds: 15 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + ## Configure extra options for liveness probe + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param primary.livenessProbe.enabled Enable livenessProbe + ## @param primary.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe + ## @param primary.livenessProbe.periodSeconds Period seconds for livenessProbe + ## @param primary.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + ## @param primary.livenessProbe.failureThreshold Failure threshold for livenessProbe + ## @param primary.livenessProbe.successThreshold Success threshold for livenessProbe + ## + livenessProbe: + enabled: true + initialDelaySeconds: 120 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 3 + successThreshold: 1 + ## @param primary.readinessProbe.enabled Enable readinessProbe + ## @param primary.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe + ## @param primary.readinessProbe.periodSeconds Period seconds for readinessProbe + ## @param primary.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe + ## @param primary.readinessProbe.failureThreshold Failure threshold for readinessProbe + ## @param primary.readinessProbe.successThreshold Success threshold for readinessProbe + ## + readinessProbe: + enabled: true + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 3 + successThreshold: 1 + ## @param primary.customStartupProbe Override default startup probe for MariaDB primary containers + ## + customStartupProbe: {} + ## @param primary.customLivenessProbe Override default liveness probe for MariaDB primary containers + ## + customLivenessProbe: {} + ## @param primary.customReadinessProbe Override default readiness probe for MariaDB primary containers + ## + customReadinessProbe: {} + ## @param primary.startupWaitOptions Override default builtin startup wait check options for MariaDB primary containers + ## `bitnami/mariadb` Docker image has built-in startup check mechanism, + ## which periodically checks if MariaDB service has started up and stops it + ## if all checks have failed after X tries. Use these to control these checks. + ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mariadb/pull/240 + ## Example (with default options): + ## startupWaitOptions: + ## retries: 300 + ## waitTime: 2 + ## + startupWaitOptions: {} + ## @param primary.extraFlags MariaDB primary additional command line flags + ## Can be used to specify command line flags, for example: + ## E.g. + ## extraFlags: "--max-connect-errors=1000 --max_connections=155" + ## + extraFlags: "" + ## @param primary.extraEnvVars Extra environment variables to be set on MariaDB primary containers + ## E.g. + ## extraEnvVars: + ## - name: TZ + ## value: "Europe/Paris" + ## + extraEnvVars: [] + ## @param primary.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for MariaDB primary containers + ## + extraEnvVarsCM: "" + ## @param primary.extraEnvVarsSecret Name of existing Secret containing extra env vars for MariaDB primary containers + ## + extraEnvVarsSecret: "" + ## Enable persistence using Persistent Volume Claims + ## ref: https://kubernetes.io/docs/user-guide/persistent-volumes/ + ## + persistence: + ## @param primary.persistence.enabled Enable persistence on MariaDB primary replicas using a `PersistentVolumeClaim`. If false, use emptyDir + ## + enabled: true + ## @param primary.persistence.existingClaim Name of an existing `PersistentVolumeClaim` for MariaDB primary replicas + ## NOTE: When it's set the rest of persistence parameters are ignored + ## + existingClaim: "" + ## @param primary.persistence.subPath Subdirectory of the volume to mount at + ## + subPath: "" + ## @param primary.persistence.storageClass MariaDB primary persistent volume storage Class + ## If defined, storageClassName: + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + ## + storageClass: "" + ## @param primary.persistence.annotations MariaDB primary persistent volume claim annotations + ## + annotations: {} + ## @param primary.persistence.accessModes MariaDB primary persistent volume access Modes + ## + accessModes: + - ReadWriteOnce + ## @param primary.persistence.size MariaDB primary persistent volume size + ## + size: 8Gi + ## @param primary.persistence.selector Selector to match an existing Persistent Volume + ## selector: + ## matchLabels: + ## app: my-app + ## + selector: {} + ## @param primary.extraVolumes Optionally specify extra list of additional volumes to the MariaDB Primary pod(s) + ## + extraVolumes: [] + ## @param primary.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the MariaDB Primary container(s) + ## + extraVolumeMounts: [] + ## @param primary.initContainers Add additional init containers for the MariaDB Primary pod(s) + ## + initContainers: [] + ## @param primary.sidecars Add additional sidecar containers for the MariaDB Primary pod(s) + ## + sidecars: [] + ## MariaDB Primary Service parameters + ## + service: + ## @param primary.service.type MariaDB Primary Kubernetes service type + ## + type: ClusterIP + ports: + ## @param primary.service.ports.mysql MariaDB Primary Kubernetes service port for MariaDB + ## + mysql: 3306 + ## @param primary.service.ports.metrics MariaDB Primary Kubernetes service port for metrics + ## + metrics: 9104 + ## @param primary.service.nodePorts.mysql MariaDB Primary Kubernetes service node port + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + ## + nodePorts: + mysql: "" + ## @param primary.service.clusterIP MariaDB Primary Kubernetes service clusterIP IP + ## + clusterIP: "" + ## @param primary.service.loadBalancerIP MariaDB Primary loadBalancerIP if service type is `LoadBalancer` + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer + ## + loadBalancerIP: "" + ## @param primary.service.externalTrafficPolicy Enable client source IP preservation + ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster + ## @param primary.service.loadBalancerSourceRanges Address that are allowed when MariaDB Primary service is LoadBalancer + ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service + ## E.g. + ## loadBalancerSourceRanges: + ## - 10.10.10.0/24 + ## + loadBalancerSourceRanges: [] + ## @param primary.service.extraPorts Extra ports to expose (normally used with the `sidecar` value) + ## + extraPorts: [] + ## @param primary.service.annotations Provide any additional annotations which may be required + ## + annotations: {} + ## @param primary.service.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP" + ## If "ClientIP", consecutive client requests will be directed to the same Pod + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + ## + sessionAffinity: None + ## @param primary.service.sessionAffinityConfig Additional settings for the sessionAffinity + ## sessionAffinityConfig: + ## clientIP: + ## timeoutSeconds: 300 + ## + sessionAffinityConfig: {} + ## MariaDB primary Pod Disruption Budget configuration + ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/ + ## + pdb: + ## @param primary.pdb.create Enable/disable a Pod Disruption Budget creation for MariaDB primary pods + ## + create: false + ## @param primary.pdb.minAvailable Minimum number/percentage of MariaDB primary pods that must still be available after the eviction + ## + minAvailable: 1 + ## @param primary.pdb.maxUnavailable Maximum number/percentage of MariaDB primary pods that can be unavailable after the eviction + ## + maxUnavailable: "" + ## @param primary.revisionHistoryLimit Maximum number of revisions that will be maintained in the StatefulSet + ## + revisionHistoryLimit: 10 + +## @section MariaDB Secondary parameters +## + +## Mariadb Secondary parameters +## +secondary: + ## @param secondary.name Name of the secondary database (eg secondary, slave, ...) + ## + name: secondary + ## @param secondary.replicaCount Number of MariaDB secondary replicas + ## + replicaCount: 1 + ## @param secondary.command Override default container command on MariaDB Secondary container(s) (useful when using custom images) + ## + command: [] + ## @param secondary.args Override default container args on MariaDB Secondary container(s) (useful when using custom images) + ## + args: [] + ## @param secondary.lifecycleHooks for the MariaDB Secondary container(s) to automate configuration before or after startup + ## + lifecycleHooks: {} + ## @param secondary.hostAliases Add deployment host aliases + ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ + ## + hostAliases: [] + ## @param secondary.configuration [string] MariaDB Secondary configuration to be injected as ConfigMap + ## ref: https://mysql.com/kb/en/mysql/configuring-mysql-with-mycnf/#example-of-configuration-file + ## + configuration: |- + [mysqld] + skip-name-resolve + explicit_defaults_for_timestamp + basedir=/opt/bitnami/mariadb + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + tmpdir=/opt/bitnami/mariadb/tmp + max_allowed_packet=16M + bind-address=0.0.0.0 + pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid + log-error=/opt/bitnami/mariadb/logs/mysqld.log + character-set-server=UTF8 + collation-server=utf8_general_ci + slow_query_log=0 + slow_query_log_file=/opt/bitnami/mariadb/logs/mysqld.log + long_query_time=10.0 + + [client] + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + default-character-set=UTF8 + + [manager] + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid + ## @param secondary.existingConfigmap Name of existing ConfigMap with MariaDB Secondary configuration. + ## NOTE: When it's set the 'configuration' parameter is ignored + ## + existingConfigmap: "" + ## @param secondary.updateStrategy.type MariaDB secondary statefulset strategy type + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies + ## + updateStrategy: + ## StrategyType + ## Can be set to RollingUpdate or OnDelete + ## + type: RollingUpdate + ## @param secondary.rollingUpdatePartition Partition update strategy for Mariadb Secondary statefulset + ## https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#partitions + ## + rollingUpdatePartition: "" + ## @param secondary.podAnnotations Additional pod annotations for MariaDB secondary pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + ## @param secondary.podLabels Extra labels for MariaDB secondary pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + ## + podLabels: {} + ## @param secondary.podAffinityPreset MariaDB secondary pod affinity preset. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAffinityPreset: "" + ## @param secondary.podAntiAffinityPreset MariaDB secondary pod anti-affinity preset. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard` + ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAntiAffinityPreset: soft + ## Mariadb Secondary node affinity preset + ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity + ## + nodeAffinityPreset: + ## @param secondary.nodeAffinityPreset.type MariaDB secondary node affinity preset type. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard` + ## + type: "" + ## @param secondary.nodeAffinityPreset.key MariaDB secondary node label key to match Ignored if `secondary.affinity` is set. + ## E.g. + ## key: "kubernetes.io/e2e-az-name" + ## + key: "" + ## @param secondary.nodeAffinityPreset.values MariaDB secondary node label values to match. Ignored if `secondary.affinity` is set. + ## E.g. + ## values: + ## - e2e-az1 + ## - e2e-az2 + ## + values: [] + ## @param secondary.affinity Affinity for MariaDB secondary pods assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## Note: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set + ## + affinity: {} + ## @param secondary.nodeSelector Node labels for MariaDB secondary pods assignment + ## Ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + ## @param secondary.tolerations Tolerations for MariaDB secondary pods assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + ## @param secondary.topologySpreadConstraints Topology Spread Constraints for MariaDB secondary pods assignment + ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ + ## E.g. + ## topologySpreadConstraints: + ## - maxSkew: 1 + ## topologyKey: topology.kubernetes.io/zone + ## whenUnsatisfiable: DoNotSchedule + ## + topologySpreadConstraints: [] + ## @param secondary.priorityClassName Priority class for MariaDB secondary pods assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/ + ## + priorityClassName: "" + ## @param secondary.runtimeClassName Runtime Class for MariaDB secondary pods + ## Ref: https://kubernetes.io/docs/concepts/containers/runtime-class/ + ## + runtimeClassName: "" + ## @param secondary.schedulerName Name of the k8s scheduler (other than default) + ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ + ## + schedulerName: "" + ## @param secondary.podManagementPolicy podManagementPolicy to manage scaling operation of MariaDB secondary pods + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-management-policies + ## + podManagementPolicy: "" + ## MariaDB secondary Pod security context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param secondary.podSecurityContext.enabled Enable security context for MariaDB secondary pods + ## @param secondary.podSecurityContext.fsGroup Group ID for the mounted volumes' filesystem + ## + podSecurityContext: + enabled: true + fsGroup: 1001 + ## MariaDB secondary container security context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container + ## @param secondary.containerSecurityContext.enabled MariaDB secondary container securityContext + ## @param secondary.containerSecurityContext.runAsUser User ID for the MariaDB secondary container + ## @param secondary.containerSecurityContext.runAsNonRoot Set Controller container's Security Context runAsNonRoot + ## + containerSecurityContext: + enabled: true + runAsUser: 1001 + runAsNonRoot: true + ## MariaDB secondary container's resource requests and limits + ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ + ## We usually recommend not to specify default resources and to leave this as a conscious + ## choice for the user. This also increases chances charts run on environments with little + ## resources, such as Minikube. If you do want to specify resources, uncomment the following + ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. + ## @param secondary.resources.limits The resources limits for MariaDB secondary containers + ## @param secondary.resources.requests The requested resources for MariaDB secondary containers + ## + resources: + ## Example: + ## limits: + ## cpu: 100m + ## memory: 256Mi + ## + limits: {} + ## Examples: + ## requests: + ## cpu: 100m + ## memory: 256Mi + ## + requests: {} + ## Configure extra options for MariaDB Secondary containers' liveness, readiness and startup probes + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes) + ## @param secondary.startupProbe.enabled Enable startupProbe + ## @param secondary.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe + ## @param secondary.startupProbe.periodSeconds Period seconds for startupProbe + ## @param secondary.startupProbe.timeoutSeconds Timeout seconds for startupProbe + ## @param secondary.startupProbe.failureThreshold Failure threshold for startupProbe + ## @param secondary.startupProbe.successThreshold Success threshold for startupProbe + ## + startupProbe: + enabled: false + initialDelaySeconds: 120 + periodSeconds: 15 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + ## Configure extra options for liveness probe + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param secondary.livenessProbe.enabled Enable livenessProbe + ## @param secondary.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe + ## @param secondary.livenessProbe.periodSeconds Period seconds for livenessProbe + ## @param secondary.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + ## @param secondary.livenessProbe.failureThreshold Failure threshold for livenessProbe + ## @param secondary.livenessProbe.successThreshold Success threshold for livenessProbe + ## + livenessProbe: + enabled: true + initialDelaySeconds: 120 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 3 + successThreshold: 1 + ## @param secondary.readinessProbe.enabled Enable readinessProbe + ## @param secondary.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe + ## @param secondary.readinessProbe.periodSeconds Period seconds for readinessProbe + ## @param secondary.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe + ## @param secondary.readinessProbe.failureThreshold Failure threshold for readinessProbe + ## @param secondary.readinessProbe.successThreshold Success threshold for readinessProbe + ## + readinessProbe: + enabled: true + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 3 + successThreshold: 1 + ## @param secondary.customStartupProbe Override default startup probe for MariaDB secondary containers + ## + customStartupProbe: {} + ## @param secondary.customLivenessProbe Override default liveness probe for MariaDB secondary containers + ## + customLivenessProbe: {} + ## @param secondary.customReadinessProbe Override default readiness probe for MariaDB secondary containers + ## + customReadinessProbe: {} + ## @param secondary.startupWaitOptions Override default builtin startup wait check options for MariaDB secondary containers + ## `bitnami/mariadb` Docker image has built-in startup check mechanism, + ## which periodically checks if MariaDB service has started up and stops it + ## if all checks have failed after X tries. Use these to control these checks. + ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mariadb/pull/240 + ## Example (with default options): + ## startupWaitOptions: + ## retries: 300 + ## waitTime: 2 + ## + startupWaitOptions: {} + ## @param secondary.extraFlags MariaDB secondary additional command line flags + ## Can be used to specify command line flags, for example: + ## E.g. + ## extraFlags: "--max-connect-errors=1000 --max_connections=155" + ## + extraFlags: "" + ## @param secondary.extraEnvVars Extra environment variables to be set on MariaDB secondary containers + ## E.g. + ## extraEnvVars: + ## - name: TZ + ## value: "Europe/Paris" + ## + extraEnvVars: [] + ## @param secondary.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for MariaDB secondary containers + ## + extraEnvVarsCM: "" + ## @param secondary.extraEnvVarsSecret Name of existing Secret containing extra env vars for MariaDB secondary containers + ## + extraEnvVarsSecret: "" + ## Enable persistence using Persistent Volume Claims + ## ref: https://kubernetes.io/docs/user-guide/persistent-volumes/ + ## + persistence: + ## @param secondary.persistence.enabled Enable persistence on MariaDB secondary replicas using a `PersistentVolumeClaim` + ## + enabled: true + ## @param secondary.persistence.subPath Subdirectory of the volume to mount at + ## + subPath: "" + ## @param secondary.persistence.storageClass MariaDB secondary persistent volume storage Class + ## If defined, storageClassName: + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + ## + storageClass: "" + ## @param secondary.persistence.annotations MariaDB secondary persistent volume claim annotations + ## + annotations: {} + ## @param secondary.persistence.accessModes MariaDB secondary persistent volume access Modes + ## + accessModes: + - ReadWriteOnce + ## @param secondary.persistence.size MariaDB secondary persistent volume size + ## + size: 8Gi + ## @param secondary.persistence.selector Selector to match an existing Persistent Volume + ## selector: + ## matchLabels: + ## app: my-app + ## + selector: {} + ## @param secondary.extraVolumes Optionally specify extra list of additional volumes to the MariaDB secondary pod(s) + ## + extraVolumes: [] + ## @param secondary.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the MariaDB secondary container(s) + ## + extraVolumeMounts: [] + ## @param secondary.initContainers Add additional init containers for the MariaDB secondary pod(s) + ## + initContainers: [] + ## @param secondary.sidecars Add additional sidecar containers for the MariaDB secondary pod(s) + ## + sidecars: [] + ## MariaDB Secondary Service parameters + ## + service: + ## @param secondary.service.type MariaDB secondary Kubernetes service type + ## + type: ClusterIP + ports: + ## @param secondary.service.ports.mysql MariaDB secondary Kubernetes service port for MariaDB + ## + mysql: 3306 + ## @param secondary.service.ports.metrics MariaDB secondary Kubernetes service port for metrics + ## + metrics: 9104 + ## @param secondary.service.nodePorts.mysql MariaDB secondary Kubernetes service node port + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + ## + nodePorts: + mysql: "" + ## @param secondary.service.clusterIP MariaDB secondary Kubernetes service clusterIP IP + ## e.g: + ## clusterIP: None + ## + clusterIP: "" + ## @param secondary.service.loadBalancerIP MariaDB secondary loadBalancerIP if service type is `LoadBalancer` + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer + ## + loadBalancerIP: "" + ## @param secondary.service.externalTrafficPolicy Enable client source IP preservation + ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster + ## @param secondary.service.loadBalancerSourceRanges Address that are allowed when MariaDB secondary service is LoadBalancer + ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service + ## E.g. + ## loadBalancerSourceRanges: + ## - 10.10.10.0/24 + ## + loadBalancerSourceRanges: [] + ## @param secondary.service.extraPorts Extra ports to expose (normally used with the `sidecar` value) + ## + extraPorts: [] + ## @param secondary.service.annotations Provide any additional annotations which may be required + ## + annotations: {} + ## @param secondary.service.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP" + ## If "ClientIP", consecutive client requests will be directed to the same Pod + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + ## + sessionAffinity: None + ## @param secondary.service.sessionAffinityConfig Additional settings for the sessionAffinity + ## sessionAffinityConfig: + ## clientIP: + ## timeoutSeconds: 300 + ## + sessionAffinityConfig: {} + ## MariaDB secondary Pod Disruption Budget configuration + ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/ + ## + pdb: + ## @param secondary.pdb.create Enable/disable a Pod Disruption Budget creation for MariaDB secondary pods + ## + create: false + ## @param secondary.pdb.minAvailable Minimum number/percentage of MariaDB secondary pods that should remain scheduled + ## + minAvailable: 1 + ## @param secondary.pdb.maxUnavailable Maximum number/percentage of MariaDB secondary pods that may be made unavailable + ## + maxUnavailable: "" + ## @param secondary.revisionHistoryLimit Maximum number of revisions that will be maintained in the StatefulSet + ## + revisionHistoryLimit: 10 + +## @section RBAC parameters +## + +## MariaDB pods ServiceAccount +## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ +## +serviceAccount: + ## @param serviceAccount.create Enable the creation of a ServiceAccount for MariaDB pods + ## + create: true + ## @param serviceAccount.name Name of the created ServiceAccount + ## If not set and create is true, a name is generated using the mariadb.fullname template + ## + name: "" + ## @param serviceAccount.annotations Annotations for MariaDB Service Account + ## + annotations: {} + ## @param serviceAccount.automountServiceAccountToken Automount service account token for the server service account + ## + automountServiceAccountToken: false +## Role Based Access +## ref: https://kubernetes.io/docs/admin/authorization/rbac/ +## +rbac: + ## @param rbac.create Whether to create and use RBAC resources or not + ## + create: false + +## @section Volume Permissions parameters +## + +## Init containers parameters: +## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section. +## +volumePermissions: + ## @param volumePermissions.enabled Enable init container that changes the owner and group of the persistent volume(s) mountpoint to `runAsUser:fsGroup` + ## + enabled: false + ## @param volumePermissions.image.registry Init container volume-permissions image registry + ## @param volumePermissions.image.repository Init container volume-permissions image repository + ## @param volumePermissions.image.tag Init container volume-permissions image tag (immutable tags are recommended) + ## @param volumePermissions.image.digest Init container volume-permissions image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag + ## @param volumePermissions.image.pullPolicy Init container volume-permissions image pull policy + ## @param volumePermissions.image.pullSecrets Specify docker-registry secret names as an array + ## + image: + registry: docker.io + repository: bitnami/bitnami-shell + tag: 11-debian-11-r61 + digest: "" + 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/ + ## Example: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + pullSecrets: [] + ## @param volumePermissions.resources.limits Init container volume-permissions resource limits + ## @param volumePermissions.resources.requests Init container volume-permissions resource requests + ## + resources: + limits: {} + requests: {} + +## @section Metrics parameters +## + +## Mysqld Prometheus exporter parameters +## +metrics: + ## @param metrics.enabled Start a side-car prometheus exporter + ## + enabled: false + ## @param metrics.image.registry Exporter image registry + ## @param metrics.image.repository Exporter image repository + ## @param metrics.image.tag Exporter image tag (immutable tags are recommended) + ## @param metrics.image.digest Exporter image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag + ## @param metrics.image.pullPolicy Exporter image pull policy + ## @param metrics.image.pullSecrets Specify docker-registry secret names as an array + ## + image: + registry: docker.io + repository: bitnami/mysqld-exporter + tag: 0.14.0-debian-11-r67 + digest: "" + 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/ + ## Example: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + pullSecrets: [] + ## @param metrics.annotations [object] Annotations for the Exporter pod + ## + annotations: + prometheus.io/scrape: "true" + prometheus.io/port: "9104" + ## @param metrics.extraArgs [object] Extra args to be passed to mysqld_exporter + ## ref: https://github.com/prometheus/mysqld_exporter/ + ## E.g. + ## - --collect.auto_increment.columns + ## - --collect.binlog_size + ## - --collect.engine_innodb_status + ## - --collect.engine_tokudb_status + ## - --collect.global_status + ## - --collect.global_variables + ## - --collect.info_schema.clientstats + ## - --collect.info_schema.innodb_metrics + ## - --collect.info_schema.innodb_tablespaces + ## - --collect.info_schema.innodb_cmp + ## - --collect.info_schema.innodb_cmpmem + ## - --collect.info_schema.processlist + ## - --collect.info_schema.processlist.min_time + ## - --collect.info_schema.query_response_time + ## - --collect.info_schema.tables + ## - --collect.info_schema.tables.databases + ## - --collect.info_schema.tablestats + ## - --collect.info_schema.userstats + ## - --collect.perf_schema.eventsstatements + ## - --collect.perf_schema.eventsstatements.digest_text_limit + ## - --collect.perf_schema.eventsstatements.limit + ## - --collect.perf_schema.eventsstatements.timelimit + ## - --collect.perf_schema.eventswaits + ## - --collect.perf_schema.file_events + ## - --collect.perf_schema.file_instances + ## - --collect.perf_schema.indexiowaits + ## - --collect.perf_schema.tableiowaits + ## - --collect.perf_schema.tablelocks + ## - --collect.perf_schema.replication_group_member_stats + ## - --collect.slave_status + ## - --collect.slave_hosts + ## - --collect.heartbeat + ## - --collect.heartbeat.database + ## - --collect.heartbeat.table + ## + extraArgs: + primary: [] + secondary: [] + ## @param metrics.extraVolumeMounts [object] Optionally specify extra list of additional volumeMounts for the MariaDB metrics container(s) + ## + extraVolumeMounts: + primary: [] + secondary: [] + ## MariaDB metrics container Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container + ## @param metrics.containerSecurityContext.enabled Enable security context for MariaDB metrics container + ## Example: + ## containerSecurityContext: + ## enabled: true + ## capabilities: + ## drop: ["NET_RAW"] + ## readOnlyRootFilesystem: true + ## + containerSecurityContext: + enabled: false + ## Mysqld Prometheus exporter resource requests and limits + ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ + ## We usually recommend not to specify default resources and to leave this as a conscious + ## choice for the user. This also increases chances charts run on environments with little + ## resources, such as Minikube. If you do want to specify resources, uncomment the following + ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. + ## @param metrics.resources.limits The resources limits for MariaDB prometheus exporter containers + ## @param metrics.resources.requests The requested resources for MariaDB prometheus exporter containers + ## + resources: + ## Example: + ## limits: + ## cpu: 100m + ## memory: 256Mi + ## + limits: {} + ## Examples: + ## requests: + ## cpu: 100m + ## memory: 256Mi + ## + requests: {} + ## Configure extra options for liveness probe + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param metrics.livenessProbe.enabled Enable livenessProbe + ## @param metrics.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe + ## @param metrics.livenessProbe.periodSeconds Period seconds for livenessProbe + ## @param metrics.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + ## @param metrics.livenessProbe.failureThreshold Failure threshold for livenessProbe + ## @param metrics.livenessProbe.successThreshold Success threshold for livenessProbe + ## + livenessProbe: + enabled: true + initialDelaySeconds: 120 + periodSeconds: 10 + timeoutSeconds: 1 + successThreshold: 1 + failureThreshold: 3 + ## Configure extra options for readiness probe + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param metrics.readinessProbe.enabled Enable readinessProbe + ## @param metrics.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe + ## @param metrics.readinessProbe.periodSeconds Period seconds for readinessProbe + ## @param metrics.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe + ## @param metrics.readinessProbe.failureThreshold Failure threshold for readinessProbe + ## @param metrics.readinessProbe.successThreshold Success threshold for readinessProbe + ## + readinessProbe: + enabled: true + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 1 + successThreshold: 1 + failureThreshold: 3 + ## Prometheus Service Monitor + ## ref: https://github.com/coreos/prometheus-operator + ## + serviceMonitor: + ## @param metrics.serviceMonitor.enabled Create ServiceMonitor Resource for scraping metrics using PrometheusOperator + ## + enabled: false + ## @param metrics.serviceMonitor.namespace Namespace which Prometheus is running in + ## + namespace: "" + ## @param metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in prometheus. + ## + jobLabel: "" + ## @param metrics.serviceMonitor.interval Interval at which metrics should be scraped + ## + interval: 30s + ## @param metrics.serviceMonitor.scrapeTimeout Specify the timeout after which the scrape is ended + ## e.g: + ## scrapeTimeout: 30s + ## + scrapeTimeout: "" + ## @param metrics.serviceMonitor.relabelings RelabelConfigs to apply to samples before scraping + ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig + ## + relabelings: [] + ## @param metrics.serviceMonitor.metricRelabelings MetricRelabelConfigs to apply to samples before ingestion + ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig + ## + metricRelabelings: [] + ## @param metrics.serviceMonitor.honorLabels honorLabels chooses the metric's labels on collisions with target labels + ## + honorLabels: false + ## @param metrics.serviceMonitor.selector ServiceMonitor selector labels + ## ref: https://github.com/bitnami/charts/tree/main/bitnami/prometheus-operator#prometheus-configuration + ## + ## selector: + ## prometheus: my-prometheus + ## + selector: {} + ## @param metrics.serviceMonitor.labels Extra labels for the ServiceMonitor + ## + labels: {} + ## Prometheus Operator PrometheusRule configuration + ## + prometheusRule: + ## @param metrics.prometheusRule.enabled if `true`, creates a Prometheus Operator PrometheusRule (also requires `metrics.enabled` to be `true` and `metrics.prometheusRule.rules`) + ## + enabled: false + ## @param metrics.prometheusRule.namespace Namespace for the PrometheusRule Resource (defaults to the Release Namespace) + ## + namespace: "" + ## @param metrics.prometheusRule.additionalLabels Additional labels that can be used so PrometheusRule will be discovered by Prometheus + ## + additionalLabels: {} + ## @param metrics.prometheusRule.rules Prometheus Rule definitions + ## - alert: MariaDB-Down + ## expr: absent(up{job="mariadb"} == 1) + ## for: 5m + ## labels: + ## severity: warning + ## service: mariadb + ## annotations: + ## message: 'MariaDB instance {{ `{{` }} $labels.instance {{ `}}` }} is down' + ## summary: MariaDB instance is down + ## + rules: [] + +## @section NetworkPolicy parameters +## + +## Add networkpolicies +## +networkPolicy: + ## @param networkPolicy.enabled Enable network policies + ## + enabled: false + ## @param networkPolicy.metrics.enabled Enable network policy for metrics (prometheus) + ## @param networkPolicy.metrics.namespaceSelector [object] Monitoring namespace selector labels. These labels will be used to identify the prometheus' namespace. + ## @param networkPolicy.metrics.podSelector [object] Monitoring pod selector labels. These labels will be used to identify the Prometheus pods. + ## + metrics: + enabled: false + ## e.g: + ## podSelector: + ## label: monitoring + ## + podSelector: {} + ## e.g: + ## namespaceSelector: + ## label: monitoring + ## + namespaceSelector: {} + ## @param networkPolicy.ingressRules.primaryAccessOnlyFrom.enabled Enable ingress rule that makes primary mariadb nodes only accessible from a particular origin. + ## @param networkPolicy.ingressRules.primaryAccessOnlyFrom.namespaceSelector [object] Namespace selector label that is allowed to access the primary node. This label will be used to identified the allowed namespace(s). + ## @param networkPolicy.ingressRules.primaryAccessOnlyFrom.podSelector [object] Pods selector label that is allowed to access the primary node. This label will be used to identified the allowed pod(s). + ## @param networkPolicy.ingressRules.primaryAccessOnlyFrom.customRules [object] Custom network policy for the primary node. + ## @param networkPolicy.ingressRules.secondaryAccessOnlyFrom.enabled Enable ingress rule that makes primary mariadb nodes only accessible from a particular origin. + ## @param networkPolicy.ingressRules.secondaryAccessOnlyFrom.namespaceSelector [object] Namespace selector label that is allowed to acces the secondary nodes. This label will be used to identified the allowed namespace(s). + ## @param networkPolicy.ingressRules.secondaryAccessOnlyFrom.podSelector [object] Pods selector label that is allowed to access the secondary nodes. This label will be used to identified the allowed pod(s). + ## @param networkPolicy.ingressRules.secondaryAccessOnlyFrom.customRules [object] Custom network policy for the secondary nodes. + ## + ingressRules: + ## Allow access to the primary node only from the indicated: + ## + primaryAccessOnlyFrom: + enabled: false + ## e.g: + ## namespaceSelector: + ## label: ingress + ## + namespaceSelector: {} + ## e.g: + ## podSelector: + ## label: access + ## + podSelector: {} + ## custom ingress rules + ## e.g: + ## customRules: + ## - from: + ## - namespaceSelector: + ## matchLabels: + ## label: example + ## + customRules: {} + + ## Allow access to the secondary node only from the indicated: + ## + secondaryAccessOnlyFrom: + enabled: false + ## e.g: + ## namespaceSelector: + ## label: ingress + ## + namespaceSelector: {} + ## e.g: + ## podSelector: + ## label: access + ## + podSelector: {} + ## custom ingress rules + ## e.g: + ## CustomRules: + ## - from: + ## - namespaceSelector: + ## matchLabels: + ## label: example + ## + customRules: {} + + ## @param networkPolicy.egressRules.denyConnectionsToExternal Enable egress rule that denies outgoing traffic outside the cluster, except for DNS (port 53). + ## @param networkPolicy.egressRules.customRules [object] Custom network policy rule + ## + egressRules: + # Deny connections to external. This is not compatible with an external database. + denyConnectionsToExternal: false + ## Additional custom egress rules + ## e.g: + ## customRules: + ## - to: + ## - namespaceSelector: + ## matchLabels: + ## label: example + ## + customRules: {} diff --git a/charts/limesurvey-library/icon.png b/charts/limesurvey-library/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..90014a72d36fd41a81dd199c435c1cab076b169e GIT binary patch literal 8080 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 N0!US+O3L)h{{feI7Rdkr literal 0 HcmV?d00001 diff --git a/charts/limesurvey-library/templates/NOTES.txt b/charts/limesurvey-library/templates/NOTES.txt new file mode 100644 index 0000000..6036a82 --- /dev/null +++ b/charts/limesurvey-library/templates/NOTES.txt @@ -0,0 +1,29 @@ +{{- if .Values.ingress.enabled }} +Your LimeSurvey instance is available at the following Ingress URL: +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} +Your LimeSurvey instance is exposed via NodePorts. +Get the application URL by running these commands: + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "limesurvey.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} +Your Limesurvey instance is exposed via LoadBalancers. +Get the application URL by running these commands: + + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "limesurvey.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "limesurvey.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} +Your LimeSurvey instance is not exposed. +Run the following commands to get access to your application: + + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "limesurvey.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:8080 +{{- end }} diff --git a/charts/limesurvey-library/templates/_helpers.tpl b/charts/limesurvey-library/templates/_helpers.tpl new file mode 100644 index 0000000..d428f9a --- /dev/null +++ b/charts/limesurvey-library/templates/_helpers.tpl @@ -0,0 +1,108 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "limesurvey.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "limesurvey.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{- define "limesurvey.mariadb.fullname" -}} +{{- printf "%s-mariadb" .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "limesurvey.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "limesurvey.labels" -}} +helm.sh/chart: {{ include "limesurvey.chart" . }} +{{ include "limesurvey.selectorLabels" . }} +app.kubernetes.io/version: {{ coalesce .Values.image.tag .Chart.AppVersion | quote }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "limesurvey.selectorLabels" -}} +app.kubernetes.io/name: {{ include "limesurvey.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "limesurvey.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "limesurvey.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} + +{{/* +Return the MariaDB Secret Name +*/}} +{{- define "limesurvey.databaseSecretName" -}} +{{- if .Values.mariadb.enabled }} + {{- if .Values.mariadb.auth.existingSecret -}} + {{- printf "%s" .Values.mariadb.auth.existingSecret -}} + {{- else -}} + {{- printf "%s" (include "limesurvey.mariadb.fullname" .) -}} + {{- end -}} +{{- else if .Values.externalDatabase.existingSecret -}} + {{- printf "%s" .Values.externalDatabase.existingSecret -}} +{{- else -}} + {{- printf "%s-db-secrets" (include "limesurvey.fullname" .) -}} +{{- end -}} +{{- end -}} + +{{/* +Return the LimeSurvey Secret Name +*/}} +{{- define "limesurvey.secretName" -}} +{{- if .Values.existingSecret }} + {{- printf "%s" .Values.existingSecret -}} +{{- else -}} + {{- printf "%s-app-secrets" (include "limesurvey.fullname" .) -}} +{{- end -}} +{{- end -}} + +{{/* +Return the full URL of the LimeSurvey image (including registry, image and tag) +*/}} +{{- define "limesurvey.imageUrl" }} +{{- $registry := .Values.global.imageRegistry | default .Values.image.registry }} +{{- $registry = trimSuffix "/" $registry }} +{{- $image := .Values.image.repository }} +{{- $tag := .Values.image.tag | default .Chart.AppVersion }} +{{- if eq $registry "" -}} + {{/* useful when you want to use a locally built image */}} + {{- printf "%s:%s" $image $tag -}} +{{- else -}} + {{- printf "%s/%s:%s" $registry $image $tag -}} +{{- end -}} +{{- end }} diff --git a/charts/limesurvey-library/templates/deployment.yaml b/charts/limesurvey-library/templates/deployment.yaml new file mode 100644 index 0000000..8bebdfa --- /dev/null +++ b/charts/limesurvey-library/templates/deployment.yaml @@ -0,0 +1,272 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "limesurvey.fullname" . }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "limesurvey.selectorLabels" . | nindent 6 }} + {{- if .Values.updateStrategy }} + strategy: {{- toYaml .Values.updateStrategy | nindent 4 }} + {{- end }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "limesurvey.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "limesurvey.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + initContainers: + - name: wait-for-db + image: {{ include "limesurvey.imageUrl" . }} + {{- if .Values.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.containerSecurityContext "enabled" | toYaml | nindent 12 }} + {{- end }} + imagePullPolicy: {{ .Values.image.pullPolicy }} + command: ['/bin/sh', '-c', + 'until nc -z -v -w30 "$DB_HOST" "$DB_PORT"; do + echo "Info: Waiting for database connection..."; + sleep 5; + done'] + resources: + {{- toYaml .Values.resources | nindent 12 }} + env: + - name: DB_HOST + {{- if eq .Values.mariadb.enabled true }} + value: {{ include "limesurvey.mariadb.fullname" . }} + {{- else }} + value: {{ .Values.externalDatabase.host }} + {{- end }} + - name: DB_PORT + {{- if eq .Values.mariadb.enabled true }} + value: {{ coalesce .Values.mariadb.primary.service.ports.mysql .Values.mariadb.primary.service.port 3306 | quote }} + {{- else }} + value: {{ coalesce .Values.externalDatabase.port 3306 | quote }} + {{- end }} + containers: + - name: limesurvey-apache + image: {{ include "limesurvey.imageUrl" . }} + imagePullPolicy: {{ .Values.image.pullPolicy }} + {{- if .Values.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.containerSecurityContext "enabled" | toYaml | nindent 12 }} + {{- end }} + ports: + - name: http + containerPort: 8080 + protocol: TCP + {{- if .Values.limesurvey.livenessProbe.enabled }} + livenessProbe: + httpGet: + path: / + port: http + {{- end }} + {{- if .Values.limesurvey.readinessProbe.enabled }} + readinessProbe: + httpGet: + path: / + port: http + {{- end }} + resources: + {{- toYaml .Values.resources | nindent 12 }} + volumeMounts: + - name: storage + mountPath: "/var/www/html/upload/" + {{- if .Values.persistence.subPath }} + subPath: {{ .Values.persistence.subPath }} + {{- end }} + {{- range .Values.extraVolumeMounts }} + - name: {{ .name }} + mountPath: {{ .mountPath }} + subPath: {{ .subPath | default "" }} + readOnly: {{ .readOnly }} + {{- end }} + {{- range .Values.extraEmptyDirMounts }} + - name: {{ .name }} + mountPath: {{ .mountPath }} + {{- end }} + env: + - name: DB_TYPE + {{- if eq .Values.mariadb.enabled true }} + value: "mysql" + {{- else }} + value: {{ .Values.externalDatabase.type }} + {{- end }} + - name: DB_HOST + {{- if eq .Values.mariadb.enabled true }} + value: {{ include "limesurvey.mariadb.fullname" . }} + {{- else }} + value: {{ .Values.externalDatabase.host }} + {{- end }} + - name: DB_PORT + {{- if eq .Values.mariadb.enabled true }} + value: {{ coalesce .Values.mariadb.primary.service.ports.mysql .Values.mariadb.primary.service.port 3306 | quote }} + {{- else }} + value: {{ coalesce .Values.externalDatabase.port 3306 | quote }} + {{- end }} + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "limesurvey.databaseSecretName" . }} + {{- if .Values.mariadb.enabled }} + key: mariadb-password + {{- else }} + key: {{ .Values.externalDatabase.existingSecretConfig.passwordField }} + {{- end }} + - name: DB_USERNAME + {{- if eq .Values.mariadb.enabled true }} + value: {{ .Values.mariadb.auth.username }} + {{- else }} + {{- if .Values.externalDatabase.existingSecretConfig.usernameField }} + valueFrom: + secretKeyRef: + name: {{ include "limesurvey.databaseSecretName" . }} + key: {{ .Values.externalDatabase.existingSecretConfig.usernameField }} + {{- else}} + value: {{ .Values.externalDatabase.username }} + {{- end }} + {{- end }} + - name: DB_NAME + {{- if eq .Values.mariadb.enabled true }} + value: {{ .Values.mariadb.auth.database }} + {{- else }} + {{- if .Values.externalDatabase.existingSecretConfig.databaseField }} + valueFrom: + secretKeyRef: + name: {{ include "limesurvey.databaseSecretName" . }} + key: {{ .Values.externalDatabase.existingSecretConfig.databaseField}} + {{- else }} + value: {{ .Values.externalDatabase.database }} + {{- end }} + {{- end }} + - name: DB_TABLE_PREFIX + value: {{ .Values.limesurvey.tablePrefix | quote }} + - name: DB_MYSQL_ENGINE + value: {{ .Values.limesurvey.mysqlEngine }} + - name: ADMIN_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "limesurvey.secretName" . }} + key: limesurvey-admin-password + - name: ADMIN_USER + value: {{ .Values.limesurvey.admin.user }} + - name: ADMIN_NAME + value: {{ .Values.limesurvey.admin.name }} + - name: ADMIN_EMAIL + value: {{ .Values.limesurvey.admin.email }} + - name: LISTEN_PORT + value: {{ .Values.limesurvey.listenPort | quote }} + {{- if .Values.limesurvey.baseUrl }} + - name: BASE_URL + value: {{ .Values.limesurvey.baseUrl }} + {{- end }} + {{- if .Values.limesurvey.publicUrl }} + - name: PUBLIC_URL + value: {{ .Values.limesurvey.publicUrl }} + {{- end }} + - name: URL_FORMAT + value: {{ .Values.limesurvey.urlFormat }} + {{- if eq .Values.limesurvey.tableSession true }} + - name: TABLE_SESSION + value: {{ .Values.limesurvey.tableSession }} + {{- end }} + {{- if .Values.limesurvey.showScriptName }} + - name: SHOW_SCRIPT_NAME + value: {{ .Values.limesurvey.showScriptName | quote }} + {{- end }} + {{- if (or .Values.limesurvey.encrypt.keypair .Values.limesurvey.existingSecret) }} + - name: ENCRYPT_KEYPAIR + valueFrom: + secretKeyRef: + name: {{ include "limesurvey.secretName" . }} + key: limesurvey-encrypt-keypair + {{- end }} + {{- if (or .Values.limesurvey.encrypt.publicKey .Values.limesurvey.existingSecret) }} + - name: ENCRYPT_PUBLIC_KEY + valueFrom: + secretKeyRef: + name: {{ include "limesurvey.secretName" . }} + key: limesurvey-encrypt-publickey + {{- end }} + {{- if (or .Values.limesurvey.encrypt.secretKey .Values.limesurvey.existingSecret) }} + - name: ENCRYPT_SECRET_KEY + valueFrom: + secretKeyRef: + name: {{ include "limesurvey.secretName" . }} + key: limesurvey-encrypt-secretkey + {{- end }} + {{- if (or .Values.limesurvey.encrypt.nonce .Values.limesurvey.existingSecret) }} + - name: ENCRYPT_NONCE + valueFrom: + secretKeyRef: + name: {{ include "limesurvey.secretName" . }} + key: limesurvey-encrypt-nonce + {{- end }} + {{- if (or .Values.limesurvey.encrypt.secretBoxKey .Values.limesurvey.existingSecret) }} + - name: ENCRYPT_SECRET_BOX_KEY + valueFrom: + secretKeyRef: + name: {{ include "limesurvey.secretName" . }} + key: limesurvey-encrypt-secretboxkey + {{- end }} + - name: DEBUG + value: "{{ .Values.limesurvey.debug }}" + - name: DEBUG_SQL + value: "{{ .Values.limesurvey.debugSql }}" + + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + volumes: + - name: storage + {{- if .Values.persistence.enabled }} + persistentVolumeClaim: + claimName: {{ .Values.persistence.existingClaim | default (include "limesurvey.fullname" .) }} + {{- else }} + emptyDir: {} + {{- end -}} + {{- range .Values.extraVolumeMounts }} + - name: {{ .name }} + {{- if .existingClaim }} + persistentVolumeClaim: + claimName: {{ .existingClaim }} + {{- else if .hostPath }} + hostPath: + path: {{ .hostPath }} + {{- else if .configMap }} + configMap: + name: {{ .configMap }} + {{- with .items }} + items: + {{- toYaml . | nindent 14 }} + {{- end }} + {{- else }} + emptyDir: {} + {{- end }} + {{- end }} + {{- range .Values.extraEmptyDirMounts }} + - name: {{ .name }} + emptyDir: {} + {{- end -}} diff --git a/charts/limesurvey-library/templates/hpa.yaml b/charts/limesurvey-library/templates/hpa.yaml new file mode 100644 index 0000000..86c133a --- /dev/null +++ b/charts/limesurvey-library/templates/hpa.yaml @@ -0,0 +1,28 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "limesurvey.fullname" . }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "limesurvey.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/charts/limesurvey-library/templates/ingress.yaml b/charts/limesurvey-library/templates/ingress.yaml new file mode 100644 index 0000000..40b2099 --- /dev/null +++ b/charts/limesurvey-library/templates/ingress.yaml @@ -0,0 +1,61 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "limesurvey.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/charts/limesurvey-library/templates/pvc.yaml b/charts/limesurvey-library/templates/pvc.yaml new file mode 100644 index 0000000..5cbdcc9 --- /dev/null +++ b/charts/limesurvey-library/templates/pvc.yaml @@ -0,0 +1,32 @@ +{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }} +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: {{ template "limesurvey.fullname" . }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} + {{- with .Values.persistence.annotations }} + annotations: +{{ toYaml . | indent 4 }} + {{- end }} + {{- with .Values.persistence.finalizers }} + finalizers: +{{ toYaml . | indent 4 }} + {{- end }} +spec: + accessModes: + {{- range .Values.persistence.accessModes }} + - {{ . | quote }} + {{- end }} + resources: + requests: + storage: {{ .Values.persistence.size | quote }} + {{- if .Values.persistence.storageClassName }} + storageClassName: {{ .Values.persistence.storageClassName }} + {{- end -}} + {{- with .Values.persistence.selectorLabels }} + selector: + matchLabels: +{{ toYaml . | indent 6 }} + {{- end }} +{{- end -}} diff --git a/charts/limesurvey-library/templates/secrets.yaml b/charts/limesurvey-library/templates/secrets.yaml new file mode 100644 index 0000000..edd9fe1 --- /dev/null +++ b/charts/limesurvey-library/templates/secrets.yaml @@ -0,0 +1,46 @@ +{{- if not .Values.limesurvey.existingSecret }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "limesurvey.secretName" . }} + namespace: {{ .Release.Namespace | quote }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} +type: Opaque +data: + {{- if .Values.limesurvey.admin.password }} + limesurvey-admin-password: {{ .Values.limesurvey.admin.password | b64enc | quote }} + {{- else }} + limesurvey-admin-password: {{ randAlphaNum 15 | b64enc | quote }} + {{- end }} + {{- if .Values.limesurvey.encrypt.keypair }} + limesurvey-encrypt-keypair: {{ .Values.limesurvey.encrypt.keypair | b64enc | quote }} + {{- end }} + {{- if .Values.limesurvey.encrypt.publicKey }} + limesurvey-encrypt-publickey: {{ .Values.limesurvey.encrypt.publicKey | b64enc | quote }} + {{- end }} + {{- if .Values.limesurvey.encrypt.secretKey }} + limesurvey-encrypt-secretkey: {{ .Values.limesurvey.encrypt.secretKey | b64enc | quote }} + {{- end }} + {{- if .Values.limesurvey.encrypt.nonce }} + limesurvey-encrypt-nonce: {{ .Values.limesurvey.encrypt.nonce | b64enc | quote }} + {{- end }} + {{- if .Values.limesurvey.encrypt.secretBoxKey }} + limesurvey-encrypt-secretboxkey: {{ .Values.limesurvey.encrypt.secretBoxKey | b64enc | quote }} + {{- end }} +{{- end }} + +{{- if not (or .Values.mariadb.enabled .Values.externalDatabase.existingSecret) }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "limesurvey.databaseSecretName" . }} + namespace: {{ .Release.Namespace | quote }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} +type: Opaque +data: + db-password: {{ required "externalDatabase.password is required" .Values.externalDatabase.password | b64enc | quote }} +{{- end }} diff --git a/charts/limesurvey-library/templates/service.yaml b/charts/limesurvey-library/templates/service.yaml new file mode 100644 index 0000000..1546fec --- /dev/null +++ b/charts/limesurvey-library/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "limesurvey.fullname" . }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "limesurvey.selectorLabels" . | nindent 4 }} diff --git a/charts/limesurvey-library/templates/serviceaccount.yaml b/charts/limesurvey-library/templates/serviceaccount.yaml new file mode 100644 index 0000000..53b708d --- /dev/null +++ b/charts/limesurvey-library/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "limesurvey.serviceAccountName" . }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/limesurvey-library/values.yaml b/charts/limesurvey-library/values.yaml new file mode 100644 index 0000000..32846c2 --- /dev/null +++ b/charts/limesurvey-library/values.yaml @@ -0,0 +1,201 @@ +# Default values for LimeSurvey. + +global: + imageRegistry: "" + +image: + registry: docker.io + repository: martialblog/limesurvey + # Specify a imagePullPolicy + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion + tag: null + +# Optionally specify an array of imagePullSecrets +# Secrets must be manually created in the namespace +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + annotations: {} + name: "" + +## MariaDB chart configuration +mariadb: + # Deploy a MariaDB server to satisfy the database requirements + enabled: false + # for all possible configuration values, see: + # https://github.com/bitnami/charts/blob/master/bitnami/mariadb/values.yaml + auth: + # MariaDB root password + rootPassword: "" + # MariaDB custom database + database: limesurvey + # MariaDB custom user name + username: limesurvey + # MariaDB custom user password + password: null + +## Use an externally provisioned database instance +## Ignored when mariadb.enabled is set to true +externalDatabase: + # Type of external database ("mysql" or "pgsql") + type: mysql + # External Database server host + host: mariadb.example.com + # External Database server port + port: 3306 + # External Database username (use existingSecretConfig.usernameField to load from secret) + username: limesurvey + # External Database user password + # (ignored when existingSecret is set, use existingSecretConfig.passwordField to change key) + password: null + # External Database database name (use existingSecretConfig.databaseField to load from secret) + database: limesurvey + # Use an existing secret for retrieving the database password. + # The secret must contain the field "db-password" (field name configurable via existingSecretConfig.passwordField) + existingSecret: null + existingSecretConfig: + passwordField: db-password + usernameField: null + databaseField: null + +# Limesurvey Application configuration +limesurvey: + # LimeSurvey initial Administrator Account + admin: + user: admin + password: null + name: Administrator + email: admin@example.com + # LimeSurvey permits the encryption of personal data + # These values will be created as secret + # https://manual.limesurvey.org/Data_encryption + # Not required for LimeSurvey 3 + encrypt: + keypair: "" + publicKey: "" + secretKey: "" + nonce: "" + # Create with: php -r "var_dump(sodium_bin2hex(sodium_crypto_secretbox_keygen()));" + secretBoxKey: "" + existingSecret: null + listenPort: 8080 + publicUrl: "" + baseUrl: "" + urlFormat: "path" + showScriptName: "" + # Database table prefix; set this to a single whitespace if you don't want a table prefix. + tablePrefix: "lime_" + # Enable table sessions (Storing sessions in the database) + tableSession: false + # LimeSurvey Debug level (0, 1, 2) + debug: 0 + # LimeSurvey SQL Debug level (0, 1, 2) + debugSql: 0 + # Value should be either MyISAM or InnoDB + mysqlEngine: MyISAM + # Probes, disable them when you enable global ssl enforcement, because they won't work with the redirect to https + livenessProbe: + enabled: true + readinessProbe: + enabled: true + +## Enable persistence using Persistent Volume Claims +## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ +## Used for LimeSurvey Uploads +persistence: + # Enable persistence with PVC. If false, uses emptyDir instead. + enabled: true + storageClassName: null + accessModes: + - ReadWriteOnce + size: 5Gi + annotations: {} + finalizers: + - kubernetes.io/pvc-protection + selectorLabels: {} + subPath: "" + existingClaim: null + +## This allows you to mount additional volumes +## into the Limesurvey container +extraVolumeMounts: [] +# - name: extra-volume-0 +# mountPath: /mnt/volume0 +# readOnly: true +# existingClaim: volume-claim +# - name: extra-volume-1 +# mountPath: /mnt/volume1 +# readOnly: true +# hostPath: /usr/shared/ +# - name: extra-volume-configmap +# configMap: limesurvey +# items: +# - key: config.php +# path: application/config/config.php + +## This allows you to mount additional "emptyDirs" +## into the Limesurvey container +extraEmptyDirMounts: [] +# - name: extra-empty-dir +# mountPath: /var/lib/foobar + +## Number of LimeSurvey replicas to deploy +## Multiple replicas may require table sessions to be enabled +replicaCount: 1 + +service: + type: ClusterIP + port: 80 + +ingress: + enabled: false + className: "" + annotations: {} + hosts: + - host: limesurvey.local + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + +resources: + limits: {} + requests: + memory: 512Mi + cpu: 300m + +## Deployment strategy type and parameters +## Set it to `Recreate` if you use a PV that cannot be mounted on multiple pods +updateStrategy: + type: RollingUpdate + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 11 + targetCPUUtilizationPercentage: 80 + +containerSecurityContext: + enabled: true + allowPrivilegeEscalation: false + +nodeSelector: {} + +tolerations: [] + +affinity: {} + +podAnnotations: {} + +## Specify privileges and access control settings +## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ +## 33 is the www-data user in Debian-based images +podSecurityContext: + runAsUser: 33 + runAsGroup: 33 + fsGroup: 33 diff --git a/charts/limesurvey-martial/.helmignore b/charts/limesurvey-martial/.helmignore new file mode 100644 index 0000000..faeb926 --- /dev/null +++ b/charts/limesurvey-martial/.helmignore @@ -0,0 +1,24 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +tests/ diff --git a/charts/limesurvey-martial/Chart.lock b/charts/limesurvey-martial/Chart.lock new file mode 100644 index 0000000..4f6acb8 --- /dev/null +++ b/charts/limesurvey-martial/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: mariadb + repository: https://charts.bitnami.com/bitnami + version: 11.5.7 +digest: sha256:4254008103034bb3ed9b3816a071a1aed1aacc049f9f993e56111fd82a574c3a +generated: "2024-04-24T17:16:59.0121179+02:00" diff --git a/charts/limesurvey-martial/Chart.yaml b/charts/limesurvey-martial/Chart.yaml new file mode 100644 index 0000000..efc297d --- /dev/null +++ b/charts/limesurvey-martial/Chart.yaml @@ -0,0 +1,19 @@ +apiVersion: v2 +appVersion: 5-apache +dependencies: +- condition: mariadb.enabled + name: mariadb + repository: https://charts.bitnami.com/bitnami + version: 11.x +description: Limesurvey is the number one open-source survey software. +icon: https://raw.githubusercontent.com/martialblog/helm-charts/master/limesurvey/icon.png +maintainers: +- email: markus@martialblog.de + name: martialblog +name: limesurvey-martial +sources: +- https://github.com/martialblog/helm-charts +- https://github.com/martialblog/docker-limesurvey/ +- https://limesurvey.org/ +type: application +version: 0.8.3 \ No newline at end of file diff --git a/charts/limesurvey-martial/README.md b/charts/limesurvey-martial/README.md new file mode 100644 index 0000000..814e275 --- /dev/null +++ b/charts/limesurvey-martial/README.md @@ -0,0 +1,181 @@ +# LimeSurvey + +[LimeSurvey](https://limesurvey.org/) is the number one open-source survey software. + +## TL;DR + +```console +helm repo add martialblog https://martialblog.github.io/helm-charts +helm repo update + +helm install my-release \ + --set mariadb.enabled=true \ + --set mariadb.auth.rootPassword=CHANGE-ME \ + --set mariadb.auth.password=CHANGE-ME \ + martialblog/limesurvey +``` + +## Introduction + +This chart bootstraps LimeSurvey deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. + +It also packages the [Bitnami MariaDB chart](https://artifacthub.io/packages/helm/bitnami/mariadb) which is required for bootstrapping a MariaDB deployment for the database requirements of the application. You can also provide your own database instance. + +## Prerequisites + +- Kubernetes 1.13+ +- Helm 3+ +- PV provisioner support in the underlying infrastructure + +## Parameters + +### Global parameters + +| Name | Description | Value | +| ------------------------- | ----------------------------------------------- | ----- | +| `global.imageRegistry` | Global Docker image registry | `nil` | + +### LimeSurvey Image parameters + +| Name | Description | Value | +| ------------------- | ---------------------------------------------------- | --------------------- | +| `image.registry` | LimeSurvey image registry | `docker.io` | +| `image.repository` | LimeSurvey image repository | `martialblog/limesurvey` | +| `image.tag` | LimeSurvey image tag (immutable tags are recommended) | `5-apache` | +| `image.pullPolicy` | LimeSurvey image pull policy | `IfNotPresent` | +| `image.pullSecrets` | LimeSurvey image pull secrets | `[]` | + +### LimeSurvey Configuration parameters + +| Name | Description | Value | +| -------------------------------------- | ----------------------------------------------- | ------------------ | +| `limesurvey.admin.user` | LimeSurvey initial Admin Username | `admin` | +| `limesurvey.admin.password` | LimeSurvey initial Admin Password | `nil` | +| `limesurvey.admin.name` | LimeSurvey initial Admin Full Name | `Administrator` | +| `limesurvey.admin.email` | LimeSurvey initial Admin Email | `admin@example.com` | +| `limesurvey.listenPort` | LimeSurvey Container port for webserver | `8080` | +| `limesurvey.publicUrl` | LimeSurvey Public URL for public scripts | `nil` | +| `limesurvey.baseUrl` | LimeSurvey Application Base URL | `nil` | +| `limesurvey.mysqlEngine` | MySQL engine used for survey tables (MyISAM or InnoDB) | `MyISAM` | +| `limesurvey.urlFormat` | LimeSurvey URL Format (path|get) | `nil` | +| `limesurvey.showScriptName` | LimeSurvey Script name in URL (true|false) | `true` | +| `limesurvey.tablePrefix` | LimeSurvey Database table prefix; set this to a single whitespace if you don't want a table prefix. | `lime_` | +| `limesurvey.tableSession` | LimeSurvey Table sessions; For storing sessions in the database | `false` | +| `limesurvey.debug` | LimeSurvey Debug level (0, 1, 2) | `0` | +| `limesurvey.debugSql` | LimeSurvey SQL Debug level (0, 1, 2) | `0` | +| `limesurvey.encrypt.keypair` | LimeSurvey Data encryption keypair | `nil` | +| `limesurvey.encrypt.publicKey` | LimeSurvey Data encryption public key | `nil` | +| `limesurvey.encrypt.secretKey` | LimeSurvey Data encryption secret key | `nil` | +| `limesurvey.encrypt.nonce` | LimeSurvey Data encryption nonce | `nil` | +| `limesurvey.encrypt.secretBoxKey` | LimeSurvey Data encryption secret box key | `nil` | + +### Persistence Parameters + +| Name | Description | Value | +| --------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------- | +| `persistence.enabled` | Enable persistence using Persistent Volume Claims | `true` | +| `persistence.accessModes` | Persistent Volume access modes | `[ReadWriteOnce]` | +| `persistence.size` | Persistent Volume size | `5Gi` | +| `persistence.storageClassName` | Persistent Volume storage class name | `nil` | +| `persistence.subPath` | Persistent Volume sub path | `nil` | +| `persistence.finalizers` | Persistent Volume finalizers | `[kubernetes.io/pvc-protection]` | +| `persistence.selectorLabels` | Persistent Volume selector labels | `{}` | +| `persistence.annotations` | persistent volume claim annotations | `{}` | +| `persistence.existingClaim` | The name of an existing PVC to use for persistence | `nil` | + +### Traffic Exposure Parameters + +| Name | Description | Value | +| ------------------------- | ----------------------------------------------- | ----- | +| `service.type` | LimeSurvey service type | `ClusterIP` | +| `service.port` | LimeSurvey service port | `80` | +| `ingress.enabled` | Enable ingress record generation for LimeSurvey | `false` | +| `ingress.className` | IngressClass that will be be used to implement the Ingress | `""` | +| `ingress.hosts` | An array with hosts for the Ingress | `limesurvey.local` | +| `ingress.annotations` | Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations. | `{}` | +| `ingress.tls` | Enable TLS configuration for the host defined at `ingress.hostname` parameter | `false` | + +### Other parameters + +| Name | Description | Value | +| ------------------------- | ------------------------------------------------ | ----- | +| `imagePullSecrets` | Docker registry secret names as an array | `[]` | +| `nameOverride` | String to override the Chart Name | `nil` | +| `fullnameOverride` | String to fully override the Chart Name | `nil` | +| `extraVolumeMounts` | Additional volumes as an array | `[]` | +| `extraEmptyDirMounts` | Additional emptyDir volumes as an array | `[]` | +| `nodeSelector` | Node labels for pod assignment | `{}` | +| `tolerations` | Tolerations for pod assignment | `{}` | +| `affinity` | Affinity for pod assignment | `{}` | +| `podAnnotations` | Annotations for LimeSurvey pods | `[]` | +| `updateStrategy.type` | Deployment strategy type | `RollingUpdate` | +| `updateStrategy.rollingUpdate` | Deployment rolling update configuration parameters | `{}` | +| `replicaCount` | Number of LimeSurvey replicas to deploy | `1` | +| `autoscaling.enabled` | Enable Horizontal POD autoscaling for LimeSurvey | `false` | +| `autoscaling.minReplicas` | Minimum number of LimeSurvey replicas | `1` | +| `autoscaling.maxReplicas` | Maximum number of LimeSurvey replicas | `11` | +| `autoscaling.targetCPUUtilizationPercentage` | Target CPU utilization percentage | `80` | +| `podSecurityContext.fsGroup` | Set LimeSurvey pod's Security Context fsGroup | `33` | +| `podSecurityContext.runAsUser` | Set LimeSurvey pod's Security Context runAsUser | `33` | +| `podSecurityContext.runAsGroup` | Set LimeSurvey pod's Security Context runAsGroup | `33` | +| `containerSecurityContext.enabled` | Enable LimeSurvey containers' Security Context | `true` | +| `containerSecurityContext.allowPrivilegeEscalation` | Default LimeSurvey containers' Security Context | `true` | + +### Database Parameters + +LimeSurvey requires a [MySQL- or PostgreSQL-compatible database](https://manual.limesurvey.org/Installation_-_LimeSurvey_CE#Create_a_database_user). + +You can either provide your own: +```yaml +externalDatabase: + host: hostname.example + database: limesurvey-db + username: limesurvey + password: "your-super-secret-password" +``` + +or you can let the Helm chart provision one for you (based on [Bitnami MariaDB Helm chart](https://artifacthub.io/packages/helm/bitnami/mariadb)): +```yaml +mariadb: + enabled: true + auth: + rootPassword: "please-change-me" + database: limesurvey + username: limesurvey + password: "please-change-me" +``` + +In both cases the application will automatically be configured to use these credentials. +Please refer to the [values.yaml](./values.yaml) for all possible configuration values. + +## Configuration and installation details + +### LimeSurvey Administrator Password + +If the initial Admin Password `limesurvey.admin.password` is not provided it will be set to a random string. You can extract the password from the Secret: + +```bash +kubectl get secrets --template={{.data.limesurvey-admin-password}} | base64 -d +``` + +## Upgrading + +### To 0.6.0 + +This release bumps the Bitnami MariaDB to 10.6. Follow the official instructions [official instructions](https://mariadb.com/kb/en/upgrading-from-mariadb-105-to-mariadb-106/). + +## Testing + +This Helm chart is tested with [helm unittest](https://github.com/quintush/helm-unittest) ([test format spec](https://github.com/quintush/helm-unittest/blob/master/DOCUMENT.md)). +You can find the test specifications in the `./tests/` directory. +Tests are automatically run in CI. + +To run the tests locally, use the following command: + +``` +# Required for pulling the MariaDB chart +helm repo add bitnami https://charts.bitnami.com/bitnami +helm dependency build + +podman run --rm -v "${PWD}:/apps" docker.io/quintush/helm-unittest:3.7.1-0.2.8 --helm3 . +```` diff --git a/charts/limesurvey-martial/charts/mariadb-11.5.7.tgz b/charts/limesurvey-martial/charts/mariadb-11.5.7.tgz new file mode 100644 index 0000000000000000000000000000000000000000..2a580e30827148932a55c18fb72b21006a550491 GIT binary patch literal 45541 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 literal 0 HcmV?d00001 diff --git a/charts/limesurvey-martial/charts/mariadb/.helmignore b/charts/limesurvey-martial/charts/mariadb/.helmignore new file mode 100644 index 0000000..f0c1319 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/charts/limesurvey-martial/charts/mariadb/Chart.lock b/charts/limesurvey-martial/charts/mariadb/Chart.lock new file mode 100644 index 0000000..5d7370a --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://charts.bitnami.com/bitnami + version: 2.2.2 +digest: sha256:49ca75cf23ba5eb7df4becef52580f98c8bd8194eb80368b9d7b875f6eefa8e5 +generated: "2022-12-15T08:09:23.256191892Z" diff --git a/charts/limesurvey-martial/charts/mariadb/Chart.yaml b/charts/limesurvey-martial/charts/mariadb/Chart.yaml new file mode 100644 index 0000000..6028225 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/Chart.yaml @@ -0,0 +1,30 @@ +annotations: + category: Database +apiVersion: v2 +appVersion: 10.6.11 +dependencies: +- name: common + repository: https://charts.bitnami.com/bitnami + tags: + - bitnami-common + version: 2.x.x +description: MariaDB is an open source, community-developed SQL database server that + is widely in use around the world due to its enterprise features, flexibility, and + collaboration with leading tech firms. +home: https://github.com/bitnami/charts/tree/main/bitnami/mariadb +icon: https://bitnami.com/assets/stacks/mariadb/img/mariadb-stack-220x234.png +keywords: +- mariadb +- mysql +- database +- sql +- prometheus +maintainers: +- name: Bitnami + url: https://github.com/bitnami/charts +name: mariadb +sources: +- https://github.com/bitnami/containers/tree/main/bitnami/mariadb +- https://github.com/prometheus/mysqld_exporter +- https://mariadb.org +version: 11.4.2 diff --git a/charts/limesurvey-martial/charts/mariadb/README.md b/charts/limesurvey-martial/charts/mariadb/README.md new file mode 100644 index 0000000..3e46799 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/README.md @@ -0,0 +1,559 @@ + + +# MariaDB packaged by Bitnami + +MariaDB is an open source, community-developed SQL database server that is widely in use around the world due to its enterprise features, flexibility, and collaboration with leading tech firms. + +[Overview of MariaDB](https://mariadb.org/) + +Trademarks: This software listing is packaged by Bitnami. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement. + +## TL;DR + +```bash +$ helm repo add my-repo https://charts.bitnami.com/bitnami +$ helm install my-release my-repo/mariadb +``` + +## Introduction + +This chart bootstraps a [MariaDB](https://github.com/bitnami/containers/tree/main/bitnami/mariadb) replication cluster deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. + +MariaDB is developed as open source software and as a relational database it provides an SQL interface for accessing data. The latest versions of MariaDB also include GIS and JSON features. + +Bitnami charts can be used with [Kubeapps](https://kubeapps.dev/) for deployment and management of Helm Charts in clusters. + +## Prerequisites + +- Kubernetes 1.19+ +- Helm 3.2.0+ +- PV provisioner support in the underlying infrastructure + +## Installing the Chart + +To install the chart with the release name `my-release`: + +```bash +$ helm install my-release my-repo/mariadb +``` + +The command deploys MariaDB on the Kubernetes cluster in the default configuration. The [Parameters](#parameters) section lists the parameters that can be configured during installation. + +> **Tip**: List all releases using `helm list` + +## Uninstalling the Chart + +To uninstall/delete the `my-release` deployment: + +```bash +$ helm delete my-release +``` + +The command removes all the Kubernetes components associated with the chart and deletes the release. + +## Parameters + +### Global parameters + +| Name | Description | Value | +| ------------------------- | ----------------------------------------------- | ----- | +| `global.imageRegistry` | Global Docker Image registry | `""` | +| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` | +| `global.storageClass` | Global storage class for dynamic provisioning | `""` | + + +### Common parameters + +| Name | Description | Value | +| ------------------------ | --------------------------------------------------------------------------------------- | --------------- | +| `kubeVersion` | Force target Kubernetes version (using Helm capabilities if not set) | `""` | +| `nameOverride` | String to partially override mariadb.fullname | `""` | +| `fullnameOverride` | String to fully override mariadb.fullname | `""` | +| `clusterDomain` | Default Kubernetes cluster domain | `cluster.local` | +| `commonAnnotations` | Common annotations to add to all MariaDB resources (sub-charts are not considered) | `{}` | +| `commonLabels` | Common labels to add to all MariaDB resources (sub-charts are not considered) | `{}` | +| `schedulerName` | Name of the scheduler (other than default) to dispatch pods | `""` | +| `runtimeClassName` | Name of the Runtime Class for all MariaDB pods | `""` | +| `extraDeploy` | Array of extra objects to deploy with the release (evaluated as a template) | `[]` | +| `diagnosticMode.enabled` | Enable diagnostic mode (all probes will be disabled and the command will be overridden) | `false` | +| `diagnosticMode.command` | Command to override all containers in the deployment | `["sleep"]` | +| `diagnosticMode.args` | Args to override all containers in the deployment | `["infinity"]` | + + +### MariaDB common parameters + +| Name | Description | Value | +| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | +| `image.registry` | MariaDB image registry | `docker.io` | +| `image.repository` | MariaDB image repository | `bitnami/mariadb` | +| `image.tag` | MariaDB image tag (immutable tags are recommended) | `10.6.11-debian-11-r12` | +| `image.digest` | MariaDB image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `""` | +| `image.pullPolicy` | MariaDB image pull policy | `IfNotPresent` | +| `image.pullSecrets` | Specify docker-registry secret names as an array | `[]` | +| `image.debug` | Specify if debug logs should be enabled | `false` | +| `architecture` | MariaDB architecture (`standalone` or `replication`) | `standalone` | +| `auth.rootPassword` | Password for the `root` user. Ignored if existing secret is provided. | `""` | +| `auth.database` | Name for a custom database to create | `my_database` | +| `auth.username` | Name for a custom user to create | `""` | +| `auth.password` | Password for the new user. Ignored if existing secret is provided | `""` | +| `auth.replicationUser` | MariaDB replication user | `replicator` | +| `auth.replicationPassword` | MariaDB replication user password. Ignored if existing secret is provided | `""` | +| `auth.existingSecret` | Use existing secret for password details (`auth.rootPassword`, `auth.password`, `auth.replicationPassword` will be ignored and picked up from this secret). The secret has to contain the keys `mariadb-root-password`, `mariadb-replication-password` and `mariadb-password` | `""` | +| `auth.forcePassword` | Force users to specify required passwords | `false` | +| `auth.usePasswordFiles` | Mount credentials as files instead of using environment variables | `false` | +| `auth.customPasswordFiles` | Use custom password files when `auth.usePasswordFiles` is set to `true`. Define path for keys `root` and `user`, also define `replicator` if `architecture` is set to `replication` | `{}` | +| `initdbScripts` | Dictionary of initdb scripts | `{}` | +| `initdbScriptsConfigMap` | ConfigMap with the initdb scripts (Note: Overrides `initdbScripts`) | `""` | + + +### MariaDB Primary parameters + +| Name | Description | Value | +| ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ------------------- | +| `primary.name` | Name of the primary database (eg primary, master, leader, ...) | `primary` | +| `primary.command` | Override default container command on MariaDB Primary container(s) (useful when using custom images) | `[]` | +| `primary.args` | Override default container args on MariaDB Primary container(s) (useful when using custom images) | `[]` | +| `primary.lifecycleHooks` | for the MariaDB Primary container(s) to automate configuration before or after startup | `{}` | +| `primary.hostAliases` | Add deployment host aliases | `[]` | +| `primary.configuration` | MariaDB Primary configuration to be injected as ConfigMap | `""` | +| `primary.existingConfigmap` | Name of existing ConfigMap with MariaDB Primary configuration. | `""` | +| `primary.updateStrategy.type` | MariaDB primary statefulset strategy type | `RollingUpdate` | +| `primary.rollingUpdatePartition` | Partition update strategy for Mariadb Primary statefulset | `""` | +| `primary.podAnnotations` | Additional pod annotations for MariaDB primary pods | `{}` | +| `primary.podLabels` | Extra labels for MariaDB primary pods | `{}` | +| `primary.podAffinityPreset` | MariaDB primary pod affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `primary.podAntiAffinityPreset` | MariaDB primary pod anti-affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` | `soft` | +| `primary.nodeAffinityPreset.type` | MariaDB primary node affinity preset type. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `primary.nodeAffinityPreset.key` | MariaDB primary node label key to match Ignored if `primary.affinity` is set. | `""` | +| `primary.nodeAffinityPreset.values` | MariaDB primary node label values to match. Ignored if `primary.affinity` is set. | `[]` | +| `primary.affinity` | Affinity for MariaDB primary pods assignment | `{}` | +| `primary.nodeSelector` | Node labels for MariaDB primary pods assignment | `{}` | +| `primary.tolerations` | Tolerations for MariaDB primary pods assignment | `[]` | +| `primary.schedulerName` | Name of the k8s scheduler (other than default) | `""` | +| `primary.podManagementPolicy` | podManagementPolicy to manage scaling operation of MariaDB primary pods | `""` | +| `primary.topologySpreadConstraints` | Topology Spread Constraints for MariaDB primary pods assignment | `[]` | +| `primary.priorityClassName` | Priority class for MariaDB primary pods assignment | `""` | +| `primary.runtimeClassName` | Runtime Class for MariaDB primary pods | `""` | +| `primary.podSecurityContext.enabled` | Enable security context for MariaDB primary pods | `true` | +| `primary.podSecurityContext.fsGroup` | Group ID for the mounted volumes' filesystem | `1001` | +| `primary.containerSecurityContext.enabled` | MariaDB primary container securityContext | `true` | +| `primary.containerSecurityContext.runAsUser` | User ID for the MariaDB primary container | `1001` | +| `primary.containerSecurityContext.runAsNonRoot` | Set Controller container's Security Context runAsNonRoot | `true` | +| `primary.resources.limits` | The resources limits for MariaDB primary containers | `{}` | +| `primary.resources.requests` | The requested resources for MariaDB primary containers | `{}` | +| `primary.startupProbe.enabled` | Enable startupProbe | `false` | +| `primary.startupProbe.initialDelaySeconds` | Initial delay seconds for startupProbe | `120` | +| `primary.startupProbe.periodSeconds` | Period seconds for startupProbe | `15` | +| `primary.startupProbe.timeoutSeconds` | Timeout seconds for startupProbe | `5` | +| `primary.startupProbe.failureThreshold` | Failure threshold for startupProbe | `10` | +| `primary.startupProbe.successThreshold` | Success threshold for startupProbe | `1` | +| `primary.livenessProbe.enabled` | Enable livenessProbe | `true` | +| `primary.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `120` | +| `primary.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | +| `primary.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `1` | +| `primary.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | +| `primary.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `primary.readinessProbe.enabled` | Enable readinessProbe | `true` | +| `primary.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `30` | +| `primary.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `primary.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `1` | +| `primary.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `3` | +| `primary.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `primary.customStartupProbe` | Override default startup probe for MariaDB primary containers | `{}` | +| `primary.customLivenessProbe` | Override default liveness probe for MariaDB primary containers | `{}` | +| `primary.customReadinessProbe` | Override default readiness probe for MariaDB primary containers | `{}` | +| `primary.startupWaitOptions` | Override default builtin startup wait check options for MariaDB primary containers | `{}` | +| `primary.extraFlags` | MariaDB primary additional command line flags | `""` | +| `primary.extraEnvVars` | Extra environment variables to be set on MariaDB primary containers | `[]` | +| `primary.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars for MariaDB primary containers | `""` | +| `primary.extraEnvVarsSecret` | Name of existing Secret containing extra env vars for MariaDB primary containers | `""` | +| `primary.persistence.enabled` | Enable persistence on MariaDB primary replicas using a `PersistentVolumeClaim`. If false, use emptyDir | `true` | +| `primary.persistence.existingClaim` | Name of an existing `PersistentVolumeClaim` for MariaDB primary replicas | `""` | +| `primary.persistence.subPath` | Subdirectory of the volume to mount at | `""` | +| `primary.persistence.storageClass` | MariaDB primary persistent volume storage Class | `""` | +| `primary.persistence.annotations` | MariaDB primary persistent volume claim annotations | `{}` | +| `primary.persistence.accessModes` | MariaDB primary persistent volume access Modes | `["ReadWriteOnce"]` | +| `primary.persistence.size` | MariaDB primary persistent volume size | `8Gi` | +| `primary.persistence.selector` | Selector to match an existing Persistent Volume | `{}` | +| `primary.extraVolumes` | Optionally specify extra list of additional volumes to the MariaDB Primary pod(s) | `[]` | +| `primary.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the MariaDB Primary container(s) | `[]` | +| `primary.initContainers` | Add additional init containers for the MariaDB Primary pod(s) | `[]` | +| `primary.sidecars` | Add additional sidecar containers for the MariaDB Primary pod(s) | `[]` | +| `primary.service.type` | MariaDB Primary Kubernetes service type | `ClusterIP` | +| `primary.service.ports.mysql` | MariaDB Primary Kubernetes service port for MariaDB | `3306` | +| `primary.service.ports.metrics` | MariaDB Primary Kubernetes service port for metrics | `9104` | +| `primary.service.nodePorts.mysql` | MariaDB Primary Kubernetes service node port | `""` | +| `primary.service.clusterIP` | MariaDB Primary Kubernetes service clusterIP IP | `""` | +| `primary.service.loadBalancerIP` | MariaDB Primary loadBalancerIP if service type is `LoadBalancer` | `""` | +| `primary.service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | +| `primary.service.loadBalancerSourceRanges` | Address that are allowed when MariaDB Primary service is LoadBalancer | `[]` | +| `primary.service.extraPorts` | Extra ports to expose (normally used with the `sidecar` value) | `[]` | +| `primary.service.annotations` | Provide any additional annotations which may be required | `{}` | +| `primary.service.sessionAffinity` | Session Affinity for Kubernetes service, can be "None" or "ClientIP" | `None` | +| `primary.service.sessionAffinityConfig` | Additional settings for the sessionAffinity | `{}` | +| `primary.pdb.create` | Enable/disable a Pod Disruption Budget creation for MariaDB primary pods | `false` | +| `primary.pdb.minAvailable` | Minimum number/percentage of MariaDB primary pods that must still be available after the eviction | `1` | +| `primary.pdb.maxUnavailable` | Maximum number/percentage of MariaDB primary pods that can be unavailable after the eviction | `""` | +| `primary.revisionHistoryLimit` | Maximum number of revisions that will be maintained in the StatefulSet | `10` | + + +### MariaDB Secondary parameters + +| Name | Description | Value | +| ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------- | +| `secondary.name` | Name of the secondary database (eg secondary, slave, ...) | `secondary` | +| `secondary.replicaCount` | Number of MariaDB secondary replicas | `1` | +| `secondary.command` | Override default container command on MariaDB Secondary container(s) (useful when using custom images) | `[]` | +| `secondary.args` | Override default container args on MariaDB Secondary container(s) (useful when using custom images) | `[]` | +| `secondary.lifecycleHooks` | for the MariaDB Secondary container(s) to automate configuration before or after startup | `{}` | +| `secondary.hostAliases` | Add deployment host aliases | `[]` | +| `secondary.configuration` | MariaDB Secondary configuration to be injected as ConfigMap | `""` | +| `secondary.existingConfigmap` | Name of existing ConfigMap with MariaDB Secondary configuration. | `""` | +| `secondary.updateStrategy.type` | MariaDB secondary statefulset strategy type | `RollingUpdate` | +| `secondary.rollingUpdatePartition` | Partition update strategy for Mariadb Secondary statefulset | `""` | +| `secondary.podAnnotations` | Additional pod annotations for MariaDB secondary pods | `{}` | +| `secondary.podLabels` | Extra labels for MariaDB secondary pods | `{}` | +| `secondary.podAffinityPreset` | MariaDB secondary pod affinity preset. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `secondary.podAntiAffinityPreset` | MariaDB secondary pod anti-affinity preset. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard` | `soft` | +| `secondary.nodeAffinityPreset.type` | MariaDB secondary node affinity preset type. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `secondary.nodeAffinityPreset.key` | MariaDB secondary node label key to match Ignored if `secondary.affinity` is set. | `""` | +| `secondary.nodeAffinityPreset.values` | MariaDB secondary node label values to match. Ignored if `secondary.affinity` is set. | `[]` | +| `secondary.affinity` | Affinity for MariaDB secondary pods assignment | `{}` | +| `secondary.nodeSelector` | Node labels for MariaDB secondary pods assignment | `{}` | +| `secondary.tolerations` | Tolerations for MariaDB secondary pods assignment | `[]` | +| `secondary.topologySpreadConstraints` | Topology Spread Constraints for MariaDB secondary pods assignment | `[]` | +| `secondary.priorityClassName` | Priority class for MariaDB secondary pods assignment | `""` | +| `secondary.runtimeClassName` | Runtime Class for MariaDB secondary pods | `""` | +| `secondary.schedulerName` | Name of the k8s scheduler (other than default) | `""` | +| `secondary.podManagementPolicy` | podManagementPolicy to manage scaling operation of MariaDB secondary pods | `""` | +| `secondary.podSecurityContext.enabled` | Enable security context for MariaDB secondary pods | `true` | +| `secondary.podSecurityContext.fsGroup` | Group ID for the mounted volumes' filesystem | `1001` | +| `secondary.containerSecurityContext.enabled` | MariaDB secondary container securityContext | `true` | +| `secondary.containerSecurityContext.runAsUser` | User ID for the MariaDB secondary container | `1001` | +| `secondary.containerSecurityContext.runAsNonRoot` | Set Controller container's Security Context runAsNonRoot | `true` | +| `secondary.resources.limits` | The resources limits for MariaDB secondary containers | `{}` | +| `secondary.resources.requests` | The requested resources for MariaDB secondary containers | `{}` | +| `secondary.startupProbe.enabled` | Enable startupProbe | `false` | +| `secondary.startupProbe.initialDelaySeconds` | Initial delay seconds for startupProbe | `120` | +| `secondary.startupProbe.periodSeconds` | Period seconds for startupProbe | `15` | +| `secondary.startupProbe.timeoutSeconds` | Timeout seconds for startupProbe | `5` | +| `secondary.startupProbe.failureThreshold` | Failure threshold for startupProbe | `10` | +| `secondary.startupProbe.successThreshold` | Success threshold for startupProbe | `1` | +| `secondary.livenessProbe.enabled` | Enable livenessProbe | `true` | +| `secondary.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `120` | +| `secondary.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | +| `secondary.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `1` | +| `secondary.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | +| `secondary.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `secondary.readinessProbe.enabled` | Enable readinessProbe | `true` | +| `secondary.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `30` | +| `secondary.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `secondary.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `1` | +| `secondary.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `3` | +| `secondary.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `secondary.customStartupProbe` | Override default startup probe for MariaDB secondary containers | `{}` | +| `secondary.customLivenessProbe` | Override default liveness probe for MariaDB secondary containers | `{}` | +| `secondary.customReadinessProbe` | Override default readiness probe for MariaDB secondary containers | `{}` | +| `secondary.startupWaitOptions` | Override default builtin startup wait check options for MariaDB secondary containers | `{}` | +| `secondary.extraFlags` | MariaDB secondary additional command line flags | `""` | +| `secondary.extraEnvVars` | Extra environment variables to be set on MariaDB secondary containers | `[]` | +| `secondary.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars for MariaDB secondary containers | `""` | +| `secondary.extraEnvVarsSecret` | Name of existing Secret containing extra env vars for MariaDB secondary containers | `""` | +| `secondary.persistence.enabled` | Enable persistence on MariaDB secondary replicas using a `PersistentVolumeClaim` | `true` | +| `secondary.persistence.subPath` | Subdirectory of the volume to mount at | `""` | +| `secondary.persistence.storageClass` | MariaDB secondary persistent volume storage Class | `""` | +| `secondary.persistence.annotations` | MariaDB secondary persistent volume claim annotations | `{}` | +| `secondary.persistence.accessModes` | MariaDB secondary persistent volume access Modes | `["ReadWriteOnce"]` | +| `secondary.persistence.size` | MariaDB secondary persistent volume size | `8Gi` | +| `secondary.persistence.selector` | Selector to match an existing Persistent Volume | `{}` | +| `secondary.extraVolumes` | Optionally specify extra list of additional volumes to the MariaDB secondary pod(s) | `[]` | +| `secondary.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the MariaDB secondary container(s) | `[]` | +| `secondary.initContainers` | Add additional init containers for the MariaDB secondary pod(s) | `[]` | +| `secondary.sidecars` | Add additional sidecar containers for the MariaDB secondary pod(s) | `[]` | +| `secondary.service.type` | MariaDB secondary Kubernetes service type | `ClusterIP` | +| `secondary.service.ports.mysql` | MariaDB secondary Kubernetes service port for MariaDB | `3306` | +| `secondary.service.ports.metrics` | MariaDB secondary Kubernetes service port for metrics | `9104` | +| `secondary.service.nodePorts.mysql` | MariaDB secondary Kubernetes service node port | `""` | +| `secondary.service.clusterIP` | MariaDB secondary Kubernetes service clusterIP IP | `""` | +| `secondary.service.loadBalancerIP` | MariaDB secondary loadBalancerIP if service type is `LoadBalancer` | `""` | +| `secondary.service.externalTrafficPolicy` | Enable client source IP preservation | `Cluster` | +| `secondary.service.loadBalancerSourceRanges` | Address that are allowed when MariaDB secondary service is LoadBalancer | `[]` | +| `secondary.service.extraPorts` | Extra ports to expose (normally used with the `sidecar` value) | `[]` | +| `secondary.service.annotations` | Provide any additional annotations which may be required | `{}` | +| `secondary.service.sessionAffinity` | Session Affinity for Kubernetes service, can be "None" or "ClientIP" | `None` | +| `secondary.service.sessionAffinityConfig` | Additional settings for the sessionAffinity | `{}` | +| `secondary.pdb.create` | Enable/disable a Pod Disruption Budget creation for MariaDB secondary pods | `false` | +| `secondary.pdb.minAvailable` | Minimum number/percentage of MariaDB secondary pods that should remain scheduled | `1` | +| `secondary.pdb.maxUnavailable` | Maximum number/percentage of MariaDB secondary pods that may be made unavailable | `""` | +| `secondary.revisionHistoryLimit` | Maximum number of revisions that will be maintained in the StatefulSet | `10` | + + +### RBAC parameters + +| Name | Description | Value | +| --------------------------------------------- | -------------------------------------------------------------- | ------- | +| `serviceAccount.create` | Enable the creation of a ServiceAccount for MariaDB pods | `true` | +| `serviceAccount.name` | Name of the created ServiceAccount | `""` | +| `serviceAccount.annotations` | Annotations for MariaDB Service Account | `{}` | +| `serviceAccount.automountServiceAccountToken` | Automount service account token for the server service account | `false` | +| `rbac.create` | Whether to create and use RBAC resources or not | `false` | + + +### Volume Permissions parameters + +| Name | Description | Value | +| -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | +| `volumePermissions.enabled` | Enable init container that changes the owner and group of the persistent volume(s) mountpoint to `runAsUser:fsGroup` | `false` | +| `volumePermissions.image.registry` | Init container volume-permissions image registry | `docker.io` | +| `volumePermissions.image.repository` | Init container volume-permissions image repository | `bitnami/bitnami-shell` | +| `volumePermissions.image.tag` | Init container volume-permissions image tag (immutable tags are recommended) | `11-debian-11-r61` | +| `volumePermissions.image.digest` | Init container volume-permissions image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `""` | +| `volumePermissions.image.pullPolicy` | Init container volume-permissions image pull policy | `IfNotPresent` | +| `volumePermissions.image.pullSecrets` | Specify docker-registry secret names as an array | `[]` | +| `volumePermissions.resources.limits` | Init container volume-permissions resource limits | `{}` | +| `volumePermissions.resources.requests` | Init container volume-permissions resource requests | `{}` | + + +### Metrics parameters + +| Name | Description | Value | +| -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | +| `metrics.enabled` | Start a side-car prometheus exporter | `false` | +| `metrics.image.registry` | Exporter image registry | `docker.io` | +| `metrics.image.repository` | Exporter image repository | `bitnami/mysqld-exporter` | +| `metrics.image.tag` | Exporter image tag (immutable tags are recommended) | `0.14.0-debian-11-r67` | +| `metrics.image.digest` | Exporter image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `""` | +| `metrics.image.pullPolicy` | Exporter image pull policy | `IfNotPresent` | +| `metrics.image.pullSecrets` | Specify docker-registry secret names as an array | `[]` | +| `metrics.annotations` | Annotations for the Exporter pod | `{}` | +| `metrics.extraArgs` | Extra args to be passed to mysqld_exporter | `{}` | +| `metrics.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the MariaDB metrics container(s) | `{}` | +| `metrics.containerSecurityContext.enabled` | Enable security context for MariaDB metrics container | `false` | +| `metrics.resources.limits` | The resources limits for MariaDB prometheus exporter containers | `{}` | +| `metrics.resources.requests` | The requested resources for MariaDB prometheus exporter containers | `{}` | +| `metrics.livenessProbe.enabled` | Enable livenessProbe | `true` | +| `metrics.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `120` | +| `metrics.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | +| `metrics.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `1` | +| `metrics.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | +| `metrics.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `metrics.readinessProbe.enabled` | Enable readinessProbe | `true` | +| `metrics.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `30` | +| `metrics.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `metrics.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `1` | +| `metrics.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `3` | +| `metrics.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `metrics.serviceMonitor.enabled` | Create ServiceMonitor Resource for scraping metrics using PrometheusOperator | `false` | +| `metrics.serviceMonitor.namespace` | Namespace which Prometheus is running in | `""` | +| `metrics.serviceMonitor.jobLabel` | The name of the label on the target service to use as the job name in prometheus. | `""` | +| `metrics.serviceMonitor.interval` | Interval at which metrics should be scraped | `30s` | +| `metrics.serviceMonitor.scrapeTimeout` | Specify the timeout after which the scrape is ended | `""` | +| `metrics.serviceMonitor.relabelings` | RelabelConfigs to apply to samples before scraping | `[]` | +| `metrics.serviceMonitor.metricRelabelings` | MetricRelabelConfigs to apply to samples before ingestion | `[]` | +| `metrics.serviceMonitor.honorLabels` | honorLabels chooses the metric's labels on collisions with target labels | `false` | +| `metrics.serviceMonitor.selector` | ServiceMonitor selector labels | `{}` | +| `metrics.serviceMonitor.labels` | Extra labels for the ServiceMonitor | `{}` | +| `metrics.prometheusRule.enabled` | if `true`, creates a Prometheus Operator PrometheusRule (also requires `metrics.enabled` to be `true` and `metrics.prometheusRule.rules`) | `false` | +| `metrics.prometheusRule.namespace` | Namespace for the PrometheusRule Resource (defaults to the Release Namespace) | `""` | +| `metrics.prometheusRule.additionalLabels` | Additional labels that can be used so PrometheusRule will be discovered by Prometheus | `{}` | +| `metrics.prometheusRule.rules` | Prometheus Rule definitions | `[]` | + + +### NetworkPolicy parameters + +| Name | Description | Value | +| ---------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ------- | +| `networkPolicy.enabled` | Enable network policies | `false` | +| `networkPolicy.metrics.enabled` | Enable network policy for metrics (prometheus) | `false` | +| `networkPolicy.metrics.namespaceSelector` | Monitoring namespace selector labels. These labels will be used to identify the prometheus' namespace. | `{}` | +| `networkPolicy.metrics.podSelector` | Monitoring pod selector labels. These labels will be used to identify the Prometheus pods. | `{}` | +| `networkPolicy.ingressRules.primaryAccessOnlyFrom.enabled` | Enable ingress rule that makes primary mariadb nodes only accessible from a particular origin. | `false` | +| `networkPolicy.ingressRules.primaryAccessOnlyFrom.namespaceSelector` | Namespace selector label that is allowed to access the primary node. This label will be used to identified the allowed namespace(s). | `{}` | +| `networkPolicy.ingressRules.primaryAccessOnlyFrom.podSelector` | Pods selector label that is allowed to access the primary node. This label will be used to identified the allowed pod(s). | `{}` | +| `networkPolicy.ingressRules.primaryAccessOnlyFrom.customRules` | Custom network policy for the primary node. | `{}` | +| `networkPolicy.ingressRules.secondaryAccessOnlyFrom.enabled` | Enable ingress rule that makes primary mariadb nodes only accessible from a particular origin. | `false` | +| `networkPolicy.ingressRules.secondaryAccessOnlyFrom.namespaceSelector` | Namespace selector label that is allowed to acces the secondary nodes. This label will be used to identified the allowed namespace(s). | `{}` | +| `networkPolicy.ingressRules.secondaryAccessOnlyFrom.podSelector` | Pods selector label that is allowed to access the secondary nodes. This label will be used to identified the allowed pod(s). | `{}` | +| `networkPolicy.ingressRules.secondaryAccessOnlyFrom.customRules` | Custom network policy for the secondary nodes. | `{}` | +| `networkPolicy.egressRules.denyConnectionsToExternal` | Enable egress rule that denies outgoing traffic outside the cluster, except for DNS (port 53). | `false` | +| `networkPolicy.egressRules.customRules` | Custom network policy rule | `{}` | + + +The above parameters map to the env variables defined in [bitnami/mariadb](https://github.com/bitnami/containers/tree/main/bitnami/mariadb). For more information please refer to the [bitnami/mariadb](https://github.com/bitnami/containers/tree/main/bitnami/mariadb) image documentation. + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, + +```bash +$ helm install my-release \ + --set auth.rootPassword=secretpassword,auth.database=app_database \ + my-repo/mariadb +``` + +The above command sets the MariaDB `root` account password to `secretpassword`. Additionally it creates a database named `my_database`. + +> NOTE: Once this chart is deployed, it is not possible to change the application's access credentials, such as usernames or passwords, using Helm. To change these application credentials after deployment, delete any persistent volumes (PVs) used by the chart and re-deploy it, or use the application's built-in administrative tools if available. + +Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example, + +```bash +$ helm install my-release -f values.yaml my-repo/mariadb +``` + +> **Tip**: You can use the default [values.yaml](values.yaml) + +## Configuration and installation details + +### [Rolling VS Immutable tags](https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/) + +It is strongly recommended to use immutable tags in a production environment. This ensures your deployment does not change automatically if the same tag is updated with a different image. + +Bitnami will release a new chart updating its containers if a new version of the main container, significant changes, or critical vulnerabilities exist. + +### Change MariaDB version + +To modify the MariaDB version used in this chart you can specify a [valid image tag](https://hub.docker.com/r/bitnami/mariadb/tags/) using the `image.tag` parameter. For example, `image.tag=X.Y.Z`. This approach is also applicable to other images like exporters. + +### Initialize a fresh instance + +The [Bitnami MariaDB](https://github.com/bitnami/containers/tree/main/bitnami/mariadb) image allows you to use your custom scripts to initialize a fresh instance. Custom scripts may be specified using the `initdbScripts` parameter. Alternatively, an external ConfigMap may be created with all the initialization scripts and the ConfigMap passed to the chart via the `initdbScriptsConfigMap` parameter. Note that this will override the `initdbScripts` parameter. + +The allowed extensions are `.sh`, `.sql` and `.sql.gz`. + +These scripts are treated differently depending on their extension. While `.sh` scripts are executed on all the nodes, `.sql` and `.sql.gz` scripts are only executed on the primary nodes. This is because `.sh` scripts support conditional tests to identify the type of node they are running on, while such tests are not supported in `.sql` or `.sql.gz` files. + +[Refer to the chart documentation for more information and a usage example](https://docs.bitnami.com/kubernetes/infrastructure/mariadb/configuration/customize-new-instance/). + +### Sidecars and Init Containers + +If additional containers are needed in the same pod as MariaDB (such as additional metrics or logging exporters), they can be defined using the sidecars parameter. + +The Helm chart already includes sidecar containers for the Prometheus exporters. These can be activated by adding the `--set enable-metrics=true` parameter at deployment time. The `sidecars` parameter should therefore only be used for any extra sidecar containers. [See an example of configuring and using sidecar containers](https://docs.bitnami.com/kubernetes/infrastructure/mariadb/configuration/configure-sidecar-init-containers/). + +Similarly, additional containers can be added to MariaDB pods using the `initContainers` parameter. [See an example of configuring and using init containers](https://docs.bitnami.com/kubernetes/infrastructure/mariadb/configuration/configure-sidecar-init-containers/). + +## Persistence + +The [Bitnami MariaDB](https://github.com/bitnami/containers/tree/main/bitnami/mariadb) image stores the MariaDB data and configurations at the `/bitnami/mariadb` path of the container. + +The chart mounts a [Persistent Volume](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) volume at this location. The volume is created using dynamic volume provisioning, by default. An existing PersistentVolumeClaim can also be defined. + +If you encounter errors when working with persistent volumes, refer to our [troubleshooting guide for persistent volumes](https://docs.bitnami.com/kubernetes/faq/troubleshooting/troubleshooting-persistence-volumes/). + +### Adjust permissions of persistent volume mountpoint + +As the image run as non-root by default, it is necessary to adjust the ownership of the persistent volume so that the container can write data into it. + +By default, the chart is configured to use Kubernetes Security Context to automatically change the ownership of the volume. However, this feature does not work in all Kubernetes distributions. + +As an alternative, this chart supports using an initContainer to change the ownership of the volume before mounting it in the final destination. You can enable this initContainer by setting `volumePermissions.enabled` to `true`. + +## Troubleshooting + +Find more information about how to deal with common errors related to Bitnami's Helm charts in [this troubleshooting guide](https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues). + +## Upgrading + +It's necessary to set the `auth.rootPassword` parameter when upgrading for readiness/liveness probes to work properly. When you install this chart for the first time, some notes will be displayed providing the credentials you must use under the 'Administrator credentials' section. Please note down the password and run the command below to upgrade your chart: + +```bash +$ helm upgrade my-release my-repo/mariadb --set auth.rootPassword=[ROOT_PASSWORD] +``` + +| Note: you need to substitute the placeholder _[ROOT_PASSWORD]_ with the value obtained in the installation notes. + +### To 11.0.0 + +This major release bumps default MariaDB branch to 10.6. Follow the [official instructions](https://mariadb.com/kb/en/upgrading-from-mariadb-105-to-mariadb-106/) from upgrading between 10.5 and 10.6. + +No major issues are expected during the upgrade. + +### To 10.0.0 + +This major release renames several values in this chart and adds missing features, in order to be inline with the rest of assets in the Bitnami charts repository. + +Affected values: + +- `primary.service.port` was deprecated, we recommend using `primary.service.ports.mysql` instead. +- `primary.service.nodePort` was deprecated, we recommend using `primary.service.nodePorts.mysql` instead. +- `secondary.service.port` was deprecated, we recommend using `secondary.service.ports.mysql` instead. +- `secondary.service.nodePort` was deprecated, we recommend using `secondary.service.nodePorts.mysql` instead. +- `metrics.serviceMonitor.additionalLabels` was deprecated, we recommend using `metrics.serviceMonitor.selector` instead. +- `primary.pdb.enabled` renamed as `primary.pdb.create`. +- `secondary.pdb.enabled` renamed as `secondary.pdb.create`. +- `primary.updateStrategy` changed from String type (previously default to 'rollingUpdate') to Object type, allowing users to configure other updateStrategy parameters, similar to other charts. +- Removed value `primary.rollingUpdatePartition`, now configured using `primary.updateStrategy` setting `primary.updateStrategy.rollingUpdate.partition`. +- `secondary.updateStrategy` changed from String type (previously default to 'rollingUpdate') to Object type, allowing users to configure other updateStrategy parameters, similar to other charts. +- Removed value `secondary.rollingUpdatePartition`, now configured using `secondary.updateStrategy` setting `secondary.updateStrategy.rollingUpdate.partition`. +- `metrics.serviceMonitor.relabellings`, previously used to configure ServiceMonitor metricRelabelings, has been replaced with the value `metrics.serviceMonitor.metricRelabelings`, and new value `metrics.serviceMonitor.relabelings` can be used to set ServiceMonitor relabelings parameter + +### To 9.0.0 + +[On November 13, 2020, Helm v2 support was formally finished](https://github.com/helm/charts#status-of-the-project), this major version is the result of the required changes applied to the Helm Chart to be able to incorporate the different features added in Helm v3 and to be consistent with the Helm project itself regarding the Helm v2 EOL. + +[Learn more about this change and related upgrade considerations](https://docs.bitnami.com/kubernetes/infrastructure/mariadb/administration/upgrade-helm3/). + +### To 8.0.0 + +- Several parameters were renamed or disappeared in favor of new ones on this major version: + - The terms _master_ and _slave_ have been replaced by the terms _primary_ and _secondary_. Therefore, parameters prefixed with `master` or `slave` are now prefixed with `primary` or `secondary`, respectively. + - `securityContext.*` is deprecated in favor of `primary.podSecurityContext`, `primary.containerSecurityContext`, `secondary.podSecurityContext`, and `secondary.containerSecurityContext`. + - Credentials parameter are reorganized under the `auth` parameter. + - `replication.enabled` parameter is deprecated in favor of `architecture` parameter that accepts two values: `standalone` and `replication`. +- The default MariaDB version was updated from 10.3 to 10.5. According to the official documentation, upgrading from 10.3 should be painless. However, there are some things that have changed which could affect an upgrade: + - [Incompatible changes upgrading from MariaDB 10.3 to MariaDB 10.4](https://mariadb.com/kb/en/upgrading-from-mariadb-103-to-mariadb-104/#incompatible-changes-between-103-and-104). + - [Incompatible changes upgrading from MariaDB 10.4 to MariaDB 10.5](https://mariadb.com/kb/en/upgrading-from-mariadb-104-to-mariadb-105/#incompatible-changes-between-104-and-105). +- Chart labels were adapted to follow the [Helm charts standard labels](https://helm.sh/docs/chart_best_practices/labels/#standard-labels). +- This version also introduces `bitnami/common`, a [library chart](https://helm.sh/docs/topics/library_charts/#helm) as a dependency. More documentation about this new utility could be found [here](https://github.com/bitnami/charts/tree/main/bitnami/common#bitnami-common-library-chart). Please, make sure that you have updated the chart dependencies before executing any upgrade. + +Consequences: + +Backwards compatibility is not guaranteed. To upgrade to `8.0.0`, install a new release of the MariaDB chart, and migrate the data from your previous release. You have 2 alternatives to do so: + +- Create a backup of the database, and restore it on the new release using tools such as [mysqldump](https://mariadb.com/kb/en/mysqldump/). +- Reuse the PVC used to hold the master data on your previous release. To do so, use the `primary.persistence.existingClaim` parameter. The following example assumes that the release name is `mariadb`: + +```bash +$ helm install mariadb my-repo/mariadb --set auth.rootPassword=[ROOT_PASSWORD] --set primary.persistence.existingClaim=[EXISTING_PVC] +``` + +| Note: you need to substitute the placeholder _[EXISTING_PVC]_ with the name of the PVC used on your previous release, and _[ROOT_PASSWORD]_ with the root password used in your previous release. + +### To 7.0.0 + +Helm performs a lookup for the object based on its group (apps), version (v1), and kind (Deployment). Also known as its GroupVersionKind, or GVK. Changing the GVK is considered a compatibility breaker from Kubernetes' point of view, so you cannot "upgrade" those objects to the new GVK in-place. Earlier versions of Helm 3 did not perform the lookup correctly which has since been fixed to match the spec. + +In https://github.com/helm/charts/pull/17308 the `apiVersion` of the statefulset resources was updated to `apps/v1` in tune with the api's deprecated, resulting in compatibility breakage. + +This major version bump signifies this change. + +### To 6.0.0 + +MariaDB version was updated from 10.1 to 10.3, there are no changes in the chart itself. According to the official documentation, upgrading from 10.1 should be painless. However, there are some things that have changed which could affect an upgrade: + +- [Incompatible changes upgrading from MariaDB 10.1 to MariaDB 10.2](https://mariadb.com/kb/en/library/upgrading-from-mariadb-101-to-mariadb-102//#incompatible-changes-between-101-and-102) +- [Incompatible changes upgrading from MariaDB 10.2 to MariaDB 10.3](https://mariadb.com/kb/en/library/upgrading-from-mariadb-102-to-mariadb-103/#incompatible-changes-between-102-and-103) + +### To 5.0.0 + +Backwards compatibility is not guaranteed unless you modify the labels used on the chart's deployments. +Use the workaround below to upgrade from versions previous to 5.0.0. The following example assumes that the release name is mariadb: + +```console +$ kubectl delete statefulset opencart-mariadb --cascade=false +``` + +## License + +Copyright © 2022 Bitnami + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. \ No newline at end of file diff --git a/charts/limesurvey-martial/charts/mariadb/charts/common/.helmignore b/charts/limesurvey-martial/charts/mariadb/charts/common/.helmignore new file mode 100644 index 0000000..50af031 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/charts/common/.helmignore @@ -0,0 +1,22 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/charts/limesurvey-martial/charts/mariadb/charts/common/Chart.yaml b/charts/limesurvey-martial/charts/mariadb/charts/common/Chart.yaml new file mode 100644 index 0000000..f9ba944 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/charts/common/Chart.yaml @@ -0,0 +1,23 @@ +annotations: + category: Infrastructure +apiVersion: v2 +appVersion: 2.2.2 +description: A Library Helm Chart for grouping common logic between bitnami charts. + This chart is not deployable by itself. +home: https://github.com/bitnami/charts/tree/main/bitnami/common +icon: https://bitnami.com/downloads/logos/bitnami-mark.png +keywords: +- common +- helper +- template +- function +- bitnami +maintainers: +- name: Bitnami + url: https://github.com/bitnami/charts +name: common +sources: +- https://github.com/bitnami/charts +- https://www.bitnami.com/ +type: library +version: 2.2.2 diff --git a/charts/limesurvey-martial/charts/mariadb/charts/common/README.md b/charts/limesurvey-martial/charts/mariadb/charts/common/README.md new file mode 100644 index 0000000..ec43a5f --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/charts/common/README.md @@ -0,0 +1,351 @@ +# Bitnami Common Library Chart + +A [Helm Library Chart](https://helm.sh/docs/topics/library_charts/#helm) for grouping common logic between bitnami charts. + +## TL;DR + +```yaml +dependencies: + - name: common + version: 1.x.x + repository: https://charts.bitnami.com/bitnami +``` + +```bash +$ helm dependency update +``` + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.names.fullname" . }} +data: + myvalue: "Hello World" +``` + +## Introduction + +This chart provides a common template helpers which can be used to develop new charts using [Helm](https://helm.sh) package manager. + +Bitnami charts can be used with [Kubeapps](https://kubeapps.dev/) for deployment and management of Helm Charts in clusters. + +## Prerequisites + +- Kubernetes 1.19+ +- Helm 3.2.0+ + +## Parameters + +The following table lists the helpers available in the library which are scoped in different sections. + +### Affinities + +| Helper identifier | Description | Expected Input | +|-------------------------------|------------------------------------------------------|------------------------------------------------| +| `common.affinities.nodes.soft` | Return a soft nodeAffinity definition | `dict "key" "FOO" "values" (list "BAR" "BAZ")` | +| `common.affinities.nodes.hard` | Return a hard nodeAffinity definition | `dict "key" "FOO" "values" (list "BAR" "BAZ")` | +| `common.affinities.pods.soft` | Return a soft podAffinity/podAntiAffinity definition | `dict "component" "FOO" "context" $` | +| `common.affinities.pods.hard` | Return a hard podAffinity/podAntiAffinity definition | `dict "component" "FOO" "context" $` | +| `common.affinities.topologyKey` | Return a topologyKey definition | `dict "topologyKey" "FOO"` | + +### Capabilities + +| Helper identifier | Description | Expected Input | +|------------------------------------------------|------------------------------------------------------------------------------------------------|-------------------| +| `common.capabilities.kubeVersion` | Return the target Kubernetes version (using client default if .Values.kubeVersion is not set). | `.` Chart context | +| `common.capabilities.cronjob.apiVersion` | Return the appropriate apiVersion for cronjob. | `.` Chart context | +| `common.capabilities.deployment.apiVersion` | Return the appropriate apiVersion for deployment. | `.` Chart context | +| `common.capabilities.statefulset.apiVersion` | Return the appropriate apiVersion for statefulset. | `.` Chart context | +| `common.capabilities.ingress.apiVersion` | Return the appropriate apiVersion for ingress. | `.` Chart context | +| `common.capabilities.rbac.apiVersion` | Return the appropriate apiVersion for RBAC resources. | `.` Chart context | +| `common.capabilities.crd.apiVersion` | Return the appropriate apiVersion for CRDs. | `.` Chart context | +| `common.capabilities.policy.apiVersion` | Return the appropriate apiVersion for podsecuritypolicy. | `.` Chart context | +| `common.capabilities.networkPolicy.apiVersion` | Return the appropriate apiVersion for networkpolicy. | `.` Chart context | +| `common.capabilities.apiService.apiVersion` | Return the appropriate apiVersion for APIService. | `.` Chart context | +| `common.capabilities.hpa.apiVersion` | Return the appropriate apiVersion for Horizontal Pod Autoscaler | `.` Chart context | +| `common.capabilities.supportsHelmVersion` | Returns true if the used Helm version is 3.3+ | `.` Chart context | + +### Errors + +| Helper identifier | Description | Expected Input | +|-----------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------| +| `common.errors.upgrade.passwords.empty` | It will ensure required passwords are given when we are upgrading a chart. If `validationErrors` is not empty it will throw an error and will stop the upgrade action. | `dict "validationErrors" (list $validationError00 $validationError01) "context" $` | + +### Images + +| Helper identifier | Description | Expected Input | +|-----------------------------|------------------------------------------------------|---------------------------------------------------------------------------------------------------------| +| `common.images.image` | Return the proper and full image name | `dict "imageRoot" .Values.path.to.the.image "global" $`, see [ImageRoot](#imageroot) for the structure. | +| `common.images.pullSecrets` | Return the proper Docker Image Registry Secret Names (deprecated: use common.images.renderPullSecrets instead) | `dict "images" (list .Values.path.to.the.image1, .Values.path.to.the.image2) "global" .Values.global` | +| `common.images.renderPullSecrets` | Return the proper Docker Image Registry Secret Names (evaluates values as templates) | `dict "images" (list .Values.path.to.the.image1, .Values.path.to.the.image2) "context" $` | + +### Ingress + +| Helper identifier | Description | Expected Input | +|-------------------------------------------|-------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `common.ingress.backend` | Generate a proper Ingress backend entry depending on the API version | `dict "serviceName" "foo" "servicePort" "bar"`, see the [Ingress deprecation notice](https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/) for the syntax differences | +| `common.ingress.supportsPathType` | Prints "true" if the pathType field is supported | `.` Chart context | +| `common.ingress.supportsIngressClassname` | Prints "true" if the ingressClassname field is supported | `.` Chart context | +| `common.ingress.certManagerRequest` | Prints "true" if required cert-manager annotations for TLS signed certificates are set in the Ingress annotations | `dict "annotations" .Values.path.to.the.ingress.annotations` | + +### Labels + +| Helper identifier | Description | Expected Input | +|-----------------------------|-----------------------------------------------------------------------------|-------------------| +| `common.labels.standard` | Return Kubernetes standard labels | `.` Chart context | +| `common.labels.matchLabels` | Labels to use on `deploy.spec.selector.matchLabels` and `svc.spec.selector` | `.` Chart context | + +### Names + +| Helper identifier | Description | Expected Input | +|-----------------------------------|-----------------------------------------------------------------------|-------------------| +| `common.names.name` | Expand the name of the chart or use `.Values.nameOverride` | `.` Chart context | +| `common.names.fullname` | Create a default fully qualified app name. | `.` Chart context | +| `common.names.namespace` | Allow the release namespace to be overridden | `.` Chart context | +| `common.names.fullname.namespace` | Create a fully qualified app name adding the installation's namespace | `.` Chart context | +| `common.names.chart` | Chart name plus version | `.` Chart context | + +### Secrets + +| Helper identifier | Description | Expected Input | +|-----------------------------------|--------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `common.secrets.name` | Generate the name of the secret. | `dict "existingSecret" .Values.path.to.the.existingSecret "defaultNameSuffix" "mySuffix" "context" $` see [ExistingSecret](#existingsecret) for the structure. | +| `common.secrets.key` | Generate secret key. | `dict "existingSecret" .Values.path.to.the.existingSecret "key" "keyName"` see [ExistingSecret](#existingsecret) for the structure. | +| `common.secrets.passwords.manage` | Generate secret password or retrieve one if already created. | `dict "secret" "secret-name" "key" "keyName" "providedValues" (list "path.to.password1" "path.to.password2") "length" 10 "strong" false "chartName" "chartName" "context" $`, length, strong and chartNAme fields are optional. | +| `common.secrets.exists` | Returns whether a previous generated secret already exists. | `dict "secret" "secret-name" "context" $` | + +### Storage + +| Helper identifier | Description | Expected Input | +|-------------------------------|---------------------------------------|---------------------------------------------------------------------------------------------------------------------| +| `common.storage.class` | Return the proper Storage Class | `dict "persistence" .Values.path.to.the.persistence "global" $`, see [Persistence](#persistence) for the structure. | + +### TplValues + +| Helper identifier | Description | Expected Input | +|---------------------------|----------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------| +| `common.tplvalues.render` | Renders a value that contains template | `dict "value" .Values.path.to.the.Value "context" $`, value is the value should rendered as template, context frequently is the chart context `$` or `.` | + +### Utils + +| Helper identifier | Description | Expected Input | +|--------------------------------|------------------------------------------------------------------------------------------|------------------------------------------------------------------------| +| `common.utils.fieldToEnvVar` | Build environment variable name given a field. | `dict "field" "my-password"` | +| `common.utils.secret.getvalue` | Print instructions to get a secret value. | `dict "secret" "secret-name" "field" "secret-value-field" "context" $` | +| `common.utils.getValueFromKey` | Gets a value from `.Values` object given its key path | `dict "key" "path.to.key" "context" $` | +| `common.utils.getKeyFromList` | Returns first `.Values` key with a defined value or first of the list if all non-defined | `dict "keys" (list "path.to.key1" "path.to.key2") "context" $` | + +### Validations + +| Helper identifier | Description | Expected Input | +|--------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `common.validations.values.single.empty` | Validate a value must not be empty. | `dict "valueKey" "path.to.value" "secret" "secret.name" "field" "my-password" "subchart" "subchart" "context" $` secret, field and subchart are optional. In case they are given, the helper will generate a how to get instruction. See [ValidateValue](#validatevalue) | +| `common.validations.values.multiple.empty` | Validate a multiple values must not be empty. It returns a shared error for all the values. | `dict "required" (list $validateValueConf00 $validateValueConf01) "context" $`. See [ValidateValue](#validatevalue) | +| `common.validations.values.mariadb.passwords` | This helper will ensure required password for MariaDB are not empty. It returns a shared error for all the values. | `dict "secret" "mariadb-secret" "subchart" "true" "context" $` subchart field is optional and could be true or false it depends on where you will use mariadb chart and the helper. | +| `common.validations.values.mysql.passwords` | This helper will ensure required password for MySQL are not empty. It returns a shared error for all the values. | `dict "secret" "mysql-secret" "subchart" "true" "context" $` subchart field is optional and could be true or false it depends on where you will use mysql chart and the helper. | +| `common.validations.values.postgresql.passwords` | This helper will ensure required password for PostgreSQL are not empty. It returns a shared error for all the values. | `dict "secret" "postgresql-secret" "subchart" "true" "context" $` subchart field is optional and could be true or false it depends on where you will use postgresql chart and the helper. | +| `common.validations.values.redis.passwords` | This helper will ensure required password for Redis® are not empty. It returns a shared error for all the values. | `dict "secret" "redis-secret" "subchart" "true" "context" $` subchart field is optional and could be true or false it depends on where you will use redis chart and the helper. | +| `common.validations.values.cassandra.passwords` | This helper will ensure required password for Cassandra are not empty. It returns a shared error for all the values. | `dict "secret" "cassandra-secret" "subchart" "true" "context" $` subchart field is optional and could be true or false it depends on where you will use cassandra chart and the helper. | +| `common.validations.values.mongodb.passwords` | This helper will ensure required password for MongoDB® are not empty. It returns a shared error for all the values. | `dict "secret" "mongodb-secret" "subchart" "true" "context" $` subchart field is optional and could be true or false it depends on where you will use mongodb chart and the helper. | + +### Warnings + +| Helper identifier | Description | Expected Input | +|------------------------------|----------------------------------|------------------------------------------------------------| +| `common.warnings.rollingTag` | Warning about using rolling tag. | `ImageRoot` see [ImageRoot](#imageroot) for the structure. | + +## Special input schemas + +### ImageRoot + +```yaml +registry: + type: string + description: Docker registry where the image is located + example: docker.io + +repository: + type: string + description: Repository and image name + example: bitnami/nginx + +tag: + type: string + description: image tag + example: 1.16.1-debian-10-r63 + +pullPolicy: + type: string + description: Specify a imagePullPolicy. Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' + +pullSecrets: + type: array + items: + type: string + description: Optionally specify an array of imagePullSecrets (evaluated as templates). + +debug: + type: boolean + description: Set to true if you would like to see extra information on logs + example: false + +## An instance would be: +# registry: docker.io +# repository: bitnami/nginx +# tag: 1.16.1-debian-10-r63 +# pullPolicy: IfNotPresent +# debug: false +``` + +### Persistence + +```yaml +enabled: + type: boolean + description: Whether enable persistence. + example: true + +storageClass: + type: string + description: Ghost data Persistent Volume Storage Class, If set to "-", storageClassName: "" which disables dynamic provisioning. + example: "-" + +accessMode: + type: string + description: Access mode for the Persistent Volume Storage. + example: ReadWriteOnce + +size: + type: string + description: Size the Persistent Volume Storage. + example: 8Gi + +path: + type: string + description: Path to be persisted. + example: /bitnami + +## An instance would be: +# enabled: true +# storageClass: "-" +# accessMode: ReadWriteOnce +# size: 8Gi +# path: /bitnami +``` + +### ExistingSecret + +```yaml +name: + type: string + description: Name of the existing secret. + example: mySecret +keyMapping: + description: Mapping between the expected key name and the name of the key in the existing secret. + type: object + +## An instance would be: +# name: mySecret +# keyMapping: +# password: myPasswordKey +``` + +#### Example of use + +When we store sensitive data for a deployment in a secret, some times we want to give to users the possibility of using theirs existing secrets. + +```yaml +# templates/secret.yaml +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.names.fullname" . }} + labels: + app: {{ include "common.names.fullname" . }} +type: Opaque +data: + password: {{ .Values.password | b64enc | quote }} + +# templates/dpl.yaml +--- +... + env: + - name: PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "common.secrets.name" (dict "existingSecret" .Values.existingSecret "context" $) }} + key: {{ include "common.secrets.key" (dict "existingSecret" .Values.existingSecret "key" "password") }} +... + +# values.yaml +--- +name: mySecret +keyMapping: + password: myPasswordKey +``` + +### ValidateValue + +#### NOTES.txt + +```console +{{- $validateValueConf00 := (dict "valueKey" "path.to.value00" "secret" "secretName" "field" "password-00") -}} +{{- $validateValueConf01 := (dict "valueKey" "path.to.value01" "secret" "secretName" "field" "password-01") -}} + +{{ include "common.validations.values.multiple.empty" (dict "required" (list $validateValueConf00 $validateValueConf01) "context" $) }} +``` + +If we force those values to be empty we will see some alerts + +```console +$ helm install test mychart --set path.to.value00="",path.to.value01="" + 'path.to.value00' must not be empty, please add '--set path.to.value00=$PASSWORD_00' to the command. To get the current value: + + export PASSWORD_00=$(kubectl get secret --namespace default secretName -o jsonpath="{.data.password-00}" | base64 -d) + + 'path.to.value01' must not be empty, please add '--set path.to.value01=$PASSWORD_01' to the command. To get the current value: + + export PASSWORD_01=$(kubectl get secret --namespace default secretName -o jsonpath="{.data.password-01}" | base64 -d) +``` + +## Upgrading + +### To 1.0.0 + +[On November 13, 2020, Helm v2 support was formally finished](https://github.com/helm/charts#status-of-the-project), this major version is the result of the required changes applied to the Helm Chart to be able to incorporate the different features added in Helm v3 and to be consistent with the Helm project itself regarding the Helm v2 EOL. + +**What changes were introduced in this major version?** + +- Previous versions of this Helm Chart use `apiVersion: v1` (installable by both Helm 2 and 3), this Helm Chart was updated to `apiVersion: v2` (installable by Helm 3 only). [Here](https://helm.sh/docs/topics/charts/#the-apiversion-field) you can find more information about the `apiVersion` field. +- Use `type: library`. [Here](https://v3.helm.sh/docs/faq/#library-chart-support) you can find more information. +- The different fields present in the *Chart.yaml* file has been ordered alphabetically in a homogeneous way for all the Bitnami Helm Charts + +**Considerations when upgrading to this version** + +- If you want to upgrade to this version from a previous one installed with Helm v3, you shouldn't face any issues +- If you want to upgrade to this version using Helm v2, this scenario is not supported as this version doesn't support Helm v2 anymore +- If you installed the previous version with Helm v2 and wants to upgrade to this version with Helm v3, please refer to the [official Helm documentation](https://helm.sh/docs/topics/v2_v3_migration/#migration-use-cases) about migrating from Helm v2 to v3 + +**Useful links** + +- https://docs.bitnami.com/tutorials/resolve-helm2-helm3-post-migration-issues/ +- https://helm.sh/docs/topics/v2_v3_migration/ +- https://helm.sh/blog/migrate-from-helm-v2-to-helm-v3/ + +## License + +Copyright © 2022 Bitnami + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_affinities.tpl b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_affinities.tpl new file mode 100644 index 0000000..81902a6 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_affinities.tpl @@ -0,0 +1,106 @@ +{{/* vim: set filetype=mustache: */}} + +{{/* +Return a soft nodeAffinity definition +{{ include "common.affinities.nodes.soft" (dict "key" "FOO" "values" (list "BAR" "BAZ")) -}} +*/}} +{{- define "common.affinities.nodes.soft" -}} +preferredDuringSchedulingIgnoredDuringExecution: + - preference: + matchExpressions: + - key: {{ .key }} + operator: In + values: + {{- range .values }} + - {{ . | quote }} + {{- end }} + weight: 1 +{{- end -}} + +{{/* +Return a hard nodeAffinity definition +{{ include "common.affinities.nodes.hard" (dict "key" "FOO" "values" (list "BAR" "BAZ")) -}} +*/}} +{{- define "common.affinities.nodes.hard" -}} +requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: {{ .key }} + operator: In + values: + {{- range .values }} + - {{ . | quote }} + {{- end }} +{{- end -}} + +{{/* +Return a nodeAffinity definition +{{ include "common.affinities.nodes" (dict "type" "soft" "key" "FOO" "values" (list "BAR" "BAZ")) -}} +*/}} +{{- define "common.affinities.nodes" -}} + {{- if eq .type "soft" }} + {{- include "common.affinities.nodes.soft" . -}} + {{- else if eq .type "hard" }} + {{- include "common.affinities.nodes.hard" . -}} + {{- end -}} +{{- end -}} + +{{/* +Return a topologyKey definition +{{ include "common.affinities.topologyKey" (dict "topologyKey" "BAR") -}} +*/}} +{{- define "common.affinities.topologyKey" -}} +{{ .topologyKey | default "kubernetes.io/hostname" -}} +{{- end -}} + +{{/* +Return a soft podAffinity/podAntiAffinity definition +{{ include "common.affinities.pods.soft" (dict "component" "FOO" "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "context" $) -}} +*/}} +{{- define "common.affinities.pods.soft" -}} +{{- $component := default "" .component -}} +{{- $extraMatchLabels := default (dict) .extraMatchLabels -}} +preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: {{- (include "common.labels.matchLabels" .context) | nindent 10 }} + {{- if not (empty $component) }} + {{ printf "app.kubernetes.io/component: %s" $component }} + {{- end }} + {{- range $key, $value := $extraMatchLabels }} + {{ $key }}: {{ $value | quote }} + {{- end }} + topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }} + weight: 1 +{{- end -}} + +{{/* +Return a hard podAffinity/podAntiAffinity definition +{{ include "common.affinities.pods.hard" (dict "component" "FOO" "extraMatchLabels" .Values.extraMatchLabels "topologyKey" "BAR" "context" $) -}} +*/}} +{{- define "common.affinities.pods.hard" -}} +{{- $component := default "" .component -}} +{{- $extraMatchLabels := default (dict) .extraMatchLabels -}} +requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchLabels: {{- (include "common.labels.matchLabels" .context) | nindent 8 }} + {{- if not (empty $component) }} + {{ printf "app.kubernetes.io/component: %s" $component }} + {{- end }} + {{- range $key, $value := $extraMatchLabels }} + {{ $key }}: {{ $value | quote }} + {{- end }} + topologyKey: {{ include "common.affinities.topologyKey" (dict "topologyKey" .topologyKey) }} +{{- end -}} + +{{/* +Return a podAffinity/podAntiAffinity definition +{{ include "common.affinities.pods" (dict "type" "soft" "key" "FOO" "values" (list "BAR" "BAZ")) -}} +*/}} +{{- define "common.affinities.pods" -}} + {{- if eq .type "soft" }} + {{- include "common.affinities.pods.soft" . -}} + {{- else if eq .type "hard" }} + {{- include "common.affinities.pods.hard" . -}} + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_capabilities.tpl b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_capabilities.tpl new file mode 100644 index 0000000..9d9b760 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_capabilities.tpl @@ -0,0 +1,154 @@ +{{/* vim: set filetype=mustache: */}} + +{{/* +Return the target Kubernetes version +*/}} +{{- define "common.capabilities.kubeVersion" -}} +{{- if .Values.global }} + {{- if .Values.global.kubeVersion }} + {{- .Values.global.kubeVersion -}} + {{- else }} + {{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}} + {{- end -}} +{{- else }} +{{- default .Capabilities.KubeVersion.Version .Values.kubeVersion -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for poddisruptionbudget. +*/}} +{{- define "common.capabilities.policy.apiVersion" -}} +{{- if semverCompare "<1.21-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "policy/v1beta1" -}} +{{- else -}} +{{- print "policy/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for networkpolicy. +*/}} +{{- define "common.capabilities.networkPolicy.apiVersion" -}} +{{- if semverCompare "<1.7-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "extensions/v1beta1" -}} +{{- else -}} +{{- print "networking.k8s.io/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for cronjob. +*/}} +{{- define "common.capabilities.cronjob.apiVersion" -}} +{{- if semverCompare "<1.21-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "batch/v1beta1" -}} +{{- else -}} +{{- print "batch/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for deployment. +*/}} +{{- define "common.capabilities.deployment.apiVersion" -}} +{{- if semverCompare "<1.14-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "extensions/v1beta1" -}} +{{- else -}} +{{- print "apps/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for statefulset. +*/}} +{{- define "common.capabilities.statefulset.apiVersion" -}} +{{- if semverCompare "<1.14-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "apps/v1beta1" -}} +{{- else -}} +{{- print "apps/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for ingress. +*/}} +{{- define "common.capabilities.ingress.apiVersion" -}} +{{- if .Values.ingress -}} +{{- if .Values.ingress.apiVersion -}} +{{- .Values.ingress.apiVersion -}} +{{- else if semverCompare "<1.14-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "extensions/v1beta1" -}} +{{- else if semverCompare "<1.19-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "networking.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "networking.k8s.io/v1" -}} +{{- end }} +{{- else if semverCompare "<1.14-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "extensions/v1beta1" -}} +{{- else if semverCompare "<1.19-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "networking.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "networking.k8s.io/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for RBAC resources. +*/}} +{{- define "common.capabilities.rbac.apiVersion" -}} +{{- if semverCompare "<1.17-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "rbac.authorization.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "rbac.authorization.k8s.io/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for CRDs. +*/}} +{{- define "common.capabilities.crd.apiVersion" -}} +{{- if semverCompare "<1.19-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "apiextensions.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "apiextensions.k8s.io/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for APIService. +*/}} +{{- define "common.capabilities.apiService.apiVersion" -}} +{{- if semverCompare "<1.10-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "apiregistration.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "apiregistration.k8s.io/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for Horizontal Pod Autoscaler. +*/}} +{{- define "common.capabilities.hpa.apiVersion" -}} +{{- if semverCompare "<1.23-0" (include "common.capabilities.kubeVersion" .context) -}} +{{- if .beta2 -}} +{{- print "autoscaling/v2beta2" -}} +{{- else -}} +{{- print "autoscaling/v2beta1" -}} +{{- end -}} +{{- else -}} +{{- print "autoscaling/v2" -}} +{{- end -}} +{{- end -}} + +{{/* +Returns true if the used Helm version is 3.3+. +A way to check the used Helm version was not introduced until version 3.3.0 with .Capabilities.HelmVersion, which contains an additional "{}}" structure. +This check is introduced as a regexMatch instead of {{ if .Capabilities.HelmVersion }} because checking for the key HelmVersion in <3.3 results in a "interface not found" error. +**To be removed when the catalog's minimun Helm version is 3.3** +*/}} +{{- define "common.capabilities.supportsHelmVersion" -}} +{{- if regexMatch "{(v[0-9])*[^}]*}}$" (.Capabilities | toString ) }} + {{- true -}} +{{- end -}} +{{- end -}} diff --git a/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_errors.tpl b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_errors.tpl new file mode 100644 index 0000000..a79cc2e --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_errors.tpl @@ -0,0 +1,23 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Through error when upgrading using empty passwords values that must not be empty. + +Usage: +{{- $validationError00 := include "common.validations.values.single.empty" (dict "valueKey" "path.to.password00" "secret" "secretName" "field" "password-00") -}} +{{- $validationError01 := include "common.validations.values.single.empty" (dict "valueKey" "path.to.password01" "secret" "secretName" "field" "password-01") -}} +{{ include "common.errors.upgrade.passwords.empty" (dict "validationErrors" (list $validationError00 $validationError01) "context" $) }} + +Required password params: + - validationErrors - String - Required. List of validation strings to be return, if it is empty it won't throw error. + - context - Context - Required. Parent context. +*/}} +{{- define "common.errors.upgrade.passwords.empty" -}} + {{- $validationErrors := join "" .validationErrors -}} + {{- if and $validationErrors .context.Release.IsUpgrade -}} + {{- $errorString := "\nPASSWORDS ERROR: You must provide your current passwords when upgrading the release." -}} + {{- $errorString = print $errorString "\n Note that even after reinstallation, old credentials may be needed as they may be kept in persistent volume claims." -}} + {{- $errorString = print $errorString "\n Further information can be obtained at https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues/#credential-errors-while-upgrading-chart-releases" -}} + {{- $errorString = print $errorString "\n%s" -}} + {{- printf $errorString $validationErrors | fail -}} + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_images.tpl b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_images.tpl new file mode 100644 index 0000000..46c659e --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_images.tpl @@ -0,0 +1,76 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Return the proper image name +{{ include "common.images.image" ( dict "imageRoot" .Values.path.to.the.image "global" $) }} +*/}} +{{- define "common.images.image" -}} +{{- $registryName := .imageRoot.registry -}} +{{- $repositoryName := .imageRoot.repository -}} +{{- $separator := ":" -}} +{{- $termination := .imageRoot.tag | toString -}} +{{- if .global }} + {{- if .global.imageRegistry }} + {{- $registryName = .global.imageRegistry -}} + {{- end -}} +{{- end -}} +{{- if .imageRoot.digest }} + {{- $separator = "@" -}} + {{- $termination = .imageRoot.digest | toString -}} +{{- end -}} +{{- printf "%s/%s%s%s" $registryName $repositoryName $separator $termination -}} +{{- end -}} + +{{/* +Return the proper Docker Image Registry Secret Names (deprecated: use common.images.renderPullSecrets instead) +{{ include "common.images.pullSecrets" ( dict "images" (list .Values.path.to.the.image1, .Values.path.to.the.image2) "global" .Values.global) }} +*/}} +{{- define "common.images.pullSecrets" -}} + {{- $pullSecrets := list }} + + {{- if .global }} + {{- range .global.imagePullSecrets -}} + {{- $pullSecrets = append $pullSecrets . -}} + {{- end -}} + {{- end -}} + + {{- range .images -}} + {{- range .pullSecrets -}} + {{- $pullSecrets = append $pullSecrets . -}} + {{- end -}} + {{- end -}} + + {{- if (not (empty $pullSecrets)) }} +imagePullSecrets: + {{- range $pullSecrets }} + - name: {{ . }} + {{- end }} + {{- end }} +{{- end -}} + +{{/* +Return the proper Docker Image Registry Secret Names evaluating values as templates +{{ include "common.images.renderPullSecrets" ( dict "images" (list .Values.path.to.the.image1, .Values.path.to.the.image2) "context" $) }} +*/}} +{{- define "common.images.renderPullSecrets" -}} + {{- $pullSecrets := list }} + {{- $context := .context }} + + {{- if $context.Values.global }} + {{- range $context.Values.global.imagePullSecrets -}} + {{- $pullSecrets = append $pullSecrets (include "common.tplvalues.render" (dict "value" . "context" $context)) -}} + {{- end -}} + {{- end -}} + + {{- range .images -}} + {{- range .pullSecrets -}} + {{- $pullSecrets = append $pullSecrets (include "common.tplvalues.render" (dict "value" . "context" $context)) -}} + {{- end -}} + {{- end -}} + + {{- if (not (empty $pullSecrets)) }} +imagePullSecrets: + {{- range $pullSecrets }} + - name: {{ . }} + {{- end }} + {{- end }} +{{- end -}} diff --git a/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_ingress.tpl b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_ingress.tpl new file mode 100644 index 0000000..831da9c --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_ingress.tpl @@ -0,0 +1,68 @@ +{{/* vim: set filetype=mustache: */}} + +{{/* +Generate backend entry that is compatible with all Kubernetes API versions. + +Usage: +{{ include "common.ingress.backend" (dict "serviceName" "backendName" "servicePort" "backendPort" "context" $) }} + +Params: + - serviceName - String. Name of an existing service backend + - servicePort - String/Int. Port name (or number) of the service. It will be translated to different yaml depending if it is a string or an integer. + - context - Dict - Required. The context for the template evaluation. +*/}} +{{- define "common.ingress.backend" -}} +{{- $apiVersion := (include "common.capabilities.ingress.apiVersion" .context) -}} +{{- if or (eq $apiVersion "extensions/v1beta1") (eq $apiVersion "networking.k8s.io/v1beta1") -}} +serviceName: {{ .serviceName }} +servicePort: {{ .servicePort }} +{{- else -}} +service: + name: {{ .serviceName }} + port: + {{- if typeIs "string" .servicePort }} + name: {{ .servicePort }} + {{- else if or (typeIs "int" .servicePort) (typeIs "float64" .servicePort) }} + number: {{ .servicePort | int }} + {{- end }} +{{- end -}} +{{- end -}} + +{{/* +Print "true" if the API pathType field is supported +Usage: +{{ include "common.ingress.supportsPathType" . }} +*/}} +{{- define "common.ingress.supportsPathType" -}} +{{- if (semverCompare "<1.18-0" (include "common.capabilities.kubeVersion" .)) -}} +{{- print "false" -}} +{{- else -}} +{{- print "true" -}} +{{- end -}} +{{- end -}} + +{{/* +Returns true if the ingressClassname field is supported +Usage: +{{ include "common.ingress.supportsIngressClassname" . }} +*/}} +{{- define "common.ingress.supportsIngressClassname" -}} +{{- if semverCompare "<1.18-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "false" -}} +{{- else -}} +{{- print "true" -}} +{{- end -}} +{{- end -}} + +{{/* +Return true if cert-manager required annotations for TLS signed +certificates are set in the Ingress annotations +Ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations +Usage: +{{ include "common.ingress.certManagerRequest" ( dict "annotations" .Values.path.to.the.ingress.annotations ) }} +*/}} +{{- define "common.ingress.certManagerRequest" -}} +{{ if or (hasKey .annotations "cert-manager.io/cluster-issuer") (hasKey .annotations "cert-manager.io/issuer") (hasKey .annotations "kubernetes.io/tls-acme") }} + {{- true -}} +{{- end -}} +{{- end -}} diff --git a/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_labels.tpl b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_labels.tpl new file mode 100644 index 0000000..252066c --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_labels.tpl @@ -0,0 +1,18 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Kubernetes standard labels +*/}} +{{- define "common.labels.standard" -}} +app.kubernetes.io/name: {{ include "common.names.name" . }} +helm.sh/chart: {{ include "common.names.chart" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end -}} + +{{/* +Labels to use on deploy.spec.selector.matchLabels and svc.spec.selector +*/}} +{{- define "common.labels.matchLabels" -}} +app.kubernetes.io/name: {{ include "common.names.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end -}} diff --git a/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_names.tpl b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_names.tpl new file mode 100644 index 0000000..617a234 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_names.tpl @@ -0,0 +1,66 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "common.names.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "common.names.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "common.names.fullname" -}} +{{- if .Values.fullnameOverride -}} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Create a default fully qualified dependency name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +Usage: +{{ include "common.names.dependency.fullname" (dict "chartName" "dependency-chart-name" "chartValues" .Values.dependency-chart "context" $) }} +*/}} +{{- define "common.names.dependency.fullname" -}} +{{- if .chartValues.fullnameOverride -}} +{{- .chartValues.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .chartName .chartValues.nameOverride -}} +{{- if contains $name .context.Release.Name -}} +{{- .context.Release.Name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .context.Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Allow the release namespace to be overridden for multi-namespace deployments in combined charts. +*/}} +{{- define "common.names.namespace" -}} +{{- default .Release.Namespace .Values.namespaceOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a fully qualified app name adding the installation's namespace. +*/}} +{{- define "common.names.fullname.namespace" -}} +{{- printf "%s-%s" (include "common.names.fullname" .) (include "common.names.namespace" .) | trunc 63 | trimSuffix "-" -}} +{{- end -}} diff --git a/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_secrets.tpl b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_secrets.tpl new file mode 100644 index 0000000..a1708b2 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_secrets.tpl @@ -0,0 +1,165 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Generate secret name. + +Usage: +{{ include "common.secrets.name" (dict "existingSecret" .Values.path.to.the.existingSecret "defaultNameSuffix" "mySuffix" "context" $) }} + +Params: + - existingSecret - ExistingSecret/String - Optional. The path to the existing secrets in the values.yaml given by the user + to be used instead of the default one. Allows for it to be of type String (just the secret name) for backwards compatibility. + +info: https://github.com/bitnami/charts/tree/main/bitnami/common#existingsecret + - defaultNameSuffix - String - Optional. It is used only if we have several secrets in the same deployment. + - context - Dict - Required. The context for the template evaluation. +*/}} +{{- define "common.secrets.name" -}} +{{- $name := (include "common.names.fullname" .context) -}} + +{{- if .defaultNameSuffix -}} +{{- $name = printf "%s-%s" $name .defaultNameSuffix | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{- with .existingSecret -}} +{{- if not (typeIs "string" .) -}} +{{- with .name -}} +{{- $name = . -}} +{{- end -}} +{{- else -}} +{{- $name = . -}} +{{- end -}} +{{- end -}} + +{{- printf "%s" $name -}} +{{- end -}} + +{{/* +Generate secret key. + +Usage: +{{ include "common.secrets.key" (dict "existingSecret" .Values.path.to.the.existingSecret "key" "keyName") }} + +Params: + - existingSecret - ExistingSecret/String - Optional. The path to the existing secrets in the values.yaml given by the user + to be used instead of the default one. Allows for it to be of type String (just the secret name) for backwards compatibility. + +info: https://github.com/bitnami/charts/tree/main/bitnami/common#existingsecret + - key - String - Required. Name of the key in the secret. +*/}} +{{- define "common.secrets.key" -}} +{{- $key := .key -}} + +{{- if .existingSecret -}} + {{- if not (typeIs "string" .existingSecret) -}} + {{- if .existingSecret.keyMapping -}} + {{- $key = index .existingSecret.keyMapping $.key -}} + {{- end -}} + {{- end }} +{{- end -}} + +{{- printf "%s" $key -}} +{{- end -}} + +{{/* +Generate secret password or retrieve one if already created. + +Usage: +{{ include "common.secrets.passwords.manage" (dict "secret" "secret-name" "key" "keyName" "providedValues" (list "path.to.password1" "path.to.password2") "length" 10 "strong" false "chartName" "chartName" "context" $) }} + +Params: + - secret - String - Required - Name of the 'Secret' resource where the password is stored. + - key - String - Required - Name of the key in the secret. + - providedValues - List - Required - The path to the validating value in the values.yaml, e.g: "mysql.password". Will pick first parameter with a defined value. + - length - int - Optional - Length of the generated random password. + - strong - Boolean - Optional - Whether to add symbols to the generated random password. + - chartName - String - Optional - Name of the chart used when said chart is deployed as a subchart. + - context - Context - Required - Parent context. + +The order in which this function returns a secret password: + 1. Already existing 'Secret' resource + (If a 'Secret' resource is found under the name provided to the 'secret' parameter to this function and that 'Secret' resource contains a key with the name passed as the 'key' parameter to this function then the value of this existing secret password will be returned) + 2. Password provided via the values.yaml + (If one of the keys passed to the 'providedValues' parameter to this function is a valid path to a key in the values.yaml and has a value, the value of the first key with a value will be returned) + 3. Randomly generated secret password + (A new random secret password with the length specified in the 'length' parameter will be generated and returned) + +*/}} +{{- define "common.secrets.passwords.manage" -}} + +{{- $password := "" }} +{{- $subchart := "" }} +{{- $chartName := default "" .chartName }} +{{- $passwordLength := default 10 .length }} +{{- $providedPasswordKey := include "common.utils.getKeyFromList" (dict "keys" .providedValues "context" $.context) }} +{{- $providedPasswordValue := include "common.utils.getValueFromKey" (dict "key" $providedPasswordKey "context" $.context) }} +{{- $secretData := (lookup "v1" "Secret" (include "common.names.namespace" .context) .secret).data }} +{{- if $secretData }} + {{- if hasKey $secretData .key }} + {{- $password = index $secretData .key | quote }} + {{- else }} + {{- printf "\nPASSWORDS ERROR: The secret \"%s\" does not contain the key \"%s\"\n" .secret .key | fail -}} + {{- end -}} +{{- else if $providedPasswordValue }} + {{- $password = $providedPasswordValue | toString | b64enc | quote }} +{{- else }} + + {{- if .context.Values.enabled }} + {{- $subchart = $chartName }} + {{- end -}} + + {{- $requiredPassword := dict "valueKey" $providedPasswordKey "secret" .secret "field" .key "subchart" $subchart "context" $.context -}} + {{- $requiredPasswordError := include "common.validations.values.single.empty" $requiredPassword -}} + {{- $passwordValidationErrors := list $requiredPasswordError -}} + {{- include "common.errors.upgrade.passwords.empty" (dict "validationErrors" $passwordValidationErrors "context" $.context) -}} + + {{- if .strong }} + {{- $subStr := list (lower (randAlpha 1)) (randNumeric 1) (upper (randAlpha 1)) | join "_" }} + {{- $password = randAscii $passwordLength }} + {{- $password = regexReplaceAllLiteral "\\W" $password "@" | substr 5 $passwordLength }} + {{- $password = printf "%s%s" $subStr $password | toString | shuffle | b64enc | quote }} + {{- else }} + {{- $password = randAlphaNum $passwordLength | b64enc | quote }} + {{- end }} +{{- end -}} +{{- printf "%s" $password -}} +{{- end -}} + +{{/* +Reuses the value from an existing secret, otherwise sets its value to a default value. + +Usage: +{{ include "common.secrets.lookup" (dict "secret" "secret-name" "key" "keyName" "defaultValue" .Values.myValue "context" $) }} + +Params: + - secret - String - Required - Name of the 'Secret' resource where the password is stored. + - key - String - Required - Name of the key in the secret. + - defaultValue - String - Required - The path to the validating value in the values.yaml, e.g: "mysql.password". Will pick first parameter with a defined value. + - context - Context - Required - Parent context. + +*/}} +{{- define "common.secrets.lookup" -}} +{{- $value := "" -}} +{{- $defaultValue := required "\n'common.secrets.lookup': Argument 'defaultValue' missing or empty" .defaultValue -}} +{{- $secretData := (lookup "v1" "Secret" (include "common.names.namespace" .context) .secret).data -}} +{{- if and $secretData (hasKey $secretData .key) -}} + {{- $value = index $secretData .key -}} +{{- else -}} + {{- $value = $defaultValue | toString | b64enc -}} +{{- end -}} +{{- printf "%s" $value -}} +{{- end -}} + +{{/* +Returns whether a previous generated secret already exists + +Usage: +{{ include "common.secrets.exists" (dict "secret" "secret-name" "context" $) }} + +Params: + - secret - String - Required - Name of the 'Secret' resource where the password is stored. + - context - Context - Required - Parent context. +*/}} +{{- define "common.secrets.exists" -}} +{{- $secret := (lookup "v1" "Secret" (include "common.names.namespace" .context) .secret) }} +{{- if $secret }} + {{- true -}} +{{- end -}} +{{- end -}} diff --git a/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_storage.tpl b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_storage.tpl new file mode 100644 index 0000000..60e2a84 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_storage.tpl @@ -0,0 +1,23 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Return the proper Storage Class +{{ include "common.storage.class" ( dict "persistence" .Values.path.to.the.persistence "global" $) }} +*/}} +{{- define "common.storage.class" -}} + +{{- $storageClass := .persistence.storageClass -}} +{{- if .global -}} + {{- if .global.storageClass -}} + {{- $storageClass = .global.storageClass -}} + {{- end -}} +{{- end -}} + +{{- if $storageClass -}} + {{- if (eq "-" $storageClass) -}} + {{- printf "storageClassName: \"\"" -}} + {{- else }} + {{- printf "storageClassName: %s" $storageClass -}} + {{- end -}} +{{- end -}} + +{{- end -}} diff --git a/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_tplvalues.tpl b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_tplvalues.tpl new file mode 100644 index 0000000..2db1668 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_tplvalues.tpl @@ -0,0 +1,13 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Renders a value that contains template. +Usage: +{{ include "common.tplvalues.render" ( dict "value" .Values.path.to.the.Value "context" $) }} +*/}} +{{- define "common.tplvalues.render" -}} + {{- if typeIs "string" .value }} + {{- tpl .value .context }} + {{- else }} + {{- tpl (.value | toYaml) .context }} + {{- end }} +{{- end -}} diff --git a/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_utils.tpl b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_utils.tpl new file mode 100644 index 0000000..b1ead50 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_utils.tpl @@ -0,0 +1,62 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Print instructions to get a secret value. +Usage: +{{ include "common.utils.secret.getvalue" (dict "secret" "secret-name" "field" "secret-value-field" "context" $) }} +*/}} +{{- define "common.utils.secret.getvalue" -}} +{{- $varname := include "common.utils.fieldToEnvVar" . -}} +export {{ $varname }}=$(kubectl get secret --namespace {{ include "common.names.namespace" .context | quote }} {{ .secret }} -o jsonpath="{.data.{{ .field }}}" | base64 -d) +{{- end -}} + +{{/* +Build env var name given a field +Usage: +{{ include "common.utils.fieldToEnvVar" dict "field" "my-password" }} +*/}} +{{- define "common.utils.fieldToEnvVar" -}} + {{- $fieldNameSplit := splitList "-" .field -}} + {{- $upperCaseFieldNameSplit := list -}} + + {{- range $fieldNameSplit -}} + {{- $upperCaseFieldNameSplit = append $upperCaseFieldNameSplit ( upper . ) -}} + {{- end -}} + + {{ join "_" $upperCaseFieldNameSplit }} +{{- end -}} + +{{/* +Gets a value from .Values given +Usage: +{{ include "common.utils.getValueFromKey" (dict "key" "path.to.key" "context" $) }} +*/}} +{{- define "common.utils.getValueFromKey" -}} +{{- $splitKey := splitList "." .key -}} +{{- $value := "" -}} +{{- $latestObj := $.context.Values -}} +{{- range $splitKey -}} + {{- if not $latestObj -}} + {{- printf "please review the entire path of '%s' exists in values" $.key | fail -}} + {{- end -}} + {{- $value = ( index $latestObj . ) -}} + {{- $latestObj = $value -}} +{{- end -}} +{{- printf "%v" (default "" $value) -}} +{{- end -}} + +{{/* +Returns first .Values key with a defined value or first of the list if all non-defined +Usage: +{{ include "common.utils.getKeyFromList" (dict "keys" (list "path.to.key1" "path.to.key2") "context" $) }} +*/}} +{{- define "common.utils.getKeyFromList" -}} +{{- $key := first .keys -}} +{{- $reverseKeys := reverse .keys }} +{{- range $reverseKeys }} + {{- $value := include "common.utils.getValueFromKey" (dict "key" . "context" $.context ) }} + {{- if $value -}} + {{- $key = . }} + {{- end -}} +{{- end -}} +{{- printf "%s" $key -}} +{{- end -}} diff --git a/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_warnings.tpl b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_warnings.tpl new file mode 100644 index 0000000..ae10fa4 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/_warnings.tpl @@ -0,0 +1,14 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Warning about using rolling tag. +Usage: +{{ include "common.warnings.rollingTag" .Values.path.to.the.imageRoot }} +*/}} +{{- define "common.warnings.rollingTag" -}} + +{{- if and (contains "bitnami/" .repository) (not (.tag | toString | regexFind "-r\\d+$|sha256:")) }} +WARNING: Rolling tag detected ({{ .repository }}:{{ .tag }}), please note that it is strongly recommended to avoid using rolling tags in a production environment. ++info https://docs.bitnami.com/containers/how-to/understand-rolling-tags-containers/ +{{- end }} + +{{- end -}} diff --git a/charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_cassandra.tpl b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_cassandra.tpl new file mode 100644 index 0000000..ded1ae3 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_cassandra.tpl @@ -0,0 +1,72 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Validate Cassandra required passwords are not empty. + +Usage: +{{ include "common.validations.values.cassandra.passwords" (dict "secret" "secretName" "subchart" false "context" $) }} +Params: + - secret - String - Required. Name of the secret where Cassandra values are stored, e.g: "cassandra-passwords-secret" + - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false +*/}} +{{- define "common.validations.values.cassandra.passwords" -}} + {{- $existingSecret := include "common.cassandra.values.existingSecret" . -}} + {{- $enabled := include "common.cassandra.values.enabled" . -}} + {{- $dbUserPrefix := include "common.cassandra.values.key.dbUser" . -}} + {{- $valueKeyPassword := printf "%s.password" $dbUserPrefix -}} + + {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}} + {{- $requiredPasswords := list -}} + + {{- $requiredPassword := dict "valueKey" $valueKeyPassword "secret" .secret "field" "cassandra-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}} + + {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}} + + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for existingSecret. + +Usage: +{{ include "common.cassandra.values.existingSecret" (dict "context" $) }} +Params: + - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false +*/}} +{{- define "common.cassandra.values.existingSecret" -}} + {{- if .subchart -}} + {{- .context.Values.cassandra.dbUser.existingSecret | quote -}} + {{- else -}} + {{- .context.Values.dbUser.existingSecret | quote -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for enabled cassandra. + +Usage: +{{ include "common.cassandra.values.enabled" (dict "context" $) }} +*/}} +{{- define "common.cassandra.values.enabled" -}} + {{- if .subchart -}} + {{- printf "%v" .context.Values.cassandra.enabled -}} + {{- else -}} + {{- printf "%v" (not .context.Values.enabled) -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for the key dbUser + +Usage: +{{ include "common.cassandra.values.key.dbUser" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether Cassandra is used as subchart or not. Default: false +*/}} +{{- define "common.cassandra.values.key.dbUser" -}} + {{- if .subchart -}} + cassandra.dbUser + {{- else -}} + dbUser + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_mariadb.tpl b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_mariadb.tpl new file mode 100644 index 0000000..b6906ff --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_mariadb.tpl @@ -0,0 +1,103 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Validate MariaDB required passwords are not empty. + +Usage: +{{ include "common.validations.values.mariadb.passwords" (dict "secret" "secretName" "subchart" false "context" $) }} +Params: + - secret - String - Required. Name of the secret where MariaDB values are stored, e.g: "mysql-passwords-secret" + - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false +*/}} +{{- define "common.validations.values.mariadb.passwords" -}} + {{- $existingSecret := include "common.mariadb.values.auth.existingSecret" . -}} + {{- $enabled := include "common.mariadb.values.enabled" . -}} + {{- $architecture := include "common.mariadb.values.architecture" . -}} + {{- $authPrefix := include "common.mariadb.values.key.auth" . -}} + {{- $valueKeyRootPassword := printf "%s.rootPassword" $authPrefix -}} + {{- $valueKeyUsername := printf "%s.username" $authPrefix -}} + {{- $valueKeyPassword := printf "%s.password" $authPrefix -}} + {{- $valueKeyReplicationPassword := printf "%s.replicationPassword" $authPrefix -}} + + {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}} + {{- $requiredPasswords := list -}} + + {{- $requiredRootPassword := dict "valueKey" $valueKeyRootPassword "secret" .secret "field" "mariadb-root-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}} + + {{- $valueUsername := include "common.utils.getValueFromKey" (dict "key" $valueKeyUsername "context" .context) }} + {{- if not (empty $valueUsername) -}} + {{- $requiredPassword := dict "valueKey" $valueKeyPassword "secret" .secret "field" "mariadb-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}} + {{- end -}} + + {{- if (eq $architecture "replication") -}} + {{- $requiredReplicationPassword := dict "valueKey" $valueKeyReplicationPassword "secret" .secret "field" "mariadb-replication-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredReplicationPassword -}} + {{- end -}} + + {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}} + + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for existingSecret. + +Usage: +{{ include "common.mariadb.values.auth.existingSecret" (dict "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false +*/}} +{{- define "common.mariadb.values.auth.existingSecret" -}} + {{- if .subchart -}} + {{- .context.Values.mariadb.auth.existingSecret | quote -}} + {{- else -}} + {{- .context.Values.auth.existingSecret | quote -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for enabled mariadb. + +Usage: +{{ include "common.mariadb.values.enabled" (dict "context" $) }} +*/}} +{{- define "common.mariadb.values.enabled" -}} + {{- if .subchart -}} + {{- printf "%v" .context.Values.mariadb.enabled -}} + {{- else -}} + {{- printf "%v" (not .context.Values.enabled) -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for architecture + +Usage: +{{ include "common.mariadb.values.architecture" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false +*/}} +{{- define "common.mariadb.values.architecture" -}} + {{- if .subchart -}} + {{- .context.Values.mariadb.architecture -}} + {{- else -}} + {{- .context.Values.architecture -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for the key auth + +Usage: +{{ include "common.mariadb.values.key.auth" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MariaDB is used as subchart or not. Default: false +*/}} +{{- define "common.mariadb.values.key.auth" -}} + {{- if .subchart -}} + mariadb.auth + {{- else -}} + auth + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_mongodb.tpl b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_mongodb.tpl new file mode 100644 index 0000000..f820ec1 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_mongodb.tpl @@ -0,0 +1,108 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Validate MongoDB® required passwords are not empty. + +Usage: +{{ include "common.validations.values.mongodb.passwords" (dict "secret" "secretName" "subchart" false "context" $) }} +Params: + - secret - String - Required. Name of the secret where MongoDB® values are stored, e.g: "mongodb-passwords-secret" + - subchart - Boolean - Optional. Whether MongoDB® is used as subchart or not. Default: false +*/}} +{{- define "common.validations.values.mongodb.passwords" -}} + {{- $existingSecret := include "common.mongodb.values.auth.existingSecret" . -}} + {{- $enabled := include "common.mongodb.values.enabled" . -}} + {{- $authPrefix := include "common.mongodb.values.key.auth" . -}} + {{- $architecture := include "common.mongodb.values.architecture" . -}} + {{- $valueKeyRootPassword := printf "%s.rootPassword" $authPrefix -}} + {{- $valueKeyUsername := printf "%s.username" $authPrefix -}} + {{- $valueKeyDatabase := printf "%s.database" $authPrefix -}} + {{- $valueKeyPassword := printf "%s.password" $authPrefix -}} + {{- $valueKeyReplicaSetKey := printf "%s.replicaSetKey" $authPrefix -}} + {{- $valueKeyAuthEnabled := printf "%s.enabled" $authPrefix -}} + + {{- $authEnabled := include "common.utils.getValueFromKey" (dict "key" $valueKeyAuthEnabled "context" .context) -}} + + {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") (eq $authEnabled "true") -}} + {{- $requiredPasswords := list -}} + + {{- $requiredRootPassword := dict "valueKey" $valueKeyRootPassword "secret" .secret "field" "mongodb-root-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}} + + {{- $valueUsername := include "common.utils.getValueFromKey" (dict "key" $valueKeyUsername "context" .context) }} + {{- $valueDatabase := include "common.utils.getValueFromKey" (dict "key" $valueKeyDatabase "context" .context) }} + {{- if and $valueUsername $valueDatabase -}} + {{- $requiredPassword := dict "valueKey" $valueKeyPassword "secret" .secret "field" "mongodb-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}} + {{- end -}} + + {{- if (eq $architecture "replicaset") -}} + {{- $requiredReplicaSetKey := dict "valueKey" $valueKeyReplicaSetKey "secret" .secret "field" "mongodb-replica-set-key" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredReplicaSetKey -}} + {{- end -}} + + {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}} + + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for existingSecret. + +Usage: +{{ include "common.mongodb.values.auth.existingSecret" (dict "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MongoDb is used as subchart or not. Default: false +*/}} +{{- define "common.mongodb.values.auth.existingSecret" -}} + {{- if .subchart -}} + {{- .context.Values.mongodb.auth.existingSecret | quote -}} + {{- else -}} + {{- .context.Values.auth.existingSecret | quote -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for enabled mongodb. + +Usage: +{{ include "common.mongodb.values.enabled" (dict "context" $) }} +*/}} +{{- define "common.mongodb.values.enabled" -}} + {{- if .subchart -}} + {{- printf "%v" .context.Values.mongodb.enabled -}} + {{- else -}} + {{- printf "%v" (not .context.Values.enabled) -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for the key auth + +Usage: +{{ include "common.mongodb.values.key.auth" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MongoDB® is used as subchart or not. Default: false +*/}} +{{- define "common.mongodb.values.key.auth" -}} + {{- if .subchart -}} + mongodb.auth + {{- else -}} + auth + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for architecture + +Usage: +{{ include "common.mongodb.values.architecture" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MongoDB® is used as subchart or not. Default: false +*/}} +{{- define "common.mongodb.values.architecture" -}} + {{- if .subchart -}} + {{- .context.Values.mongodb.architecture -}} + {{- else -}} + {{- .context.Values.architecture -}} + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_mysql.tpl b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_mysql.tpl new file mode 100644 index 0000000..74472a0 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_mysql.tpl @@ -0,0 +1,103 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Validate MySQL required passwords are not empty. + +Usage: +{{ include "common.validations.values.mysql.passwords" (dict "secret" "secretName" "subchart" false "context" $) }} +Params: + - secret - String - Required. Name of the secret where MySQL values are stored, e.g: "mysql-passwords-secret" + - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false +*/}} +{{- define "common.validations.values.mysql.passwords" -}} + {{- $existingSecret := include "common.mysql.values.auth.existingSecret" . -}} + {{- $enabled := include "common.mysql.values.enabled" . -}} + {{- $architecture := include "common.mysql.values.architecture" . -}} + {{- $authPrefix := include "common.mysql.values.key.auth" . -}} + {{- $valueKeyRootPassword := printf "%s.rootPassword" $authPrefix -}} + {{- $valueKeyUsername := printf "%s.username" $authPrefix -}} + {{- $valueKeyPassword := printf "%s.password" $authPrefix -}} + {{- $valueKeyReplicationPassword := printf "%s.replicationPassword" $authPrefix -}} + + {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}} + {{- $requiredPasswords := list -}} + + {{- $requiredRootPassword := dict "valueKey" $valueKeyRootPassword "secret" .secret "field" "mysql-root-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredRootPassword -}} + + {{- $valueUsername := include "common.utils.getValueFromKey" (dict "key" $valueKeyUsername "context" .context) }} + {{- if not (empty $valueUsername) -}} + {{- $requiredPassword := dict "valueKey" $valueKeyPassword "secret" .secret "field" "mysql-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredPassword -}} + {{- end -}} + + {{- if (eq $architecture "replication") -}} + {{- $requiredReplicationPassword := dict "valueKey" $valueKeyReplicationPassword "secret" .secret "field" "mysql-replication-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredReplicationPassword -}} + {{- end -}} + + {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}} + + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for existingSecret. + +Usage: +{{ include "common.mysql.values.auth.existingSecret" (dict "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false +*/}} +{{- define "common.mysql.values.auth.existingSecret" -}} + {{- if .subchart -}} + {{- .context.Values.mysql.auth.existingSecret | quote -}} + {{- else -}} + {{- .context.Values.auth.existingSecret | quote -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for enabled mysql. + +Usage: +{{ include "common.mysql.values.enabled" (dict "context" $) }} +*/}} +{{- define "common.mysql.values.enabled" -}} + {{- if .subchart -}} + {{- printf "%v" .context.Values.mysql.enabled -}} + {{- else -}} + {{- printf "%v" (not .context.Values.enabled) -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for architecture + +Usage: +{{ include "common.mysql.values.architecture" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false +*/}} +{{- define "common.mysql.values.architecture" -}} + {{- if .subchart -}} + {{- .context.Values.mysql.architecture -}} + {{- else -}} + {{- .context.Values.architecture -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for the key auth + +Usage: +{{ include "common.mysql.values.key.auth" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether MySQL is used as subchart or not. Default: false +*/}} +{{- define "common.mysql.values.key.auth" -}} + {{- if .subchart -}} + mysql.auth + {{- else -}} + auth + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_postgresql.tpl b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_postgresql.tpl new file mode 100644 index 0000000..164ec0d --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_postgresql.tpl @@ -0,0 +1,129 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Validate PostgreSQL required passwords are not empty. + +Usage: +{{ include "common.validations.values.postgresql.passwords" (dict "secret" "secretName" "subchart" false "context" $) }} +Params: + - secret - String - Required. Name of the secret where postgresql values are stored, e.g: "postgresql-passwords-secret" + - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false +*/}} +{{- define "common.validations.values.postgresql.passwords" -}} + {{- $existingSecret := include "common.postgresql.values.existingSecret" . -}} + {{- $enabled := include "common.postgresql.values.enabled" . -}} + {{- $valueKeyPostgresqlPassword := include "common.postgresql.values.key.postgressPassword" . -}} + {{- $valueKeyPostgresqlReplicationEnabled := include "common.postgresql.values.key.replicationPassword" . -}} + {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}} + {{- $requiredPasswords := list -}} + {{- $requiredPostgresqlPassword := dict "valueKey" $valueKeyPostgresqlPassword "secret" .secret "field" "postgresql-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredPostgresqlPassword -}} + + {{- $enabledReplication := include "common.postgresql.values.enabled.replication" . -}} + {{- if (eq $enabledReplication "true") -}} + {{- $requiredPostgresqlReplicationPassword := dict "valueKey" $valueKeyPostgresqlReplicationEnabled "secret" .secret "field" "postgresql-replication-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredPostgresqlReplicationPassword -}} + {{- end -}} + + {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to decide whether evaluate global values. + +Usage: +{{ include "common.postgresql.values.use.global" (dict "key" "key-of-global" "context" $) }} +Params: + - key - String - Required. Field to be evaluated within global, e.g: "existingSecret" +*/}} +{{- define "common.postgresql.values.use.global" -}} + {{- if .context.Values.global -}} + {{- if .context.Values.global.postgresql -}} + {{- index .context.Values.global.postgresql .key | quote -}} + {{- end -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for existingSecret. + +Usage: +{{ include "common.postgresql.values.existingSecret" (dict "context" $) }} +*/}} +{{- define "common.postgresql.values.existingSecret" -}} + {{- $globalValue := include "common.postgresql.values.use.global" (dict "key" "existingSecret" "context" .context) -}} + + {{- if .subchart -}} + {{- default (.context.Values.postgresql.existingSecret | quote) $globalValue -}} + {{- else -}} + {{- default (.context.Values.existingSecret | quote) $globalValue -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for enabled postgresql. + +Usage: +{{ include "common.postgresql.values.enabled" (dict "context" $) }} +*/}} +{{- define "common.postgresql.values.enabled" -}} + {{- if .subchart -}} + {{- printf "%v" .context.Values.postgresql.enabled -}} + {{- else -}} + {{- printf "%v" (not .context.Values.enabled) -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for the key postgressPassword. + +Usage: +{{ include "common.postgresql.values.key.postgressPassword" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false +*/}} +{{- define "common.postgresql.values.key.postgressPassword" -}} + {{- $globalValue := include "common.postgresql.values.use.global" (dict "key" "postgresqlUsername" "context" .context) -}} + + {{- if not $globalValue -}} + {{- if .subchart -}} + postgresql.postgresqlPassword + {{- else -}} + postgresqlPassword + {{- end -}} + {{- else -}} + global.postgresql.postgresqlPassword + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for enabled.replication. + +Usage: +{{ include "common.postgresql.values.enabled.replication" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false +*/}} +{{- define "common.postgresql.values.enabled.replication" -}} + {{- if .subchart -}} + {{- printf "%v" .context.Values.postgresql.replication.enabled -}} + {{- else -}} + {{- printf "%v" .context.Values.replication.enabled -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for the key replication.password. + +Usage: +{{ include "common.postgresql.values.key.replicationPassword" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether postgresql is used as subchart or not. Default: false +*/}} +{{- define "common.postgresql.values.key.replicationPassword" -}} + {{- if .subchart -}} + postgresql.replication.password + {{- else -}} + replication.password + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_redis.tpl b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_redis.tpl new file mode 100644 index 0000000..dcccfc1 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_redis.tpl @@ -0,0 +1,76 @@ + +{{/* vim: set filetype=mustache: */}} +{{/* +Validate Redis® required passwords are not empty. + +Usage: +{{ include "common.validations.values.redis.passwords" (dict "secret" "secretName" "subchart" false "context" $) }} +Params: + - secret - String - Required. Name of the secret where redis values are stored, e.g: "redis-passwords-secret" + - subchart - Boolean - Optional. Whether redis is used as subchart or not. Default: false +*/}} +{{- define "common.validations.values.redis.passwords" -}} + {{- $enabled := include "common.redis.values.enabled" . -}} + {{- $valueKeyPrefix := include "common.redis.values.keys.prefix" . -}} + {{- $standarizedVersion := include "common.redis.values.standarized.version" . }} + + {{- $existingSecret := ternary (printf "%s%s" $valueKeyPrefix "auth.existingSecret") (printf "%s%s" $valueKeyPrefix "existingSecret") (eq $standarizedVersion "true") }} + {{- $existingSecretValue := include "common.utils.getValueFromKey" (dict "key" $existingSecret "context" .context) }} + + {{- $valueKeyRedisPassword := ternary (printf "%s%s" $valueKeyPrefix "auth.password") (printf "%s%s" $valueKeyPrefix "password") (eq $standarizedVersion "true") }} + {{- $valueKeyRedisUseAuth := ternary (printf "%s%s" $valueKeyPrefix "auth.enabled") (printf "%s%s" $valueKeyPrefix "usePassword") (eq $standarizedVersion "true") }} + + {{- if and (or (not $existingSecret) (eq $existingSecret "\"\"")) (eq $enabled "true") -}} + {{- $requiredPasswords := list -}} + + {{- $useAuth := include "common.utils.getValueFromKey" (dict "key" $valueKeyRedisUseAuth "context" .context) -}} + {{- if eq $useAuth "true" -}} + {{- $requiredRedisPassword := dict "valueKey" $valueKeyRedisPassword "secret" .secret "field" "redis-password" -}} + {{- $requiredPasswords = append $requiredPasswords $requiredRedisPassword -}} + {{- end -}} + + {{- include "common.validations.values.multiple.empty" (dict "required" $requiredPasswords "context" .context) -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right value for enabled redis. + +Usage: +{{ include "common.redis.values.enabled" (dict "context" $) }} +*/}} +{{- define "common.redis.values.enabled" -}} + {{- if .subchart -}} + {{- printf "%v" .context.Values.redis.enabled -}} + {{- else -}} + {{- printf "%v" (not .context.Values.enabled) -}} + {{- end -}} +{{- end -}} + +{{/* +Auxiliary function to get the right prefix path for the values + +Usage: +{{ include "common.redis.values.key.prefix" (dict "subchart" "true" "context" $) }} +Params: + - subchart - Boolean - Optional. Whether redis is used as subchart or not. Default: false +*/}} +{{- define "common.redis.values.keys.prefix" -}} + {{- if .subchart -}}redis.{{- else -}}{{- end -}} +{{- end -}} + +{{/* +Checks whether the redis chart's includes the standarizations (version >= 14) + +Usage: +{{ include "common.redis.values.standarized.version" (dict "context" $) }} +*/}} +{{- define "common.redis.values.standarized.version" -}} + + {{- $standarizedAuth := printf "%s%s" (include "common.redis.values.keys.prefix" .) "auth" -}} + {{- $standarizedAuthValues := include "common.utils.getValueFromKey" (dict "key" $standarizedAuth "context" .context) }} + + {{- if $standarizedAuthValues -}} + {{- true -}} + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_validations.tpl b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_validations.tpl new file mode 100644 index 0000000..9a814cf --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/charts/common/templates/validations/_validations.tpl @@ -0,0 +1,46 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Validate values must not be empty. + +Usage: +{{- $validateValueConf00 := (dict "valueKey" "path.to.value" "secret" "secretName" "field" "password-00") -}} +{{- $validateValueConf01 := (dict "valueKey" "path.to.value" "secret" "secretName" "field" "password-01") -}} +{{ include "common.validations.values.empty" (dict "required" (list $validateValueConf00 $validateValueConf01) "context" $) }} + +Validate value params: + - valueKey - String - Required. The path to the validating value in the values.yaml, e.g: "mysql.password" + - secret - String - Optional. Name of the secret where the validating value is generated/stored, e.g: "mysql-passwords-secret" + - field - String - Optional. Name of the field in the secret data, e.g: "mysql-password" +*/}} +{{- define "common.validations.values.multiple.empty" -}} + {{- range .required -}} + {{- include "common.validations.values.single.empty" (dict "valueKey" .valueKey "secret" .secret "field" .field "context" $.context) -}} + {{- end -}} +{{- end -}} + +{{/* +Validate a value must not be empty. + +Usage: +{{ include "common.validations.value.empty" (dict "valueKey" "mariadb.password" "secret" "secretName" "field" "my-password" "subchart" "subchart" "context" $) }} + +Validate value params: + - valueKey - String - Required. The path to the validating value in the values.yaml, e.g: "mysql.password" + - secret - String - Optional. Name of the secret where the validating value is generated/stored, e.g: "mysql-passwords-secret" + - field - String - Optional. Name of the field in the secret data, e.g: "mysql-password" + - subchart - String - Optional - Name of the subchart that the validated password is part of. +*/}} +{{- define "common.validations.values.single.empty" -}} + {{- $value := include "common.utils.getValueFromKey" (dict "key" .valueKey "context" .context) }} + {{- $subchart := ternary "" (printf "%s." .subchart) (empty .subchart) }} + + {{- if not $value -}} + {{- $varname := "my-value" -}} + {{- $getCurrentValue := "" -}} + {{- if and .secret .field -}} + {{- $varname = include "common.utils.fieldToEnvVar" . -}} + {{- $getCurrentValue = printf " To get the current value:\n\n %s\n" (include "common.utils.secret.getvalue" .) -}} + {{- end -}} + {{- printf "\n '%s' must not be empty, please add '--set %s%s=$%s' to the command.%s" .valueKey $subchart .valueKey $varname $getCurrentValue -}} + {{- end -}} +{{- end -}} diff --git a/charts/limesurvey-martial/charts/mariadb/charts/common/values.yaml b/charts/limesurvey-martial/charts/mariadb/charts/common/values.yaml new file mode 100644 index 0000000..f2df68e --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/charts/common/values.yaml @@ -0,0 +1,5 @@ +## bitnami/common +## It is required by CI/CD tools and processes. +## @skip exampleValue +## +exampleValue: common-chart diff --git a/charts/limesurvey-martial/charts/mariadb/templates/NOTES.txt b/charts/limesurvey-martial/charts/mariadb/templates/NOTES.txt new file mode 100644 index 0000000..c1039e6 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/templates/NOTES.txt @@ -0,0 +1,75 @@ +CHART NAME: {{ .Chart.Name }} +CHART VERSION: {{ .Chart.Version }} +APP VERSION: {{ .Chart.AppVersion }} + +** Please be patient while the chart is being deployed ** + +{{- if .Values.diagnosticMode.enabled }} +The chart has been deployed in diagnostic mode. All probes have been disabled and the command has been overwritten with: + + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 4 }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 4 }} + +Get the list of pods by executing: + + kubectl get pods --namespace {{ .Release.Namespace }} -l app.kubernetes.io/instance={{ .Release.Name }} + +Access the pod you want to debug by executing + + kubectl exec --namespace {{ .Release.Namespace }} -ti -- bash + +In order to replicate the container startup scripts execute this command: + + /opt/bitnami/scripts/mariadb/entrypoint.sh /opt/bitnami/scripts/mariadb/run.sh + +{{- else }} + +Tip: + + Watch the deployment status using the command: kubectl get pods -w --namespace {{ .Release.Namespace }} -l app.kubernetes.io/instance={{ .Release.Name }} + +Services: + + echo Primary: {{ include "mariadb.primary.fullname" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}:{{ coalesce .Values.primary.service.ports.mysql .Values.primary.service.port }} +{{- if eq .Values.architecture "replication" }} + echo Secondary: {{ include "mariadb.secondary.fullname" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}:{{ coalesce .Values.secondary.service.ports.mysql .Values.secondary.service.port }} +{{- end }} + +Administrator credentials: + + Username: root + Password : $(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "mariadb.secretName" . }} -o jsonpath="{.data.mariadb-root-password}" | base64 -d) + +To connect to your database: + + 1. Run a pod that you can use as a client: + + kubectl run {{ include "common.names.fullname" . }}-client --rm --tty -i --restart='Never' --image {{ template "mariadb.image" . }} --namespace {{ .Release.Namespace }} --command -- bash + + 2. To connect to primary service (read/write): + + mysql -h {{ include "mariadb.primary.fullname" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }} -uroot -p {{ .Values.auth.database }} + +{{- if eq .Values.architecture "replication" }} + + 3. To connect to secondary service (read-only): + + mysql -h {{ include "mariadb.secondary.fullname" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }} -uroot -p {{ .Values.auth.database }} +{{- end }} + +To upgrade this helm chart: + + 1. Obtain the password as described on the 'Administrator credentials' section and set the 'auth.rootPassword' parameter as shown below: + + ROOT_PASSWORD=$(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "mariadb.secretName" . }} -o jsonpath="{.data.mariadb-root-password}" | base64 -d) + helm upgrade --namespace {{ .Release.Namespace }} {{ .Release.Name }} my-repo/mariadb --set auth.rootPassword=$ROOT_PASSWORD + +{{- include "common.warnings.rollingTag" .Values.image }} +{{- include "common.warnings.rollingTag" .Values.metrics.image }} +{{- include "common.warnings.rollingTag" .Values.volumePermissions.image }} +{{- include "mariadb.validateValues" . }} +{{- if not .Values.auth.customPasswordFiles -}} + {{- $passwordValidationErrors := include "common.validations.values.mariadb.passwords" (dict "secret" (include "common.names.fullname" .) "context" $) -}} + {{- include "common.errors.upgrade.passwords.empty" (dict "validationErrors" (list $passwordValidationErrors) "context" $) -}} +{{- end }} +{{- end }} diff --git a/charts/limesurvey-martial/charts/mariadb/templates/_helpers.tpl b/charts/limesurvey-martial/charts/mariadb/templates/_helpers.tpl new file mode 100644 index 0000000..5a67bd5 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/templates/_helpers.tpl @@ -0,0 +1,149 @@ +{{/* vim: set filetype=mustache: */}} + +{{- define "mariadb.primary.fullname" -}} +{{- if eq .Values.architecture "replication" }} +{{- printf "%s-%s" (include "common.names.fullname" .) .Values.primary.name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- include "common.names.fullname" . -}} +{{- end -}} +{{- end -}} + +{{- define "mariadb.secondary.fullname" -}} +{{- printf "%s-%s" (include "common.names.fullname" .) .Values.secondary.name | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Return the proper MariaDB image name +*/}} +{{- define "mariadb.image" -}} +{{ include "common.images.image" (dict "imageRoot" .Values.image "global" .Values.global) }} +{{- end -}} + +{{/* +Return the proper metrics image name +*/}} +{{- define "mariadb.metrics.image" -}} +{{ include "common.images.image" (dict "imageRoot" .Values.metrics.image "global" .Values.global) }} +{{- end -}} + +{{/* +Return the proper image name (for the init container volume-permissions image) +*/}} +{{- define "mariadb.volumePermissions.image" -}} +{{ include "common.images.image" (dict "imageRoot" .Values.volumePermissions.image "global" .Values.global) }} +{{- end -}} + +{{/* +Return the proper Docker Image Registry Secret Names +*/}} +{{- define "mariadb.imagePullSecrets" -}} +{{ include "common.images.pullSecrets" (dict "images" (list .Values.image .Values.metrics.image .Values.volumePermissions.image) "global" .Values.global) }} +{{- end -}} + +{{ template "mariadb.initdbScriptsCM" . }} +{{/* +Get the initialization scripts ConfigMap name. +*/}} +{{- define "mariadb.initdbScriptsCM" -}} +{{- if .Values.initdbScriptsConfigMap -}} +{{- printf "%s" .Values.initdbScriptsConfigMap -}} +{{- else -}} +{{- printf "%s-init-scripts" (include "mariadb.primary.fullname" .) -}} +{{- end -}} +{{- end -}} + +{{/* +Create the name of the service account to use +*/}} +{{- define "mariadb.serviceAccountName" -}} +{{- if .Values.serviceAccount.create -}} + {{ default (include "common.names.fullname" .) .Values.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.serviceAccount.name }} +{{- end -}} +{{- end -}} + +{{/* +Return the configmap with the MariaDB Primary configuration +*/}} +{{- define "mariadb.primary.configmapName" -}} +{{- if .Values.primary.existingConfigmap -}} + {{- printf "%s" (tpl .Values.primary.existingConfigmap $) -}} +{{- else -}} + {{- printf "%s" (include "mariadb.primary.fullname" .) -}} +{{- end -}} +{{- end -}} + +{{/* +Return true if a configmap object should be created for MariaDB Secondary +*/}} +{{- define "mariadb.primary.createConfigmap" -}} +{{- if and .Values.primary.configuration (not .Values.primary.existingConfigmap) }} + {{- true -}} +{{- else -}} +{{- end -}} +{{- end -}} + +{{/* +Return the configmap with the MariaDB Primary configuration +*/}} +{{- define "mariadb.secondary.configmapName" -}} +{{- if .Values.secondary.existingConfigmap -}} + {{- printf "%s" (tpl .Values.secondary.existingConfigmap $) -}} +{{- else -}} + {{- printf "%s" (include "mariadb.secondary.fullname" .) -}} +{{- end -}} +{{- end -}} + +{{/* +Return true if a configmap object should be created for MariaDB Secondary +*/}} +{{- define "mariadb.secondary.createConfigmap" -}} +{{- if and (eq .Values.architecture "replication") .Values.secondary.configuration (not .Values.secondary.existingConfigmap) }} + {{- true -}} +{{- else -}} +{{- end -}} +{{- end -}} + +{{/* +Return the secret with MariaDB credentials +*/}} +{{- define "mariadb.secretName" -}} + {{- if .Values.auth.existingSecret -}} + {{- printf "%s" .Values.auth.existingSecret -}} + {{- else -}} + {{- printf "%s" (include "common.names.fullname" .) -}} + {{- end -}} +{{- end -}} + +{{/* +Return true if a secret object should be created for MariaDB +*/}} +{{- define "mariadb.createSecret" -}} +{{- if not (or .Values.auth.existingSecret .Values.auth.customPasswordFiles) }} + {{- true -}} +{{- end -}} +{{- end -}} + +{{/* +Compile all warnings into a single message, and call fail. +*/}} +{{- define "mariadb.validateValues" -}} +{{- $messages := list -}} +{{- $messages := append $messages (include "mariadb.validateValues.architecture" .) -}} +{{- $messages := without $messages "" -}} +{{- $message := join "\n" $messages -}} + +{{- if $message -}} +{{- printf "\nVALUES VALIDATION:\n%s" $message | fail -}} +{{- end -}} +{{- end -}} + +{{/* Validate values of MariaDB - must provide a valid architecture */}} +{{- define "mariadb.validateValues.architecture" -}} +{{- if and (ne .Values.architecture "standalone") (ne .Values.architecture "replication") -}} +mariadb: architecture + Invalid architecture selected. Valid values are "standalone" and + "replication". Please set a valid architecture (--set architecture="xxxx") +{{- end -}} +{{- end -}} diff --git a/charts/limesurvey-martial/charts/mariadb/templates/extra-list.yaml b/charts/limesurvey-martial/charts/mariadb/templates/extra-list.yaml new file mode 100644 index 0000000..9ac65f9 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/templates/extra-list.yaml @@ -0,0 +1,4 @@ +{{- range .Values.extraDeploy }} +--- +{{ include "common.tplvalues.render" (dict "value" . "context" $) }} +{{- end }} diff --git a/charts/limesurvey-martial/charts/mariadb/templates/networkpolicy-egress.yaml b/charts/limesurvey-martial/charts/mariadb/templates/networkpolicy-egress.yaml new file mode 100644 index 0000000..84f5d83 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/templates/networkpolicy-egress.yaml @@ -0,0 +1,33 @@ +{{- if and .Values.networkPolicy.enabled (or .Values.networkPolicy.egressRules.denyConnectionsToExternal .Values.networkPolicy.egressRules.customRules) }} +apiVersion: {{ include "common.capabilities.networkPolicy.apiVersion" . }} +kind: NetworkPolicy +metadata: + name: {{ printf "%s-egress" (include "common.names.fullname" .) }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + podSelector: + matchLabels: + {{- include "common.labels.standard" . | nindent 6 }} + policyTypes: + - Egress + egress: + {{- if .Values.networkPolicy.egressRules.denyConnectionsToExternal }} + - ports: + - port: 53 + protocol: UDP + - port: 53 + protocol: TCP + - to: + - namespaceSelector: {} + {{- end }} + {{- if .Values.networkPolicy.egressRules.customRules }} + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.egressRules.customRules "context" $) | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/limesurvey-martial/charts/mariadb/templates/primary/configmap.yaml b/charts/limesurvey-martial/charts/mariadb/templates/primary/configmap.yaml new file mode 100644 index 0000000..ae4d5b1 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/templates/primary/configmap.yaml @@ -0,0 +1,18 @@ +{{- if (include "mariadb.primary.createConfigmap" .) }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "mariadb.primary.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: primary + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +data: + my.cnf: |- +{{ .Values.primary.configuration | indent 4 }} +{{- end -}} diff --git a/charts/limesurvey-martial/charts/mariadb/templates/primary/initialization-configmap.yaml b/charts/limesurvey-martial/charts/mariadb/templates/primary/initialization-configmap.yaml new file mode 100644 index 0000000..f85903c --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/templates/primary/initialization-configmap.yaml @@ -0,0 +1,11 @@ +{{- if and .Values.initdbScripts (not .Values.initdbScriptsConfigMap) }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ printf "%s-init-scripts" (include "mariadb.primary.fullname" .) }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: primary +data: +{{- include "common.tplvalues.render" (dict "value" .Values.initdbScripts "context" .) | nindent 2 }} +{{ end }} diff --git a/charts/limesurvey-martial/charts/mariadb/templates/primary/networkpolicy-ingress.yaml b/charts/limesurvey-martial/charts/mariadb/templates/primary/networkpolicy-ingress.yaml new file mode 100644 index 0000000..125d0dd --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/templates/primary/networkpolicy-ingress.yaml @@ -0,0 +1,56 @@ +{{- if and .Values.networkPolicy.enabled (or .Values.networkPolicy.metrics.enabled .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.enabled) }} +apiVersion: {{ include "common.capabilities.networkPolicy.apiVersion" . }} +kind: NetworkPolicy +metadata: + name: {{ printf "%s-ingress" (include "common.names.fullname" .) }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + podSelector: + matchLabels: + app.kubernetes.io/component: primary + {{- include "common.labels.standard" . | nindent 6 }} + ingress: + {{- if and .Values.metrics.enabled .Values.networkPolicy.metrics.enabled (or .Values.networkPolicy.metrics.namespaceSelector .Values.networkPolicy.metrics.podSelector) }} + - from: + {{- if .Values.networkPolicy.metrics.namespaceSelector }} + - namespaceSelector: + matchLabels: + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.metrics.namespaceSelector "context" $) | nindent 14 }} + {{- end }} + {{- if .Values.networkPolicy.metrics.podSelector }} + - podSelector: + matchLabels: + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.metrics.podSelector "context" $) | nindent 14 }} + {{- end }} + {{- end }} + {{- if and .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.enabled (or .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.namespaceSelector .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.podSelector) }} + - from: + {{- if .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.namespaceSelector }} + - namespaceSelector: + matchLabels: + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.namespaceSelector "context" $) | nindent 14 }} + {{- end }} + {{- if .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.podSelector }} + - podSelector: + matchLabels: + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.podSelector "context" $) | nindent 14 }} + {{- end }} + {{- end }} + {{- if and .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.enabled (eq .Values.architecture "replication") }} + - from: + - podSelector: + matchLabels: + app.kubernetes.io/component: secondary + {{- include "common.labels.standard" . | nindent 14 }} + {{- end }} + {{- if .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.customRules }} + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingressRules.primaryAccessOnlyFrom.customRules "context" $) | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/limesurvey-martial/charts/mariadb/templates/primary/pdb.yaml b/charts/limesurvey-martial/charts/mariadb/templates/primary/pdb.yaml new file mode 100644 index 0000000..d923058 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/templates/primary/pdb.yaml @@ -0,0 +1,25 @@ +{{- if .Values.primary.pdb.create }} +apiVersion: {{ include "common.capabilities.policy.apiVersion" . }} +kind: PodDisruptionBudget +metadata: + name: {{ include "mariadb.primary.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: primary + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- if .Values.primary.pdb.minAvailable }} + minAvailable: {{ .Values.primary.pdb.minAvailable }} + {{- end }} + {{- if .Values.primary.pdb.maxUnavailable }} + maxUnavailable: {{ .Values.primary.pdb.maxUnavailable }} + {{- end }} + selector: + matchLabels: {{ include "common.labels.matchLabels" . | nindent 6 }} + app.kubernetes.io/component: primary +{{- end }} diff --git a/charts/limesurvey-martial/charts/mariadb/templates/primary/statefulset.yaml b/charts/limesurvey-martial/charts/mariadb/templates/primary/statefulset.yaml new file mode 100644 index 0000000..fd26089 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/templates/primary/statefulset.yaml @@ -0,0 +1,394 @@ +apiVersion: {{ include "common.capabilities.statefulset.apiVersion" . }} +kind: StatefulSet +metadata: + name: {{ include "mariadb.primary.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: primary + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + replicas: 1 + revisionHistoryLimit: {{ .Values.primary.revisionHistoryLimit }} + selector: + matchLabels: {{ include "common.labels.matchLabels" . | nindent 6 }} + app.kubernetes.io/component: primary + serviceName: {{ include "mariadb.primary.fullname" . }} + {{- if .Values.primary.updateStrategy }} + updateStrategy: {{- toYaml .Values.primary.updateStrategy | nindent 4 }} + {{- end }} + template: + metadata: + annotations: + {{- if (include "mariadb.primary.createConfigmap" .) }} + checksum/configuration: {{ include (print $.Template.BasePath "/primary/configmap.yaml") . | sha256sum }} + {{- end }} + {{- if .Values.primary.podAnnotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.primary.podAnnotations "context" $) | nindent 8 }} + {{- end }} + labels: {{- include "common.labels.standard" . | nindent 8 }} + app.kubernetes.io/component: primary + {{- if .Values.primary.podLabels }} + {{- include "common.tplvalues.render" (dict "value" .Values.primary.podLabels "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 8 }} + {{- end }} + spec: + {{- include "mariadb.imagePullSecrets" . | nindent 6 }} + {{- if .Values.primary.hostAliases }} + hostAliases: {{- include "common.tplvalues.render" (dict "value" .Values.primary.hostAliases "context" $) | nindent 8 }} + {{- end }} + {{- if or .Values.primary.schedulerName .Values.schedulerName }} + schedulerName: {{ (coalesce .Values.primary.schedulerName .Values.schedulerName) | quote }} + {{- end }} + serviceAccountName: {{ template "mariadb.serviceAccountName" . }} + {{- if .Values.primary.affinity }} + affinity: {{- include "common.tplvalues.render" (dict "value" .Values.primary.affinity "context" $) | nindent 8 }} + {{- else }} + affinity: + podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.primary.podAffinityPreset "component" "primary" "context" $) | nindent 10 }} + podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.primary.podAntiAffinityPreset "component" "primary" "context" $) | nindent 10 }} + nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.primary.nodeAffinityPreset.type "key" .Values.primary.nodeAffinityPreset.key "values" .Values.primary.nodeAffinityPreset.values) | nindent 10 }} + {{- end }} + {{- if .Values.primary.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" (dict "value" .Values.primary.nodeSelector "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.primary.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.primary.tolerations "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.primary.schedulerName }} + schedulerName: {{ .Values.primary.schedulerName }} + {{- end }} + {{- if .Values.primary.topologySpreadConstraints }} + topologySpreadConstraints: {{- include "common.tplvalues.render" (dict "value" .Values.primary.topologySpreadConstraints "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.primary.priorityClassName }} + priorityClassName: {{ .Values.primary.priorityClassName | quote }} + {{- else if .Values.priorityClassName }} + priorityClassName: {{ .Values.priorityClassName | quote }} + {{- end }} + {{- if .Values.primary.runtimeClassName }} + runtimeClassName: {{ .Values.primary.runtimeClassName | quote }} + {{- else if .Values.runtimeClassName }} + runtimeClassName: {{ .Values.runtimeClassName | quote }} + {{- end }} + {{- if .Values.primary.podSecurityContext.enabled }} + securityContext: {{- omit .Values.primary.podSecurityContext "enabled" | toYaml | nindent 8 }} + {{- end }} + {{- if or .Values.primary.initContainers (and .Values.primary.podSecurityContext.enabled .Values.volumePermissions.enabled .Values.primary.persistence.enabled) }} + initContainers: + {{- if .Values.primary.initContainers }} + {{- include "common.tplvalues.render" (dict "value" .Values.primary.initContainers "context" $) | nindent 8 }} + {{- end }} + {{- if and .Values.primary.podSecurityContext.enabled .Values.volumePermissions.enabled .Values.primary.persistence.enabled }} + - name: volume-permissions + image: {{ include "mariadb.volumePermissions.image" . }} + imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }} + command: + - /bin/bash + - -ec + - | + chown -R {{ .Values.primary.containerSecurityContext.runAsUser }}:{{ .Values.primary.podSecurityContext.fsGroup }} /bitnami/mariadb + securityContext: + runAsUser: 0 + {{- if .Values.volumePermissions.resources }} + resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }} + {{- end }} + volumeMounts: + - name: data + mountPath: /bitnami/mariadb + {{- if .Values.primary.persistence.subPath }} + subPath: {{ .Values.primary.persistence.subPath }} + {{- end }} + {{- end }} + {{- end }} + containers: + - name: mariadb + image: {{ include "mariadb.image" . }} + imagePullPolicy: {{ .Values.image.pullPolicy | quote }} + {{- if .Values.primary.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.primary.containerSecurityContext "enabled" | toYaml | nindent 12 }} + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} + {{- else if .Values.primary.command }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.primary.command "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }} + {{- else if .Values.primary.args }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.primary.args "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.primary.lifecycleHooks }} + lifecycle: {{- include "common.tplvalues.render" (dict "value" .Values.primary.lifecycleHooks "context" $) | nindent 12 }} + {{- end }} + env: + - name: BITNAMI_DEBUG + value: {{ ternary "true" "false" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }} + {{- if .Values.auth.usePasswordFiles }} + - name: MARIADB_ROOT_PASSWORD_FILE + value: {{ default "/opt/bitnami/mariadb/secrets/mariadb-root-password" .Values.auth.customPasswordFiles.root }} + {{- else }} + - name: MARIADB_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "mariadb.secretName" . }} + key: mariadb-root-password + {{- end }} + {{- if not (empty .Values.auth.username) }} + - name: MARIADB_USER + value: {{ .Values.auth.username | quote }} + {{- if .Values.auth.usePasswordFiles }} + - name: MARIADB_PASSWORD_FILE + value: {{ default "/opt/bitnami/mariadb/secrets/mariadb-password" .Values.auth.customPasswordFiles.user }} + {{- else }} + - name: MARIADB_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "mariadb.secretName" . }} + key: mariadb-password + {{- end }} + {{- end }} + - name: MARIADB_DATABASE + value: {{ .Values.auth.database | quote }} + {{- if eq .Values.architecture "replication" }} + - name: MARIADB_REPLICATION_MODE + value: "master" + - name: MARIADB_REPLICATION_USER + value: {{ .Values.auth.replicationUser | quote }} + {{- if .Values.auth.usePasswordFiles }} + - name: MARIADB_REPLICATION_PASSWORD_FILE + value: {{ default "/opt/bitnami/mariadb/secrets/mariadb-replication-password" .Values.auth.customPasswordFiles.replicator }} + {{- else }} + - name: MARIADB_REPLICATION_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "mariadb.secretName" . }} + key: mariadb-replication-password + {{- end }} + {{- end }} + {{- if .Values.primary.extraFlags }} + - name: MARIADB_EXTRA_FLAGS + value: "{{ .Values.primary.extraFlags }}" + {{- end }} + {{- if .Values.primary.startupWaitOptions }} + - name: MARIADB_STARTUP_WAIT_RETRIES + value: "{{ .Values.primary.startupWaitOptions.retries | default 300 }}" + - name: MARIADB_STARTUP_WAIT_SLEEP_TIME + value: "{{ .Values.primary.startupWaitOptions.sleepTime | default 2 }}" + {{- end }} + {{- if .Values.primary.extraEnvVars }} + {{- include "common.tplvalues.render" (dict "value" .Values.primary.extraEnvVars "context" $) | nindent 12 }} + {{- end }} + {{- if or .Values.primary.extraEnvVarsCM .Values.primary.extraEnvVarsSecret }} + envFrom: + {{- if .Values.primary.extraEnvVarsCM }} + - configMapRef: + name: {{ .Values.primary.extraEnvVarsCM }} + {{- end }} + {{- if .Values.primary.extraEnvVarsSecret }} + - secretRef: + name: {{ .Values.primary.extraEnvVarsSecret }} + {{- end }} + {{- end }} + ports: + - name: mysql + containerPort: 3306 + {{- if not .Values.diagnosticMode.enabled }} + {{- if .Values.primary.customStartupProbe }} + startupProbe: {{- include "common.tplvalues.render" (dict "value" .Values.primary.customStartupProbe "context" $) | nindent 12 }} + {{- else if .Values.primary.startupProbe.enabled }} + startupProbe: {{- omit .Values.primary.startupProbe "enabled" | toYaml | nindent 12 }} + exec: + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_ROOT_PASSWORD_FILE") + fi + mysqladmin status -uroot -p"${password_aux}" + {{- end }} + {{- if .Values.primary.customLivenessProbe }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.primary.customLivenessProbe "context" $) | nindent 12 }} + {{- else if .Values.primary.livenessProbe.enabled }} + livenessProbe: {{- omit .Values.primary.livenessProbe "enabled" | toYaml | nindent 12 }} + exec: + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_ROOT_PASSWORD_FILE") + fi + mysqladmin status -uroot -p"${password_aux}" + {{- end }} + {{- if .Values.primary.customReadinessProbe }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.primary.customReadinessProbe "context" $) | nindent 12 }} + {{- else if .Values.primary.readinessProbe.enabled }} + readinessProbe: {{- omit .Values.primary.readinessProbe "enabled" | toYaml | nindent 12 }} + exec: + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_ROOT_PASSWORD_FILE") + fi + mysqladmin status -uroot -p"${password_aux}" + {{- end }} + {{- end }} + {{- if .Values.primary.resources }} + resources: {{ toYaml .Values.primary.resources | nindent 12 }} + {{- end }} + volumeMounts: + - name: data + mountPath: /bitnami/mariadb + {{- if .Values.primary.persistence.subPath }} + subPath: {{ .Values.primary.persistence.subPath }} + {{- end }} + {{- if or .Values.initdbScriptsConfigMap .Values.initdbScripts }} + - name: custom-init-scripts + mountPath: /docker-entrypoint-initdb.d + {{- end }} + {{- if or .Values.primary.configuration .Values.primary.existingConfigmap }} + - name: config + mountPath: /opt/bitnami/mariadb/conf/my.cnf + subPath: my.cnf + {{- end }} + {{- if and .Values.auth.usePasswordFiles (not .Values.auth.customPasswordFiles) }} + - name: mariadb-credentials + mountPath: /opt/bitnami/mariadb/secrets/ + {{- end }} + {{- if .Values.primary.extraVolumeMounts }} + {{- include "common.tplvalues.render" (dict "value" .Values.primary.extraVolumeMounts "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.metrics.enabled }} + - name: metrics + image: {{ include "mariadb.metrics.image" . }} + imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }} + {{- if .Values.metrics.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.metrics.containerSecurityContext "enabled" | toYaml | nindent 12 }} + {{- end }} + env: + {{- if .Values.auth.usePasswordFiles }} + - name: MARIADB_ROOT_PASSWORD_FILE + value: {{ default "/opt/bitnami/mysqld-exporter/secrets/mariadb-root-password" .Values.auth.customPasswordFiles.root }} + {{- else }} + - name: MARIADB_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "mariadb.secretName" . }} + key: mariadb-root-password + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }} + {{- else }} + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_ROOT_PASSWORD_FILE") + fi + DATA_SOURCE_NAME="root:${password_aux}@(localhost:3306)/" /bin/mysqld_exporter {{- range .Values.metrics.extraArgs.primary }} {{ . }} {{- end }} + {{- end }} + ports: + - name: metrics + containerPort: 9104 + {{- if not .Values.diagnosticMode.enabled }} + {{- if .Values.metrics.livenessProbe.enabled }} + livenessProbe: {{- omit .Values.metrics.livenessProbe "enabled" | toYaml | nindent 12 }} + httpGet: + path: /metrics + port: metrics + {{- end }} + {{- if .Values.metrics.readinessProbe.enabled }} + readinessProbe: {{- omit .Values.metrics.readinessProbe "enabled" | toYaml | nindent 12 }} + httpGet: + path: /metrics + port: metrics + {{- end }} + {{- end }} + {{- if .Values.metrics.resources }} + resources: {{- toYaml .Values.metrics.resources | nindent 12 }} + {{- end }} + volumeMounts: + {{- if and .Values.auth.usePasswordFiles (not .Values.auth.customPasswordFiles) }} + - name: mariadb-credentials + mountPath: /opt/bitnami/mysqld-exporter/secrets/ + {{- end }} + {{- if .Values.metrics.extraVolumeMounts.primary }} + {{- include "common.tplvalues.render" (dict "value" .Values.metrics.extraVolumeMounts.primary "context" $) | nindent 12 }} + {{- end }} + {{- end }} + {{- if .Values.primary.sidecars }} + {{- include "common.tplvalues.render" (dict "value" .Values.primary.sidecars "context" $) | nindent 8 }} + {{- end }} + volumes: + {{- if or .Values.primary.configuration .Values.primary.existingConfigmap }} + - name: config + configMap: + name: {{ include "mariadb.primary.configmapName" . }} + {{- end }} + {{- if or .Values.initdbScriptsConfigMap .Values.initdbScripts }} + - name: custom-init-scripts + configMap: + name: {{ template "mariadb.initdbScriptsCM" . }} + {{- end }} + {{- if and .Values.auth.usePasswordFiles (not .Values.auth.customPasswordFiles) }} + - name: mariadb-credentials + secret: + secretName: {{ template "mariadb.secretName" . }} + items: + - key: mariadb-root-password + path: mariadb-root-password + - key: mariadb-password + path: mariadb-password + {{- if eq .Values.architecture "replication" }} + - key: mariadb-replication-password + path: mariadb-replication-password + {{- end }} + {{- end }} + {{- if .Values.primary.extraVolumes }} + {{- include "common.tplvalues.render" (dict "value" .Values.primary.extraVolumes "context" $) | nindent 8 }} + {{- end }} + {{- if and .Values.primary.persistence.enabled .Values.primary.persistence.existingClaim }} + - name: data + persistentVolumeClaim: + claimName: {{ tpl .Values.primary.persistence.existingClaim . }} + {{- else if not .Values.primary.persistence.enabled }} + - name: data + emptyDir: {} + {{- else if and .Values.primary.persistence.enabled (not .Values.primary.persistence.existingClaim) }} + volumeClaimTemplates: + - metadata: + name: data + labels: {{ include "common.labels.matchLabels" . | nindent 10 }} + app.kubernetes.io/component: primary + {{- if .Values.primary.persistence.annotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.primary.persistence.annotations "context" $ ) | nindent 10 }} + {{- end }} + spec: + accessModes: + {{- range .Values.primary.persistence.accessModes }} + - {{ . | quote }} + {{- end }} + resources: + requests: + storage: {{ .Values.primary.persistence.size | quote }} + {{ include "common.storage.class" (dict "persistence" .Values.primary.persistence "global" .Values.global) }} + {{- if .Values.primary.persistence.selector }} + selector: {{- include "common.tplvalues.render" (dict "value" .Values.primary.persistence.selector "context" $) | nindent 10 }} + {{- end -}} + {{- end }} diff --git a/charts/limesurvey-martial/charts/mariadb/templates/primary/svc.yaml b/charts/limesurvey-martial/charts/mariadb/templates/primary/svc.yaml new file mode 100644 index 0000000..85d3156 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/templates/primary/svc.yaml @@ -0,0 +1,61 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "mariadb.primary.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: primary + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + annotations: + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.primary.service.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.primary.service.annotations "context" $ ) | nindent 4 }} + {{- end }} + {{- if and .Values.metrics.enabled .Values.metrics.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.annotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.primary.service.type }} + {{- if and .Values.primary.service.clusterIP (eq .Values.primary.service.type "ClusterIP") }} + clusterIP: {{ .Values.primary.service.clusterIP }} + {{- end }} + {{- if and .Values.primary.service.externalTrafficPolicy (or (eq .Values.primary.service.type "LoadBalancer") (eq .Values.primary.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.primary.service.externalTrafficPolicy | quote }} + {{- end }} + {{- if and (eq .Values.primary.service.type "LoadBalancer") .Values.primary.service.loadBalancerSourceRanges }} + loadBalancerSourceRanges: {{ .Values.primary.service.loadBalancerSourceRanges }} + {{ end }} + {{- if (and (eq .Values.primary.service.type "LoadBalancer") (not (empty .Values.primary.service.loadBalancerIP))) }} + loadBalancerIP: {{ .Values.primary.service.loadBalancerIP }} + {{- end }} + {{- if .Values.primary.service.sessionAffinity }} + sessionAffinity: {{ .Values.primary.service.sessionAffinity }} + {{- end }} + {{- if .Values.primary.service.sessionAffinityConfig }} + sessionAffinityConfig: {{- include "common.tplvalues.render" (dict "value" .Values.primary.service.sessionAffinityConfig "context" $) | nindent 4 }} + {{- end }} + ports: + - name: mysql + port: {{ coalesce .Values.primary.service.ports.mysql .Values.primary.service.port }} + protocol: TCP + targetPort: mysql + {{- if (and (or (eq .Values.primary.service.type "NodePort") (eq .Values.primary.service.type "LoadBalancer")) (coalesce .Values.primary.service.nodePorts.mysql .Values.primary.service.nodePort)) }} + nodePort: {{ coalesce .Values.primary.service.nodePorts.mysql .Values.primary.service.nodePort }} + {{- else if eq .Values.primary.service.type "ClusterIP" }} + nodePort: null + {{- end }} + {{- if and .Values.metrics.enabled (gt (.Values.primary.service.ports.metrics | int) 0) }} + - name: metrics + port: {{ .Values.primary.service.ports.metrics }} + protocol: TCP + targetPort: metrics + {{- end }} + {{- if .Values.primary.service.extraPorts }} + {{- include "common.tplvalues.render" (dict "value" .Values.primary.service.extraPorts "context" $) | nindent 4 }} + {{- end }} + selector: {{ include "common.labels.matchLabels" . | nindent 4 }} + app.kubernetes.io/component: primary diff --git a/charts/limesurvey-martial/charts/mariadb/templates/prometheusrules.yaml b/charts/limesurvey-martial/charts/mariadb/templates/prometheusrules.yaml new file mode 100644 index 0000000..523e533 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/templates/prometheusrules.yaml @@ -0,0 +1,26 @@ +{{- if and .Values.metrics.enabled .Values.metrics.prometheusRule.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ include "common.names.fullname" . }} + {{- if .Values.metrics.prometheusRule.namespace }} + namespace: {{ .Values.metrics.prometheusRule.namespace }} + {{- else }} + namespace: {{ .Release.Namespace | quote }} + {{- end }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: metrics + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.metrics.prometheusRule.additionalLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.prometheusRule.additionalLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + groups: + - name: {{ include "common.names.fullname" . }} + rules: {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.prometheusRule.rules "context" $ ) | nindent 6 }} +{{- end }} diff --git a/charts/limesurvey-martial/charts/mariadb/templates/role.yaml b/charts/limesurvey-martial/charts/mariadb/templates/role.yaml new file mode 100644 index 0000000..a561f51 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/templates/role.yaml @@ -0,0 +1,21 @@ +{{- if and .Values.serviceAccount.create .Values.rbac.create }} +apiVersion: {{ include "common.capabilities.rbac.apiVersion" . }} +kind: Role +metadata: + name: {{ include "common.names.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +rules: + - apiGroups: + - "" + resources: + - endpoints + verbs: + - get +{{- end }} diff --git a/charts/limesurvey-martial/charts/mariadb/templates/rolebinding.yaml b/charts/limesurvey-martial/charts/mariadb/templates/rolebinding.yaml new file mode 100644 index 0000000..671aa6e --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/templates/rolebinding.yaml @@ -0,0 +1,21 @@ +{{- if and .Values.serviceAccount.create .Values.rbac.create }} +kind: RoleBinding +apiVersion: {{ include "common.capabilities.rbac.apiVersion" . }} +metadata: + name: {{ include "common.names.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +subjects: + - kind: ServiceAccount + name: {{ include "mariadb.serviceAccountName" . }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: {{ include "common.names.fullname" . -}} +{{- end }} diff --git a/charts/limesurvey-martial/charts/mariadb/templates/secondary/configmap.yaml b/charts/limesurvey-martial/charts/mariadb/templates/secondary/configmap.yaml new file mode 100644 index 0000000..4cfec64 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/templates/secondary/configmap.yaml @@ -0,0 +1,18 @@ +{{- if (include "mariadb.secondary.createConfigmap" .) }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "mariadb.secondary.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: secondary + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +data: + my.cnf: |- +{{ .Values.secondary.configuration | indent 4 }} +{{- end -}} diff --git a/charts/limesurvey-martial/charts/mariadb/templates/secondary/networkpolicy-ingress.yaml b/charts/limesurvey-martial/charts/mariadb/templates/secondary/networkpolicy-ingress.yaml new file mode 100644 index 0000000..51a8885 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/templates/secondary/networkpolicy-ingress.yaml @@ -0,0 +1,49 @@ +{{- if and .Values.networkPolicy.enabled (eq .Values.architecture "replication") (or .Values.networkPolicy.metrics.enabled .Values.networkPolicy.ingressRules.secondaryAccessOnlyFrom.enabled) }} +apiVersion: {{ include "common.capabilities.networkPolicy.apiVersion" . }} +kind: NetworkPolicy +metadata: + name: {{ printf "%s-ingress-secondary" (include "common.names.fullname" .) }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + podSelector: + matchLabels: + app.kubernetes.io/component: secondary + {{- include "common.labels.standard" . | nindent 6 }} + ingress: + {{- if and .Values.metrics.enabled .Values.networkPolicy.metrics.enabled (or .Values.networkPolicy.metrics.namespaceSelector .Values.networkPolicy.metrics.podSelector) }} + - from: + {{- if .Values.networkPolicy.metrics.namespaceSelector }} + - namespaceSelector: + matchLabels: + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.metrics.namespaceSelector "context" $) | nindent 14 }} + {{- end }} + {{- if .Values.networkPolicy.metrics.podSelector }} + - podSelector: + matchLabels: + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.metrics.podSelector "context" $) | nindent 14 }} + {{- end }} + {{- end }} + {{- if and .Values.networkPolicy.ingressRules.secondaryAccessOnlyFrom.enabled (or .Values.networkPolicy.ingressRules.secondaryAccessOnlyFrom.namespaceSelector .Values.networkPolicy.ingressRules.secondaryAccessOnlyFrom.podSelector) }} + - from: + {{- if .Values.networkPolicy.ingressRules.secondaryAccessOnlyFrom.namespaceSelector }} + - namespaceSelector: + matchLabels: + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingressRules.secondaryAccessOnlyFrom.namespaceSelector "context" $) | nindent 14 }} + {{- end }} + {{- if .Values.networkPolicy.ingressRules.secondaryAccessOnlyFrom.podSelector }} + - podSelector: + matchLabels: + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingressRules.secondaryAccessOnlyFrom.podSelector "context" $) | nindent 14 }} + {{- end }} + {{- end }} + {{- if .Values.networkPolicy.ingressRules.secondaryAccessOnlyFrom.customRules }} + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingressRules.secondaryAccessOnlyFrom.customRules "context" $) | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/limesurvey-martial/charts/mariadb/templates/secondary/pdb.yaml b/charts/limesurvey-martial/charts/mariadb/templates/secondary/pdb.yaml new file mode 100644 index 0000000..cae28ff --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/templates/secondary/pdb.yaml @@ -0,0 +1,25 @@ +{{- if and (eq .Values.architecture "replication") .Values.secondary.pdb.create }} +apiVersion: {{ include "common.capabilities.policy.apiVersion" . }} +kind: PodDisruptionBudget +metadata: + name: {{ include "mariadb.secondary.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: secondary + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- if .Values.secondary.pdb.minAvailable }} + minAvailable: {{ .Values.secondary.pdb.minAvailable }} + {{- end }} + {{- if .Values.secondary.pdb.maxUnavailable }} + maxUnavailable: {{ .Values.secondary.pdb.maxUnavailable }} + {{- end }} + selector: + matchLabels: {{ include "common.labels.matchLabels" . | nindent 6 }} + app.kubernetes.io/component: secondary +{{- end }} diff --git a/charts/limesurvey-martial/charts/mariadb/templates/secondary/statefulset.yaml b/charts/limesurvey-martial/charts/mariadb/templates/secondary/statefulset.yaml new file mode 100644 index 0000000..c88d4ad --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/templates/secondary/statefulset.yaml @@ -0,0 +1,365 @@ +{{- if eq .Values.architecture "replication" }} +apiVersion: {{ include "common.capabilities.statefulset.apiVersion" . }} +kind: StatefulSet +metadata: + name: {{ include "mariadb.secondary.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: secondary + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + replicas: {{ .Values.secondary.replicaCount }} + revisionHistoryLimit: {{ .Values.secondary.revisionHistoryLimit }} + selector: + matchLabels: {{ include "common.labels.matchLabels" . | nindent 6 }} + app.kubernetes.io/component: secondary + serviceName: {{ include "mariadb.secondary.fullname" . }} + podManagementPolicy: {{ .Values.secondary.podManagementPolicy }} + {{- if .Values.secondary.updateStrategy }} + updateStrategy: {{- toYaml .Values.secondary.updateStrategy | nindent 4 }} + {{- end }} + template: + metadata: + annotations: + {{- if (include "mariadb.secondary.createConfigmap" .) }} + checksum/configuration: {{ include (print $.Template.BasePath "/secondary/configmap.yaml") . | sha256sum }} + {{- end }} + {{- if .Values.secondary.podAnnotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.secondary.podAnnotations "context" $) | nindent 8 }} + {{- end }} + labels: {{- include "common.labels.standard" . | nindent 8 }} + app.kubernetes.io/component: secondary + {{- if .Values.secondary.podLabels }} + {{- include "common.tplvalues.render" (dict "value" .Values.secondary.podLabels "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 8 }} + {{- end }} + spec: + {{- include "mariadb.imagePullSecrets" . | nindent 6 }} + {{- if or .Values.secondary.schedulerName .Values.schedulerName }} + schedulerName: {{ (coalesce .Values.secondary.schedulerName .Values.schedulerName) | quote }} + {{- end }} + serviceAccountName: {{ template "mariadb.serviceAccountName" . }} + {{- if .Values.secondary.hostAliases }} + hostAliases: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.hostAliases "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.secondary.affinity }} + affinity: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.affinity "context" $) | nindent 8 }} + {{- else }} + affinity: + podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.secondary.podAffinityPreset "component" "secondary" "context" $) | nindent 10 }} + podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.secondary.podAntiAffinityPreset "component" "secondary" "context" $) | nindent 10 }} + nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.secondary.nodeAffinityPreset.type "key" .Values.secondary.nodeAffinityPreset.key "values" .Values.secondary.nodeAffinityPreset.values) | nindent 10 }} + {{- end }} + {{- if .Values.secondary.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.nodeSelector "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.secondary.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.tolerations "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.secondary.topologySpreadConstraints }} + topologySpreadConstraints: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.topologySpreadConstraints "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.secondary.priorityClassName }} + priorityClassName: {{ .Values.secondary.priorityClassName | quote }} + {{- else if .Values.priorityClassName }} + priorityClassName: {{ .Values.priorityClassName | quote }} + {{- end }} + {{- if .Values.secondary.runtimeClassName }} + runtimeClassName: {{ .Values.secondary.runtimeClassName | quote }} + {{- else if .Values.runtimeClassName }} + runtimeClassName: {{ .Values.runtimeClassName | quote }} + {{- end }} + {{- if .Values.secondary.podSecurityContext.enabled }} + securityContext: {{- omit .Values.secondary.podSecurityContext "enabled" | toYaml | nindent 8 }} + {{- end }} + {{- if or .Values.secondary.initContainers (and .Values.secondary.podSecurityContext.enabled .Values.volumePermissions.enabled .Values.secondary.persistence.enabled) }} + initContainers: + {{- if .Values.secondary.initContainers }} + {{- include "common.tplvalues.render" (dict "value" .Values.secondary.initContainers "context" $) | nindent 8 }} + {{- end }} + {{- if and .Values.secondary.podSecurityContext.enabled .Values.volumePermissions.enabled .Values.secondary.persistence.enabled }} + - name: volume-permissions + image: {{ include "mariadb.volumePermissions.image" . }} + imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }} + command: + - /bin/bash + - -ec + - | + chown -R {{ .Values.secondary.containerSecurityContext.runAsUser }}:{{ .Values.secondary.podSecurityContext.fsGroup }} /bitnami/mariadb + securityContext: + runAsUser: 0 + {{- if .Values.volumePermissions.resources }} + resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }} + {{- end }} + volumeMounts: + - name: data + mountPath: /bitnami/mariadb + {{- if .Values.secondary.persistence.subPath }} + subPath: {{ .Values.secondary.persistence.subPath }} + {{- end }} + {{- end }} + {{- end }} + containers: + - name: mariadb + image: {{ include "mariadb.image" . }} + imagePullPolicy: {{ .Values.image.pullPolicy | quote }} + {{- if .Values.secondary.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.secondary.containerSecurityContext "enabled" | toYaml | nindent 12 }} + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} + {{- else if .Values.secondary.command }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.command "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }} + {{- else if .Values.secondary.args }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.args "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.secondary.lifecycleHooks }} + lifecycle: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.lifecycleHooks "context" $) | nindent 12 }} + {{- end }} + env: + - name: BITNAMI_DEBUG + value: {{ ternary "true" "false" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }} + - name: MARIADB_REPLICATION_MODE + value: "slave" + - name: MARIADB_MASTER_HOST + value: {{ include "mariadb.primary.fullname" . }} + - name: MARIADB_MASTER_PORT_NUMBER + value: {{ coalesce .Values.primary.service.ports.mysql .Values.primary.service.port | quote }} + - name: MARIADB_MASTER_ROOT_USER + value: "root" + {{- if .Values.auth.usePasswordFiles }} + - name: MARIADB_MASTER_ROOT_PASSWORD_FILE + value: {{ default "/opt/bitnami/mariadb/secrets/mariadb-root-password" .Values.auth.customPasswordFiles.root }} + {{- else }} + - name: MARIADB_MASTER_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "mariadb.secretName" . }} + key: mariadb-root-password + {{- end }} + - name: MARIADB_REPLICATION_USER + value: {{ .Values.auth.replicationUser | quote }} + {{- if .Values.auth.usePasswordFiles }} + - name: MARIADB_REPLICATION_PASSWORD_FILE + value: {{ default "/opt/bitnami/mariadb/secrets/mariadb-replication-password" .Values.auth.customPasswordFiles.replicator }} + {{- else }} + - name: MARIADB_REPLICATION_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "mariadb.secretName" . }} + key: mariadb-replication-password + {{- end }} + {{- if .Values.secondary.extraFlags }} + - name: MARIADB_EXTRA_FLAGS + value: "{{ .Values.secondary.extraFlags }}" + {{- end }} + {{- if .Values.secondary.startupWaitOptions }} + - name: MARIADB_STARTUP_WAIT_RETRIES + value: "{{ .Values.secondary.startupWaitOptions.retries | default 300 }}" + - name: MARIADB_STARTUP_WAIT_SLEEP_TIME + value: "{{ .Values.secondary.startupWaitOptions.sleepTime | default 2 }}" + {{- end }} + {{- if .Values.secondary.extraEnvVars }} + {{- include "common.tplvalues.render" (dict "value" .Values.secondary.extraEnvVars "context" $) | nindent 12 }} + {{- end }} + {{- if or .Values.secondary.extraEnvVarsCM .Values.secondary.extraEnvVarsSecret }} + envFrom: + {{- if .Values.secondary.extraEnvVarsCM }} + - configMapRef: + name: {{ .Values.secondary.extraEnvVarsCM }} + {{- end }} + {{- if .Values.secondary.extraEnvVarsSecret }} + - secretRef: + name: {{ .Values.secondary.extraEnvVarsSecret }} + {{- end }} + {{- end }} + ports: + - name: mysql + containerPort: 3306 + {{- if not .Values.diagnosticMode.enabled }} + {{- if .Values.secondary.customStartupProbe }} + startupProbe: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.customStartupProbe "context" $) | nindent 12 }} + {{- else if .Values.secondary.startupProbe.enabled }} + startupProbe: {{- omit .Values.secondary.startupProbe "enabled" | toYaml | nindent 12 }} + exec: + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_MASTER_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_MASTER_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_MASTER_ROOT_PASSWORD_FILE") + fi + mysqladmin status -uroot -p"${password_aux}" + {{- end }} + {{- if .Values.secondary.customLivenessProbe }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.customLivenessProbe "context" $) | nindent 12 }} + {{- else if .Values.secondary.livenessProbe.enabled }} + livenessProbe: {{- omit .Values.secondary.livenessProbe "enabled" | toYaml | nindent 12 }} + exec: + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_MASTER_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_MASTER_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_MASTER_ROOT_PASSWORD_FILE") + fi + mysqladmin status -uroot -p"${password_aux}" + {{- end }} + {{- if .Values.secondary.customReadinessProbe }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.customReadinessProbe "context" $) | nindent 12 }} + {{- else if .Values.secondary.readinessProbe.enabled }} + readinessProbe: {{- omit .Values.secondary.readinessProbe "enabled" | toYaml | nindent 12 }} + exec: + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_MASTER_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_MASTER_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_MASTER_ROOT_PASSWORD_FILE") + fi + mysqladmin status -uroot -p"${password_aux}" + {{- end }} + {{- end }} + {{- if .Values.secondary.resources }} + resources: {{ toYaml .Values.secondary.resources | nindent 12 }} + {{- end }} + volumeMounts: + - name: data + mountPath: /bitnami/mariadb + {{- if .Values.secondary.persistence.subPath }} + subPath: {{ .Values.secondary.persistence.subPath }} + {{- end }} + {{- if or .Values.secondary.configuration .Values.secondary.existingConfigmap }} + - name: config + mountPath: /opt/bitnami/mariadb/conf/my.cnf + subPath: my.cnf + {{- end }} + {{- if and .Values.auth.usePasswordFiles (not .Values.auth.customPasswordFiles) }} + - name: mariadb-credentials + mountPath: /opt/bitnami/mariadb/secrets/ + {{- end }} + {{- if .Values.secondary.extraVolumeMounts }} + {{- include "common.tplvalues.render" (dict "value" .Values.secondary.extraVolumeMounts "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.metrics.enabled }} + - name: metrics + image: {{ include "mariadb.metrics.image" . }} + imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }} + {{- if .Values.metrics.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.metrics.containerSecurityContext "enabled" | toYaml | nindent 12 }} + {{- end }} + env: + {{- if .Values.auth.usePasswordFiles }} + - name: MARIADB_ROOT_PASSWORD_FILE + value: {{ default "/opt/bitnami/mysqld-exporter/secrets/mariadb-root-password" .Values.auth.customPasswordFiles.root }} + {{- else }} + - name: MARIADB_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "mariadb.secretName" . }} + key: mariadb-root-password + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }} + {{- else }} + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_ROOT_PASSWORD_FILE") + fi + DATA_SOURCE_NAME="root:${password_aux}@(localhost:3306)/" /bin/mysqld_exporter {{- range .Values.metrics.extraArgs.secondary }} {{ . }} {{- end }} + {{- end }} + ports: + - name: metrics + containerPort: 9104 + {{- if not .Values.diagnosticMode.enabled }} + {{- if .Values.metrics.livenessProbe.enabled }} + livenessProbe: {{- omit .Values.metrics.livenessProbe "enabled" | toYaml | nindent 12 }} + httpGet: + path: /metrics + port: metrics + {{- end }} + {{- if .Values.metrics.readinessProbe.enabled }} + readinessProbe: {{- omit .Values.metrics.readinessProbe "enabled" | toYaml | nindent 12 }} + httpGet: + path: /metrics + port: metrics + {{- end }} + {{- end }} + {{- if .Values.metrics.resources }} + resources: {{- toYaml .Values.metrics.resources | nindent 12 }} + {{- end }} + volumeMounts: + {{- if and .Values.auth.usePasswordFiles (not .Values.auth.customPasswordFiles) }} + - name: mariadb-credentials + mountPath: /opt/bitnami/mysqld-exporter/secrets/ + {{- end }} + {{- if .Values.metrics.extraVolumeMounts.secondary }} + {{- include "common.tplvalues.render" (dict "value" .Values.metrics.extraVolumeMounts.secondary "context" $) | nindent 12 }} + {{- end }} + {{- end }} + {{- if .Values.secondary.sidecars }} + {{- include "common.tplvalues.render" (dict "value" .Values.secondary.sidecars "context" $) | nindent 8 }} + {{- end }} + volumes: + {{- if or .Values.secondary.configuration .Values.secondary.existingConfigmap }} + - name: config + configMap: + name: {{ include "mariadb.secondary.configmapName" . }} + {{- end }} + {{- if and .Values.auth.usePasswordFiles (not .Values.auth.customPasswordFiles) }} + - name: mariadb-credentials + secret: + secretName: {{ template "mariadb.secretName" . }} + items: + - key: mariadb-root-password + path: mariadb-root-password + - key: mariadb-replication-password + path: mariadb-replication-password + {{- end }} + {{- if .Values.secondary.extraVolumes }} + {{- include "common.tplvalues.render" (dict "value" .Values.secondary.extraVolumes "context" $) | nindent 8 }} + {{- end }} + {{- if not .Values.secondary.persistence.enabled }} + - name: data + emptyDir: {} + {{- else }} + volumeClaimTemplates: + - metadata: + name: data + labels: {{ include "common.labels.matchLabels" . | nindent 10 }} + app.kubernetes.io/component: secondary + {{- if .Values.secondary.persistence.annotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.secondary.persistence.annotations "context" $ ) | nindent 10 }} + {{- end }} + spec: + accessModes: + {{- range .Values.secondary.persistence.accessModes }} + - {{ . | quote }} + {{- end }} + resources: + requests: + storage: {{ .Values.secondary.persistence.size | quote }} + {{ include "common.storage.class" (dict "persistence" .Values.secondary.persistence "global" .Values.global) }} + {{- if .Values.secondary.persistence.selector }} + selector: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.persistence.selector "context" $) | nindent 10 }} + {{- end -}} + {{- end }} +{{- end }} diff --git a/charts/limesurvey-martial/charts/mariadb/templates/secondary/svc.yaml b/charts/limesurvey-martial/charts/mariadb/templates/secondary/svc.yaml new file mode 100644 index 0000000..3d72171 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/templates/secondary/svc.yaml @@ -0,0 +1,63 @@ +{{- if eq .Values.architecture "replication" }} +apiVersion: v1 +kind: Service +metadata: + name: {{ include "mariadb.secondary.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + app.kubernetes.io/component: secondary + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + annotations: + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.secondary.service.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.secondary.service.annotations "context" $ ) | nindent 4 }} + {{- end }} + {{- if and .Values.metrics.enabled .Values.metrics.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.annotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.secondary.service.type }} + {{- if and .Values.secondary.service.clusterIP (eq .Values.secondary.service.type "ClusterIP") }} + clusterIP: {{ .Values.secondary.service.clusterIP }} + {{- end }} + {{- if and .Values.secondary.service.externalTrafficPolicy (or (eq .Values.secondary.service.type "LoadBalancer") (eq .Values.secondary.service.type "NodePort")) }} + externalTrafficPolicy: {{ .Values.secondary.service.externalTrafficPolicy | quote }} + {{- end }} + {{- if and (eq .Values.secondary.service.type "LoadBalancer") .Values.secondary.service.loadBalancerSourceRanges }} + loadBalancerSourceRanges: {{ .Values.secondary.service.loadBalancerSourceRanges }} + {{ end }} + {{- if and (eq .Values.secondary.service.type "LoadBalancer") (not (empty .Values.secondary.service.loadBalancerIP)) }} + loadBalancerIP: {{ .Values.secondary.service.loadBalancerIP }} + {{- end }} + {{- if .Values.secondary.service.sessionAffinity }} + sessionAffinity: {{ .Values.secondary.service.sessionAffinity }} + {{- end }} + {{- if .Values.secondary.service.sessionAffinityConfig }} + sessionAffinityConfig: {{- include "common.tplvalues.render" (dict "value" .Values.secondary.service.sessionAffinityConfig "context" $) | nindent 4 }} + {{- end }} + ports: + - name: mysql + port: {{ coalesce .Values.secondary.service.ports.mysql .Values.secondary.service.port }} + protocol: TCP + targetPort: mysql + {{- if (and (or (eq .Values.secondary.service.type "NodePort") (eq .Values.secondary.service.type "LoadBalancer")) (coalesce .Values.secondary.service.nodePorts.mysql .Values.secondary.service.nodePort)) }} + nodePort: {{ coalesce .Values.secondary.service.nodePorts.mysql .Values.secondary.service.nodePort }} + {{- else if eq .Values.secondary.service.type "ClusterIP" }} + nodePort: null + {{- end }} + {{- if and .Values.metrics.enabled (gt (.Values.secondary.service.ports.metrics | int) 0) }} + - name: metrics + port: {{ .Values.secondary.service.ports.metrics }} + protocol: TCP + targetPort: metrics + {{- end }} + {{- if .Values.secondary.service.extraPorts }} + {{- include "common.tplvalues.render" (dict "value" .Values.secondary.service.extraPorts "context" $) | nindent 4 }} + {{- end }} + selector: {{ include "common.labels.matchLabels" . | nindent 4 }} + app.kubernetes.io/component: secondary +{{- end }} diff --git a/charts/limesurvey-martial/charts/mariadb/templates/secrets.yaml b/charts/limesurvey-martial/charts/mariadb/templates/secrets.yaml new file mode 100644 index 0000000..2ff62ed --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/templates/secrets.yaml @@ -0,0 +1,35 @@ +{{- if eq (include "mariadb.createSecret" .) "true" }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.names.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +type: Opaque +data: + {{- if (not .Values.auth.forcePassword) }} + mariadb-root-password: {{ include "common.secrets.passwords.manage" (dict "secret" (include "common.names.fullname" .) "key" "mariadb-root-password" "providedValues" (list "auth.rootPassword") "context" $) }} + {{- else }} + mariadb-root-password: {{ required "A MariaDB Root Password is required!" .Values.auth.rootPassword | b64enc | quote }} + {{- end }} + {{- if (not (empty .Values.auth.username)) }} + {{- if (not .Values.auth.forcePassword) }} + mariadb-password: {{ include "common.secrets.passwords.manage" (dict "secret" (include "common.names.fullname" .) "key" "mariadb-password" "providedValues" (list "auth.password") "context" $) }} + {{- else }} + mariadb-password: {{ required "A MariaDB Database Password is required!" .Values.auth.password | b64enc | quote }} + {{- end }} + {{- end }} + {{- if eq .Values.architecture "replication" }} + {{- if (not .Values.auth.forcePassword) }} + mariadb-replication-password: {{ include "common.secrets.passwords.manage" (dict "secret" (include "common.names.fullname" .) "key" "mariadb-replication-password" "providedValues" (list "auth.replicationPassword") "context" $) }} + {{- else }} + mariadb-replication-password: {{ required "A MariaDB Replication Password is required!" .Values.auth.replicationPassword | b64enc | quote }} + {{- end }} + {{- end }} +{{- end }} diff --git a/charts/limesurvey-martial/charts/mariadb/templates/serviceaccount.yaml b/charts/limesurvey-martial/charts/mariadb/templates/serviceaccount.yaml new file mode 100644 index 0000000..03a6b4e --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/templates/serviceaccount.yaml @@ -0,0 +1,19 @@ +{{- if .Values.serviceAccount.create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "mariadb.serviceAccountName" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + annotations: + {{- if .Values.serviceAccount.annotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.serviceAccount.annotations "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }} +{{- end }} diff --git a/charts/limesurvey-martial/charts/mariadb/templates/servicemonitor.yaml b/charts/limesurvey-martial/charts/mariadb/templates/servicemonitor.yaml new file mode 100644 index 0000000..ca5bf7c --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/templates/servicemonitor.yaml @@ -0,0 +1,48 @@ +{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ include "common.names.fullname" . }} + {{- if .Values.metrics.serviceMonitor.namespace }} + namespace: {{ .Values.metrics.serviceMonitor.namespace }} + {{- else }} + namespace: {{ .Release.Namespace | quote }} + {{- end }} + labels: {{- include "common.labels.standard" . | nindent 4 }} + {{- if .Values.commonLabels }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.labels }} + {{- include "common.tplvalues.render" (dict "value" .Values.metrics.serviceMonitor.labels "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + jobLabel: {{ .Values.metrics.serviceMonitor.jobLabel | quote }} + endpoints: + - port: metrics + {{- if .Values.metrics.serviceMonitor.interval }} + interval: {{ .Values.metrics.serviceMonitor.interval }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.scrapeTimeout }} + scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.honorLabels }} + honorLabels: {{ .Values.metrics.serviceMonitor.honorLabels }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.metricRelabelings }} + metricRelabelings: {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.serviceMonitor.metricRelabelings "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.relabelings }} + relabelings: {{- include "common.tplvalues.render" ( dict "value" .Values.metrics.serviceMonitor.relabelings "context" $) | nindent 8 }} + {{- end }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace | quote }} + selector: + matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }} + {{- if .Values.metrics.serviceMonitor.selector }} + {{- include "common.tplvalues.render" (dict "value" .Values.metrics.serviceMonitor.selector "context" $) | nindent 6 }} + {{- end }} +{{- end }} diff --git a/charts/limesurvey-martial/charts/mariadb/values.schema.json b/charts/limesurvey-martial/charts/mariadb/values.schema.json new file mode 100644 index 0000000..500c4eb --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/values.schema.json @@ -0,0 +1,176 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "architecture": { + "type": "string", + "title": "MariaDB architecture", + "form": true, + "description": "Allowed values: `standalone` or `replication`" + }, + "auth": { + "type": "object", + "title": "Authentication configuration", + "form": true, + "properties": { + "rootPassword": { + "type": "string", + "title": "MariaDB root password", + "form": true, + "description": "Defaults to a random 10-character alphanumeric string if not set" + }, + "database": { + "type": "string", + "title": "MariaDB custom database", + "description": "Name of the custom database to be created during the 1st initialization of MariaDB", + "form": true + }, + "username": { + "type": "string", + "title": "MariaDB custom user", + "description": "Name of the custom user to be created during the 1st initialization of MariaDB. This user only has permissions on the MariaDB custom database", + "form": true + }, + "password": { + "type": "string", + "title": "Password for MariaDB custom user", + "description": "Defaults to a random 10-character alphanumeric string if not set", + "form": true, + "hidden": { + "value": false, + "path": "usePassword" + } + }, + "replicationUser": { + "type": "string", + "title": "MariaDB replication user", + "description": "Name of user used to manage replication.", + "form": true, + "hidden": { + "value": "standalone", + "path": "architecture" + } + }, + "replicationPassword": { + "type": "string", + "title": "Password for MariaDB replication user", + "description": "Defaults to a random 10-character alphanumeric string if not set", + "form": true, + "hidden": { + "value": "standalone", + "path": "architecture" + } + } + } + }, + "primary": { + "type": "object", + "title": "Primary replicas settings", + "form": true, + "properties": { + "persistence": { + "type": "object", + "title": "Persistence for primary replicas", + "form": true, + "properties": { + "enabled": { + "type": "boolean", + "form": true, + "title": "Enable persistence", + "description": "Enable persistence using Persistent Volume Claims" + }, + "size": { + "type": "string", + "title": "Persistent Volume Size", + "form": true, + "render": "slider", + "sliderMin": 1, + "sliderMax": 100, + "sliderUnit": "Gi", + "hidden": { + "value": false, + "path": "persistence/enabled" + } + } + } + } + } + }, + "secondary": { + "type": "object", + "title": "Secondary replicas settings", + "form": true, + "hidden": { + "value": false, + "path": "replication/enabled" + }, + "properties": { + "persistence": { + "type": "object", + "title": "Persistence for secondary replicas", + "form": true, + "properties": { + "enabled": { + "type": "boolean", + "form": true, + "title": "Enable persistence", + "description": "Enable persistence using Persistent Volume Claims" + }, + "size": { + "type": "string", + "title": "Persistent Volume Size", + "form": true, + "render": "slider", + "sliderMin": 1, + "sliderMax": 100, + "sliderUnit": "Gi", + "hidden": { + "value": false, + "path": "persistence/enabled" + } + } + } + } + } + }, + "volumePermissions": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "form": true, + "title": "Enable Init Containers", + "description": "Use an init container to set required folder permissions on the data volume before mounting it in the final destination" + } + } + }, + "metrics": { + "type": "object", + "form": true, + "title": "Prometheus metrics details", + "properties": { + "enabled": { + "type": "boolean", + "title": "Create Prometheus metrics exporter", + "description": "Create a side-car container to expose Prometheus metrics", + "form": true + }, + "serviceMonitor": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Create Prometheus Operator ServiceMonitor", + "description": "Create a ServiceMonitor to track metrics using Prometheus Operator", + "form": true, + "hidden": { + "value": false, + "path": "metrics/enabled" + } + } + } + } + } + } + } +} diff --git a/charts/limesurvey-martial/charts/mariadb/values.yaml b/charts/limesurvey-martial/charts/mariadb/values.yaml new file mode 100644 index 0000000..78d1b11 --- /dev/null +++ b/charts/limesurvey-martial/charts/mariadb/values.yaml @@ -0,0 +1,1311 @@ +## @section Global parameters +## Global Docker image parameters +## Please, note that this will override the image parameters, including dependencies, configured to use the global value +## Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass +## + +## @param global.imageRegistry Global Docker Image registry +## @param global.imagePullSecrets Global Docker registry secret names as an array +## @param global.storageClass Global storage class for dynamic provisioning +## +global: + imageRegistry: "" + ## E.g. + ## imagePullSecrets: + ## - myRegistryKeySecretName + ## + imagePullSecrets: [] + storageClass: "" + +## @section Common parameters +## + +## @param kubeVersion Force target Kubernetes version (using Helm capabilities if not set) +## +kubeVersion: "" +## @param nameOverride String to partially override mariadb.fullname +## +nameOverride: "" +## @param fullnameOverride String to fully override mariadb.fullname +## +fullnameOverride: "" +## @param clusterDomain Default Kubernetes cluster domain +## +clusterDomain: cluster.local +## @param commonAnnotations Common annotations to add to all MariaDB resources (sub-charts are not considered) +## +commonAnnotations: {} +## @param commonLabels Common labels to add to all MariaDB resources (sub-charts are not considered) +## +commonLabels: {} +## @param schedulerName Name of the scheduler (other than default) to dispatch pods +## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ +## +schedulerName: "" +## @param runtimeClassName Name of the Runtime Class for all MariaDB pods +## ref: https://kubernetes.io/docs/concepts/containers/runtime-class/ +## +runtimeClassName: "" +## @param extraDeploy Array of extra objects to deploy with the release (evaluated as a template) +## +extraDeploy: [] + +## Enable diagnostic mode in the deployment +## +diagnosticMode: + ## @param diagnosticMode.enabled Enable diagnostic mode (all probes will be disabled and the command will be overridden) + ## + enabled: false + ## @param diagnosticMode.command Command to override all containers in the deployment + ## + command: + - sleep + ## @param diagnosticMode.args Args to override all containers in the deployment + ## + args: + - infinity + +## @section MariaDB common parameters +## + +## Bitnami MariaDB image +## ref: https://hub.docker.com/r/bitnami/mariadb/tags/ +## @param image.registry MariaDB image registry +## @param image.repository MariaDB image repository +## @param image.tag MariaDB image tag (immutable tags are recommended) +## @param image.digest MariaDB image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag +## @param image.pullPolicy MariaDB image pull policy +## @param image.pullSecrets Specify docker-registry secret names as an array +## @param image.debug Specify if debug logs should be enabled +## +image: + registry: docker.io + repository: bitnami/mariadb + tag: 10.6.11-debian-11-r12 + digest: "" + ## Specify a imagePullPolicy + ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' + ## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images + ## + 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/ + ## Example: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + pullSecrets: [] + ## Set to true if you would like to see extra information on logs + ## It turns BASH and/or NAMI debugging in the image + ## + debug: false +## @param architecture MariaDB architecture (`standalone` or `replication`) +## +architecture: standalone +## MariaDB Authentication parameters +## +auth: + ## @param auth.rootPassword Password for the `root` user. Ignored if existing secret is provided. + ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mariadb#setting-the-root-password-on-first-run + ## + rootPassword: "" + ## @param auth.database Name for a custom database to create + ## ref: https://github.com/bitnami/containers/blob/main/bitnami/mariadb/README.md#creating-a-database-on-first-run + ## + database: my_database + ## @param auth.username Name for a custom user to create + ## ref: https://github.com/bitnami/containers/blob/main/bitnami/mariadb/README.md#creating-a-database-user-on-first-run + ## + username: "" + ## @param auth.password Password for the new user. Ignored if existing secret is provided + ## + password: "" + ## @param auth.replicationUser MariaDB replication user + ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mariadb#setting-up-a-replication-cluster + ## + replicationUser: replicator + ## @param auth.replicationPassword MariaDB replication user password. Ignored if existing secret is provided + ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mariadb#setting-up-a-replication-cluster + ## + replicationPassword: "" + ## @param auth.existingSecret Use existing secret for password details (`auth.rootPassword`, `auth.password`, `auth.replicationPassword` will be ignored and picked up from this secret). The secret has to contain the keys `mariadb-root-password`, `mariadb-replication-password` and `mariadb-password` + ## + existingSecret: "" + ## @param auth.forcePassword Force users to specify required passwords + ## + forcePassword: false + ## @param auth.usePasswordFiles Mount credentials as files instead of using environment variables + ## + usePasswordFiles: false + ## @param auth.customPasswordFiles Use custom password files when `auth.usePasswordFiles` is set to `true`. Define path for keys `root` and `user`, also define `replicator` if `architecture` is set to `replication` + ## Example: + ## customPasswordFiles: + ## root: /vault/secrets/mariadb-root + ## user: /vault/secrets/mariadb-user + ## replicator: /vault/secrets/mariadb-replicator + ## + customPasswordFiles: {} +## @param initdbScripts Dictionary of initdb scripts +## Specify dictionary of scripts to be run at first boot +## Example: +## initdbScripts: +## my_init_script.sh: | +## #!/bin/bash +## echo "Do something." +## +initdbScripts: {} +## @param initdbScriptsConfigMap ConfigMap with the initdb scripts (Note: Overrides `initdbScripts`) +## +initdbScriptsConfigMap: "" + +## @section MariaDB Primary parameters +## + +## Mariadb Primary parameters +## +primary: + ## @param primary.name Name of the primary database (eg primary, master, leader, ...) + ## + name: primary + ## @param primary.command Override default container command on MariaDB Primary container(s) (useful when using custom images) + ## + command: [] + ## @param primary.args Override default container args on MariaDB Primary container(s) (useful when using custom images) + ## + args: [] + ## @param primary.lifecycleHooks for the MariaDB Primary container(s) to automate configuration before or after startup + ## + lifecycleHooks: {} + ## @param primary.hostAliases Add deployment host aliases + ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ + ## + hostAliases: [] + ## @param primary.configuration [string] MariaDB Primary configuration to be injected as ConfigMap + ## ref: https://mysql.com/kb/en/mysql/configuring-mysql-with-mycnf/#example-of-configuration-file + ## + configuration: |- + [mysqld] + skip-name-resolve + explicit_defaults_for_timestamp + basedir=/opt/bitnami/mariadb + plugin_dir=/opt/bitnami/mariadb/plugin + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + tmpdir=/opt/bitnami/mariadb/tmp + max_allowed_packet=16M + bind-address=* + pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid + log-error=/opt/bitnami/mariadb/logs/mysqld.log + character-set-server=UTF8 + collation-server=utf8_general_ci + slow_query_log=0 + slow_query_log_file=/opt/bitnami/mariadb/logs/mysqld.log + long_query_time=10.0 + + [client] + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + default-character-set=UTF8 + plugin_dir=/opt/bitnami/mariadb/plugin + + [manager] + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid + ## @param primary.existingConfigmap Name of existing ConfigMap with MariaDB Primary configuration. + ## NOTE: When it's set the 'configuration' parameter is ignored + ## + existingConfigmap: "" + ## @param primary.updateStrategy.type MariaDB primary statefulset strategy type + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies + ## + updateStrategy: + ## StrategyType + ## Can be set to RollingUpdate or OnDelete + ## + type: RollingUpdate + ## @param primary.rollingUpdatePartition Partition update strategy for Mariadb Primary statefulset + ## https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#partitions + ## + rollingUpdatePartition: "" + ## @param primary.podAnnotations Additional pod annotations for MariaDB primary pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + ## @param primary.podLabels Extra labels for MariaDB primary pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + ## + podLabels: {} + ## @param primary.podAffinityPreset MariaDB primary pod affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAffinityPreset: "" + ## @param primary.podAntiAffinityPreset MariaDB primary pod anti-affinity preset. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` + ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAntiAffinityPreset: soft + ## Mariadb Primary node affinity preset + ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity + ## + nodeAffinityPreset: + ## @param primary.nodeAffinityPreset.type MariaDB primary node affinity preset type. Ignored if `primary.affinity` is set. Allowed values: `soft` or `hard` + ## + type: "" + ## @param primary.nodeAffinityPreset.key MariaDB primary node label key to match Ignored if `primary.affinity` is set. + ## E.g. + ## key: "kubernetes.io/e2e-az-name" + ## + key: "" + ## @param primary.nodeAffinityPreset.values MariaDB primary node label values to match. Ignored if `primary.affinity` is set. + ## E.g. + ## values: + ## - e2e-az1 + ## - e2e-az2 + ## + values: [] + ## @param primary.affinity Affinity for MariaDB primary pods assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## Note: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set + ## + affinity: {} + ## @param primary.nodeSelector Node labels for MariaDB primary pods assignment + ## Ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + ## @param primary.tolerations Tolerations for MariaDB primary pods assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + ## @param primary.schedulerName Name of the k8s scheduler (other than default) + ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ + ## + schedulerName: "" + ## @param primary.podManagementPolicy podManagementPolicy to manage scaling operation of MariaDB primary pods + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-management-policies + ## + podManagementPolicy: "" + ## @param primary.topologySpreadConstraints Topology Spread Constraints for MariaDB primary pods assignment + ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ + ## E.g. + ## topologySpreadConstraints: + ## - maxSkew: 1 + ## topologyKey: topology.kubernetes.io/zone + ## whenUnsatisfiable: DoNotSchedule + ## + topologySpreadConstraints: [] + ## @param primary.priorityClassName Priority class for MariaDB primary pods assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/ + ## + priorityClassName: "" + ## @param primary.runtimeClassName Runtime Class for MariaDB primary pods + ## Ref: https://kubernetes.io/docs/concepts/containers/runtime-class/ + ## + runtimeClassName: "" + ## MariaDB primary Pod security context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param primary.podSecurityContext.enabled Enable security context for MariaDB primary pods + ## @param primary.podSecurityContext.fsGroup Group ID for the mounted volumes' filesystem + ## + podSecurityContext: + enabled: true + fsGroup: 1001 + ## MariaDB primary container security context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container + ## @param primary.containerSecurityContext.enabled MariaDB primary container securityContext + ## @param primary.containerSecurityContext.runAsUser User ID for the MariaDB primary container + ## @param primary.containerSecurityContext.runAsNonRoot Set Controller container's Security Context runAsNonRoot + ## + containerSecurityContext: + enabled: true + runAsUser: 1001 + runAsNonRoot: true + ## MariaDB primary container's resource requests and limits + ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ + ## We usually recommend not to specify default resources and to leave this as a conscious + ## choice for the user. This also increases chances charts run on environments with little + ## resources, such as Minikube. If you do want to specify resources, uncomment the following + ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. + ## @param primary.resources.limits The resources limits for MariaDB primary containers + ## @param primary.resources.requests The requested resources for MariaDB primary containers + ## + resources: + ## Example: + ## limits: + ## cpu: 100m + ## memory: 256Mi + ## + limits: {} + ## Examples: + ## requests: + ## cpu: 100m + ## memory: 256Mi + ## + requests: {} + ## Configure extra options for MariaDB primary containers' liveness, readiness and startup probes + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes) + ## @param primary.startupProbe.enabled Enable startupProbe + ## @param primary.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe + ## @param primary.startupProbe.periodSeconds Period seconds for startupProbe + ## @param primary.startupProbe.timeoutSeconds Timeout seconds for startupProbe + ## @param primary.startupProbe.failureThreshold Failure threshold for startupProbe + ## @param primary.startupProbe.successThreshold Success threshold for startupProbe + ## + startupProbe: + enabled: false + initialDelaySeconds: 120 + periodSeconds: 15 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + ## Configure extra options for liveness probe + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param primary.livenessProbe.enabled Enable livenessProbe + ## @param primary.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe + ## @param primary.livenessProbe.periodSeconds Period seconds for livenessProbe + ## @param primary.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + ## @param primary.livenessProbe.failureThreshold Failure threshold for livenessProbe + ## @param primary.livenessProbe.successThreshold Success threshold for livenessProbe + ## + livenessProbe: + enabled: true + initialDelaySeconds: 120 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 3 + successThreshold: 1 + ## @param primary.readinessProbe.enabled Enable readinessProbe + ## @param primary.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe + ## @param primary.readinessProbe.periodSeconds Period seconds for readinessProbe + ## @param primary.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe + ## @param primary.readinessProbe.failureThreshold Failure threshold for readinessProbe + ## @param primary.readinessProbe.successThreshold Success threshold for readinessProbe + ## + readinessProbe: + enabled: true + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 3 + successThreshold: 1 + ## @param primary.customStartupProbe Override default startup probe for MariaDB primary containers + ## + customStartupProbe: {} + ## @param primary.customLivenessProbe Override default liveness probe for MariaDB primary containers + ## + customLivenessProbe: {} + ## @param primary.customReadinessProbe Override default readiness probe for MariaDB primary containers + ## + customReadinessProbe: {} + ## @param primary.startupWaitOptions Override default builtin startup wait check options for MariaDB primary containers + ## `bitnami/mariadb` Docker image has built-in startup check mechanism, + ## which periodically checks if MariaDB service has started up and stops it + ## if all checks have failed after X tries. Use these to control these checks. + ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mariadb/pull/240 + ## Example (with default options): + ## startupWaitOptions: + ## retries: 300 + ## waitTime: 2 + ## + startupWaitOptions: {} + ## @param primary.extraFlags MariaDB primary additional command line flags + ## Can be used to specify command line flags, for example: + ## E.g. + ## extraFlags: "--max-connect-errors=1000 --max_connections=155" + ## + extraFlags: "" + ## @param primary.extraEnvVars Extra environment variables to be set on MariaDB primary containers + ## E.g. + ## extraEnvVars: + ## - name: TZ + ## value: "Europe/Paris" + ## + extraEnvVars: [] + ## @param primary.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for MariaDB primary containers + ## + extraEnvVarsCM: "" + ## @param primary.extraEnvVarsSecret Name of existing Secret containing extra env vars for MariaDB primary containers + ## + extraEnvVarsSecret: "" + ## Enable persistence using Persistent Volume Claims + ## ref: https://kubernetes.io/docs/user-guide/persistent-volumes/ + ## + persistence: + ## @param primary.persistence.enabled Enable persistence on MariaDB primary replicas using a `PersistentVolumeClaim`. If false, use emptyDir + ## + enabled: true + ## @param primary.persistence.existingClaim Name of an existing `PersistentVolumeClaim` for MariaDB primary replicas + ## NOTE: When it's set the rest of persistence parameters are ignored + ## + existingClaim: "" + ## @param primary.persistence.subPath Subdirectory of the volume to mount at + ## + subPath: "" + ## @param primary.persistence.storageClass MariaDB primary persistent volume storage Class + ## If defined, storageClassName: + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + ## + storageClass: "" + ## @param primary.persistence.annotations MariaDB primary persistent volume claim annotations + ## + annotations: {} + ## @param primary.persistence.accessModes MariaDB primary persistent volume access Modes + ## + accessModes: + - ReadWriteOnce + ## @param primary.persistence.size MariaDB primary persistent volume size + ## + size: 8Gi + ## @param primary.persistence.selector Selector to match an existing Persistent Volume + ## selector: + ## matchLabels: + ## app: my-app + ## + selector: {} + ## @param primary.extraVolumes Optionally specify extra list of additional volumes to the MariaDB Primary pod(s) + ## + extraVolumes: [] + ## @param primary.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the MariaDB Primary container(s) + ## + extraVolumeMounts: [] + ## @param primary.initContainers Add additional init containers for the MariaDB Primary pod(s) + ## + initContainers: [] + ## @param primary.sidecars Add additional sidecar containers for the MariaDB Primary pod(s) + ## + sidecars: [] + ## MariaDB Primary Service parameters + ## + service: + ## @param primary.service.type MariaDB Primary Kubernetes service type + ## + type: ClusterIP + ports: + ## @param primary.service.ports.mysql MariaDB Primary Kubernetes service port for MariaDB + ## + mysql: 3306 + ## @param primary.service.ports.metrics MariaDB Primary Kubernetes service port for metrics + ## + metrics: 9104 + ## @param primary.service.nodePorts.mysql MariaDB Primary Kubernetes service node port + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + ## + nodePorts: + mysql: "" + ## @param primary.service.clusterIP MariaDB Primary Kubernetes service clusterIP IP + ## + clusterIP: "" + ## @param primary.service.loadBalancerIP MariaDB Primary loadBalancerIP if service type is `LoadBalancer` + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer + ## + loadBalancerIP: "" + ## @param primary.service.externalTrafficPolicy Enable client source IP preservation + ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster + ## @param primary.service.loadBalancerSourceRanges Address that are allowed when MariaDB Primary service is LoadBalancer + ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service + ## E.g. + ## loadBalancerSourceRanges: + ## - 10.10.10.0/24 + ## + loadBalancerSourceRanges: [] + ## @param primary.service.extraPorts Extra ports to expose (normally used with the `sidecar` value) + ## + extraPorts: [] + ## @param primary.service.annotations Provide any additional annotations which may be required + ## + annotations: {} + ## @param primary.service.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP" + ## If "ClientIP", consecutive client requests will be directed to the same Pod + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + ## + sessionAffinity: None + ## @param primary.service.sessionAffinityConfig Additional settings for the sessionAffinity + ## sessionAffinityConfig: + ## clientIP: + ## timeoutSeconds: 300 + ## + sessionAffinityConfig: {} + ## MariaDB primary Pod Disruption Budget configuration + ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/ + ## + pdb: + ## @param primary.pdb.create Enable/disable a Pod Disruption Budget creation for MariaDB primary pods + ## + create: false + ## @param primary.pdb.minAvailable Minimum number/percentage of MariaDB primary pods that must still be available after the eviction + ## + minAvailable: 1 + ## @param primary.pdb.maxUnavailable Maximum number/percentage of MariaDB primary pods that can be unavailable after the eviction + ## + maxUnavailable: "" + ## @param primary.revisionHistoryLimit Maximum number of revisions that will be maintained in the StatefulSet + ## + revisionHistoryLimit: 10 + +## @section MariaDB Secondary parameters +## + +## Mariadb Secondary parameters +## +secondary: + ## @param secondary.name Name of the secondary database (eg secondary, slave, ...) + ## + name: secondary + ## @param secondary.replicaCount Number of MariaDB secondary replicas + ## + replicaCount: 1 + ## @param secondary.command Override default container command on MariaDB Secondary container(s) (useful when using custom images) + ## + command: [] + ## @param secondary.args Override default container args on MariaDB Secondary container(s) (useful when using custom images) + ## + args: [] + ## @param secondary.lifecycleHooks for the MariaDB Secondary container(s) to automate configuration before or after startup + ## + lifecycleHooks: {} + ## @param secondary.hostAliases Add deployment host aliases + ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ + ## + hostAliases: [] + ## @param secondary.configuration [string] MariaDB Secondary configuration to be injected as ConfigMap + ## ref: https://mysql.com/kb/en/mysql/configuring-mysql-with-mycnf/#example-of-configuration-file + ## + configuration: |- + [mysqld] + skip-name-resolve + explicit_defaults_for_timestamp + basedir=/opt/bitnami/mariadb + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + tmpdir=/opt/bitnami/mariadb/tmp + max_allowed_packet=16M + bind-address=0.0.0.0 + pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid + log-error=/opt/bitnami/mariadb/logs/mysqld.log + character-set-server=UTF8 + collation-server=utf8_general_ci + slow_query_log=0 + slow_query_log_file=/opt/bitnami/mariadb/logs/mysqld.log + long_query_time=10.0 + + [client] + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + default-character-set=UTF8 + + [manager] + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid + ## @param secondary.existingConfigmap Name of existing ConfigMap with MariaDB Secondary configuration. + ## NOTE: When it's set the 'configuration' parameter is ignored + ## + existingConfigmap: "" + ## @param secondary.updateStrategy.type MariaDB secondary statefulset strategy type + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies + ## + updateStrategy: + ## StrategyType + ## Can be set to RollingUpdate or OnDelete + ## + type: RollingUpdate + ## @param secondary.rollingUpdatePartition Partition update strategy for Mariadb Secondary statefulset + ## https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#partitions + ## + rollingUpdatePartition: "" + ## @param secondary.podAnnotations Additional pod annotations for MariaDB secondary pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + ## + podAnnotations: {} + ## @param secondary.podLabels Extra labels for MariaDB secondary pods + ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + ## + podLabels: {} + ## @param secondary.podAffinityPreset MariaDB secondary pod affinity preset. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard` + ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAffinityPreset: "" + ## @param secondary.podAntiAffinityPreset MariaDB secondary pod anti-affinity preset. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard` + ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity + ## + podAntiAffinityPreset: soft + ## Mariadb Secondary node affinity preset + ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity + ## + nodeAffinityPreset: + ## @param secondary.nodeAffinityPreset.type MariaDB secondary node affinity preset type. Ignored if `secondary.affinity` is set. Allowed values: `soft` or `hard` + ## + type: "" + ## @param secondary.nodeAffinityPreset.key MariaDB secondary node label key to match Ignored if `secondary.affinity` is set. + ## E.g. + ## key: "kubernetes.io/e2e-az-name" + ## + key: "" + ## @param secondary.nodeAffinityPreset.values MariaDB secondary node label values to match. Ignored if `secondary.affinity` is set. + ## E.g. + ## values: + ## - e2e-az1 + ## - e2e-az2 + ## + values: [] + ## @param secondary.affinity Affinity for MariaDB secondary pods assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity + ## Note: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set + ## + affinity: {} + ## @param secondary.nodeSelector Node labels for MariaDB secondary pods assignment + ## Ref: https://kubernetes.io/docs/user-guide/node-selection/ + ## + nodeSelector: {} + ## @param secondary.tolerations Tolerations for MariaDB secondary pods assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + ## + tolerations: [] + ## @param secondary.topologySpreadConstraints Topology Spread Constraints for MariaDB secondary pods assignment + ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ + ## E.g. + ## topologySpreadConstraints: + ## - maxSkew: 1 + ## topologyKey: topology.kubernetes.io/zone + ## whenUnsatisfiable: DoNotSchedule + ## + topologySpreadConstraints: [] + ## @param secondary.priorityClassName Priority class for MariaDB secondary pods assignment + ## Ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/ + ## + priorityClassName: "" + ## @param secondary.runtimeClassName Runtime Class for MariaDB secondary pods + ## Ref: https://kubernetes.io/docs/concepts/containers/runtime-class/ + ## + runtimeClassName: "" + ## @param secondary.schedulerName Name of the k8s scheduler (other than default) + ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ + ## + schedulerName: "" + ## @param secondary.podManagementPolicy podManagementPolicy to manage scaling operation of MariaDB secondary pods + ## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-management-policies + ## + podManagementPolicy: "" + ## MariaDB secondary Pod security context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod + ## @param secondary.podSecurityContext.enabled Enable security context for MariaDB secondary pods + ## @param secondary.podSecurityContext.fsGroup Group ID for the mounted volumes' filesystem + ## + podSecurityContext: + enabled: true + fsGroup: 1001 + ## MariaDB secondary container security context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container + ## @param secondary.containerSecurityContext.enabled MariaDB secondary container securityContext + ## @param secondary.containerSecurityContext.runAsUser User ID for the MariaDB secondary container + ## @param secondary.containerSecurityContext.runAsNonRoot Set Controller container's Security Context runAsNonRoot + ## + containerSecurityContext: + enabled: true + runAsUser: 1001 + runAsNonRoot: true + ## MariaDB secondary container's resource requests and limits + ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ + ## We usually recommend not to specify default resources and to leave this as a conscious + ## choice for the user. This also increases chances charts run on environments with little + ## resources, such as Minikube. If you do want to specify resources, uncomment the following + ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. + ## @param secondary.resources.limits The resources limits for MariaDB secondary containers + ## @param secondary.resources.requests The requested resources for MariaDB secondary containers + ## + resources: + ## Example: + ## limits: + ## cpu: 100m + ## memory: 256Mi + ## + limits: {} + ## Examples: + ## requests: + ## cpu: 100m + ## memory: 256Mi + ## + requests: {} + ## Configure extra options for MariaDB Secondary containers' liveness, readiness and startup probes + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes) + ## @param secondary.startupProbe.enabled Enable startupProbe + ## @param secondary.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe + ## @param secondary.startupProbe.periodSeconds Period seconds for startupProbe + ## @param secondary.startupProbe.timeoutSeconds Timeout seconds for startupProbe + ## @param secondary.startupProbe.failureThreshold Failure threshold for startupProbe + ## @param secondary.startupProbe.successThreshold Success threshold for startupProbe + ## + startupProbe: + enabled: false + initialDelaySeconds: 120 + periodSeconds: 15 + timeoutSeconds: 5 + failureThreshold: 10 + successThreshold: 1 + ## Configure extra options for liveness probe + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param secondary.livenessProbe.enabled Enable livenessProbe + ## @param secondary.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe + ## @param secondary.livenessProbe.periodSeconds Period seconds for livenessProbe + ## @param secondary.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + ## @param secondary.livenessProbe.failureThreshold Failure threshold for livenessProbe + ## @param secondary.livenessProbe.successThreshold Success threshold for livenessProbe + ## + livenessProbe: + enabled: true + initialDelaySeconds: 120 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 3 + successThreshold: 1 + ## @param secondary.readinessProbe.enabled Enable readinessProbe + ## @param secondary.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe + ## @param secondary.readinessProbe.periodSeconds Period seconds for readinessProbe + ## @param secondary.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe + ## @param secondary.readinessProbe.failureThreshold Failure threshold for readinessProbe + ## @param secondary.readinessProbe.successThreshold Success threshold for readinessProbe + ## + readinessProbe: + enabled: true + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 3 + successThreshold: 1 + ## @param secondary.customStartupProbe Override default startup probe for MariaDB secondary containers + ## + customStartupProbe: {} + ## @param secondary.customLivenessProbe Override default liveness probe for MariaDB secondary containers + ## + customLivenessProbe: {} + ## @param secondary.customReadinessProbe Override default readiness probe for MariaDB secondary containers + ## + customReadinessProbe: {} + ## @param secondary.startupWaitOptions Override default builtin startup wait check options for MariaDB secondary containers + ## `bitnami/mariadb` Docker image has built-in startup check mechanism, + ## which periodically checks if MariaDB service has started up and stops it + ## if all checks have failed after X tries. Use these to control these checks. + ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mariadb/pull/240 + ## Example (with default options): + ## startupWaitOptions: + ## retries: 300 + ## waitTime: 2 + ## + startupWaitOptions: {} + ## @param secondary.extraFlags MariaDB secondary additional command line flags + ## Can be used to specify command line flags, for example: + ## E.g. + ## extraFlags: "--max-connect-errors=1000 --max_connections=155" + ## + extraFlags: "" + ## @param secondary.extraEnvVars Extra environment variables to be set on MariaDB secondary containers + ## E.g. + ## extraEnvVars: + ## - name: TZ + ## value: "Europe/Paris" + ## + extraEnvVars: [] + ## @param secondary.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for MariaDB secondary containers + ## + extraEnvVarsCM: "" + ## @param secondary.extraEnvVarsSecret Name of existing Secret containing extra env vars for MariaDB secondary containers + ## + extraEnvVarsSecret: "" + ## Enable persistence using Persistent Volume Claims + ## ref: https://kubernetes.io/docs/user-guide/persistent-volumes/ + ## + persistence: + ## @param secondary.persistence.enabled Enable persistence on MariaDB secondary replicas using a `PersistentVolumeClaim` + ## + enabled: true + ## @param secondary.persistence.subPath Subdirectory of the volume to mount at + ## + subPath: "" + ## @param secondary.persistence.storageClass MariaDB secondary persistent volume storage Class + ## If defined, storageClassName: + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + ## + storageClass: "" + ## @param secondary.persistence.annotations MariaDB secondary persistent volume claim annotations + ## + annotations: {} + ## @param secondary.persistence.accessModes MariaDB secondary persistent volume access Modes + ## + accessModes: + - ReadWriteOnce + ## @param secondary.persistence.size MariaDB secondary persistent volume size + ## + size: 8Gi + ## @param secondary.persistence.selector Selector to match an existing Persistent Volume + ## selector: + ## matchLabels: + ## app: my-app + ## + selector: {} + ## @param secondary.extraVolumes Optionally specify extra list of additional volumes to the MariaDB secondary pod(s) + ## + extraVolumes: [] + ## @param secondary.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the MariaDB secondary container(s) + ## + extraVolumeMounts: [] + ## @param secondary.initContainers Add additional init containers for the MariaDB secondary pod(s) + ## + initContainers: [] + ## @param secondary.sidecars Add additional sidecar containers for the MariaDB secondary pod(s) + ## + sidecars: [] + ## MariaDB Secondary Service parameters + ## + service: + ## @param secondary.service.type MariaDB secondary Kubernetes service type + ## + type: ClusterIP + ports: + ## @param secondary.service.ports.mysql MariaDB secondary Kubernetes service port for MariaDB + ## + mysql: 3306 + ## @param secondary.service.ports.metrics MariaDB secondary Kubernetes service port for metrics + ## + metrics: 9104 + ## @param secondary.service.nodePorts.mysql MariaDB secondary Kubernetes service node port + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + ## + nodePorts: + mysql: "" + ## @param secondary.service.clusterIP MariaDB secondary Kubernetes service clusterIP IP + ## e.g: + ## clusterIP: None + ## + clusterIP: "" + ## @param secondary.service.loadBalancerIP MariaDB secondary loadBalancerIP if service type is `LoadBalancer` + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer + ## + loadBalancerIP: "" + ## @param secondary.service.externalTrafficPolicy Enable client source IP preservation + ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster + ## @param secondary.service.loadBalancerSourceRanges Address that are allowed when MariaDB secondary service is LoadBalancer + ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service + ## E.g. + ## loadBalancerSourceRanges: + ## - 10.10.10.0/24 + ## + loadBalancerSourceRanges: [] + ## @param secondary.service.extraPorts Extra ports to expose (normally used with the `sidecar` value) + ## + extraPorts: [] + ## @param secondary.service.annotations Provide any additional annotations which may be required + ## + annotations: {} + ## @param secondary.service.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP" + ## If "ClientIP", consecutive client requests will be directed to the same Pod + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies + ## + sessionAffinity: None + ## @param secondary.service.sessionAffinityConfig Additional settings for the sessionAffinity + ## sessionAffinityConfig: + ## clientIP: + ## timeoutSeconds: 300 + ## + sessionAffinityConfig: {} + ## MariaDB secondary Pod Disruption Budget configuration + ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/ + ## + pdb: + ## @param secondary.pdb.create Enable/disable a Pod Disruption Budget creation for MariaDB secondary pods + ## + create: false + ## @param secondary.pdb.minAvailable Minimum number/percentage of MariaDB secondary pods that should remain scheduled + ## + minAvailable: 1 + ## @param secondary.pdb.maxUnavailable Maximum number/percentage of MariaDB secondary pods that may be made unavailable + ## + maxUnavailable: "" + ## @param secondary.revisionHistoryLimit Maximum number of revisions that will be maintained in the StatefulSet + ## + revisionHistoryLimit: 10 + +## @section RBAC parameters +## + +## MariaDB pods ServiceAccount +## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ +## +serviceAccount: + ## @param serviceAccount.create Enable the creation of a ServiceAccount for MariaDB pods + ## + create: true + ## @param serviceAccount.name Name of the created ServiceAccount + ## If not set and create is true, a name is generated using the mariadb.fullname template + ## + name: "" + ## @param serviceAccount.annotations Annotations for MariaDB Service Account + ## + annotations: {} + ## @param serviceAccount.automountServiceAccountToken Automount service account token for the server service account + ## + automountServiceAccountToken: false +## Role Based Access +## ref: https://kubernetes.io/docs/admin/authorization/rbac/ +## +rbac: + ## @param rbac.create Whether to create and use RBAC resources or not + ## + create: false + +## @section Volume Permissions parameters +## + +## Init containers parameters: +## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup values from the securityContext section. +## +volumePermissions: + ## @param volumePermissions.enabled Enable init container that changes the owner and group of the persistent volume(s) mountpoint to `runAsUser:fsGroup` + ## + enabled: false + ## @param volumePermissions.image.registry Init container volume-permissions image registry + ## @param volumePermissions.image.repository Init container volume-permissions image repository + ## @param volumePermissions.image.tag Init container volume-permissions image tag (immutable tags are recommended) + ## @param volumePermissions.image.digest Init container volume-permissions image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag + ## @param volumePermissions.image.pullPolicy Init container volume-permissions image pull policy + ## @param volumePermissions.image.pullSecrets Specify docker-registry secret names as an array + ## + image: + registry: docker.io + repository: bitnami/bitnami-shell + tag: 11-debian-11-r61 + digest: "" + 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/ + ## Example: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + pullSecrets: [] + ## @param volumePermissions.resources.limits Init container volume-permissions resource limits + ## @param volumePermissions.resources.requests Init container volume-permissions resource requests + ## + resources: + limits: {} + requests: {} + +## @section Metrics parameters +## + +## Mysqld Prometheus exporter parameters +## +metrics: + ## @param metrics.enabled Start a side-car prometheus exporter + ## + enabled: false + ## @param metrics.image.registry Exporter image registry + ## @param metrics.image.repository Exporter image repository + ## @param metrics.image.tag Exporter image tag (immutable tags are recommended) + ## @param metrics.image.digest Exporter image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag + ## @param metrics.image.pullPolicy Exporter image pull policy + ## @param metrics.image.pullSecrets Specify docker-registry secret names as an array + ## + image: + registry: docker.io + repository: bitnami/mysqld-exporter + tag: 0.14.0-debian-11-r67 + digest: "" + 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/ + ## Example: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + pullSecrets: [] + ## @param metrics.annotations [object] Annotations for the Exporter pod + ## + annotations: + prometheus.io/scrape: "true" + prometheus.io/port: "9104" + ## @param metrics.extraArgs [object] Extra args to be passed to mysqld_exporter + ## ref: https://github.com/prometheus/mysqld_exporter/ + ## E.g. + ## - --collect.auto_increment.columns + ## - --collect.binlog_size + ## - --collect.engine_innodb_status + ## - --collect.engine_tokudb_status + ## - --collect.global_status + ## - --collect.global_variables + ## - --collect.info_schema.clientstats + ## - --collect.info_schema.innodb_metrics + ## - --collect.info_schema.innodb_tablespaces + ## - --collect.info_schema.innodb_cmp + ## - --collect.info_schema.innodb_cmpmem + ## - --collect.info_schema.processlist + ## - --collect.info_schema.processlist.min_time + ## - --collect.info_schema.query_response_time + ## - --collect.info_schema.tables + ## - --collect.info_schema.tables.databases + ## - --collect.info_schema.tablestats + ## - --collect.info_schema.userstats + ## - --collect.perf_schema.eventsstatements + ## - --collect.perf_schema.eventsstatements.digest_text_limit + ## - --collect.perf_schema.eventsstatements.limit + ## - --collect.perf_schema.eventsstatements.timelimit + ## - --collect.perf_schema.eventswaits + ## - --collect.perf_schema.file_events + ## - --collect.perf_schema.file_instances + ## - --collect.perf_schema.indexiowaits + ## - --collect.perf_schema.tableiowaits + ## - --collect.perf_schema.tablelocks + ## - --collect.perf_schema.replication_group_member_stats + ## - --collect.slave_status + ## - --collect.slave_hosts + ## - --collect.heartbeat + ## - --collect.heartbeat.database + ## - --collect.heartbeat.table + ## + extraArgs: + primary: [] + secondary: [] + ## @param metrics.extraVolumeMounts [object] Optionally specify extra list of additional volumeMounts for the MariaDB metrics container(s) + ## + extraVolumeMounts: + primary: [] + secondary: [] + ## MariaDB metrics container Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container + ## @param metrics.containerSecurityContext.enabled Enable security context for MariaDB metrics container + ## Example: + ## containerSecurityContext: + ## enabled: true + ## capabilities: + ## drop: ["NET_RAW"] + ## readOnlyRootFilesystem: true + ## + containerSecurityContext: + enabled: false + ## Mysqld Prometheus exporter resource requests and limits + ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ + ## We usually recommend not to specify default resources and to leave this as a conscious + ## choice for the user. This also increases chances charts run on environments with little + ## resources, such as Minikube. If you do want to specify resources, uncomment the following + ## lines, adjust them as necessary, and remove the curly braces after 'resources:'. + ## @param metrics.resources.limits The resources limits for MariaDB prometheus exporter containers + ## @param metrics.resources.requests The requested resources for MariaDB prometheus exporter containers + ## + resources: + ## Example: + ## limits: + ## cpu: 100m + ## memory: 256Mi + ## + limits: {} + ## Examples: + ## requests: + ## cpu: 100m + ## memory: 256Mi + ## + requests: {} + ## Configure extra options for liveness probe + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param metrics.livenessProbe.enabled Enable livenessProbe + ## @param metrics.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe + ## @param metrics.livenessProbe.periodSeconds Period seconds for livenessProbe + ## @param metrics.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + ## @param metrics.livenessProbe.failureThreshold Failure threshold for livenessProbe + ## @param metrics.livenessProbe.successThreshold Success threshold for livenessProbe + ## + livenessProbe: + enabled: true + initialDelaySeconds: 120 + periodSeconds: 10 + timeoutSeconds: 1 + successThreshold: 1 + failureThreshold: 3 + ## Configure extra options for readiness probe + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes + ## @param metrics.readinessProbe.enabled Enable readinessProbe + ## @param metrics.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe + ## @param metrics.readinessProbe.periodSeconds Period seconds for readinessProbe + ## @param metrics.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe + ## @param metrics.readinessProbe.failureThreshold Failure threshold for readinessProbe + ## @param metrics.readinessProbe.successThreshold Success threshold for readinessProbe + ## + readinessProbe: + enabled: true + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 1 + successThreshold: 1 + failureThreshold: 3 + ## Prometheus Service Monitor + ## ref: https://github.com/coreos/prometheus-operator + ## + serviceMonitor: + ## @param metrics.serviceMonitor.enabled Create ServiceMonitor Resource for scraping metrics using PrometheusOperator + ## + enabled: false + ## @param metrics.serviceMonitor.namespace Namespace which Prometheus is running in + ## + namespace: "" + ## @param metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in prometheus. + ## + jobLabel: "" + ## @param metrics.serviceMonitor.interval Interval at which metrics should be scraped + ## + interval: 30s + ## @param metrics.serviceMonitor.scrapeTimeout Specify the timeout after which the scrape is ended + ## e.g: + ## scrapeTimeout: 30s + ## + scrapeTimeout: "" + ## @param metrics.serviceMonitor.relabelings RelabelConfigs to apply to samples before scraping + ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig + ## + relabelings: [] + ## @param metrics.serviceMonitor.metricRelabelings MetricRelabelConfigs to apply to samples before ingestion + ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig + ## + metricRelabelings: [] + ## @param metrics.serviceMonitor.honorLabels honorLabels chooses the metric's labels on collisions with target labels + ## + honorLabels: false + ## @param metrics.serviceMonitor.selector ServiceMonitor selector labels + ## ref: https://github.com/bitnami/charts/tree/main/bitnami/prometheus-operator#prometheus-configuration + ## + ## selector: + ## prometheus: my-prometheus + ## + selector: {} + ## @param metrics.serviceMonitor.labels Extra labels for the ServiceMonitor + ## + labels: {} + ## Prometheus Operator PrometheusRule configuration + ## + prometheusRule: + ## @param metrics.prometheusRule.enabled if `true`, creates a Prometheus Operator PrometheusRule (also requires `metrics.enabled` to be `true` and `metrics.prometheusRule.rules`) + ## + enabled: false + ## @param metrics.prometheusRule.namespace Namespace for the PrometheusRule Resource (defaults to the Release Namespace) + ## + namespace: "" + ## @param metrics.prometheusRule.additionalLabels Additional labels that can be used so PrometheusRule will be discovered by Prometheus + ## + additionalLabels: {} + ## @param metrics.prometheusRule.rules Prometheus Rule definitions + ## - alert: MariaDB-Down + ## expr: absent(up{job="mariadb"} == 1) + ## for: 5m + ## labels: + ## severity: warning + ## service: mariadb + ## annotations: + ## message: 'MariaDB instance {{ `{{` }} $labels.instance {{ `}}` }} is down' + ## summary: MariaDB instance is down + ## + rules: [] + +## @section NetworkPolicy parameters +## + +## Add networkpolicies +## +networkPolicy: + ## @param networkPolicy.enabled Enable network policies + ## + enabled: false + ## @param networkPolicy.metrics.enabled Enable network policy for metrics (prometheus) + ## @param networkPolicy.metrics.namespaceSelector [object] Monitoring namespace selector labels. These labels will be used to identify the prometheus' namespace. + ## @param networkPolicy.metrics.podSelector [object] Monitoring pod selector labels. These labels will be used to identify the Prometheus pods. + ## + metrics: + enabled: false + ## e.g: + ## podSelector: + ## label: monitoring + ## + podSelector: {} + ## e.g: + ## namespaceSelector: + ## label: monitoring + ## + namespaceSelector: {} + ## @param networkPolicy.ingressRules.primaryAccessOnlyFrom.enabled Enable ingress rule that makes primary mariadb nodes only accessible from a particular origin. + ## @param networkPolicy.ingressRules.primaryAccessOnlyFrom.namespaceSelector [object] Namespace selector label that is allowed to access the primary node. This label will be used to identified the allowed namespace(s). + ## @param networkPolicy.ingressRules.primaryAccessOnlyFrom.podSelector [object] Pods selector label that is allowed to access the primary node. This label will be used to identified the allowed pod(s). + ## @param networkPolicy.ingressRules.primaryAccessOnlyFrom.customRules [object] Custom network policy for the primary node. + ## @param networkPolicy.ingressRules.secondaryAccessOnlyFrom.enabled Enable ingress rule that makes primary mariadb nodes only accessible from a particular origin. + ## @param networkPolicy.ingressRules.secondaryAccessOnlyFrom.namespaceSelector [object] Namespace selector label that is allowed to acces the secondary nodes. This label will be used to identified the allowed namespace(s). + ## @param networkPolicy.ingressRules.secondaryAccessOnlyFrom.podSelector [object] Pods selector label that is allowed to access the secondary nodes. This label will be used to identified the allowed pod(s). + ## @param networkPolicy.ingressRules.secondaryAccessOnlyFrom.customRules [object] Custom network policy for the secondary nodes. + ## + ingressRules: + ## Allow access to the primary node only from the indicated: + ## + primaryAccessOnlyFrom: + enabled: false + ## e.g: + ## namespaceSelector: + ## label: ingress + ## + namespaceSelector: {} + ## e.g: + ## podSelector: + ## label: access + ## + podSelector: {} + ## custom ingress rules + ## e.g: + ## customRules: + ## - from: + ## - namespaceSelector: + ## matchLabels: + ## label: example + ## + customRules: {} + + ## Allow access to the secondary node only from the indicated: + ## + secondaryAccessOnlyFrom: + enabled: false + ## e.g: + ## namespaceSelector: + ## label: ingress + ## + namespaceSelector: {} + ## e.g: + ## podSelector: + ## label: access + ## + podSelector: {} + ## custom ingress rules + ## e.g: + ## CustomRules: + ## - from: + ## - namespaceSelector: + ## matchLabels: + ## label: example + ## + customRules: {} + + ## @param networkPolicy.egressRules.denyConnectionsToExternal Enable egress rule that denies outgoing traffic outside the cluster, except for DNS (port 53). + ## @param networkPolicy.egressRules.customRules [object] Custom network policy rule + ## + egressRules: + # Deny connections to external. This is not compatible with an external database. + denyConnectionsToExternal: false + ## Additional custom egress rules + ## e.g: + ## customRules: + ## - to: + ## - namespaceSelector: + ## matchLabels: + ## label: example + ## + customRules: {} diff --git a/charts/limesurvey-martial/icon.png b/charts/limesurvey-martial/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..90014a72d36fd41a81dd199c435c1cab076b169e GIT binary patch literal 8080 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 N0!US+O3L)h{{feI7Rdkr literal 0 HcmV?d00001 diff --git a/charts/limesurvey-martial/limesurvey-martial-0.8.2.tgz b/charts/limesurvey-martial/limesurvey-martial-0.8.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..cd846b88ddcf4506de8a0939e72c24f311f7eb22 GIT binary patch literal 111201 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

19(SyT?u} z)8BK=W?@arTC{!8y9@KA+}&#N%dBxCNXjd*>6LILy_nmk!yJ= z|1D=I5ln_@8VeXpCOt}hO^{Y%=O#eVa66pFWO}%QB8B=nndN+$p)i(HJYGc)6lHR5 zvYpX_WJe0Ihfn$V(%|-``6Pg6oGcKlWZB;y(>40TSznTbP<5Gt`EPODQsv9YPrqdv z4Von4(i)X%C=_94Tbi@PWSv60$;LCk} zu>4XS7cBp@Q;4log8{;bJ(pdGOirt)wf3vrN?}-bJ&hR8F7p^U(vk-zQ@o6C(z8ny zlOCRf3HJyl2Wq#F0T@Ebo``X%Bz*=ZmA&|h+Rc)6i)g~cLkZ1e#3uWlXUs}9t{GGJ zL522WO5fAhW$BFkOC z0@Jlo$T}lYX|X|zT^(Wey=YsU6UXK;XaGh4#)xJoI+`+iPTm`*xB>c*(h~ru3?O)(80b5llXQoPf`t!8ekavGwlrXYmd*5Rv!Ew>ByHO2)uz zwW{LQe8`0^rUNTw=9N6yq2Z}(i8H5B1k~Y=0ulPbgF#|`W+%&7uc`|`^%7Lkr5mzj z?E0#yIIeov=7~7zc+?SvSl!k@D5lS-c z<&}heTUIy@pi#g;H&B;~HSET886z_#k-`BQl!sv(OsDCI8dMs?A(n3Ws-V`&yf8j7 z%!yfRt$#x6u76lfP`8DRlLbXgSS)VA#CDTR4}YD+>mMmu)zgi|7h+>`A42V5_56`xx3ludBotiIhfrh1nNZdKIjb z+Q5*yS)4b)NrY!GL(z#f@wkSh21syBb@sH>G%?vzlj5LwqyFKWo16{R=2g21DT!(e zu9;PCE~|T`jp5FGEgM~FwLB8ywH^VWvEKYL(Z3qlPUU^UngY$M@@A4Ha>5%l!&a>z z-S8;(y>?VuKKp94!@F29%vpqz^;wCpcuig?kP1CPqU!t@p#<}(FwYi5oX3=C7W@Iz z$?6IY;sBrzGnC3~o#(Hvz@7l2dGe^y+?wQdu&UI!6ART0D0q$%kv*h2mB`p ztCl|7UQw%mx&OI;F-@hYue;I(qu#UydFgKYsY+U%=6BShjyT%OL%iqpjPjGWV7I zJ`MmFej__~cmjsYEK5%g4|z9_RF@OFIF$cy77u{oiuq1?bOo<)ewC>CiLyn^~g zvI1r@CJB<)$r_o%6B)z(e4vQVv!#nzgISx{(>z;p4_($~$L5=fcF0UTr-Wn|kg@lK zM%Ej@?A-F>6^WB1q9&`XgC3V4pBs^J2q;Vi%3dGt|@3R?Mj>si>=o4GZ1D{!Z;s=rdALPBmJ?u{aGUk|Pv^fB_}qm8O&7 zobmZ})eFPCuCC1TZ#HC9IT@k`;g2sN1LiqVl@k!uEp2j2x6yh%WUK_wP@!$D=s}}v ziK7T57485S3OhAa?$?3+E``D%aUCj*f>GkLQ;>#zd&61Z%8HbAg)5)X7ahV-7ibz4 zjr)<;u(az#kJzj^q>J3PvcOJV>?Fv$p^*IucwqilPqZqi(`l}~P?4hoR9s_>Z8p&w zFvY%Ju8>k8#{fU)9i3Ll3+n?9b>f{0U({Y06ix|=5lkxG<8RMqp$_9-uc)G#o$>02 zR)wD{dc^P_Rq2D4apviTqS-56WhZ%1ltjWz4q1$&%FvW#isvse7s0XbE&MPP3HhG) zZxWpGHh#kO`aL5Nv`i1c9EwJl9BR#}l>R*M{na*Ji$Gha5qnj?2q0|CI^^M#L&3jc zV5|IpzI9_zzXIXj9Ne1&^Zi$C4r(YfA!flh_S|~isMFr@Q`KdGbWY< zA(Ih-_oty~!JNbqqOL^{U-f9HHI;HIkjaE=R$!~lv53hcmf=K(30h>WQaeH<>@uZ> z`&6Wk==_@qWe~?~H(gXTta9od?dwx_joqR?Hz0ki&QVCl_1e2FKJ9GIE_1-HOm>6( ziiAu%v9#4%7ow~r>}CXH6pH)L+(#OU7Q0!}KJ1txsYe?&;Qx2OD-aa_*BGVj@YU<< z7gyu#L)Nj4=J@~7_s0*P*5m)j_woPR_?`Xz^zs_KI(_-#1bqAm#%H|q$0CaJ`SU=& z{pH2w)%ojJW`SS0Ye5oT=JeviRpK;FjY5O(zS96=0^BGQ(CF`%SOfg>ZvbXsin!T{ zP#Tjpiokc@4F(@SjsTv6@h@^CD#CD)5SHQDOA?hC?4Lgmu8WGq{f-DFWkomv<%eJ; zQprx^SY4zpZ(@{RNRaJFp8n@GsyhOUI>`;9?TMgS+XIFAq* z@~0#jXKAc<(UfBe_98sXv<39Brdu8=^oSw&W*>Y42~Hv|y~mtqAV8yfZC0RAHMKeT z2}v{ojU*!Aq^E0uJ_zjlWFbWIE}x=V7J~)KWQozJOw8qqqSEZgWop>x&tMb-n5JX< zkgQIf{-OGrAm`M`6(o_sM9_c;5t`-;i!_rm{xFcL41<5;qXfME5nTWM1-N+q{NKT7 z1g4NJ2ZQqj5E@BuL@z>>Vi%5zzGhTT$4pVAfF-p0$n2Oyl4ixx7gfHn$0*6@T0q^7 z*|NDP&66=Fk1Gd?nUvNwPDL}niYvI}HEn#52#g4cjblJo7kXXq&G$R&Q01F2K_{9m z3AoUJG9N#dYOdk5RoJb7)gFQ|`22b7qiD=-X5yt%f0gy|oCsX{&!0~|egrcDW5i~t zD5TqPU8dAjhV!Eg82V>X(u|o}VT++0(}L%#5;Vufb%{E^OTL@0k!mibc}Gbk$7!^} z31*peTxS%C%tjc?etx6&$WFwzq~HTJO-C} z0-&%=A`yw3rx{H2ky)tjw@^dBG)^>6tbSKUUGQA#a&>(V7>(!(j7C|u1|!V>Lc-|$ z@a-#fgXp(lBw-qXTPot67D&*@9_bmXFoXa+90OY>Iw-DB3-3_`qeDJ{qWywtsZOKi zZH#X)%EiX`CkMltO&5?UeK%Oor zjMQ|sMDa?xT3X3pPx&+_=U_c&tIYp6iDR5BuHm9|7NrHzvs#xgE$H5jYVd%o*Xq(;bpvA@ z!3@dIWq0Xeosi7deVHks1tqZ0z(~x-{EKgNC;lSq#3XqkZu|x(Kh&7GDax?1^1usQ zrmA6uGcNUM2=-bn{l4v$m&8@Sly{Mjl~R>$j?pU3*5)$6Vr2;Sgh%h?)j@z^C5(T5 z=~eChFZ97_5cZb>+l2?T{xn-jb7CXFrN^z3S!SH{w(f?#&maw|!5{NUOKt}Uq z2A)0=|HP}Sd_Kn?z;IO3Cf30t&+Joou1yu}ihGy8syJwDRby!(8wZKd#B+_V7BMP(ZNA4q_Id1$mn zD~&r4+L%nuq9&__>tk!GyWd+Rvfo7{u4QYV` zTHXz;XAYf?Y2y)jMX5WosL?A;T@ro3EW^p-te~M}+1A0mEUgD(>z|ve7F&Xq>iW_` zEl8Rp&LA|zDKiNS+&Z0_Z{Oso=KTP%iq8vPEy2Phs!7M{HLzzch`j>b2Zq1|Q_j(S z%ZgPxNA0RrmfcXfnkv{_y_`|LJECBQcw1C#FUak8d9@A7*dXve)lmfog)SDSN6PSI zqj-vdpxNPu(un|*re66rx~NM(LcXghS+k<~XB(@+a6MD<3Q;n@>}2696#^UC;ki9R z8zs>ezH879zt=!kDUJoqh6Wg804L%Q2E)lBMj9_ng5%G4!8ycngS%A?L+X~lQ8kGe zqHsT*Z(y2o8p~&O>tVNG4L!?@SoLyECwXQ(9M);$1%D?v0mJ`JhDOnmu|ran)gOaG z2md?y<@Dz_FRs8Zr$3)RKfOMG{p#eu6Rw%XN1ufF+Pem*Xe82?)Ef7CkL0CiDJ3^J zLI46G5bOLX2<)DU@TvwbK^_BV9F*B_C}!J1Ub`aW#G+QH?Rny0L*mS!Xe{NSg#jxx zaB5}psM%t1i=WsWa7k%TZ5$ZSei(lE@ZrO7-`hQ3I)-)s+x*uh{wu)lN8%Q-HC%;< zfLrqaj*g#J&;LLC{_*4c`0s7}_&BEG9&v52L@z%VDM5Vx9F0b@86Y~%LXEIAEcTMw9so%%ThGsI#7dVb3mJQ?yRS>IcYMl*Qv(E8i5xYOit?A ziK|OD8E2|HMnL3go)nP*`QQXRd1M@rNh!(5jKnA4&GU=UqSt2^stFD21w4pe8m!LJ zjSgIzFlya2+NmXB4K-)mTg?0kT$(QPzlsVU77@n4WkAdPfBdMH|MB?Y_Yd#q|J(Sf zvFP9LsD*sTwaNMBSWU3So}YVi4NUC)0#j-IfWnNdQj(w~JJAWu_j7K4bFNm6)p|Tj z<|p8jSYtMCP<;Ysb@%b7etw(Se>?qP)H)rs#ecp(uEu}9fAsJ^{&Ooo$NJAoLbAGzvugK3XB~aui)e|Z@ehexpIY#g+ zSTg2SGnPyocSw8zX_(|~A_sR&&_54#xbVxb?i=06wQ*Hj50Z_@y>sJdBQAC_v^w5d zc85k?N6PQofDB9v^^B3tgx@$@7dfQ?J=QpHAG=+k?GFwPpxK|Hw@t#drD`G zV$Qfiu;Sj&-+!&&Ci6ebV20*-%urY&c=P=K`1^-X9#-=|zCU_;KmXsxuglbK_Pb|( zzfwi6?&tOUc|B}i*SBMwfMfC34dz<)cg!+E*FWPG&YW|ptKeOjK!HXWc-39yJswA% zMleHH8HE{ItYuOAne4`l{1;r+Pr+9{Z|W0J;87^y8ADh|z|fp($gOheet^LO~Y$cC2<2q1qnSDDk7+crM#)<~cFM23tE zI81RViqlf6>Mkf^C=>Na12rt~67+6-9GL@8nB5HbO`lQa_B19WLcs*`!fh0q6-x5P zydW69L+hZ@@6cK)4+|bT= zYZbWXC~m0j_BU=fsJ#H*X`W}iZ#zK0WL|15*3mHl+GB2;u zPJ~rJsx#qB+xFVZyT-sLy%yZo>EZ^xygLum3J0e`Jj?en;dTz zjfeW4mnD_jw_BTh3BlG=g-#rZqeg~=Sb?}>8eZ7ZvDu2Mf-hoZCW1B8Jaq`zPFcJ@ z`1r55JO>!R5jdRUD_UDU1}+vwP~({abPZL6b>*|BZgwmY_M+ji=! z=Y79(&Y#+2uUflCja6&Z-uImMyk@@E(O9YUk5So88s-icoLsQ1=5-Es1^G3+kg^VG zioBmEmsHaC7~bCq5xm|>f`}0noPDG%mQN7)I83zQ1&mq|*kfl1EILU;CKjUQ<+uY= zUY09oik^9omlOt|_0}U&a#4m*bYG;`^IiUH_eE0rNZ)#a{zodPf(@f+_bE)9iT09^ zIZFC$?aP7b165W^iypSv;aekmtJDu+i@b#R;w2NG$Ca%fDe&{%vH4iz$+_ME7h73X zi`m>1^jc~Fb`70VVOwOU-ld7F4oTg`1-5eaEq*xd6}$uPjA{#(cV3bk+C{9Jccc9I zMb62*!(o0QKHgs6KkxUSR}WY-+n=f|eShgO{R&}=Y?vphsa&WTGYPc0_vgRID#0?7 z7f_*Hq;-jvj}g{d$5eafyu0|i`F{C)UsnHNo7o_m@$=m?s}S^RsR1nTKBJ{KuJ*Mu zkyQ9c@))uW1q(4kU8Na-pfkSvH7R>NDI|OnS^9(@KeY~jJAU}c#?DH4M|$wCRn;WwZGl*#W~m2?&)}TrDT!Zx!9sdtqn~uQC!#+AG2lkbY7tqGot33 zo2#EIz}tQQl0b2_kJM^@bmo9poZB#gh4m{p7glqnmC4}Oiz1h@HGarNbSo3o@dFYzgIY`Ti)gjmeI4eMuDkzN4M+i>GAXZ>L~JJ;sJ{QrndEG z33Z`n)mL-HFCLzX`X$NXr5PrD-7eq*&sigZQBoat{v&QAjmpBkgA8b7j%WPlCzzF7 zlh5m@`d0vR=2Hpwc=9cw42W=^ytNF2bM{4VpnyZ~OXG=i(3} zm5O%pl$FcM#Z}At0GvG$^MRnv^Gq9V<)UK(e8Aev>D=5xhjAJSlSK<0+ zY3WoeGvIdMHZykGY-6m<_~#MwOyBR`fI0lv9`tP#0QTnr5dhv)CW*_sTooH+vNI-h$D2K~nd=fwG#>Yjtw#vfc#;Li_yLH*`)A)6 zYGkN%P6&-;o&`?QV%13m>z5wy5N;U6FA|`A^NtUntnP)4z*&7gx4S>Wjc*y;^>KG= zfrp$QNN$?Dl-lOk+m74P4wpqoJY$zMz0#B1$j)G_%Ch5|>g6oP6^l9Tls z&D^yLNOoC#UoZ58&yK}W$_wz-NQ&@tp*GU?;XiZVm@G)Y*hd<=3f`Q)L2SElkN5D> z`C0SF)_$Y-m}yvWQwyfg+BB0(I5?3uB8^N(5|f42UQ)Jfb7+%9sPDbOrr_^)+l^>& zi>H^QYMGtScC?+iK(aX5BMAk&$fIv({riS_=iSAmTsxi>Zl@gF=AzK`2>13fOAYtX zj6$u#j()eVv&ZxPRpmk|lP|WD9Dn(1KfsHLk`0>)c0!&I7?kbs<4Ph;65p-n1S>$l z^csvf3!G6Zby1qs-hHqz+C1|6fQei-Cs9O>`o4NSb-W2snleF-$FNY-(})4aY5jz? zmWqn!7aS*~wx5*!u#9uq=ep^0wvxA`P=hAS0_iv2NB9{4*F7Iscl4Y|zEixM^omax zh^5ufC7cRAHZQZ0b}&Fw-z6YOMCnG{0nS;6YDv;V2aKJrR@1EYy7UiCVTDD+7R zIX<+mOa#y1PwG<1i5as@Co_hTxG<7;X5akX_8{8`j`k9>=*-I=yBR`1bGeO|o+u_@mgXjhyWu`V**2E*B`e17=tHVRZJB9p zF435E2TkD)8sa{^e*K%)hTuh+)~a=Yn_m9w&m@40)u~1BS{#4>oz)wCOZ3~^2WT7e zc`Wk;oD?2NyuA2rkI#76Z6u3QcStyN`9O@|_U9z3LsRM@L%98Otdgtl84X$_PX%9y z?A@>M6PXvO(VCz6FdtF-jm6oNn_R7eOdgw%=mmD7h!$tD{50ZP zBfI)%!$rvoYoGwCi}|Pq7iWYXtj22s?~Zi5&u_dn>zanH+y+C--()e*_!7*SlH9$k zD|%+XkjzV@n0$8F$m>|-8M=DL2gJd$Fl~hbq6B%);%eU=-!gT6_XrQ~Pp_Ui6L`mE zauEFj`;}K%Agap#V}~<^CY6YW0w+EG6+$;xugn6c2tH{{PBaloCOME^-b#??;@cP9 zxA>h=X{oioYT^oSLi~$fwoXrnc7vr*h~O9lD_@E*Q*X{rct^+7uvYB%A=Uo&oh=bQ z&WcKVOE!EnLM4apQIvYen=a`)O-FfQEE@Y{^g6FDve^g@&&XOw`@4as-4n-WM>Sv! z&P*nWjg}D!J{q)X3-EYqboCv20Q|8ofEvfH?v-X~mo;`GkH1V8qnQ+T8fIwBn2!tt zwSJtB-WUN(oq-`AYG-Rg-fdLG0yWwJii*d_#vo>$=JUR@u#C&rnSp#5JE^#^W%ag7;p5CpfP#P{f)aWhG*kD1x1+j_-r>)PsQ zbpW6(1Mu)V_Oi3H0bJrUJ^B%UZ!dw`mw-g7 zSR%DczzZ^wKzl2o_0IVfP~mLmq}*;o=mKW71Ge01bALs*R-DAD7eO#Ad>}9O47ecI z2S|>Mci>b^cn;W)qlbH%{cxHw+2`5k#{O0)N%m8X<6);%$!!GQpETbhP8hn4NbOzj zw>WByl?b}vT5s{Z)b-vgU2cnPcx)bCZHdN$zkmF+;7t7qVQ#uG$q<$jK^nxV%bRN6 z-7@pU)iGx6Gk}n;sO&RhNcfYm7%nM_#8`)t!|aQ6o_TCT6zM8mKXZl>5spYz?$i>d z!uBG+fn?0h9^Y@|OC8tw{td8yK3vq@4M%l8qJ;26wf|P~kH171ZSrqK24xo6h zX#h!4=X>XF;HL89S8OcdPA$Ox;Dp;~zNx>a~EE6z#fG7>F2VY$#&!5K{ z@&Thx9?fH?l2VUolnw#v)MNM-ONbVQ`VB*^V+%0mr?iF4BJgUfzQ>|GPwKPYf|@gu z6-2bF`Wz65CZBe3$9Xns40D$R6B?n*_DxIhUdB2w-fYXSCI=RAB#zNTvzdGYSgO0| zhBB|WV=5`N9Ydv6^3HjGZSk1zmU~f2PlqX2Dq0p&q#Flq;WsPm&Re*2<%J%Gt|oEh zf-+9+e^5Z)mh~(MZHJ%!^e3{xt|+Eo`yb_)q|<%h{nS)8>PZh}@wMq)T0!u$XQiVu z$Lmy#`iY#T#qvC%?vi~tE`8N)c;E^IfAgw|&Rz~l|2-eljAXbDG-wX`NDMx}RA&Ve zV-O=^I$Dn`_#7RlKSG+k*EZX;y0qfik%%FWQJjU;Y;~D{@eXwZkDQ)W=M2X0z+i@(yHNkycMlX zZ7&D$!j0B`*~!vN=yQQ@tWFT322IK5KnGTx4#wDbz#JS8{=x&TS>I{Nw@*#Q2iUO< zqO5XZ>45S@)?lNbyh)kr+Qldw(kI{)4xYKf^E^>WkHCLj^L35f!o3N~<&;e$Jsepj2xD)`c;sa!`wA27puN1l!RUf-d5y->Qr_Q@e)4A<`-H~-}0lKaL_}YJ*#ExEr=q`Hd@We z-mbo1=Z{Bk8z)RT-EZZ_2@^VMkPyszfkxuo-NV#qsH!mA<-P&eBB+sj&IL5wY4?fd?A5@tu4-X@AvOl zl|PwsyW1W)SBNld^Vl)%_V=fLY6y%ECTFxT(*+t8;(1REw|0!SI&D0qw*6Zfij0h| zy&~K>20hil8K6PC=e%bM^1GRv5m+22cc8L9YLlWD?Oe2Q<>5cgGhrOQE{SR0YCcxt zxIv&3^z@4|TKZKsaXRFuZ;;dTb$7CmTf^5f*^XO}Tc*>&*wlb9Pp{w?%;lB6%vrC; zZlIT|uixA5{&8{k26U`pt)!kX@t_*~c9c~Tuh&$t-tu*EQ8lTKkE_fz=xTHK^7)?s zITSMAZyYplLoXbVkrApBsr9%Td3c;U?vtO_3X{AfoR_nf|qCTnXNDVo6ajZ0IuAU&1W~qiv0t04c^zALKGo( zwL?EI=L8P+Q9nOX@xb`f_dxW@m9my!3u8qs{kDzU)(eN|rMedm8NcrKP5Gs7+9q9ZRC{RK|@#~A(D-t@2vZet-jkWq1lGj z29j0XNbo--t3oKuU?Zf%nt!JAk)>n|)7COm8r zZO2B~jWN0xuWQd2eFg}@+j|*1*5;YP0Ew4B#E4^L&w9Ff9)8*@D?YjF?+q8e%|Q9I zbq<%W6=dgNd?aC~P`(O2u>Cp^qiWgs_v|m{Z#X3;PXb%Ga~Ve( zJ4e<|?V#GyIj|ny&YsRTDp!6p&gggf00SOF$i^#=Mf+OcH{EHIhF#?JydICIr)S@L ziV=#q0j=vWVe)y*T6yn}eJ5oq9n8lJw{MNiH}}0hqD(dqC}kr|09WtFwwKr9Ybv0L21u0JzEhH&jt77EM(*@GOk`}H!WZ5K#!3+q>)eTU-|9sJc{(;U=u3| z5t5dNH<$@Sx2a020edFIC5L84k8ATlAz-nj_qWkg0=AJ^@qf%A zDQYi2l$%(12~iFG!hLbqBzU_cRJBj-MZDXwH~-q}74W$S>Yt0kk=WQ9;LyQ~Bm8IU z{xa1cl@0#C8>vDLl_dJyR)6wDo&+7B@mtqFFAW4L&~cCq%BWUGmij{uLv@?-b6=+7 zDz_PJEmIkEN(Fi)WTgG8(g=G$F54IdBAru6JbjJ&q`fK#a?a*Oj#e;oTNTwfRi5y` z&P0g@9jjh5`rq(p7G1Xq^MzahvWAZc!_4UiDP2?GWnL^Q|Hj2e zquN$rz^@)3_(7VbW-AsP<;86kU;D1D#@@Q)O%phjU+;Jz{WG=RZN;&lhoJ^M_*(gh zma3SXj14W<|DqB8i9XOJfVG{;biRN`L@+N%yKuhAmKpy!GyZ-tHQc%&`;VT}j%N9} zMZWO$w)R>|`q-)!lv8}>Vf`A*R+fLa7}T>ihm18VfHX@$t4Bwie)* z_v5MWmmgiP)0e@BcuLsleO0Qzh&0QF=gm;qFNS29z ziaC>1l%M+nq#-|OLTcYKA!ITvR{YZnd&a)ueX-hO=gUsO5^hL^ksOTHJd;F4m4-R z2#-uZT_KB8>5D$3(f?XAwR~@LjhSt5SQV^JT&{m{+t+k`00iM7QFwc_;jQii2!44u zscr#0-XFiedv)HHmR%@?yHAvR&wFBN3A(-xAp3e>zW=_s&=M>Gg`vSDZaoU-7$UHqjrvmge*c z^HOdHtq*TGxPfPr4jZW40^1S;n_-n#``axpo#Mco@7_M}Tlk{1Lxikfetl2}NeMuWj2Gn? zw3|;aF?M56xMWELNM(}G?e%8S7sG3v;{v9a`F!8Y8oqyh1NTAc%K?DX7x4T`yb#sj zibvU<(%Q>}{r#nHSLm*^0TeZ@rjN}-)RTFZi3OY)lw1rpF0>j6;#4eW*OotG7BNC9 zg4E#&@J%njAFjtLU_=JjKr#9Ha^o1Z&+!j-6bCFWfiGOJMRb=x-w~n!ANC=M#s77l zxHyf3S%P_j#u(a=un<{ulehOr2-Kt`{s4`Vgk5&~UJnsyp-R)f3_i z{;ZeaamJe8B|{^<8C9q!Ocbmh{xvex3Wm5PRHrA71bz;)6 z@P#z@C+}^%G=-u}dz|*G_bDAtASj8dUzid!J zC25c-QlKYju($bN(HVB7$Rp`~;dk|~A=n8+{0XMu!U{T?*?G#uG5=Pd9MdGxx2Oev zY?y$^_r9dKC^L)_1i@RK>Xjc{I>#!FcLVp+n?+J*o7?I&?pK|e#mVm{$hO)qGlF<;M7G9C|}&fOv1 zeBguJj&hhKgNB_-hF~EGgeUBcN#ts(&%7lV%9ruvk4YWwNCJy8w-Gi+sR`M{A^lm% zf^)wY-jXf90PUV%71*H%eS%h9m()<^%%CcRPbzW`!rshsbo~bk!>AqHn^;LW!Y9#H z5fi7}{JKfIvdgiNG5gWK+(8(r(eUaJEW!|>$P`_%xCn^=R{+8&Q^?q1mBjf;VdSB{buZqu`J<~IbGXkIz-IzDlaV*4s6{-;fXhu^2Wbj+!4jg&d%_Z zN6cwiiy>O4ntKGLjtNDlnsYXy_eNntHl_QDA~sr<(8@Tzo&Fd#D5=-Ko(YSFh(7#D zSZIT{ObRmYtDDX$PX1JfZ8*>lQKuzLAwU6;dOogkOLu(Sz=y$88?V5ik4#leEWdNA>%C6)FqlVT$y4TWX1Ky^#&u` zL1yo=`4(Q}jXz1IFx{rmHcXj&5^br$_LeulL4iE!g2<}~%iJDw-~xT}jOIP2YW9r8 zHDip3DuwAx2Ue5mK6v_lNEGY;anRWu;Q{^8eU6D@(NWx|?OgejjsaFfE>V9i-?|TV zHGk`a?XmP@%Y8l%bPF@DvLH>t9qX1x$c|jjw!@Fy8!YMV{CHOd{l{t|rAXQL2!QXt_Ua3agaM`vB2juvD7`du_jr2NmoW1U`R5|an3hDEp0^`aGl@%`7IS#dO z7T7(rcankt6b>&ws?Fexw4vO}@IjU((E=9r(Fz94hFnQFF&yp=kGIgR}pdVRXFpU`IjTDkngXY7R_jMa9bD5TSod{}J0Lor!!oeIZ-7@(%_ycuQ%u|fM~|U1n@IPCMD49+Z=Em_oxP?Z(4;~+f`+w=?Nl!!BBi; zp*Ys=7R95e4T#cImZc?82B9l4W=qG`-%by79Jl7Tja!yM9FRiHLuQ`VXw_|(&j#&^ z<`Ce252U3uPfzj4&2(nv^-ddXRa0-XbEomTF!xO78W1{NN3UiNn$L=kL-! zN>6)XZHwDR65D()AaBsi{_xf2ruo5T3;Q9^iP%(1@s~6WG#Skb;menA%AT%S8Yn9mt9ysDST^9*0-&6qS zJ$`q?*z1-V8r7yi$O82J{7o7?wxLYI2tjNfgoBMkrFyxAo~VDx)M67>Dl)_|Hm?aLG*x2&`D+vOMP? za2c*JF+>Z%nAy&UIiyKbX-Jrmmm2Dsq*f$n$Pc@%$g8Onx|z)g2uCLmT$pna^&?%+ zQH{r?6#Cnwh%z1x*FH1)M^SM+$xj~y6vG|5Qzel1(Z+dHuT{FtvZu`-0{cbe_9;)Y z88e+2M%;f=tpHluo|z&%>}=ck3Tw#1)m) ziskdSAU`_+O-A%oMBF}=Yf^*UYrfH*61Iy4J(8fSe?1*_EM|&Am5BbI3*yt;oA$?6 zG`Tqhj4f&!2`>wl>|B;21Pr7@4hftllvPUU6q<9od*nNX(VA5hiAc2GEo_!}d^&LJ zfGhg0iuV8L1zFQUyI%l|Q8sY;*RO({Kd}GB=@_S;oHb_nm!$WY+OV>mV8(nf5XT!M>%(|WvKpjF^pq-U8s3X4 zDu2GH^6&*&gyUKy1?_hu(D)jvS17X<_=?5dGmKn1SRfrBnu zkc&5&RiJU`r9%FWednCIqgYw7X4MF}`A%*=+ISK1@$dH2!Y`;zvIZk;Cnz1pNWlUhW zQ~ZiA7~>8|jliDUkIZXc<)t1@;}P^A^-Lmib06(z@$b=QOl5vz2{QFt53suVQ95H$ zOhICg3O+9k;O{DV#lL+!F`w)jn5GA#O}hHk*nTe-8FDOw@@TDcn?@gqY5fyYvwGM<&- z&<_k(?BRJ7073a@AFnJ|1pfp>kBP=u22J94FM#NXH|{Kzx71+u1F6BH9mLg9*^gpp zi}i`2A@&YY8pVV`ytIy6{jKM$T4{$V&n@Y?}hV8 zzwn@iyOW}~aoa08X6E=Z;akD*z6|}p@kVamk{-Ed)x5rD-0c42)g!NxR&k%sP+O%N zHXb=n3k?LvDJz_2%yS>{5n#9XO=M8cQsM5I(>A+l`>~sv7lHpiqO<7Nzhl+17aW4z zsWleh`lf18YJ@Z%Y2hrh>bj(a3PP+6fw35xQI`YO*f*}RouWPM&fUa)nV(Wqz_?bL zInLpW*D&AqD)0Z}ft7wUU_d`D;E&+Q!y$SiJ3^VuuzNvEp6{5zT2T9Y2Gl>8An4q8 zp2rJn9y6SFHDOc1OnT^D{Y89*JUTJO=#jMd4QLAY%`V-QH%@IALohRUU0+^Dulq1m z_Iqw1ktibRl$@hde&mSFYGqI>ExfEQWUOACnC~RzcX$C+3egHl&{CnUeq@QhXXH>S zf5QEN{uh`oVCc%K2fBobM;a=}q)cu_|G?We4qq^Xzv-tu8CU*Wbc0FAvgQjXXW z$xu0mH0bM%X|Q;E1T&Xuy{x^r3MyY!F}U#2X}2Tg6d1b0T-{k7fLdJfr;g6B_EHI6 ztMn@Ua*~eb`N{Xp2iA4-Xu_b2Ri@$ zDB=^BONM9rj8TM4#VqnPCd|znUK!O+!$3gP96W*Zr#QNleBIf!ink2;9)tX8e>NvH zSgtJfDY&@jwS)3JEUz1bWPmC3e>SB5ovR}$OE@f1r)z;Aay zPrEpAQJ2B$AyTHXWUKJ?AIKn7F*goI@AZgCv|ExHlm77@{??iOsj(yEPf1T1P_1k- zKCuMMv0)FG9-HRNcYg&yB(gyu4q!)gEVGzu5d-OyvPBYrJT7he;j77 zJi4d+XZ^`{<5f@fBUVz<8@LG=K_caTlvNoRJ=mB0E-X=E+4418QuM)}{1iCSJ_F;T z%Pu5BVuzSKM_D$E;@eDjwy^3Bh$UqZp{uW0Xt1h_Y=hX8W93x&*Mkl=#X0OPBZ`;i)>TW zdaz-Rj7&_Skn_8Z+1TF+D3IN-b3uciMJ$q_WWITatt_*KWC%S+tZ#4INSy3Zkh4+o zq$4}LCZT47)(t0-zxFwGxw$tZLZ5w4@w)RbOZ1V-AlHhoSnxedJlP04NVql0f0}S( zvz;N$;?s64LeAv(i_jGexJI!X@?iVgXsCuJgbM10R;R(7hfc2|VG?T35@cY*yxEP5 zu=NKfhKfgp+P%U&=(P5Gl&u!^#1n#D%`aObcbbufg;ui=xlW68GCsu!%rYqm@jV6z z)eY3ZG|2E1qh8Lh!R+rL6^21PIN)iL>bR&KyGkM2kXEq^_R;_jWs>1ZpwL=epV!V}`#G=hMg z?NT}4+q2)3q$cz}>EP$vWMGG#3WQeb9~ju`Pg3N2b)et_4w}Nw)&VX~fD>i>XTREb zqgX+OPk;vwP~oe20`V-6{DVED19|_c;el-7T;OH$fgkQ|D%cprO+?qsXpk^3-8b}v z!TWuoQhP^xjQPs`ik&W@^)&xN4)z#HRR8D9krwzRFTtt{MkuUiwOy#vFuz#l0z!M@ z={!veWMmCrUNJN4F$YB~Fd`FDwhlBQPMEIXCJL~8;MONP_(db5-Oo3Xc?X+Un^gLr z72kzg9S$#Ac6EXrP&z`L+>}WFQGTHWVH#a(T;VeqgA@KmA-b^xQ;^p}f9xe9zlYL-yCw+xe!a1q;}ZxpH)=7@y&=KI=M!#~7FDcryjNNKXA z8;z*mqm|wapVmazIgm}lJe9{RxpLt=fIs~Kuf)aB6$l6ZFZEz|ykaDzmPSqpC*Tjq zHiC*#u76yR_>ybpP>tHglKTVx2W*z-^eQcwAUtGov@2(hg{Wwhoome)Z<4J0!Mo3% zkkFFua3r=fLO1H!jcfjVTf{KXS0#K5CiYq@Lp}o}h5i9al>8?dnXhV&iw>9Iso%QR zh95xd?g}&~uvsB+;>H@l{Twdo3nl^QiN0cjBt#bvT*SdKW9z7TbBQ9jQg)Y?sdq<- zklu#Jk0S?zcf=5jKGz;}kG-0xPD(P&zcN(L%I9*-w!8B{>yW^Yf?Mn6e}=sQDg^~%{MZo_2UN0Al-71{@!=3m{y5OMOFeSJDIE5Z>oVzMmMZvx39$6jB*+<%AO-w~$!svVFBOXFdioEBh_yV7>7 zqj#LN!|aJV7n>|bAgmzhAT+_9IF~W*g5YE|jdCRX1-%QUS+4)WOjvLSB|ZL?qm#Wi z>X?d>?3H6b{fG?j-0e?ldeu$8hEML?oj)}|XHceDG8a*qjv%3k2f*a5BH~REL()*t zU6Y>3iXvMrUsz3vYkSuq)!{g|b3KjgTkgAEtu=jr*2IRgEF6_~Ov*v_cJTY?D3(%@XMIhLhX;Q}}@=T0WO;lGJ{tH6nI2dO-s zS4Q+zBf>GJe&r9V^7|sy#-rR zqgYC{K9w!H_@jcghT{-DaK=o4p?ao5jn; z6OaoWRnQ3cb(+`~5*A8Y;>iE_K|faPP48?cRs>gKMQ><=qg%{k{GO29A95K}U)N?F z%mO6#nBOF>^CMUwQ^60qHpsQnn8+lcXm?-kp)(T(t|g$9IQg0~?64xr%A+xpIabXJ znT2$-GgJr?McJ8NXIqH=QlnzltN7_O;Mdoe1!q!!VU9GShEEE*a{TP-+ZUDWJYh!Y zwPNC4lOhC7`zIdMa(X^k!_i0$`q^+YOn{;fA8(M=uqH*5IlL=qj!)dSfv6@T`9_By zc}ouy3GT*Pp|1oZ)SD@Olb)_(_5Hqu+1bFTDyk3f#~_bT{^MLnWPCmhv$C1GMZ84X z|3UGr&ET=N#M6!w)~cB+l3B*YaY4_+V+*w!G`6RfGt??R=ghjn75Hqx6Y`sG#xJHa z%-{VS=Wbsz;Mn=a!plj$H^jh-d8WKH#$emEfOo_fq?vxj>83aDc`2>8SzYZs=5^6je>cAFNr7Cx}sm3T!>m}L&-n#`@eso>-JfVZ(ph6kv|3DGgkysl8ZFS#DbElK4+I)w3?_$AUMM^cHh+3cIrUQ|EQ*f8y96d-@$u4yIY|IkDZ6@d_Y2H)6Z4 zKK?t$apQMTC-U5IKEd{|JE$2RtMQHABnfPXp#a(<$t5>)XKKdagOm0qkCYFP)I#-w z(5~$h_;gSNmMqZB1AiIv^r{4;;e$LHg(#;}K7B4>uA=YKD-fz7ny|TjJ6brMu*Ymm zZ~0KQbxq~2xdrxdtnAaY3k`Q5R~c4-!@y}M3;9L-sp4z-(urTEuipLjoT8P|kT@^^ zIi2$6!be8u19n+A>A*8dEgVW0mN*~{`C)QP_R?MVaMox>$>1`$}$&X+P?e%|Yt z?Imme21mgP>B5J7D#`n|(Ts+q*@%KzSez_`^%kkx4+Wc~mjDCsIRYWrfwC0d7zNA| zgUD+_9k`RGixG*gz8L(PwyX>&I3za^2 z7LHK+Ut9q)QNsppEC~7Gz`ou?T|i!?!l(KkZ8fz-bdTwZ5dw+c4w5LF%| zN}a23Kg7m+U`WUq>J}fP4CSD2m;J|cDpuGEG{|27kV4Yf1|n}{3==$JJ+IN)_QO}t zic~d$0_**Q(8zmoMKWz+1G&`4ex}Ct}YK_rNN}(cU<5V{n zTO}H}rXTxI5=VL<7fv!`4i`U%dO)o;F-_VeLYNLVZ;VPXMXjBB!1w%Ub~+Dq9Ztf>Lx^qqqQt$mRIj0BreD1yruS&IJf=19`15%=)Vyx7O`Z7lgI$>@7g;+ zdRa|~l{9Q_bx`j_80U|1!SM}|p;m;!R|4Akxb%eh@$Y`WTi;BT!4xM$ayIglupJj7 zI_@XVH@M&0)aB|f`L**CV65KsuAFtbgY~YBE{>3Kg;(09;oN;%?A-|z3`!bPreN%Y znE|9V70ajOPO^jbWu3%I+URnKKiNM2Xi0e>6|#T-#O8sa@2RKup@~s+{!iYJ8 z(N(~G+$ythmAr2BR>mr?_mtl5Pdti4q&9BME~|P2x7jR`HA!QNGi9MAuVj>Oeyr<3 z4Nd+H9*y?sTO_f)*TYJz0q3BuND||kiqa9-_qN%Cl%EC?WD9)CR;6aSDe! zTDM}Ooip<6*`|sNh8WTiw*v^eM&D~Zf|am?;S#oTGPdoMX4j{YVpoI8n>!McEC)q< zDgD}28qCK;bx7I6W6>-@>zmP+8I4<%bbJcjbY)y2H0IZx+{MukH#CA(w?uNxJ{^qi zk)=lk7lmf$n%ZPahAugmjqdxc0V8!ml@wOlxeOUFmusoC{Oej}Z_&WAC%WIhbl_mZ#`^e!X%hu-rP1Vaq0$*2ycF> zK_k=||Flw+G}X#|<>?g2-Bf$sXfbXCjr(0fh~A}tYclH6jxj8#^T$<_iW&7He>(e& z+L7?e|E%u$26WX@&Zmt+rr_(IQD6eNu-6RqY*K{OF$+`#{)3obQCtT;hK})G6CM-NXls7)a~LVV2I_a8LM$KMEbkR6kJDnlgL1|LmNO!}E zdCi&#j8c^NriNzm;pgBe=)HHqou>-3QucjQAT&c7(0uRWD$w!8V#m$$a;{IfP($Tk ziIqeYn6Bc*Ne^=}mrh-(`!w*3CRhvZTZ^o^TK>2&zoJsb4@74q@PW(R=lBtkU{Ayk zuN-)%Gf0q%)icB3fR6Y0P9U5J(a-pyC-IIL3<&BF_ryj2dHnb3-6VQvO^%CgH0(5( zH0PHH#N|LJoUFBCKAmg_*Yz~R6r8caEF@fbUOK~u0?~*4G%0ho(#oO-9Bvm%q_!zB zm)NvL*+twXvhR%0{_)8W&W7gJ8n^=-5vtzhVN^H)oZI~o$mRk$qK0A^Z_iB#f5XcJ z?}l3a$Mj(Egn*&LC0Ze9HnCF%g~htm_*t5W;vbUjr^z%H=S4r}=gp$x)G0!a5D&jy z-`<~|HX;`)D-8?`1OTB?e|*p)yU_bsU*g0xj#X0j=w}WsWlXq4WYC;hx~f(0TOgW# z2r&zmaK2YyzM%2vPd;#fj*J`>-l66Ovlz$#7?XtV*{3vU=nCvS_j8rgZl91qMWF;p}%RNi^G3z2YU~W7oiq-h@?a{&D zx;4d`S8UBI2u*$neXjU#R^KkBlI^Hbp?VfgM)**r%K=w?1v;V>z6XU+JOUA$eV|d* zK#A+9WYt(f7^qS9>%Ro`41(LgLE`g4@*aL+8+#G@g_0yV%&2i1-6h%FW@ge^c=n?w z&SP;!ho;Qf0pZ$EI;mW;|GcOR&M~IiFnK|45Fv2P&aw@DtWe(eh%)1LX3Vr9#`H>8}Hckz*?+ zyseP^?@+yxwZ?m>np3-qYCJydFt2C)uuQiU=CT-L%P^s_?Y8B$>`i@WVJFP9XX|7} zU%^kJQP$g)xKOt%CF`!3_(iQrqr|v?6LwgC1k}*UOlw%-DD41Ww*a$!4!rtsg!BY# zUe;yj5QO}&`wUr~y_Ytmzu6J1E)%Czj5j&vtx<9XgyM$MpqCmB_9KFQqV3H+kq^WL z1fl#~G(lM)xe%)v_%~+=i<5TW9!1JBBe4X_|H(WbkQOq?DRYpz{6^14WZ)5xSrEN% zw(^7RWan`34bb@VePy>X+JE|AtDf2{{`yWzinZ{C^Q^8HF8Pj&Qn~#V*M*m?mX#1m zNntrudeHSb&i33d0qjrWSD6C(HAmN}EvjTGLuPCQsKCC--P9Kr&ygBf(@>(zn}Y6d zeLs!z@fEM-TUv^Z)y)x>l#b1$pym>|a@!}2Mq9@Kv0;AB=fNa*sc~|*>(j4D?dmB< zq$6{+4x>Z}At2AMnEpSmtsyXap)4wW}(0B>m9)QA~v(J07J|JO@$$G@N35jbyFwnGF zj3t7m2^Y;SQEP(pD2JP^unu)K=W@gDn_Faumhg5qeK|g>@enToty8~FwF1B;1tX8S zH2j*;_XjM&P79&NmE(ZtlK3#7UOdiacy0*6S!f3pYG>#>vZ+$eoVDKvO#~T_xCRDVZh0ENyJwQi@5{M zI-_ANo?e#sKc;dWfq@fN+o_0_x%Pj8Q8Lw7ojj0^{O1g%VIaC)D@wg1A(>Ig9sfqw zM>1}Qev@!eLv~rTBHH_C+cj4dU`W0hBTD!S$$Rwr>Lqx$_NM~sPF6jB;8!@}Ay3Bz z>YDJ#ZZf9qZm5Gk^ZT$TB?6L;H4BU*au;+nXGM27I_ejUkSNGL^S=u7^e_8dsQ>7D zA>XVcCFzY!d49bdzP+ERXSBcX6kllBNAOsB5TGbrp5;PDi)c9wfv{Jmq%8&i^9i>U zGzfoSi+Z>v9+9zDVj)9h4kD9p6tg-z%htjol`# z->y{2eZ{HUJ{|qk=U|Za#QlFLCYs^!bRDil2;HOM?;y*f^5DXYQxNIy;|k&#fb^;| zd#=&*`!bh0j!sOt9n9DyK%mmdq-A<7b_2V-jp!9=JaBCSnuK~v@HpM*L}=h{_8DhH zhL>-(cZ*Hd#LdED7ph*)-O=l4)~!gJLn(KaeAxnk{6Keo+(w>I_EOCWh4CKIRa*TA zhc=koPOG!1NGU~UB_jpY`3xGeI2^kCaQl=g95us^LLv_d92b+-{heng3irj) zPIryM)p(!Q7P}8tR!zc?S8l_M!=N>mb*g1CWNUg&(nW?>?!DjtzRD%_G+CXLzq%Ai z9DIx&CDQo5lD&TUbfg&muOfB52apU6nUd+F=nBkrgzvTkzFq~^_$-a1ZrPLgO;gL{ z4kvuwj?cs^f;Na#mD_n6KLjYJRMfJx7w?(lI+|xL7iu0`3(bldkG39{pirlhdEk7Ll|=Y;+FVE6Kz{yf!dhec4-~R(oi1D zL42AZ^-sIHC=T^PjN-hqdKpDJeSIT8Nx0^Af?y-Jbo=~1x!eP)YUliX4f44QX9X;O4W2Ds~{w{AX5F;#QYcl7~i z+>@ZVNYj&e)U%PI&Z<(hJ95gBhFHWb|Z?zg4#PWq$qk{4H{W z(HA;T(AE^}R|pZt9apZ;s&H&dI}L)PPXoiPoL-)%L1oEHq&Ra9{6Ro1?*I8uOuI0T z9~9GU=3o6Wzy2J9sz^L#B%7Em+~#z>RHvjZDTXBzXS1IUyY2p=1EmNTT-!+LOu_F8 z2oi%cmZG#l_3p~ZAS8iG7LcLtl1$p^B8iFF=;Za@J(q%gk*W*+(HwP9?d=p~zi0i2 zx@?iG^rrEP1;OOt4s1!GNfr(wG^?i4P=!!O>|m+4M@aNk`_aPo^7Zns!^7QM5D0us z^zP%~<@I#&_B4U-1q_eg0D1fR_`Q9s<9mVmd3+u>kN)hs*SMqS876)w!3>o)0pznW zqr7CX2_r_Wa`Elk66L}VB_J!nr`OuV2N;x|o(AmJLOs_sIja`&et_2RF=z0%wY=mG z;(cKT;aAEUq^FKn5R|xxlNPP1q?^Sa0vw*Z06f z@Z#pG_k;13eJL=7m{Va8Mjl)Ra?{zL{2VQv8Tx7iW9Kct(`TX0IQDL=jx3atwQrnm zQPu%3p1nWxsmE_SkY~tVlvZJgI@&Ucb1BBGa(ykyIr9AZD@d@T8{bitVG&LxsbJEz zX@2TQ9*F-rmR*iSK2`mjtOG_xq1=G|Z3Bh2EJwsbbfe$@J#tm&+?=cHCc$I2jocX? zkI;>8y(*ge(HudF_Zx<3vZ!Wk^q)a3WJWaNsk=s#nm)O_cHN*5H?p5JG6kPR+*0dy zyQ(Q^hcTN2v%)vGj&=0gAmli8CZ45%nU7i9*C*Q}Ewv9`BbTaGO>*#SU|?YV8?es( ziUxeSySySyCDqy#tO}i9QAAAq7_D!^Mikx4#6+5jc`u1-+7MQKBS|gK@nB-)G-|pT=VwyKkVF!zn@U&0HHE z!T_B=Ym}p|;CP0m*U4~=MsttSNX7E9(Zx(oOUR8Q#cMKx8kGHvgsk~}q zg3WC#>_BP=ml-!nDF1d1(+#op%T3T_ezmrKyCvZ-`;%@SzVlHaxTK>YuyZPh_xD5& z(2GadSPQ9M8dB&h0Kp*8`B00Q$_Qu1!-+2}&G%hAYZQ+YQZ1|>f+$pY6q-KZn6L?f zeWl)u&qeG&x5AguOQ zkEp6v@I`IT8{!;BMzjC>Ey*xqp*!t9)K)hXZOeE2yz)NWHl`Ws(}GzB@c}vf6k3vF z#?$ZcFG0Z}6J9s&^hYPQaNO8P#)5_oK?9UH$@`?p_f?r0qhoCmZ)nyXN*~G+oCxS| z(d|c4HUvDD_{w~Bp?TY5nE`rxha|Skh{p2RM~A58!z4OqR8o$*+gz4i&wrW@35y{jXH(~fm%;UZb3`aX#6hi6HG zUGLq>zwvew2AQTt2&yqHB+e2OZWYh8@cW{cK5+aL!9&g$YL2l*VWer}*D1r=$2YB! z59ev%hb6cz)Ef!h5FH00 zz!U&hdE$As6z(G~;try4j1Nk)&sO zuh2OS61C{l`Jn86#l5pfaNMq`o7^k~hm3=?;-etk$41Yodxe(*8_5$d4(SnNX+`>( z9-6r5mQai2VsZU~+_{}q5!?MqbW4FUiy5~!?+udyFtjCUlFOv24cPZRL z`j4zAZH$S;ZiNj3DYGWxGTE7lIO<0?8!569VH~&rhtDNNt^wH}E8!14`pl`gi z`@76nsgeYHDN>boe=hTDmJ||ppcCmoWrpz7_x=>4e=i{*osMlD$98nUn`G0geuumP z@wa_P2nGu^p1xkh8}s*j{U51e02$Z#e_fGZ)|O=aVx%Ky-T4us{SffOY+m%(epon6mjPLlu>{1 z(2`2X6*}rJFTo3!MEQh#8q1JU4hxDeuypPQgg~NvdK~t8n1^>?P>nHeIIlH=xQgeJ zIF5fp)#$I(l92O{=VxbJveUgY_r{JoQ6yHBm1Z(&ZYskXrS~q+mp^|tB0Fu3DdSIM zxnn!gAZ==U&@=etQ_9oF`>GQd^xoSbH1hF! zHt=EcHq^y;eg+~vm?{B`eOICK9Muw5%k1V!Xw*1L6%9SP=!``AYDkek`kXbXK%_9N zNW9Ybj-QL%8HaNBYWY;}RG)~uv(hk{f+Eom7yHnU(p{!<1RYVvlxkml^4L*Y!AMsx zxZ%$x>nBMZxemX;%U_;TXAL7wIP*dqQNLYJJn#! zPdkkgk%LHC4Cr8qD74iu3FFJKT(-M}78zyKE7cOx6`y?zYLKOM5Pr&B&>y{+;>bwb6e7k1u#GdPg-G0_1)~lyOO=yaQPsNRw z=@UcyQ;IUxIj=H}y4kRTWu(=eM>+V1pv@8R1f%T!9%KRcerWc7xg`cx0(Zn%z`Re@ zwU^pnzMzKSO-W|G9MSVo?-ySRsZ^3J5G+52Hbg9 zE-7ASRE2I+0u!M%`wJBp$jq6$m@MlnqpnLPDoAu4Ok2hHE5~5*OZjorYOAC28`9-_ z@EF)thMz7bCQvT#yeLF?qP}LET)+j{*8JE7mZ!NLpV00w%{L@guwd8@5GE3zZK_mg z?P!9$qQ#65-|1mRtLfU|$bsyZ0Xje5b1pi1o;BaWs&!J;IP5Yt{i!h9IG)3papZuT zf}%&@xj5A@+b0v0AR4W+U1c!VIRN4bF1{}c(Z?>^%l?{Y(s=%Iz+>oU$Tw<=pUlj_ zj$DeFT&2;tawvLx9d~RcXuN1<>FeI^-=CZGRX>DtwNg4Y+4ZnI0y=gNqZY&W@8IBD>5p+8H~ARl09!42C_f$u>% zdggCmTnlUB$HFKc2ptTNl^mFV*2b7@a?U=jINP&uhPNti)O*rev;9(q9KHU|RdV?^ zMMl2w)MwfntzRp=d4vRJ%XLGVcR_igTC5zxVlS!3O^Xc72v>haEZ*$nQwpGW%>pLaP(W(se^BFd^zc6&!1#kb$F@PJu7_-!o zB&}ui)Sy}r%=`I<>%ABY4);!u02e*v95RhQgR}WJfsx?u6bqPV@PP>=E^hLL6~u=n z2VN`d;8?_wqGc)4Y=3D^{obcle=$4dQNsM+oiD^^e-(Im#|BMa&|SNV=ha?D$&y$J zrW3hV>8kGbpNm;e&1>8drG zStIp^2r`njyYA6L109%^30)%I>4dGnFSf*);+Fm~7PrxBE=v*!u#hm+coco@m-bh8 zac_xLFg{10PB$RtW8lV0+?lmm>$Jk8kfdrRaO5Kx;yoIyL*mHTGm=FwUw~vj-lt5M%8|@BP`o0a zRljNDh`8XV=S{mHyndI+)0o2BzBY#0rcJ|XQ9O)^fj!GHMlRIV8S88l-92vxy-{)i z8N46C+Eb>Lw(eKatm_YFzi3e8xGM~6q`k8H&lS#Z)ET2mPvGQ5i{K(0yT0?wGq0Q( z(bmVLbm7x%ISHT55tx?Q==^rGw|B#j3hWLZD0n~A&&Iw3dcRe`>N8~^Ez12R4KA7` zD$PEAO6F;Bu8Y)F7NV8XDm+lZb+vGQb)JE+M@am$fu(jORZn@1`4z{|5(9!}17{NWNG z_vPvz1`w`1@`TCk79tQd>oLCAhG#K$r{9FcUWNRJ@NdGL(mHt_lXt{{lNpHYWJj=? z$)8CnQD)@wV6g3U?u`78I#%lbnDF-ainZPkXxiU?TKd4oe3hz}o!OJ)-$$%Vhwa!N zd}@8zUXi}0fEbhe~UGhEIL;=wv91TG#hVu^OXkEtiCA zsPMeikuk#O?6fF-O*~EK=EMuk9#G4oGgO+B&F+9n?eb9TJc~zx6j!Jj_Az4Xqm)p} zL@^Qf^dz1vDXhb#RgQNk37pQ3k+;?DI6nC?urC#lsem}{)9w`5NT%Re&Dc-!CSVk> z0*KH<-=am0FI1_dGc|2lv(G;)r7CCCTs`(B$?BUAJ(#ow#K}B9ef<@-#8xJ)#P8#^ za+=|^F!A;i^?ut*$c-lGCd6#h=`NWOykIuO7^y&S{x_v`Rg7a;VQOObR2M6eiL91H zRtZW|hNa{!H^yh(S4Z>q_jV;oVz{!t1e*}Wg+l0)|2RltSytNh@r7zb%uni$7fG{Q z%gXv8aO80FA9G@?Tu0i2QCju+-@e6#tIk2lzxs5>XS6bkkJ^lz;wtt=E)5R%9+yvf z&}sIbYazNx@~-Jl2;rGEcP5Pu?0=Ce{3CoZZR^n}0CnHRhxgTXj0;ii`({ z2WAo9A9mP^D--1QqOMHF7iym*OjbF~*rkIMv*8leO`TO>Sjk8f7PjAwu-+wM{#CYv zK3*C`kl@2UD3iDumG3$ku6!h5y;m0!T8UYp??1Y{)TTkn~!iOH59awZ0DvP-BQttm+lu+Wuka5Vn2DjzUi zcrW^O7>LR|Z*0S%!Folvj?|uI{rjfq@pr|AZ!*Bg{Ena6IYrsFeR2%aD1^zG6MRu~ zJ*OS2@aKp*%ako_LZ#(Jg}os2)PbHs{GELJQsUH+zAILA)XJ_yXmi<7gHWtg+^od- zjzNuXwo%@yv;hfMbkx;f_nwTI(~CDoDL&q2lvRH{$Pgh?A@@ zh(iW&3>d2$uVS(G%$t%w8s$EI2W|<+WzEjSYw51D(jGl8UDW7tQiON>(Nx#4(>`Ib zIh!aj1bR#n+z2X6*PFupXG011j%)S|K3g{V0C{_=$AcXumA&(GQEktzBaI@(qUV1A zd=*(r6eg4vLC?RmVanwaDLwX)!91KH2k{D&anC!&!150M>8kp3gVn4l;I3Aqioq*{ z*%xh-j|vfglz!m-<4e+0&Csjh<)N0*M}_G(cJ)WIpEO;DmgJ8s=7$w_JQEl{uOm4W zk>&^j zFY*;EgSfdpLimQ|wVF#hM=i0)F$@Z9GRrYt_w7T}@Fr*d>Cwfa^6}G_*Bab<_eE47 z_wiD;ke)=pqr*VKqzICVb*chg|6~z32s;FEKX)r*qY`vFDR(##UZl^!GfbH*sTvcO zH6W6l&mRq4S@_w`z!&wZ$?Vawq%PdAl!-eW4>RzMHEpPz)Fc&a!Z`dgjPIJEUY&%0 zS4l67f&h$6o3o zKbesqQryo%-9c;+Pbw+2PH8%ge8Vlbc~>@5neK@CNT|Gtof7XSbBc1-uEmppH& z%pc3y9SOJtmqdn%?R4R!+prBdhBjB3<=a4_wGT@jfeISH$ruX}$ zs~QD?YruxLAM;sxe~%zZb~mrzV+$G2gm;WExg@D%Xmb(jg)Y(6^Q~fcoS6V{V_8gl zDD-@tlQyr!DJJZIhN?b;a*?s|DSf6^+Rm5L5E2(Fz?mkj#%k0Un+s+ee}Z$`awRq~ zL&mZv4EKiJvmINZd54>dH~M_XapH;E^A{7CxTSeR>^Jw2W9m-(fMM7haD#*>aSt33 zh#PYV{5&ryxM_(*NW#3qe0dnsmK8Ove`?Wj4*CYG1^#@E zEgapvJ=1AqnAe6;L^AAQj9EYt$HwMzD|=AA$%aq*G+)JsFf+czw9lMn>a<=penFyU zfy2J^WwlkjnX0mm_*0_696$# zqZMM^=&jy#=*Ay?Uy`=N(bE*FGAvUj%1$%^lR~+2hht4@x{pi9eN9Si#$(XD-q|;^ zS)lzkopiy`F1W;O?~ZTWwq5a3wUNRt_*;t+igZXyxs7SAr^+$K?LEe3JqFj*a717> zbjRfa8Uc{OVQQ9_P{z!`k(_Mohl|)!q%vTNs!dwm{rjJ0xLa@j!66L~k&4^vlu>z` zT6Dt?*o%1TKJwTq2s`Vo`|*j6`jvl#$LfMd=Wu^}tXL4M?P@(mWruL4yA4ef<7>z& z3nu%!7}uk88VD|vEH4;g!~<*F1LToDwk&d1!>CO3v&~%pYQ5bYIXyqwT7yfFmNFny z&cOOaXGxb}pE~fFBiNm3%I*PZzi$ZgYr0;~G0KN)cw{5CTYDC|8}sTAm>XO_d$yKr zpN*cHU)pl`Ufi;Amt?qL|Li~@TSn?XJiDUO$SN#<%~~ico6!`?o;dyaF+zBq(q?%gmo&hi7sz$ zoOieX98VI^vtV?={hDW_{KMHm?ioimb*UYSbz!?P)fh}0lF320HE7FCs0zEX<%?tz z4WR>d$q|y7Y{+3d$daXLv}SMBXBALi3^DZEck6&qBeR-y2vK^Sn85zRp&h%uc9PFo zqfqU;x=0ra;lbXUo{_2ZkJk#K1)_H1~tg z0Sz|hA?MZOml-%N@cm^0RAPEVlEDdSCGW*0PTJBkkxUx=klsw%QpU>)uQt+=E+o0M z87fo?U(rk2_%Bigdd6^2%UYGzwS2ksZW>v*rmlx#eC%H2{iPdO+M*xYO;t|nWK~)6 zPg-jCi06R6$#Z@$GEB`Td&4sA0|sscmG=y9tsj6eD55WrJ;F-qk;xE81$#}ZS-t{i z(#eE~(w^3>Eof|gbx)dZC9rc# z1RFT?H0AC2`QI{f-g8Je?VspOF+Oh01&{W!y!?ca+)WSYFr9x;kj!s{hD`;#$i&n@ zvbH=tI_2?sdGmXDtGPch7l2_RwGCF5DoD9W64j28yuARhK6ke-tj)zmHX8@@av9oB zDZ4%y#5iBx+wEkhgBJ^YbzYSjB3-LwzTEk*CTkP2q^q@bup6yS+-a{mXM|k#rYqFupq7-Ul#;xnE+*~}^aH|5&Cv>t2 zd6FBq&ysLFa2HzCZ8WbVA|`Mfi&Y~Ql$$*>3>Y>#YpT)+38h(72J$WSXRw@Lov0XH zBv?qg@`>|`!)`q2Ngv8#gM-JHt)VX#J8N4l&_+Hpv+ubnAyC4)fYFlud*P)_NV6V{ z+PCH7$&Nc2gwcpntu@1ICMHupI*rvobiW=`NK!Gfkf29YwFhSm64*2ZB?Wox=GV8v ziMh5nhFP_$lr<;LMgPqXR}sFc6RYaGA9wA19I%xe)0keMM<3hfM#>^r-BsJ9W43II z+edA<=QT@c^XcF#MrFL`D9kc;$2lt@T-C(B3XxNj$JN+NUB$1$`Jz4Nw2!*@m%{+x zL_&;8*Abpzew3Fz#MaGwx?RGZoc|_Ya2aZ59|PKD|72dbr)4MlIK8rc=06lILJrD^YhyvEJ`6}v&k zBqzC67D|S)$m-(eZ@!bkpkF81tG%@FiU)c>1{f6h?)UuBg8M%7N^*I4yf*m7hgRbC zS050Yf*)^{DR<8HA$aOk%SR2#-Q=w5YeSZnx|)qeoSjQ6-IvdWxCFIio&o z{6!DEJojQIl{^ zI6dY4z)0P7jYUWHr2v3X-O3*f;RW^aFahkYfQJf&1?U&o9;4&digf3Q%!7Ui(5hBvNqqzYeMDClon~= z1-@$%BwPV^MCcD7)|!IBXNDky2k?q_H@Nk4r+LV+3hW|IHZv>`Bwy(2o?Xx5lRcxr ziFx$}=r)hh=5+1j>bqtZCY8LiF7GX2&>1xwmURzlGZ%z?S-chv%&#lRdvfNBK%9wwHm~W;j<3LudPsb6<4%uF zE!2#yT@n~qHhAr>^i`96l%v2j_CL+AeDJo+TRN0UYA0W5S^O06T5&%*5Gc^D250{9 z<(-atCHDpRP5929&+Ckt9Yj9|H~4zy5WLPZ7%0`cNKYPQ>u@ZEWaY#p9QaYoSyd?c zM|T=O$||*fSvt-!kxb^7HH2e*&`3)hXj5s{+ITR3@EQC8qd}Xr;xb;R^@hFyi-gqwA_9;+mqIC~fOHWJxJSaYb!30ZZE~>kT&fHGvkRS4a1sXGu zxjlmKNI-3Dn}+~%qL8DqL#ZaoUoH9qaRW_Qv6@?4cl(U=7EwNTS?(dfv8DMUeJ9Fa zK!Q{=k@CjL@r!o!GvL>$$I(ad1#zdxN9lh?#$fr{*!Xan4Rt8Glq|d`R)S#VaB8mB zKFq%NNgSRW1I zLJYi%X@mo(o6AMZ$Us8T0&Iy5jRBcOq-?*;v>=B-Q4X?zgm;}#p{;ApQzP8v#w4=}d zT+nyD3weG#K7P9euZ=YX>now};{Ryamf(>tT6CiP(>2E}3VO>DZP+>8Y%UR|^!ax> zve0ulr#}q2fk~eSaVb`Q6l|W!pk)qswwaJ<7KQ}~PgCsw&i<2v{8uOz7XiB3)TK*v z^Yn8J`1+-BuC22(G2NA#5+O_k11{0>T(7!H1O;u;(@vT=-yb{!w(R_cR}xTkOU4>{ zD(;fu*JIBAuEPP#5Y3$9mQ5NaP>(XDlq|`=kPO-BAS{^bRs)wsNAO34(*4Ti28TKe zA6?UW3d1beVIo<|Z|j3Af_xtdfqJEQ(Y9KZV*Z^s>@&yL+zQJL8$(CuhzkdR#KskJ zM!b^?TTw3-3|BJk*Hkds^me)^y%0;=%&tFcnI_$@ z(nxT$7UeYZkcY4`XwLI7Nr zR^SltNs~Ynh*J7$rW>o;FexQ%_&QNW+BtU}Ys(ZBMoNV8*6R*D_dx9F1|2?v%TI=V z$>NwPu@MLwXpA}QHz8xlAtkC$RC^WC3`_`mIlHuG*J?%(87UxS;BAYAdA?yPx^N@R z7mIOp1fvd_5U2=I<>yeUJM9;cg~1T3#FIZh2kB#eE5veBFTKA-=z30#{drLvy-SHX zM&}~n8IfbQ$*Fd(a){YJ-vF&6{mg>2?-mm^P;|BdK-VImh}kSOV~Wi+K@J2Y1}oY|DNW1RfL)4Vn zoKHZRUl1l=zS7u;{@g{CIq@ixD1g#}KpbOQ3#AibOOVi6$S*(R2o1o8{t2&Ze{s>>H#_H!Ux)fA}Xp|sc zqDQNMrM)RoL*hr^0HnlGQ1B5mW+WV!cCkPutzc7;!bL*(Facki(`?>}E}WZtZCU%| zQlBpnTvIVqkFTJZw^0a?(NNC5(6w2aZ@6KsBA&;-YvI*cdo28tWtEBI z`J#oh7^Iio>8DYm$VH8_g&HO8n8$JmS1QL(tqWL?gS zhgy}x07`aw)d=@~PHhofWJf6`D(5Zd3^WO>-`y&C*>SC4rBHlT=lm%n$gvrEnQVBk z(qS|x)%Zf?M}nNV74=-L^uaNc1*+r4LGyGG#ue88(kO*X$_`om@@MYH}=Va4`L zYl8ij3g@v#Ja0IsFKC|d6dko%l4ud{Q6LXwB|#rF(LYZg)hIiKI3g5*StU9me)K0w$S5i0llGsS(j4( z_pYvwtqy&#nEjO<8uh%hwR6niMh_v;9Z{V?49sU(Bp+m-60y?6#}0JF@iQM;iaeZx zG6B*rW8FJgiW!)wz;st}(rwrS<%#57f5C{*a<~_ozRaz~Tk z>REQ#@q(;AvHvzBm_!a^h6^|E zZeKXRbJyo6H5;r?#kJ+iX?4yIV7#LE7I#$bh9oDqxg%-PP_bD5HypmySh%k*e_)h5 zni(dxycPomC&QN=cB{H*P%<3p9ti<9oGoIesDAa8kIa8cN))np)|jEKq;+pesBV0p zJP_5g{Cxheoa5kmOdH1l{+NgGb0AHxUSJ1h0~T7{uDTrs$G)W=fg`C*C+NGC^k4E) zGd`s|Nq{yWMmZnrn={V$h=~~z{OG-&V0dbTt>)>-6;!Av&Rz&WCMS_NddEy}&Zx;! z@*DzF+KG!K4)drryMvOW<@CIJkjV7IJoy+*H2K$Fg|85ncSFm-9q~8JwWpwPhJM# zZ8FUZx9p`uasehwF^QjjRif`r+R`d>&E!Peq{UMQv(J{&K zb-i(CbYA1_44UE8rp_CM2Ih_%nP?{|TG&XkRU!Ro7Y5p9(}4*3iR#`Z8fIqTq9d4Mc z@*^bpVPfo@Nr8Re_isjubouu$#GKC+0vKBu*Uyh<2l2WFer=;_{W8hb+o%Y`SD#F+ z`F#6@_AjxUUCRbTmSFAB{&dt}#L_H7rE8A?Bv*}ns~sgbI2Q-J{7YXls>mrfB>EK} zU{sJ$Y70+y+lMhQa3>E67U#RI_n_3d5C>f7m6emH!0aYYRI(gn)XjW8)VzL{ZqX(P z;LIhpJE}ud|TuSTChr(l8aEaYI!-X}_>4yC<76c8G}m&2+i(@O$au)$bQN?e+eTKTPW% zP+q#d^^|R)-kR&=dXsvrdO}P#Ne81bOH$>|WuM$2Usd|YM~-JPM*|>H!58P+-U(;> zVLj?lWo{;UCz9|_irQFlL*mPk>@RbHR;hZw)eY7#liVC$%aJE+HV(bTs2sp-<^eJ> zQsPMy428gevcFn)ssk@;tK~}K&x*)R^P3>OW{QPCpX4Y5fEL!0MA6rqvwD>T3C752 z9fbY+3gzOLRWutl-Z>Ai=SrQ}#(UNr-o@KKSyD5ez^>U)8UybzwA7u_>2G30b()9a z=?${zq`S~o^mo-GnRv9U>v4SA9Dc!>nrpC_m0W%f)OW?=HEwUDpatA-{9%8g2s+v; zOqevj@gCl6MIjryo@K5wg3iA1;4ZC=(J;U3@YXmF*o!u<|Hl%N|Aq(ZX4ngeupt0C;iRu72>8NL#ccVKtQw=;JhDI76c z7jJw;(g%;|T1cQV-O4LTPwx92b9=Az2iA;Z^q<0I6?j?<1@{Fx)J%99KR&;qekp0L zumP3e7&rPc^ggTbL*k%PQd+i4V_7-lWy|PRAs+RgUkMM7GIFcW-yTkd-x4;DgG>{- z_r8_cu+kPP`LfJRl2-q07rR3wLZxy~h#~*vc9|qks+tCmIt{K1DdSp7ZU{ss=@=4y zMX?nP$zm8wW*oA^o=wGmHj|kJ8QrzSvb_xxhfU%r>n-6On;Pp3b2Cj^BzF^;0kX!U z$jkYh|U64KDPjNX%QTwbAOU(CQe9RZ~5R7$Dmxgc3m(!Wq86p zFSYAs<9_Kxw> zc>UrK$$s_;1hlEzNUh|~=eWANoeYArtq2IgARZqbN!uiY>HPL!UDKAY_1Z=BrqvlQ z{^JY)Du%qj7(nf;l<0UD_hxkl|)FP64wyzb~0Yyr?&=!_6+TX^61 zMHkhDV9I!w6z~qQX647#8dmJmi#ugeE)EMil0F61#n_#Xd^G~p1;wN1n5^W)UU}*? znUv=htm z`|@i0uo}xDH6hSq7|ET-l@f0)92zPGI&dP^&;gDTFHy=6n3MT5ue}t!T2e)x_5V-EaJzkjrhgfpE_w6$X?8{uYz%Ky^cv+ybNFeP3B-> zIku&>hkW-Np|`O#U)H{l1#TE%-!cSfQI@eJ6|C>LY*f{^=UAgcqyV3CY9gv8ZuHDQ zwNzn&Z;K9{VC-Ln(9lcZnZL%;OD;oI%B(8oqNeefgbJg$Cp$0A)O!D~*aht?cBZIF zTUB2f$}lUX_w9!SXzr6ep3{4%MByi*98fx0E_)|OV@Ccaxal)@>~YlplykbI8yD!* z0{R-Kp(@2V(~N+aV2U>}6B<@l-Uzq8%Gv1tWh71wP@4BDmg=pRN;|+}?8v@(J;MZ~ z254n=uNIys)BnaS=Pk+{aWmW`+|s;J4K+tDO}unVB9l~poRzaL?tI|+_9CS$bS%W9 zaAO8ja_S5Ey@&^%S)DE7|2a9Q+YL>)yyY2}rn)7R{{RwS{eXo>I(_GKK>Cty94)Tw zZBh0h9~BSyhAsq^s+hYYzZ@wiDZ4kkx#ihAZ|!8ji%?D#K`bSXB2`|{N=BiYjfnUi zp~(nt zMItdth(=+2&EO`TZXfo>e#r2o)diZu1$ZJgu)oh+C!H)II&&>qG_^% z(b~Mu)0StCkDSOxcN7iIyi&IerICa5Or1zCo_!k`kX-IdE+&C4l%Vk|B26Z!9E#C} z$nPXj@ja1f|LDU?S2!{Tgafa5!Br5oaXri3x&s zz2ayGyam6Jba}cz46Y`OJt#Pea!uh5&*)Y~`AgHq*vBS*OGuQ zXl-nFFZlBjfLKe4$z|jb1(QsefGR9rh|c?c%gZHomJ`?w+(LVhZfR1zu-3ZP z#tDMXKGHF`Rjxo9p;3gQLRoco$4fDQW>el&G~G zourVTwTYG0bcqde5E02||Jl~Fm1wq-=>2z=M%1YIfh~Xn11bJHAZbU*-q>x1i=3n> zOJzMYSh1(DesZ3tVzDsPGAb5Yg}wMV@-+*P&|k6KlU6{=Zzm=#X&+)`D|i&Pmgip> z;=dJ-=PVC>>F6I=;j=ThTxju*w@+*zu_w z&5Z235(74ZeeTw8yWV@{&)!oY2@=(b;-k&2Whq!Lb^5HRLiHA;7RvP)Wa(&_{c*)!x4 zUu4Z$*?a?C)(<ihY(lf{Ao^77@WETo}me?cBVnJuQUtFOZr|P55 zMPp7k3>n*E9Ko;{7*afm85cBAUVQqvD0g*|_47i;DKJO7_|4aDa82O1 zC3%ySjfh@5N5pt1hSp(BpJ3Ypd5X&&BW$g=o$~5jfRF)pr2i{eE^H(+`HXJxzP0*RoUs1@i&MnDxrcS-6!o6;)BpRur zX#35_grpSCc_PUf=+xzGU0j!z+^yeuI@4OJCR?%nVRbkPOPrZZLDN!a&JnE%OD?39 zX*bPAzIGIro3XTP(&!01fq7=g1YmrtYZRc@=`NzzA2GZkUAiU-Xa*ajVwXZFEz8=;JMjlV(k0Auk})+mQtS6cUP|aoQT~TB~{=_ zrTN^0x`cxKfYhC4wUvyLXZ-5bD0!=Bd71!ZluaxcI#!Z7l@-^zlMlRfaL_@>Z0U`H*cdaQK5s5=0KhFZO{Xs2DD)asuv^$80- zD=mAn6RKZclG1A|h~=-IR^hb+v-&H!jRv1oly^uDykS??W{dQ0i9BL zi3b@MY?hy{2&SjT%KaEcY*gEi-szje*KgnWvv3PQ%PwKhv{>60^Kpn~^NTP)_9}Hq z4oqy7e;G`J!m$`a)_rTorR>SrJP{WMBb3_6Di9|QN2UbG*PHtx4koB%9Qz@ zMuelcEQ^H{O%TS6BTzKQ@JZivmq*;xC1B)^R4G7iL_tZ#A{LTqw6x5_+Tja$L0;D4 z4)shRa1S5M7=HQl=`I~mo0btL#}6S zlZkn`i)NU^7C0g}l>ha8-`b9p(x8jhHfC%_)?9639_-R&ZB#Y=wuQF&4%*I?hpTdf z2Kl2UgxaO;lx<9Q<59v1Y)T6dg6|u{25eAGs6=#3f_V^;zcY5ltzxyXWx=G_WHT&? zJ@`_Z#E6Vp3VAc|Sddh1MN*L^29siA!1#4IO&J%55yhNvbQp$itR{q1WA#ndZDY#S zRxa-8OWkQa>EST+NGwuHxF;BFQHcmV*#P(C9D|>pZmVay;NaFs(;`iNQ8B!~)zQ=` zrsNWhe^-&WnCDZzM%7Yj$)u)rHR_RA{cU&LQkhZ-!Js3vc@U3#TRJS*V`Hz-v?rIf zoOPWqL-ff5gJ01EVu(ELyxq~^M-dIExX|p(FUBmrfJj<_X9<*%b33Hz z%N|Qa#f?c8NTO^)52$Fi72v2$Xz5MC?`)}1(rY~zUUotWN_CooeL>B>7bc)!`#UB|-=NA#1 zyzJM!ylC!59a0gCC%Up6?3V+G`U0j2B1&TM+xo+$S;{LAAn$oguF;&VE;rl&Rx1v9 zRZbWcTut;DPVAy+cPpi3f1wD`#+7&P&)+~+ix^SyRBMV;f}R!%Kg}0xsZQ$sN_lf& zF{|tkOdnKa*O^GMAd|T-=1IPIm}Q*{EaXxpG2yx-`p1<#FUb?7$oLc&7#eEl#CsZOnx zu&{EQXqijkfOa*8VApbCCpSI4sH^2ppRo3v2JP})M6po=Nm!^)=-+@fSRc^e3)-qJ z7h~r*zlrQ)b+ib_0iq5^gmn=WOehLwo=dBk>Oy9V>8nc%O}=?PM3==@^t6toSg+=lLi zUZ-D_UKJ_~A!bXVR+cuhi8AxtMJMFH6>R0p5~@Z@m-m#FlJ#p*U3WlyZ*YK1%Ysgo z&3_>_zmevy2TMAd&I;4P`7iqT~K9L=z&g3v7i%q z+6w4LOTyQ6M2~^_6Cn?&ehjLw_S{~X!E4%|8~!kTYn1#*@v(LJXg?_m+E{fuESbqj z8G9E;}hgQQT`G((`T zBP$FJjfe^s*=Y82=l5NYufQ}GFqSz67IO!wMwV>$-n;siFY(}8<i!s-lEqMj{L_nsCgU^@PZtHUfH9%u^X;q2L5<< zMQ(;@VBR5H?+3Y>m_Pg?qW@qq$!kbC^i#~SpnMFcIz#lDy<_4`vspfOnlNgbNl8js zO2s^PB0bS>9PjhHlm(LL1_>`o37I7YaZo|9k*g~1uvHh>=9#hz_6?4(W}8^&44W&H zPU|NOt~$*WwN;Xpn4X5&+u}rkXGr;rH)g4aW%VZcbf#+@sS0H;*fRP{sJtBh znEx$hS%TER$FHpoe#Wv`NKF&+V)Ccz_;Jn!nK>e;1WqYK#RQh}jc#R#2L1k^esJ>h zhX*l4wrZ1&U43mDuI0Tuay!=+e453F9K1r{A7{848@xpW?^t}wm;i^h3cRNrnMz34 zLT;_q+DlS;O(QZPVf)tdI;*t>=JXR&`HfuK)so)2;ji=m(cYq%S;X0-Za*ec9X&lu!V6!9>>R<+9M)V5)GeH?wuASCx z8Nx>#KMr#Yna7)G7yF3dYweH>;RsSe2q?=mdcl;@AkV0x+_B)Q0Ptv_agY)?$_u7A z4v4<2g2NF!i(L;6u9FE+AtGxV*2wH4o&{5hz*`zqNd?~|Tnd>@{gnHp*lJm<`m2oK zVII@ zew8)_d^M`z^OI9qzpPtE@|AZ9V9Pt_Q_DysbQ);^9UQD|S^~4%&Yej#!6dTIjvEC@ z26JcTyql33IBM@bKX^;seYdWzc4uw_IY`r$Teo2W*gfEpS&~c$PSU*T%Zc(7Mf94) zg!5gLLVgRvO~56bYU|jSO)QT2d()<8oAgvOy)CCQyxFPWC@SPmWRZ&Q;(S|PS#J3$ zj$V@p&(BD};*g_b^$vydrCdqjEySm+1Un%q1>FVepTJ*hfRpMc%Y=bguSGQjHbjFxb;w(w_z(@A zD+^_Ta6_ctmU}NJpE@Be^}ufO7ELk3(rUhZvFXy_{-WyFPM5;R7S&gqFsnjeI%QS` z*kaPG3bN(2Sru%{iBkm&K1a^WCN*%SnbWVGIfI6ov%h%aRF-tj#;7mxjN96jJZ1CmaJI=81yao?MlqKfB(FxybI5qm8j~&SWt~xYMoWMjpln* z^hb9}S8*t=H!C4gfV>2Y)573Y(a3ei)$u68ZbU>=`)5qWd%fUR&=_Sj5;V3WbAzcs z!IT77E%jj4@@2`t>9Ux!1QHO-mOQ5^)yj;>jUVN+T?I*9W1|>XrzeJjklVtbVWOQS zTmYv6D0I4$gd?iW9Qv|*4Ph#Gs*=x1sJCbT7lDhX5B~gON^}sHGWqKls`3V7(;&pL zxA&~yarZcA8@9J*U^Ml2wCTJ$mbsrkfj-Dd-#72%FiO!lM0+J2(S^{&IH06`AK^*$ zpcdy|JH{_s?vl}1me$Iia*)cn%64Nm-PPi|z*?jbkdPlH%>hzxC5Iw!;_DAMHU2!cVI$fFmlNUoUN=pMQa?0& zGiD|)+4=w2BMp_WA9dekDN9K21gDf2yJ287om{wuj@~YE7SzZ>gpBF1>}XpMXlbZnw>yat^#K z)>x=a<~BnRq$h!<;w*}GQOqjM!770$&n(a*UZFOxLSEUgYFSMIOF}G}arOWSH%m@09>S0;UJfQz5 zxLD_R>a}RXxFT7fB+S%dFYqh%3`%b6@t*)+u)-swh14r!A;d}L{M&k zkMd+ohhgXT<4T7reIe*mB%vVl1* znwDFnfUnfJu2X4Ty&j_P2K{GCNFB3~oUGP&aD*{c{O?}{flQ1DfSKWPywzw$&NzFQz&^fDJtMKeX+u1g@Hc<=%?yZvqKeP zsdDs6)nCVBDlg?SgBW(89J!2O8efZ0_ADugSQgqGdfu3(I`hctsb_$!>B{|2_XuXk@k!U&FXb;GLo_Er2KNx_$!)zh^6Z(Z zivHHh9S84J7H(FQUDH%#IPz%1!6V&C4Ed2375)-^hUlGg(p`b3$|&Uq1L|}?xyDqg zk!#^KfSf52XyO+1@$%7!GMP4YNW-*BdY!-OYs%9M6k_x$3n$8!mAmtrzmU!i>g;Hih|H8q--e zLvc16k+hePG$66S6Vl|Uuf#dz9OOcCex4CsneE|HaUCn>V(7MP&b1nF#2uSOm`>B}n#lGG}Ji^zcF4v1K)6kYSG#-K7?wzG% zez0U(b}W)^b}^_}J_60b-!7d@PPxq{l*#d0HKokD7}X|~$9kT%II$QPn$zvAwqm(|Twkr!0$gJ3%O{b8lHea7arnox%i>Hw( za>UX^GHcRq%~UcuvTc&d+|4-OI-QJ*{JI%QmUQhgC&}`hB#z3lN>-A)VXF1>k~sUB z_L)iQ^yK@q>djW3>PhF7ir z4`Zn6Q?(Rq?(LGzEb3uhx|tSDEKfL7)99@lag)x}z+5TqOp7*4iDz22*pParMSBaA z&$Mj)>rOvY-^s@WH2Q? zFHIC$lKjQlquf6IOH&~9E|Idz~s1WHVsU**}6n93tL|&6-;CErDQPe z5V%D;m?{EI31JqZ@L*HIRQp#=3bU|hHECfG@$(>lCq0alSwID)Eyx^G#j7EAOpe@F zpFO79=YQG!F^h-)78zu6HhIh;vowcHEhFA@7MUsz_nSwi+WuoEne{WtET!sKnM8D)xSte#V*y>Mr;cU6lEg@dao@BhPJ2`)A!(?M~l?*tlVpt}Sk@qnZU~$87sEbOK zM7FYvFc{_K-zr4|94=WKn?A$w$5|9XIYDMgWFpUP8l4Jz70`8;%EN}xY_myqQSa0( zoXxFdf`JLPNQ85CMPhVlK3bhjk2DhSJs0@tHF#MU3R!FxG-0ID))qQt5kar8R89^- z^=iYZ5XaHOnV7Pa{zJ*&bc6$7Mfs!1fbxxDyPu~-#gH&Fx^kd1PSm8z9VS^SS)t5r z3h%;X)CU45B%M*N=6!W)9+&JTd5NL?tZX_Ch#@+fN;MD&&2Au%P#mHO1Q2LOuA1_I z-U*}1BQ|$&Ht`2Kd~=+#nMnra`bs0+C0}A)MX5m3%IETNMA1T|b9znH-e8qZZS$Q{ zzb-2syR-(bvJc!Mgy8_%PsxOGkw+Ei!>Jz<=}8AyBhrb??81fH}8 zEz54x*(?)E_Tq`k>u(*yNx0Lh(U49E7p>dX#r3jxgXf4(@!s=;A;!M%`{*Phm=ihQ zw6nRL9=pn3Aa>O<%8Z+Wgd^~z6|zYdMS6?g7GYThK{!;qL6GIuVIoIo#;G3M96ZZk zT%BObML>De#|Wn>wgL12X{h~|Rh^**;!~#I8`c;i<2j)J>+vaxB4tLzlOY-mypW72 zj=jOaO9y=wL9GVD+BkB`4AJrU9TN~!99wHxjak}YE$1s>eByL{o9iEtVi0tmScM*# zMOU)`5Fx>V-FU94oXC!NfR2}>^cq7PgrZ@u1VG7Ozu;P5%x9==zcqR(WM4ujDVxc~ zH{)QPNCintg^k6x&|m%1t}o#Gg)o@&y#S{uslsis9vHBtRp5=mY=N*ZSG6L(Qn^-= z7pqH|T&lOSm@Y!p(zXQjeq?YF6G!rvuxS#o)%ssZtg4J*p2JXDu=f4IGrwOHuKSO| z^?rn_VGnng^oz>P^jl@SBxzyU&cpm}7kk>bO2;^3yNvyci@xrrs1YY#ZZX%_|2)#yx^W6~?tt7K>Jkmm&~ib$aLdlwLn zHzRTjE|&wHQLIpIMB|7}F0@NP=_83JG$t1`j#)Um-~x-R281pp*j2Wm)Ffgf94-57 zee0?vXgp>YJeZOh_LT`y!dg;Lqn@8PE-wor7-mzu^1&==TW+R%qDU&Dn{%z_=s<*CpgXywPjcG(KROuE4Y0L#gkRx>2a8uaFD4`f*BdDn$nCM3H7z$TbX8X&yQFN)XUI5hwDTBh+mS}-mDv7OPG0Uf@q{7!(zFw8 zvV~N7zFJeIEDaTCE97Wc+SbAh4Xs*Un4iH_57nXHf@}@?2(avVtX~H>!6O<`K?!$C zBNV1A8KPgh@7|nWoF4w%{Vo5P5*)sdqxmUg;(ME5#ev*De?)$owoX=v=Kb(vN{D~f zln`bPuAUI0#=g;%8lu|BN{Jy_wDhl;BH|%NtedgEWxRTQ^-V>q*F#?;R=pnJT9NAY zAlHsluLt|}M5)(D`8GubFPS){h}MTSb8a0?-vD4^vGfh_*NLQW0J&ZqeFM<-qv#s| ze?>9$E6*ZF8#MkMZ&^$QTVfFmSV|ao41=CZCCSoK&(Rln5=1*UhLBoX9adzP z3@+!dS&+$XhE5KiP=6L~Y0T8xR8&SS$~7+64gFNFPo3Vrb>Fn;GmR&Nm!cBxuhSL$ z+jo7+VwURYQTI25ylVda@Y6fD(;tfpcy4s0+gWuFj53KyKuoqF zfZ^O~l)F<>7_o+nT@zu?y&PNK)yMX=aR7P%hKTY5<4x%ulN;+MJwRV#dH~>%p@?rJ z@z>wT@KsmG40peQSFgbCrqz5b*4lI1ml2k)L<5Gd5tX+(ZXmT&3h1}$&ML4=@u`=k zLvZuW3^4{L=m7j^yh7%n2z>nt24BApz_)MU2L((&_wL&_`3^G>keleoJSfRbofwpQ z)y;GIP!L_JgIt8sJ9QDpROU~fbRzq+d~8wfRdEBTUxH#<^qQce ze1FBrC0D<5`vxr7$hdFQqvLe#rI+v1(;+Qdg&CX)fr1|D3%i!3g+9!JGO2lRfFf?J zybQ1(vkv%&u*>5Gb-h&ByT&Pi zQgj3w`W!-iR>4$Q{58!ktELcbu+0^bb1sB460p0)NaaLW5f`0sPU^-ZRi)S=)k@&{ z4w@b(-)kPOg0f96F4XLnnA{m3S0UIEC%1rBLuRf*$e*2yFsD(b)-b7%mzC#Ij7e!d zD3(lb;sx*;vppq8N51}Yg9KoeW z)lsr8e{QXERyDFUgSnA=lDxT}05IA0s%c`LQYxat`xG^urm%>c4VE-#Yd9m%T3)9W-wIbuVNydB5!HV;v~PXuI8$Go?6UN z=EA?tO<%ut{?hgn;u&HIy+-riOc+ftG#*Nmy;j{X?d#~x-x!ISjWsw>2CpIBZ_5=g6N=J9$4nV z3`vAkkzgwbd7vDe-?lW+37@)vwUEsNdzkR4uwzwkdB=4<&<>i(-zg#d3^H~@XpnnT zO*=RJL`U*citH)Z)&Y-;kjIwW7y=5TfXu+|PEW`PIO2!`7{*f=B{M|v2q>rkPBSia z)4soD!*q=pUkN!a%G18;(8#5V$bYBZ_vX4)kWiEQVOQR)laT{DAAyyZq>`FWgcBz8 z(ySGPMPE&k72hn0s8-Ih2Wh@eAp`cEQ+;6WH7$$i6tBYdX36BDAAO0oGNXH~t|<-z z6cw-opeyB6SDP(c`FAmt0!i>tDio|1-<*WB&u_{B)^!AzAlSub<}T% zUfoQtcPq%2(;-dhwvq&P@?s-G-VcUshrk{Czedq&A4nrzd!`*NY1VU-uxvR+Yvnwy zn&kp01#qnF>|&zh0(gFNPywBMr+53M7Z!v=LP7+i!t_*+mq($TXTID~fioK?)bHjx z{8r#2hW}NhK3K5MDrO-a_Cj>oh#nM0ffSQn7UH0=G!>Zg_qSM(V7KZm{L+=t>J{%l zM3{>)e#YhgD^?;{pdNs|6s;-QHk?yv{jF2=*P`{B`lTAJ*o$(d0>3ruphp!QQv59e zTg3m{oeP6zSf-U>$Jo7~fn;tDP48xs@I$H#s^ja=G_ro6mfxV-p>)E|FbB zzcgAgA9cA*e=9kH1tZ9|S}kXn>s9r3?4c+(%=v)KP{5}vZ{ zckeGxF8cfnZ#YK1|9|J@?%s>C|9|(<|9=;xzd$s7gX>C;Z<>(?H@W6=Mo4x$1KClO&BkKU3X3-A8+t#g@nBnwa?6lERZ2xK3E znT)eK3`1S%U6qPdU#N`Tfw~$mdelV>(>}>HqBj(Cjv{$NdC-xm24pKifgZroC`0~Q16+*8OZ!otqv;_TGfr& z`5CFJ_9iKb%uPL<1N22E(vK#RBv;80jd%zqh^rR8UKX_~7)8gR_p<=1Z{I*K1Tc>K z`5UAruJ~2)GYQV26-Y+{nJ~a)3kc9KndCsTArn7(Ld7xoPq9kC`=7w&FDKya{qf&H zuLp*ZO*@^_2oM@5Ys73qHDjlSim8LD)G^Z#>8uNeeN-^XHi>z9FGRObBiAg&cm0Zq>wOnvKuTe0TRi)Wx0Y<4=A#6-1-wLd2bO^?1LR=a(0 zo$x@`k8Q|NtBy+Ez~8>g(=syfIzQDXQ0>Pd=7e8{Dq{@ zdG+HvbdBhbpr^dewdu0$0I**~zFZ1PqTeG?IQPW9^>yxvzrAuV2}t4z zg@IOAQxwjWsb!e_{ZObmrGw47g$$_O=MV+PL-J##5ctt#s#kTrwTbbggv*YI_%XXA zBt~FUaub0e3dv1M&-3^1FF&6hUR?b8{`~mWy%in`SV>DmU0<+@Iup$1J&IytR6pqT zWW9?b@m~Fqqm5?rf{4+#&RCz4FvQX15>7H>QArS^)tY>nO9Q-A4;7i(OMRKCx`rVR zAV=zRHC<*|M}+5jUquQSLdle3peMDl_~HjMi62#;m_#SCBsn;ERYKxAZNvK70#9X` z?uMntxZ$QST-4BLHy_L?%uP4|7UN1XaCXva~IFouiH<-HJ%+vjXTC6 z;`122nhCOursx1X-8Qz6s%2hhmi3m{?1=U;#StHa?q6B&ugp&p7WZ5-9m_4?G>Jyw z#lHL}o?Rs4G5!L&y$m+F5AIcHpR#dn%edmdom6p|YrWO+%)0f*Gy`+{Y3CgAghuAt zZ;Z0AB&9<|w;egzF0Az4Ky_Urn|#YmBduNJU+0AIqV3RCiNLd;)!&=I6K-=t;RAQh z=2#j2yalr=9vS>#!(2tfezj~it1+&ykyggN%Jy273dgc)12~nPnK}YM)e2BoD;IF3 zRZd|MlCj;?Mm05k@|^0P_XQN$Y(f&(Hax;S7+xq>-qG9CYTbUC`dtgby2hiZvID(^ zv1F=#4c&@ESb{sHK(0;Nb6J#i!3K}RMc>)xqAh_fktn|GXKI5^xh(1d~WPSN9z= zR%RqEX05F4lFU`t!Sd|o^!D8o2D8Y!fWYs1aFfawS!RdVtR`tb5qum zCv^K|CO2Gd$J(e z9M1e*zzgF4c6MJB@Bi<;eD>_o|9cmYShrLbB{%X(&hoJg2@?9U*Xy}FDhp%F@<&CF z$3yq@X|n$9G@SFE%Aw*T2^OsXz300-h4ue@=h@@=&z(FDzkoY`s%?BPlg4QAw^ptj zDKKD+bp-K&D-g;q8dm5v`%-&PuW%F`itCKI=O%_XT;0z1Sb!bU*;0Qv_ zc8gh1LJ>5(l&^|hw$c^10jfQ~0(dQGS&T-42TGaD9GSoxPu2@HoD!Lr^VsB*>VXrJ zdrk4#fon>aS!a4WdO*f$9;BWC^}_*pzHeQSi7DY^M8X5`;rPtA>E+Rx9>S!<0u`CC zOm4RvZ#2Nt&N|kNqn%vhH&A`FeGZvFfJxIt|7&mXcIsL5+y*Sr|GWD;#rThBdoTAM z_5WQwdM#F;bCg`Y{gQIN-qi{=J??WWSI@xS@1RP{7ZgTh7Ly1?{J;b-KkD4}bgp5I z*}OlB#s}b5?lJ2Rrfz}V-J`#$oo5;OpASFiEmQ}K{68;ui~gUN`+JZ6pF4RR`@dWS zNB#)T9o(_BLRdBUz)#YD;S~6tpB_pNGEHqu>}{b{};Ra z`-S!YLWqRN^?wIX3;v&CMI3i4|7s@p!TF=1ef0kP(Jj#?-XHH>!t#zH&38F(ki9nj z)>^UE;!RPDPtF8$^LC z+@bsI&}%q#hNHu4h(nq0SAK8*asV7>OYYC=h?M&he)$l=!jQS&st0v^nj4l?x*=R^ zPxGwR%;{I~X52^p{pWg?(f^D?j>bvIkY6Bpz5ajp^7)Hm{?}(OcV9f}|GRjasCIka zEA;z?ZgTOc*B|w|pI$fBF%H14{OcMEuKEQtPU!p%o?-6PrLKneL4g93S>RoBmanil zk~n}IU2qCHn#@(x{BLR+Ir$$rE8l)Ed|o#vAk9aiiDxZgNdb#Watd?Dd<*&C3ZLEG_on&d;WqYvu1w7)M6t+Y5A<~ z+pFlk!p-uxTF{pke7SBL9BtLnDlY|FBvV-$`cueDV&9F_t^?G_!xALb*={Q2RK@&E z3FC($h74I)TR*OrMBFvX;^`_)mWJIrc1g1;kESR{LPTZC%QPuK?$@-N+|N>!Y*eRo zUfl6!-q>(LUQQ5mP?bQmoJpp?aQ5JMj3dnFmO9eEv@>sM|DKbk(}@>ANts)Swp#e~ zC(31HrNfj(QJj)ecXvh+LtOTw1XMSxC0Kdzv12bhDRwz-8$PSc)nSZCfV=?|jTb>^ zcc{SYi-w?kh2~zZuh3jG5A$lTnpR<0weVdXmk;FZU)y2-+&Ih2tzx&FgoqZ62kXan zfVW3!4|Z?S>iMBR&0-Rg$^0Uw2nI(aVw^%8@f-y!nzTjFDhS%6ZcH(un9q+w$XK3G zrB`leVyOeSjuL`8KmO9=dX49SJ53^vXUG9U@r`@ySNz-y@g)cK9L#6NNpOKiiKL<8 zBD;8vF(Pse6gv~KwO!m>R%;C0n!VtvMwbxiS?xTq;mRLYgI9H`#A1uIv#e%eE*?|? zng^#cilzekmbWE^-dEe3d=J8wLxm0;8Aq)M3AqDt`!p)kj`rQX8mvpHrzQX^>6+0kSoH)ga0pzeSFS3^A8RXN0I(j+qcP#>z45b4p2bQF_df`^O zJ{?r7@{-8S{V;NfHA9Lrjx{T>`MUF4Wfdf?Tn`Q*(?q{j^;@syym;@cZ$Y{2lkZU8 z&526cnA5~kU9}H$afBwowm|ngEpFF@;(&$;q{=EPoQ;!IEQ z^F@fdc_1BWGG)Oa7lL`8p9c~y_->0eJtoK3S7@Fp(L6QE zI2PG2om-iKR2I-FO|z_9x4DQkA1+SLD`(W%1`hp!JWs%I%j?X-qlJ@YiEMp+Hn`N`Rv(<7P2_4C{J#}yEEXOMA3yWU;-uM`Vd zx%FD7c(wpsi@R#;{gR+7wr`BMms_Fb89C;xqUe)##P zH-|r8R4~3{2bt@>y8@iLp75^_^Y?KnJi!I;#pU7o<%hG+zaE}mem+0BJU=~Y0C;)4 zK1G~jx%W4$zQ40mLaP>xi#I1HXP+-m-&V;EKS)@JP<)A{$~3U-tw>-wQzy~&M@UPg zZNo;+_3vpR*Bkr}2d+KH(c9YBI*WSI_%1Jd4|*NFEi>cDBm;3uim1xlU*GNWQ|dxj zfT^U?@-Vvlt(>;fkA=K_!1e>p+3#V|S84ntXEJBs{{GI3GGo{|Tzt0ORlXjne=gMW zJELS+&@Ie*(~{evJYox*cN@+MKUE16r<0210Bhoy0Tn@AV-s5`s zqpb(uMdEYLS{1nec)03!xC)#*po&72&ev5tXC-WM$q8$y7RXYjJrr>|j|q-=PYu#< z;%0X2;qrM<%X^Pv^|>l!WP=*`U0y2j(Y8v{S~Zi7xAiF6u`X^`+=fqe{z`|t@fX=u z+nQl*d~>UAH9uMlacwSy+#sv?5ek?TvxqsOg>)0En{q$GG}apwxU7NPj&Z!IVO%nb zj}I>oKVQ86aDH_1`Q72$lUH5AsRspH_`fznGJ@fhFn+MVzw=^qyQ@g3gurJb1mq;- z>xiZ5L+GeOI!Uz_`1VZ-clF;k+@d8d1j>%lf8X7C*1BWV;MjsE#o1NUo#T}A_-Dk6 zA}v;yj+;)Z)=T-Fk9aabx3YP5cXlsH;7^w&qHN0_x3vAc|K@jvWw9jnOV+U^fr?)* zskRmmwS4H?VhcSzhQI+D!S-)Br2Q^+w?VOC`IbhzJKW0MZF=087X^zmkrZmj_x

  • LAr1K5cs*5n<&X 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 E0KMgp_y7O^ literal 0 HcmV?d00001 diff --git a/charts/limesurvey-martial/template.txt b/charts/limesurvey-martial/template.txt new file mode 100644 index 0000000..c6b783f --- /dev/null +++ b/charts/limesurvey-martial/template.txt @@ -0,0 +1,444 @@ +--- +# Source: limesurvey-martial/charts/mariadb/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: kk-mariadb + namespace: "default" + labels: + app.kubernetes.io/name: mariadb + helm.sh/chart: mariadb-11.4.2 + app.kubernetes.io/instance: kk + app.kubernetes.io/managed-by: Helm + annotations: +automountServiceAccountToken: false +--- +# Source: limesurvey-martial/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: kk-limesurvey-martial + labels: + helm.sh/chart: limesurvey-martial-0.8.2 + app.kubernetes.io/name: limesurvey-martial + app.kubernetes.io/instance: kk + app.kubernetes.io/version: "5-apache" + app.kubernetes.io/managed-by: Helm +--- +# Source: limesurvey-martial/charts/mariadb/templates/secrets.yaml +apiVersion: v1 +kind: Secret +metadata: + name: kk-mariadb + namespace: "default" + labels: + app.kubernetes.io/name: mariadb + helm.sh/chart: mariadb-11.4.2 + app.kubernetes.io/instance: kk + app.kubernetes.io/managed-by: Helm +type: Opaque +data: + mariadb-root-password: "bGltZXN1cnZleQ==" + mariadb-password: "bGltZXN1cnZleQ==" +--- +# Source: limesurvey-martial/templates/secrets.yaml +apiVersion: v1 +kind: Secret +metadata: + name: kk-limesurvey-martial-app-secrets + namespace: "default" + labels: + helm.sh/chart: limesurvey-martial-0.8.2 + app.kubernetes.io/name: limesurvey-martial + app.kubernetes.io/instance: kk + app.kubernetes.io/version: "5-apache" + app.kubernetes.io/managed-by: Helm +type: Opaque +data: + limesurvey-admin-password: "cDlVak84cEswN0FsT2hP" +--- +# Source: limesurvey-martial/charts/mariadb/templates/primary/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: kk-mariadb + namespace: "default" + labels: + app.kubernetes.io/name: mariadb + helm.sh/chart: mariadb-11.4.2 + app.kubernetes.io/instance: kk + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: primary +data: + my.cnf: |- + [mysqld] + skip-name-resolve + explicit_defaults_for_timestamp + basedir=/opt/bitnami/mariadb + plugin_dir=/opt/bitnami/mariadb/plugin + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + tmpdir=/opt/bitnami/mariadb/tmp + max_allowed_packet=16M + bind-address=* + pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid + log-error=/opt/bitnami/mariadb/logs/mysqld.log + character-set-server=UTF8 + collation-server=utf8_general_ci + slow_query_log=0 + slow_query_log_file=/opt/bitnami/mariadb/logs/mysqld.log + long_query_time=10.0 + + [client] + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + default-character-set=UTF8 + plugin_dir=/opt/bitnami/mariadb/plugin + + [manager] + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid +--- +# Source: limesurvey-martial/templates/pvc.yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: kk-limesurvey-martial + labels: + helm.sh/chart: limesurvey-martial-0.8.2 + app.kubernetes.io/name: limesurvey-martial + app.kubernetes.io/instance: kk + app.kubernetes.io/version: "5-apache" + app.kubernetes.io/managed-by: Helm + finalizers: + - kubernetes.io/pvc-protection +spec: + accessModes: + - "ReadWriteOnce" + resources: + requests: + storage: "5Gi" +--- +# Source: limesurvey-martial/charts/mariadb/templates/primary/svc.yaml +apiVersion: v1 +kind: Service +metadata: + name: kk-mariadb + namespace: "default" + labels: + app.kubernetes.io/name: mariadb + helm.sh/chart: mariadb-11.4.2 + app.kubernetes.io/instance: kk + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: primary + annotations: +spec: + type: ClusterIP + sessionAffinity: None + ports: + - name: mysql + port: 3306 + protocol: TCP + targetPort: mysql + nodePort: null + selector: + app.kubernetes.io/name: mariadb + app.kubernetes.io/instance: kk + app.kubernetes.io/component: primary +--- +# Source: limesurvey-martial/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: kk-limesurvey-martial + labels: + helm.sh/chart: limesurvey-martial-0.8.2 + app.kubernetes.io/name: limesurvey-martial + app.kubernetes.io/instance: kk + app.kubernetes.io/version: "5-apache" + app.kubernetes.io/managed-by: Helm +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/name: limesurvey-martial + app.kubernetes.io/instance: kk +--- +# Source: limesurvey-martial/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: kk-limesurvey-martial + labels: + helm.sh/chart: limesurvey-martial-0.8.2 + app.kubernetes.io/name: limesurvey-martial + app.kubernetes.io/instance: kk + app.kubernetes.io/version: "5-apache" + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: limesurvey-martial + app.kubernetes.io/instance: kk + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: limesurvey-martial + app.kubernetes.io/instance: kk + spec: + serviceAccountName: kk-limesurvey-martial + securityContext: + fsGroup: 33 + runAsGroup: 33 + runAsUser: 33 + initContainers: + - name: wait-for-db + image: docker.io/martialblog/limesurvey:5-apache + securityContext: + allowPrivilegeEscalation: false + imagePullPolicy: IfNotPresent + command: ['/bin/sh', '-c', + 'until nc -z -v -w30 "$DB_HOST" "$DB_PORT"; do + echo "Info: Waiting for database connection..."; + sleep 5; + done'] + resources: + limits: {} + requests: + cpu: 300m + memory: 512Mi + env: + - name: DB_HOST + value: kk-mariadb + - name: DB_PORT + value: "3306" + containers: + - name: limesurvey-apache + image: docker.io/martialblog/limesurvey:5-apache + imagePullPolicy: IfNotPresent + securityContext: + allowPrivilegeEscalation: false + ports: + - name: http + containerPort: 8080 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + readinessProbe: + httpGet: + path: / + port: http + resources: + limits: {} + requests: + cpu: 300m + memory: 512Mi + volumeMounts: + - name: storage + mountPath: "/var/www/html/upload/" + env: + - name: DB_TYPE + value: "mysql" + - name: DB_HOST + value: kk-mariadb + - name: DB_PORT + value: "3306" + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: kk-mariadb + key: mariadb-password + - name: DB_USERNAME + value: limesurvey + - name: DB_NAME + value: limesurvey + - name: DB_TABLE_PREFIX + value: "lime_" + - name: DB_MYSQL_ENGINE + value: MyISAM + - name: ADMIN_PASSWORD + valueFrom: + secretKeyRef: + name: kk-limesurvey-martial-app-secrets + key: limesurvey-admin-password + - name: ADMIN_USER + value: admin + - name: ADMIN_NAME + value: Administrator + - name: ADMIN_EMAIL + value: admin@example.com + - name: LISTEN_PORT + value: "8080" + - name: URL_FORMAT + value: path + - name: DEBUG + value: "0" + - name: DEBUG_SQL + value: "0" + volumes: + - name: storage + persistentVolumeClaim: + claimName: kk-limesurvey-martial +--- +# Source: limesurvey-martial/charts/mariadb/templates/primary/statefulset.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: kk-mariadb + namespace: "default" + labels: + app.kubernetes.io/name: mariadb + helm.sh/chart: mariadb-11.4.2 + app.kubernetes.io/instance: kk + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: primary +spec: + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/name: mariadb + app.kubernetes.io/instance: kk + app.kubernetes.io/component: primary + serviceName: kk-mariadb + updateStrategy: + type: RollingUpdate + template: + metadata: + annotations: + checksum/configuration: b3411557986920434145fefbbb8e1a0360e22dcecd5084ab5a4ecab3e2b6d6a4 + labels: + app.kubernetes.io/name: mariadb + helm.sh/chart: mariadb-11.4.2 + app.kubernetes.io/instance: kk + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: primary + spec: + + serviceAccountName: kk-mariadb + affinity: + podAffinity: + + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: + app.kubernetes.io/name: mariadb + app.kubernetes.io/instance: kk + app.kubernetes.io/component: primary + topologyKey: kubernetes.io/hostname + weight: 1 + nodeAffinity: + + securityContext: + fsGroup: 1001 + containers: + - name: mariadb + image: docker.io/bitnami/mariadb:10.6.11-debian-11-r12 + imagePullPolicy: "IfNotPresent" + securityContext: + runAsNonRoot: true + runAsUser: 1001 + env: + - name: BITNAMI_DEBUG + value: "false" + - name: MARIADB_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: kk-mariadb + key: mariadb-root-password + - name: MARIADB_USER + value: "limesurvey" + - name: MARIADB_PASSWORD + valueFrom: + secretKeyRef: + name: kk-mariadb + key: mariadb-password + - name: MARIADB_DATABASE + value: "limesurvey" + ports: + - name: mysql + containerPort: 3306 + livenessProbe: + failureThreshold: 3 + initialDelaySeconds: 120 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + exec: + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_ROOT_PASSWORD_FILE") + fi + mysqladmin status -uroot -p"${password_aux}" + readinessProbe: + failureThreshold: 3 + initialDelaySeconds: 30 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + exec: + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_ROOT_PASSWORD_FILE") + fi + mysqladmin status -uroot -p"${password_aux}" + resources: + limits: {} + requests: {} + volumeMounts: + - name: data + mountPath: /bitnami/mariadb + - name: config + mountPath: /opt/bitnami/mariadb/conf/my.cnf + subPath: my.cnf + volumes: + - name: config + configMap: + name: kk-mariadb + volumeClaimTemplates: + - metadata: + name: data + labels: + app.kubernetes.io/name: mariadb + app.kubernetes.io/instance: kk + app.kubernetes.io/component: primary + spec: + accessModes: + - "ReadWriteOnce" + resources: + requests: + storage: "8Gi" +--- +# Source: limesurvey-martial/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: kk-limesurvey-martial + labels: + helm.sh/chart: limesurvey-martial-0.8.2 + app.kubernetes.io/name: limesurvey-martial + app.kubernetes.io/instance: kk + app.kubernetes.io/version: "5-apache" + app.kubernetes.io/managed-by: Helm +spec: + rules: diff --git a/charts/limesurvey-martial/templates/NOTES.txt b/charts/limesurvey-martial/templates/NOTES.txt new file mode 100644 index 0000000..6036a82 --- /dev/null +++ b/charts/limesurvey-martial/templates/NOTES.txt @@ -0,0 +1,29 @@ +{{- if .Values.ingress.enabled }} +Your LimeSurvey instance is available at the following Ingress URL: +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} +Your LimeSurvey instance is exposed via NodePorts. +Get the application URL by running these commands: + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "limesurvey.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} +Your Limesurvey instance is exposed via LoadBalancers. +Get the application URL by running these commands: + + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "limesurvey.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "limesurvey.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} +Your LimeSurvey instance is not exposed. +Run the following commands to get access to your application: + + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "limesurvey.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:8080 +{{- end }} diff --git a/charts/limesurvey-martial/templates/_helpers.tpl b/charts/limesurvey-martial/templates/_helpers.tpl new file mode 100644 index 0000000..d428f9a --- /dev/null +++ b/charts/limesurvey-martial/templates/_helpers.tpl @@ -0,0 +1,108 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "limesurvey.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "limesurvey.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{- define "limesurvey.mariadb.fullname" -}} +{{- printf "%s-mariadb" .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "limesurvey.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "limesurvey.labels" -}} +helm.sh/chart: {{ include "limesurvey.chart" . }} +{{ include "limesurvey.selectorLabels" . }} +app.kubernetes.io/version: {{ coalesce .Values.image.tag .Chart.AppVersion | quote }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "limesurvey.selectorLabels" -}} +app.kubernetes.io/name: {{ include "limesurvey.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "limesurvey.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "limesurvey.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} + +{{/* +Return the MariaDB Secret Name +*/}} +{{- define "limesurvey.databaseSecretName" -}} +{{- if .Values.mariadb.enabled }} + {{- if .Values.mariadb.auth.existingSecret -}} + {{- printf "%s" .Values.mariadb.auth.existingSecret -}} + {{- else -}} + {{- printf "%s" (include "limesurvey.mariadb.fullname" .) -}} + {{- end -}} +{{- else if .Values.externalDatabase.existingSecret -}} + {{- printf "%s" .Values.externalDatabase.existingSecret -}} +{{- else -}} + {{- printf "%s-db-secrets" (include "limesurvey.fullname" .) -}} +{{- end -}} +{{- end -}} + +{{/* +Return the LimeSurvey Secret Name +*/}} +{{- define "limesurvey.secretName" -}} +{{- if .Values.existingSecret }} + {{- printf "%s" .Values.existingSecret -}} +{{- else -}} + {{- printf "%s-app-secrets" (include "limesurvey.fullname" .) -}} +{{- end -}} +{{- end -}} + +{{/* +Return the full URL of the LimeSurvey image (including registry, image and tag) +*/}} +{{- define "limesurvey.imageUrl" }} +{{- $registry := .Values.global.imageRegistry | default .Values.image.registry }} +{{- $registry = trimSuffix "/" $registry }} +{{- $image := .Values.image.repository }} +{{- $tag := .Values.image.tag | default .Chart.AppVersion }} +{{- if eq $registry "" -}} + {{/* useful when you want to use a locally built image */}} + {{- printf "%s:%s" $image $tag -}} +{{- else -}} + {{- printf "%s/%s:%s" $registry $image $tag -}} +{{- end -}} +{{- end }} diff --git a/charts/limesurvey-martial/templates/deployment.yaml b/charts/limesurvey-martial/templates/deployment.yaml new file mode 100644 index 0000000..8bebdfa --- /dev/null +++ b/charts/limesurvey-martial/templates/deployment.yaml @@ -0,0 +1,272 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "limesurvey.fullname" . }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "limesurvey.selectorLabels" . | nindent 6 }} + {{- if .Values.updateStrategy }} + strategy: {{- toYaml .Values.updateStrategy | nindent 4 }} + {{- end }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "limesurvey.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "limesurvey.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + initContainers: + - name: wait-for-db + image: {{ include "limesurvey.imageUrl" . }} + {{- if .Values.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.containerSecurityContext "enabled" | toYaml | nindent 12 }} + {{- end }} + imagePullPolicy: {{ .Values.image.pullPolicy }} + command: ['/bin/sh', '-c', + 'until nc -z -v -w30 "$DB_HOST" "$DB_PORT"; do + echo "Info: Waiting for database connection..."; + sleep 5; + done'] + resources: + {{- toYaml .Values.resources | nindent 12 }} + env: + - name: DB_HOST + {{- if eq .Values.mariadb.enabled true }} + value: {{ include "limesurvey.mariadb.fullname" . }} + {{- else }} + value: {{ .Values.externalDatabase.host }} + {{- end }} + - name: DB_PORT + {{- if eq .Values.mariadb.enabled true }} + value: {{ coalesce .Values.mariadb.primary.service.ports.mysql .Values.mariadb.primary.service.port 3306 | quote }} + {{- else }} + value: {{ coalesce .Values.externalDatabase.port 3306 | quote }} + {{- end }} + containers: + - name: limesurvey-apache + image: {{ include "limesurvey.imageUrl" . }} + imagePullPolicy: {{ .Values.image.pullPolicy }} + {{- if .Values.containerSecurityContext.enabled }} + securityContext: {{- omit .Values.containerSecurityContext "enabled" | toYaml | nindent 12 }} + {{- end }} + ports: + - name: http + containerPort: 8080 + protocol: TCP + {{- if .Values.limesurvey.livenessProbe.enabled }} + livenessProbe: + httpGet: + path: / + port: http + {{- end }} + {{- if .Values.limesurvey.readinessProbe.enabled }} + readinessProbe: + httpGet: + path: / + port: http + {{- end }} + resources: + {{- toYaml .Values.resources | nindent 12 }} + volumeMounts: + - name: storage + mountPath: "/var/www/html/upload/" + {{- if .Values.persistence.subPath }} + subPath: {{ .Values.persistence.subPath }} + {{- end }} + {{- range .Values.extraVolumeMounts }} + - name: {{ .name }} + mountPath: {{ .mountPath }} + subPath: {{ .subPath | default "" }} + readOnly: {{ .readOnly }} + {{- end }} + {{- range .Values.extraEmptyDirMounts }} + - name: {{ .name }} + mountPath: {{ .mountPath }} + {{- end }} + env: + - name: DB_TYPE + {{- if eq .Values.mariadb.enabled true }} + value: "mysql" + {{- else }} + value: {{ .Values.externalDatabase.type }} + {{- end }} + - name: DB_HOST + {{- if eq .Values.mariadb.enabled true }} + value: {{ include "limesurvey.mariadb.fullname" . }} + {{- else }} + value: {{ .Values.externalDatabase.host }} + {{- end }} + - name: DB_PORT + {{- if eq .Values.mariadb.enabled true }} + value: {{ coalesce .Values.mariadb.primary.service.ports.mysql .Values.mariadb.primary.service.port 3306 | quote }} + {{- else }} + value: {{ coalesce .Values.externalDatabase.port 3306 | quote }} + {{- end }} + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "limesurvey.databaseSecretName" . }} + {{- if .Values.mariadb.enabled }} + key: mariadb-password + {{- else }} + key: {{ .Values.externalDatabase.existingSecretConfig.passwordField }} + {{- end }} + - name: DB_USERNAME + {{- if eq .Values.mariadb.enabled true }} + value: {{ .Values.mariadb.auth.username }} + {{- else }} + {{- if .Values.externalDatabase.existingSecretConfig.usernameField }} + valueFrom: + secretKeyRef: + name: {{ include "limesurvey.databaseSecretName" . }} + key: {{ .Values.externalDatabase.existingSecretConfig.usernameField }} + {{- else}} + value: {{ .Values.externalDatabase.username }} + {{- end }} + {{- end }} + - name: DB_NAME + {{- if eq .Values.mariadb.enabled true }} + value: {{ .Values.mariadb.auth.database }} + {{- else }} + {{- if .Values.externalDatabase.existingSecretConfig.databaseField }} + valueFrom: + secretKeyRef: + name: {{ include "limesurvey.databaseSecretName" . }} + key: {{ .Values.externalDatabase.existingSecretConfig.databaseField}} + {{- else }} + value: {{ .Values.externalDatabase.database }} + {{- end }} + {{- end }} + - name: DB_TABLE_PREFIX + value: {{ .Values.limesurvey.tablePrefix | quote }} + - name: DB_MYSQL_ENGINE + value: {{ .Values.limesurvey.mysqlEngine }} + - name: ADMIN_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "limesurvey.secretName" . }} + key: limesurvey-admin-password + - name: ADMIN_USER + value: {{ .Values.limesurvey.admin.user }} + - name: ADMIN_NAME + value: {{ .Values.limesurvey.admin.name }} + - name: ADMIN_EMAIL + value: {{ .Values.limesurvey.admin.email }} + - name: LISTEN_PORT + value: {{ .Values.limesurvey.listenPort | quote }} + {{- if .Values.limesurvey.baseUrl }} + - name: BASE_URL + value: {{ .Values.limesurvey.baseUrl }} + {{- end }} + {{- if .Values.limesurvey.publicUrl }} + - name: PUBLIC_URL + value: {{ .Values.limesurvey.publicUrl }} + {{- end }} + - name: URL_FORMAT + value: {{ .Values.limesurvey.urlFormat }} + {{- if eq .Values.limesurvey.tableSession true }} + - name: TABLE_SESSION + value: {{ .Values.limesurvey.tableSession }} + {{- end }} + {{- if .Values.limesurvey.showScriptName }} + - name: SHOW_SCRIPT_NAME + value: {{ .Values.limesurvey.showScriptName | quote }} + {{- end }} + {{- if (or .Values.limesurvey.encrypt.keypair .Values.limesurvey.existingSecret) }} + - name: ENCRYPT_KEYPAIR + valueFrom: + secretKeyRef: + name: {{ include "limesurvey.secretName" . }} + key: limesurvey-encrypt-keypair + {{- end }} + {{- if (or .Values.limesurvey.encrypt.publicKey .Values.limesurvey.existingSecret) }} + - name: ENCRYPT_PUBLIC_KEY + valueFrom: + secretKeyRef: + name: {{ include "limesurvey.secretName" . }} + key: limesurvey-encrypt-publickey + {{- end }} + {{- if (or .Values.limesurvey.encrypt.secretKey .Values.limesurvey.existingSecret) }} + - name: ENCRYPT_SECRET_KEY + valueFrom: + secretKeyRef: + name: {{ include "limesurvey.secretName" . }} + key: limesurvey-encrypt-secretkey + {{- end }} + {{- if (or .Values.limesurvey.encrypt.nonce .Values.limesurvey.existingSecret) }} + - name: ENCRYPT_NONCE + valueFrom: + secretKeyRef: + name: {{ include "limesurvey.secretName" . }} + key: limesurvey-encrypt-nonce + {{- end }} + {{- if (or .Values.limesurvey.encrypt.secretBoxKey .Values.limesurvey.existingSecret) }} + - name: ENCRYPT_SECRET_BOX_KEY + valueFrom: + secretKeyRef: + name: {{ include "limesurvey.secretName" . }} + key: limesurvey-encrypt-secretboxkey + {{- end }} + - name: DEBUG + value: "{{ .Values.limesurvey.debug }}" + - name: DEBUG_SQL + value: "{{ .Values.limesurvey.debugSql }}" + + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + volumes: + - name: storage + {{- if .Values.persistence.enabled }} + persistentVolumeClaim: + claimName: {{ .Values.persistence.existingClaim | default (include "limesurvey.fullname" .) }} + {{- else }} + emptyDir: {} + {{- end -}} + {{- range .Values.extraVolumeMounts }} + - name: {{ .name }} + {{- if .existingClaim }} + persistentVolumeClaim: + claimName: {{ .existingClaim }} + {{- else if .hostPath }} + hostPath: + path: {{ .hostPath }} + {{- else if .configMap }} + configMap: + name: {{ .configMap }} + {{- with .items }} + items: + {{- toYaml . | nindent 14 }} + {{- end }} + {{- else }} + emptyDir: {} + {{- end }} + {{- end }} + {{- range .Values.extraEmptyDirMounts }} + - name: {{ .name }} + emptyDir: {} + {{- end -}} diff --git a/charts/limesurvey-martial/templates/hpa.yaml b/charts/limesurvey-martial/templates/hpa.yaml new file mode 100644 index 0000000..86c133a --- /dev/null +++ b/charts/limesurvey-martial/templates/hpa.yaml @@ -0,0 +1,28 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "limesurvey.fullname" . }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "limesurvey.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/charts/limesurvey-martial/templates/ingress.yaml b/charts/limesurvey-martial/templates/ingress.yaml new file mode 100644 index 0000000..cbee7cd --- /dev/null +++ b/charts/limesurvey-martial/templates/ingress.yaml @@ -0,0 +1,55 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "limesurvey.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + - host: {{ .Values.ingress.hostname | quote }} + http: + paths: + - path: / + pathType: ImplementationSpecific + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} +{{- end }} diff --git a/charts/limesurvey-martial/templates/pvc.yaml b/charts/limesurvey-martial/templates/pvc.yaml new file mode 100644 index 0000000..5cbdcc9 --- /dev/null +++ b/charts/limesurvey-martial/templates/pvc.yaml @@ -0,0 +1,32 @@ +{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }} +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: {{ template "limesurvey.fullname" . }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} + {{- with .Values.persistence.annotations }} + annotations: +{{ toYaml . | indent 4 }} + {{- end }} + {{- with .Values.persistence.finalizers }} + finalizers: +{{ toYaml . | indent 4 }} + {{- end }} +spec: + accessModes: + {{- range .Values.persistence.accessModes }} + - {{ . | quote }} + {{- end }} + resources: + requests: + storage: {{ .Values.persistence.size | quote }} + {{- if .Values.persistence.storageClassName }} + storageClassName: {{ .Values.persistence.storageClassName }} + {{- end -}} + {{- with .Values.persistence.selectorLabels }} + selector: + matchLabels: +{{ toYaml . | indent 6 }} + {{- end }} +{{- end -}} diff --git a/charts/limesurvey-martial/templates/secrets.yaml b/charts/limesurvey-martial/templates/secrets.yaml new file mode 100644 index 0000000..edd9fe1 --- /dev/null +++ b/charts/limesurvey-martial/templates/secrets.yaml @@ -0,0 +1,46 @@ +{{- if not .Values.limesurvey.existingSecret }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "limesurvey.secretName" . }} + namespace: {{ .Release.Namespace | quote }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} +type: Opaque +data: + {{- if .Values.limesurvey.admin.password }} + limesurvey-admin-password: {{ .Values.limesurvey.admin.password | b64enc | quote }} + {{- else }} + limesurvey-admin-password: {{ randAlphaNum 15 | b64enc | quote }} + {{- end }} + {{- if .Values.limesurvey.encrypt.keypair }} + limesurvey-encrypt-keypair: {{ .Values.limesurvey.encrypt.keypair | b64enc | quote }} + {{- end }} + {{- if .Values.limesurvey.encrypt.publicKey }} + limesurvey-encrypt-publickey: {{ .Values.limesurvey.encrypt.publicKey | b64enc | quote }} + {{- end }} + {{- if .Values.limesurvey.encrypt.secretKey }} + limesurvey-encrypt-secretkey: {{ .Values.limesurvey.encrypt.secretKey | b64enc | quote }} + {{- end }} + {{- if .Values.limesurvey.encrypt.nonce }} + limesurvey-encrypt-nonce: {{ .Values.limesurvey.encrypt.nonce | b64enc | quote }} + {{- end }} + {{- if .Values.limesurvey.encrypt.secretBoxKey }} + limesurvey-encrypt-secretboxkey: {{ .Values.limesurvey.encrypt.secretBoxKey | b64enc | quote }} + {{- end }} +{{- end }} + +{{- if not (or .Values.mariadb.enabled .Values.externalDatabase.existingSecret) }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "limesurvey.databaseSecretName" . }} + namespace: {{ .Release.Namespace | quote }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} +type: Opaque +data: + db-password: {{ required "externalDatabase.password is required" .Values.externalDatabase.password | b64enc | quote }} +{{- end }} diff --git a/charts/limesurvey-martial/templates/service.yaml b/charts/limesurvey-martial/templates/service.yaml new file mode 100644 index 0000000..1546fec --- /dev/null +++ b/charts/limesurvey-martial/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "limesurvey.fullname" . }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "limesurvey.selectorLabels" . | nindent 4 }} diff --git a/charts/limesurvey-martial/templates/serviceaccount.yaml b/charts/limesurvey-martial/templates/serviceaccount.yaml new file mode 100644 index 0000000..53b708d --- /dev/null +++ b/charts/limesurvey-martial/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "limesurvey.serviceAccountName" . }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/limesurvey-martial/values.schema.json b/charts/limesurvey-martial/values.schema.json new file mode 100644 index 0000000..6945e87 --- /dev/null +++ b/charts/limesurvey-martial/values.schema.json @@ -0,0 +1,31 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "ingress": { + "type": "object", + "form": true, + "title": "Ingress Details", + "properties": { + "enabled": { + "description": "Enable Ingress", + "type": "boolean", + "default": true, + "x-onyxia": { + "hidden": true, + "overwriteDefaultWith": "k8s.ingress" + } + }, + "hostname": { + "type": "string", + "form": true, + "title": "Hostname", + "x-onyxia": { + "hidden": true, + "overwriteDefaultWith": "{{project.id}}-{{k8s.randomSubdomain}}-0.{{k8s.domain}}" + } + } + } + } + } +} diff --git a/charts/limesurvey-martial/values.yaml b/charts/limesurvey-martial/values.yaml new file mode 100644 index 0000000..441a7dc --- /dev/null +++ b/charts/limesurvey-martial/values.yaml @@ -0,0 +1,214 @@ +# Default values for LimeSurvey. + +global: + imageRegistry: "" + +image: + registry: docker.io + repository: martialblog/limesurvey + # Specify a imagePullPolicy + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion + tag: null + +# Optionally specify an array of imagePullSecrets +# Secrets must be manually created in the namespace +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + annotations: {} + name: "" + +## MariaDB chart configuration +mariadb: + # Deploy a MariaDB server to satisfy the database requirements + enabled: true + # for all possible configuration values, see: + # https://github.com/bitnami/charts/blob/master/bitnami/mariadb/values.yaml + auth: + # MariaDB root password + rootPassword: "limesurvey" + # MariaDB custom database + database: limesurvey + # MariaDB custom user name + username: limesurvey + # MariaDB custom user password + password: "limesurvey" + +## Use an externally provisioned database instance +## Ignored when mariadb.enabled is set to true +externalDatabase: + # Type of external database ("mysql" or "pgsql") + type: mysql + # External Database server host + host: mariadb.example.com + # External Database server port + port: 3306 + # External Database username (use existingSecretConfig.usernameField to load from secret) + username: limesurvey + # External Database user password + # (ignored when existingSecret is set, use existingSecretConfig.passwordField to change key) + password: null + # External Database database name (use existingSecretConfig.databaseField to load from secret) + database: limesurvey + # Use an existing secret for retrieving the database password. + # The secret must contain the field "db-password" (field name configurable via existingSecretConfig.passwordField) + existingSecret: null + existingSecretConfig: + passwordField: db-password + usernameField: null + databaseField: null + +# Limesurvey Application configuration +limesurvey: + # LimeSurvey initial Administrator Account + admin: + user: admin + password: null + name: Administrator + email: admin@example.com + # LimeSurvey permits the encryption of personal data + # These values will be created as secret + # https://manual.limesurvey.org/Data_encryption + # Not required for LimeSurvey 3 + encrypt: + keypair: "" + publicKey: "" + secretKey: "" + nonce: "" + # Create with: php -r "var_dump(sodium_bin2hex(sodium_crypto_secretbox_keygen()));" + secretBoxKey: "" + existingSecret: null + listenPort: 8080 + publicUrl: "" + baseUrl: "" + urlFormat: "path" + showScriptName: "" + # Database table prefix; set this to a single whitespace if you don't want a table prefix. + tablePrefix: "lime_" + # Enable table sessions (Storing sessions in the database) + tableSession: false + # LimeSurvey Debug level (0, 1, 2) + debug: 0 + # LimeSurvey SQL Debug level (0, 1, 2) + debugSql: 0 + # Value should be either MyISAM or InnoDB + mysqlEngine: MyISAM + # Probes, disable them when you enable global ssl enforcement, because they won't work with the redirect to https + livenessProbe: + enabled: true + readinessProbe: + enabled: true + +## Enable persistence using Persistent Volume Claims +## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ +## Used for LimeSurvey Uploads +persistence: + # Enable persistence with PVC. If false, uses emptyDir instead. + enabled: true + storageClassName: null + accessModes: + - ReadWriteOnce + size: 5Gi + annotations: {} + finalizers: + - kubernetes.io/pvc-protection + selectorLabels: {} + subPath: "" + existingClaim: null + +## This allows you to mount additional volumes +## into the Limesurvey container +extraVolumeMounts: [] +# - name: extra-volume-0 +# mountPath: /mnt/volume0 +# readOnly: true +# existingClaim: volume-claim +# - name: extra-volume-1 +# mountPath: /mnt/volume1 +# readOnly: true +# hostPath: /usr/shared/ +# - name: extra-volume-configmap +# configMap: limesurvey +# items: +# - key: config.php +# path: application/config/config.php + +## This allows you to mount additional "emptyDirs" +## into the Limesurvey container +extraEmptyDirMounts: [] +# - name: extra-empty-dir +# mountPath: /var/lib/foobar + +## Number of LimeSurvey replicas to deploy +## Multiple replicas may require table sessions to be enabled +replicaCount: 1 + +service: + type: ClusterIP + port: 80 + +#ingress: +# enabled: false +# className: "" +# annotations: {} +# hosts: +# - host: limesurvey.local +# paths: +# - path: / +# pathType: ImplementationSpecific +# tls: [] + +ingress: + enabled: true + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hostname: limesurvey-genes.lab.groupe-genes.fr + # -- Ingress tls + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +resources: + limits: {} + requests: + memory: 512Mi + cpu: 300m + +## Deployment strategy type and parameters +## Set it to `Recreate` if you use a PV that cannot be mounted on multiple pods +updateStrategy: + type: RollingUpdate + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 11 + targetCPUUtilizationPercentage: 80 + +containerSecurityContext: + enabled: true + allowPrivilegeEscalation: false + +nodeSelector: {} + +tolerations: [] + +affinity: {} + +podAnnotations: {} + +## Specify privileges and access control settings +## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ +## 33 is the www-data user in Debian-based images +podSecurityContext: + runAsUser: 33 + runAsGroup: 33 + fsGroup: 33 diff --git a/charts/limesurvey/.helmignore b/charts/limesurvey/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/charts/limesurvey/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/charts/limesurvey/Chart.lock b/charts/limesurvey/Chart.lock new file mode 100644 index 0000000..c0b7074 --- /dev/null +++ b/charts/limesurvey/Chart.lock @@ -0,0 +1,9 @@ +dependencies: +- name: mariadb + repository: https://charts.bitnami.com/bitnami + version: 18.0.2 +- name: library-chart + repository: https://inseefrlab.github.io/helm-charts-interactive-services + version: 1.5.21 +digest: sha256:b86b255f4ae474b1bb70cdcc30474ad382519c6a30eb26a62d7f3e154ef87597 +generated: "2024-04-23T18:52:03.4931725+02:00" diff --git a/charts/limesurvey/Chart.yaml b/charts/limesurvey/Chart.yaml new file mode 100644 index 0000000..871d671 --- /dev/null +++ b/charts/limesurvey/Chart.yaml @@ -0,0 +1,23 @@ +apiVersion: v2 +name: limesurvey +type: application +description: Limesurvey is the number one open-source survey software. This chart uses the excellent container image from Adam Zammit of the Australian Consortium for Social and Political Research Incorporated (ACSPRI). +version: 0.2.58 +appVersion: "6.5.4" +maintainers: + - email: christoph.scholz@gmail.com + name: Christoph Scholz + url: https://github.com/ChaosKid42 +icon: https://raw.githubusercontent.com/area-42/helm-charts/main/charts/limesurvey/icon.png +sources: + - https://github.com/area-42/helm-charts + - https://github.com/adamzammit/limesurvey-docker + - https://limesurvey.org/ +dependencies: + - name: mariadb + condition: mariadb.enabled + repository: https://charts.bitnami.com/bitnami + version: ">= 12.x" + - name: library-chart + version: 1.5.21 + repository: https://inseefrlab.github.io/helm-charts-interactive-services \ No newline at end of file diff --git a/charts/limesurvey/README.md b/charts/limesurvey/README.md new file mode 100644 index 0000000..5c31a8f --- /dev/null +++ b/charts/limesurvey/README.md @@ -0,0 +1,116 @@ +# LimeSurvey + +![Version: 0.2.56](https://img.shields.io/badge/Version-0.2.56-informational?style=for-the-badge) +![Type: application](https://img.shields.io/badge/Type-application-informational?style=for-the-badge) +![AppVersion: 6.5.4](https://img.shields.io/badge/AppVersion-6.5.4-informational?style=for-the-badge) + +## Description + +Limesurvey is the number one open-source survey software. This chart uses the excellent container image from Adam Zammit of the Australian Consortium for Social and Political Research Incorporated (ACSPRI). + +## Usage + +```console +helm repo add area-42 https://area-42.github.io/helm-charts +helm repo update + +helm install limesurvey \ + --set mariadb.auth.rootPassword=changeOnInstall \ + area-42/limesurvey +``` + +## Values + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| affinity | object | `{}` | Set the affinity for the pod. | +| autoscaling.enabled | bool | `false` | | +| autoscaling.maxReplicas | int | `100` | | +| autoscaling.minReplicas | int | `1` | | +| autoscaling.targetCPUUtilizationPercentage | int | `80` | | +| deployment | object | `{}` | | +| externalDatabase.database | string | `"limesurvey"` | External Database database name | +| externalDatabase.existingSecret | string | `""` | Use an existing secret for retrieving the database password. The secret must contain the field "mariadb-password" | +| externalDatabase.host | string | `"mariadb.example.com"` | External Database server host | +| externalDatabase.password | string | `""` | External Database user password | +| externalDatabase.port | int | `3306` | External Database server port | +| externalDatabase.type | string | `"mysql"` | Type of external database ("mysql" or "pgsql") | +| externalDatabase.username | string | `"limesurvey"` | External Database username | +| extraEmptyDirMounts | list | `[]` | This allows you to mount additional "emptyDirs" into the Limesurvey container | +| extraVolumeMounts | list | `[]` | This allows you to mount additional volumes into the Limesurvey container | +| fullnameOverride | string | `""` | String to override the default generated fullname | +| image.pullPolicy | string | `"IfNotPresent"` | The docker image pull policy | +| image.repository | string | `"adamzammit/limesurvey"` | The docker image repository to use | +| image.tag | string | vhart appVersion | The docker image tag to use | +| imagePullSecrets | list | `[]` | | +| ingress.annotations | object | `{}` | Additional annotations | +| ingress.className | string | `""` | Specifies what type of Ingress should be created | +| ingress.enabled | bool | `false` | Specifies whether Ingress should be created or not | +| ingress.hosts[0].host | string | `"chart-example.local"` | | +| ingress.hosts[0].paths[0].path | string | `"/"` | | +| ingress.hosts[0].paths[0].pathType | string | `"ImplementationSpecific"` | | +| ingress.tls | list | `[]` | Ingress tls | +| limesurvey.admin.email | string | `"lime@lime.lime"` | The email address of the Limesurvey administrator | +| limesurvey.admin.existingSecret | string | `""` | Use existing secret (admin.password will be ignored). secret must contain the key limesurvey-admin-password | +| limesurvey.admin.name | string | `"Lime Administrator"` | The full name of the Limesurvey administrator | +| limesurvey.admin.password | string | `""` | The password of the Limesurvey administrator | +| limesurvey.admin.username | string | `"admin"` | The username of the Limesurvey administrator) | +| limesurvey.dbSessions | string | `""` | Leave blank or don't set to use file based sessions. Set to any value to use DB based sessions | +| limesurvey.debug | string | `"0"` | Debug level of Limesurvey, 0 is off, 1 for errors, 2 for strict PHP and to be able to edit standard templates | +| limesurvey.dontShowScriptName | string | `""` | Leave blank or don't set to show the script name `index.php` in URLs. Set to any value to omit the script name | +| limesurvey.livenessProbe.enabled | bool | `true` | | +| limesurvey.readinessProbe.enabled | bool | `true` | | +| limesurvey.smtp.debug | string | `""` | set this to any value to enable SMTP debug mode | +| limesurvey.smtp.existingSecret | string | `""` | Use existing secret (smtp.password will be ignored). secret must contain the key limesurvey-smtp-password | +| limesurvey.smtp.from_email | string | `"your-email@example.net"` | The email address where messages will be sent from | +| limesurvey.smtp.host | string | `""` | set the SMTP host - you can also specify a different port than 25 by using this format: [hostname:port], e.g. "smtp.example.com:587") | +| limesurvey.smtp.password | string | `""` | SMTP authorization password - empty password is not allowed | +| limesurvey.smtp.ssl | string | `""` | set this to "ssl" to use SSL/TLS or "tls" to use StartTLS for SMTP connection | +| limesurvey.smtp.user | string | `""` | only set this if your server requires authorization - if you set it you HAVE to set a password too | +| limesurvey.sqlDebug | string | `"0"` | Debug level of Limesurvey for SQL, 0 is off, 1 is on - note requires LIMESURVEY_DEBUG set to 2 | +| limesurvey.tablePrefix | string | `"lime_"` | Set this to "myprefix_" if you want your table names to have the myprefix_ | +| limesurvey.tz | string | `"Europe/Berlin"` | Time zone name. If set, will configure PHP and LimeSurvey to use this time zone | +| limesurvey.useInnodb | string | `"true"` | Leave blank or don't set to use standard MyISAM database. Set to any value to use InnoDB | +| mariadb.architecture | string | `"standalone"` | | +| mariadb.auth.database | string | `"limesurvey"` | | +| mariadb.auth.existingSecret | string | `""` | Use existing secret (auth.rootPassword, auth.password, and auth.replicationPassword will be ignored). secret must contain the keys mariadb-root-password, mariadb-replication-password and mariadb-password | +| mariadb.auth.password | string | `"changeme"` | | +| mariadb.auth.username | string | `"limesurvey"` | | +| mariadb.enabled | bool | `true` | Deploy a MariaDB server | +| mariadb.primary.persistence.accessMode | string | `"ReadWriteOnce"` | Use an existing Persistent Volume Claim (must be created ahead of time) existingClaim: "" storageClass: "" | +| mariadb.primary.persistence.enabled | bool | `true` | Enable persistence using Persistent Volume Claims ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ | +| mariadb.primary.persistence.size | string | `"8Gi"` | | +| mariadb.primary.resourcesPreset | string | `"none"` | Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if primary.resources is set (primary.resources is recommended for production). More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15 | +| nameOverride | string | `""` | String to override the default generated name | +| nodeSelector | object | `{}` | Set the node selector for the pod. | +| persistence.accessModes[0] | string | `"ReadWriteOnce"` | | +| persistence.annotations."helm.sh/resource-policy" | string | `"keep"` | | +| persistence.enabled | bool | `true` | Enable persistence using Persistent Volume Claims ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ | +| persistence.existingClaim | string | `nil` | | +| persistence.finalizers[0] | string | `"kubernetes.io/pvc-protection"` | | +| persistence.selectorLabels | object | `{}` | | +| persistence.size | string | `"5Gi"` | | +| persistence.storageClass | string | `nil` | | +| podAnnotations | object | `{}` | Annotations for the pods | +| podSecurityContext | object | `{}` | | +| replicaCount | int | `1` | Numbers of replicas | +| resources | object | `{}` | Set the resources requests and limits | +| securityContext | object | `{}` | | +| service.port | int | `80` | Default Service port | +| service.type | string | `"ClusterIP"` | Specifies what type of Service should be created | +| serviceAccount.annotations | object | `{}` | Annotations to add to the service account | +| serviceAccount.create | bool | `false` | Specifies whether a service account should be created | +| serviceAccount.name | string | `""` | The name of the service account to use. If not set and create is true, a name is generated using the fullname template | +| tolerations | list | `[]` | Set the tolerations for the pod. | + +## Source Code + +* +* +* + +## Maintainers + +| Name | Email | Url | +| ---- | ------ | --- | +| Christoph Scholz | | | diff --git a/charts/limesurvey/README.md.gotmpl b/charts/limesurvey/README.md.gotmpl new file mode 100644 index 0000000..b0a891c --- /dev/null +++ b/charts/limesurvey/README.md.gotmpl @@ -0,0 +1,29 @@ +# LimeSurvey + +![Version: {{ .Version }}](https://img.shields.io/badge/Version-{{ .Version | replace "-" "--" }}-informational?style=for-the-badge) +{{ if .Type }}![Type: {{ .Type }}](https://img.shields.io/badge/Type-{{ .Type }}-informational?style=for-the-badge) {{ end }} +{{ if .AppVersion }}![AppVersion: {{ .AppVersion }}](https://img.shields.io/badge/AppVersion-{{ .AppVersion | replace "-" "--" }}-informational?style=for-the-badge) {{ end }} + + +## Description + +{{ template "chart.description" . }} + +## Usage + +```console +helm repo add area-42 https://area-42.github.io/helm-charts +helm repo update + +helm install limesurvey \ + --set mariadb.auth.rootPassword=changeOnInstall \ + area-42/limesurvey +``` + +{{ template "chart.valuesSection" . }} + +{{ template "chart.homepageLine" . }} + +{{ template "chart.sourcesSection" . }} + +{{ template "chart.maintainersSection" . }} diff --git a/charts/limesurvey/charts/library-chart-1.5.21.tgz b/charts/limesurvey/charts/library-chart-1.5.21.tgz new file mode 100644 index 0000000000000000000000000000000000000000..c81a7a01f4329c0e54d02b2b127da3869894d726 GIT binary patch literal 6204 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 ~p2kDh1S)<@?rVI{#< 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 z zDamkG6W%V0rc9W1CKpGNlEKhHA2!rMuQ2y1Nt6~LI|kV8Adh;=Wl2F%J>FGdbQ$Nw zjr_S5-lWbgs6>0vWt3i#x<^h4xav5a&QXB=yIwaPgt6}rhR=7lzWb+^zeB14dTMY> z=p5&g3Z$OHwxkP}cVQ?7=fhJtQn76##vy%@wFoNxR^MTk>;#?=Cu7Yv_yIS#f=&YC zh?LwYrZ}nZ<=RN*LoJ!_*z$A065-KM2jyc1>h6_f_~DJn@SVkF;bBe|-mc@VS~9AZ ziL>`XTib(1p?Ii;;_coNli$uwe&D1O@jL3bvNwPzQZ9Eqetj9bx9zI6ph0x?I{2yq0YkL=c z&l&byHggiA59*rVx=J#D)tTSWQQ$g~vkVvq-XU2o^(f{PZuRwWwk_fy#O{=siEJWG z7tyw}g*Ie`uKv{R{i6e0hv%@dN<5@OIZu)=E(s$;>3oVMcmA07>5;3@$D%91K%*7@rJ$RYeS5A057Wd-AHk?QH$C)A?CpR$@aO&5f4< zMD4^El4arv*MbNQ&;_TGG)rbTjxI1K9Z$+SbQDJ!@R&JKf$R!WV+&CC-~=6=bkX+* zCr2lnonMYV{P^zY59pVJ_wNthemHt{g5JGHhwt9LJo<3-?(GSB_X9e3`)~Bq(c71s zh)}S#lP@7WaF81|1B<8AIUyu7c#`U0Ij6eF$H64V6M`n}oNx#iVyEoIf!Be!t~!HJ zVL8rU9?G{>jBl!zh?M$20K*J8s;**;t*x!CXS=)b->t2!{C|gA+dF?5?mpXkzP-J( z{cPtiTf@Db-Mzn{tyK)(RALcf{+F#QkCk8CniMMw+I|NiDWXmopYNliV9asijnqNN zkl20A8YGGBqyqCkI^XW#Fiig3c7}g!Z05S36TSBm2k*M3z@`hq`h?C0_;}y9gj!^}uHn zCd@aA&?-VFhC}(EqLNXV3EV|JiWof&Sk_d4y68BSVHBp_Aj6|EI47!~PLmWR5A}`{>~K z;P6Kfu|ZeK-XzFhjv|%cAeFigj|PV?wJjS5@SwsaLP+J~(IfP~#2F2Z)&+0PJC7c9 z?7t12Qx_5sBx+@){QMgpCI+AJSOs1n!imD=s6qYtA8zmMZDr5@_SWw9vxoD46Xnl8 z2TwZ{B%loecsls{wbPNkpmRFg2OlJ<_)8Jv#Y_U%osxZ&R_nYcQOu=^FEwlwFpnH4 z6q{Q?K01H?iD=;Zu}4r>A*EwsqHHA`*+Ca=c+`zh_l(TDsQbgacU{y~?5m45ASY_~ z`-Asg`M>|S+v}nJ*RN{QfBxCm@7$Y4kWE4`s&L}H1W)7>cS^k2r@`b%<$qB>zfu>R z#v><8?r8Qq>PbFWsb4A8-pJgl^wAla@1sBeM9vwRqpx2(Y5V}D;}uD%-1^!05Ze(B zHM2S+)l5+ zf^1@#Qu}R`J)CII+z*7$G{F1ow3juzcZH2h_Dml3F6ye&axFWkHczdIjuH6-K`JdX zrd~OGZAUd6t3%=olI>OD%Obt17MWf(ylY?|v5@&}GXIGz0D7xYx&iiY0Oi);%`{c> zMfQ*AGI96no+WpK4rPNW6H@Ra-KJ#%p%0m7&}<<89Yl0-vs39M+9I(y7}gXJ(_x2GTf}!LTft(|vYKUhG~EU7~;nQh-9ktt^?= z1TA0@+90zqnp<1k%U4Aqr$IDET^xo^_An-m_R(KqQVBW~hO_v4p3gi!BlAu4Sh=9@ zzbHY5{EQwe1_#Vew<~2wg@LV;1&yyl@$4GCqU@4cVL9GGo4bfbkM9E-73szLp^;>Z z>faVe94^N1K~i2FBh1Ln_nr}^GW@r~2p88?`sJkR_SoHb_VH~^q^?e)N(j`FT&^{7 z$_;tVgsCk@yES~MU|ef~5Vid34kJVh7PK<%b2G}n8fgW(zokp9PW89=Qj_L?+jicn z(rEwBWPo4p2B5+IzxQlwH*f!czB_!d|KCKpHT%Dnk|}jLH$Iw`q#=Wik_~8glT
  • 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 I=m6LS0HYwL`Tzg` literal 0 HcmV?d00001 diff --git a/charts/limesurvey/icon.png b/charts/limesurvey/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..90014a72d36fd41a81dd199c435c1cab076b169e GIT binary patch literal 8080 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 N0!US+O3L)h{{feI7Rdkr literal 0 HcmV?d00001 diff --git a/charts/limesurvey/limesurvey-0.2.56.tgz b/charts/limesurvey/limesurvey-0.2.56.tgz new file mode 100644 index 0000000000000000000000000000000000000000..bb56d9b08d34355ff3aa91209775ae67cfdf585f GIT binary patch literal 79554 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 V^xM$ye*ypi|NqAHvP%HG2LPDc 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

    R?4SdmPuD9> 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�PzDDSlr#w(T~W`)j)82s0{#a0Rq5*P;(F* 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 T16}_K00960ZfLfn0Qd+1H?F96 literal 0 HcmV?d00001 diff --git a/charts/limesurvey/limesurvey-0.2.58.tgz b/charts/limesurvey/limesurvey-0.2.58.tgz new file mode 100644 index 0000000000000000000000000000000000000000..086e819615c0a0dd3b66329f662aadca08bebf74 GIT binary patch literal 320265 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

    HVq8n=Bjg?wNiIy0-iN zlW%%t{_|e-oWRys*wbInr`n!0mn`hRsRh<(;pTbCWUtuB__S;5f9sSoZE?_+xJrBR z19QU{Z0fjtiGILm(^_I!+d)Hjo(|9a=IDnHvEq@w_0I4A0Pj}iM%ByLbFS(Q#b5d! z-ZXJRlR>JGl5fAg6ZPxduo{O(S{HTye)6}*A<9>hOx^FT`m#Y$>Tg5;c(q%}Wcr%V z$b(mxoLRN7(~oPePE!sXIloljDYe&e&vrA#*&Wz^tsgu zsGEgnVuhPyMptXz>Pl$Or0GS)H-A6!+fUV3zQ=VV4fMS`EpkhaudVu5Au~Jd$aqco z#ZR;>Bx!U_{9t~f&j_&x__}b}T)`kChnQM^!M*G;)4T5ub7Ja$8VC<(I ze_h|}_t#d`UXZBGogMXR(cMvXw+~ysq$K&{&ek>;gDT$mvgzh1-wC8DVg0h4Yb0H@ zt1hN})4Ih~ON`rY*8gqb)c!|rr+=MdJu_^0;K*)`8enlb%X4~If9`WKrC*gtWTVH2 z7w+z!z3!_??Nw)!Z_bDtQLWdjO!oV&?*F(Zwaa&X$L55mt)5oP(zM>B$}36@3;q6n za9R0ge6y8%m#quhT0QQqjqz5NTzn=fj;k#ECUhB~6kK^+L#_SrErZ-mJ`tc(}w{881<=aQRHTjKWS9>q% z{QJfOb61t92dF=*8Q1EQpwM5*KNe0&E7@_ZVvQp`kA9C?EipH)F>5NWzS2F^h!34V zC~JJzKNt4V*Q-`3H77&=*5UJee!r%y*}YcW+DgOfUOpS#Jo>j&LwrMZGq>)Z_Ud*# zN&i;8d511ccx&#Cy?aNc>6=I0uKM|ye*5s6dmE{I!j7ah8Wl4?_sH9m`c@0BcVywf z=8gShh7U2lwPM3-e?`x#`$>!@Br;;;z=ZvZZOTL44ji7fc15dC-_DNttnOcN z-Rm0KXDI47ePdw!{$V4QH?0#ePC0!a!**Y?&VM|}*fFQ&?H1Eo*V*UaW9*U@Br$Z^ z{?}}L{L0AMTLZ$toQwU7EAMOmY5l=5lloRLWgKX^dCsB2 z6UqA)%qplfX?@D84gVNDWws%!*+6Pyn8na#YZezVY4?R~J;<<+sMxv-dv*W0>ChzY ztpO`YZPV9hWTe1W)hC^7I=D~O)6-`gjMaT2YDdhxxTK$=>Ar=Vm*qY3UsJ_2rb&gS zM^^fNP%`kh*L7ie9o9c?9rLGut2dWjxpr}JgNU4c!Dly}{^5(m{Zw-(r+twJ9 zK0L$t_~M?nGk(7wlsRwuTZw(z+_+wA#yh(AC$Yo&jPqGVuB7m+TrT6)9z&|ecOTiW z`K$Sl^~1L?7n}4A9+mL>4@(ArIcxNQ?YpmRUeiTcq3OI?BP;Cc*`mU7!@a#dKfHZz zXr)yj2l`emx;JaA{`RFmcAxD2&WV$iddymIiS9oCw~5@}D`qccjWHW0hAjH!@#nLu zuiNvmV)o#jO}i|rI?qt~=N0e&edW%ZyT03-F{VP=V{VawXwh%jq-yJTUioPG%=jGRkH_rFk& zn^mAc&44kR5W`4PoCNySQ_w?}lyoVlmTl+sH5RYZsCl8Dq98)84Dnqg356=2zSN9!r@l|bFcFn5Op-1(a3!`i7kE6fbRQkiNKkv2Pvo`tm-?iJ` zf3WAz!o3j}xOYp(S-&}G+<$Js_~pN~IbErNp;26Vl?FE>$KCiXc-ja1`~BHCF8xgN zE|r5%6g`SLy!P_>rf=QLtC3!1QQblBUNZ+D@h|wa*8ojIk6k+ET-OOZO?&AhSJDS;xyH<(ox+XHu)<5sOIv=e{Vna-NU@8%J+NBsZizb zfC%z%-k1$1nb*cQ&CA(4%Uqlb+Xk7o{E|4m+4fpLrwy$0{^8N5=3ERp_4VO*H^JBM zKdfhtTNRYF_eAO4gCXf3ecbCe=DVz{OTVZ1>&CT79Mg2}y(udfj&HucP3p$aXB{2= z?cCBz6I*niK~DW6bN0pJpl#=O_8jv5xPTkuO(#~IIC&_3@>_{tp4mRE?njjr!Ewg; z9Tmd*UFbhQ;Kum5Q(pBs_+8r{(yqRn{*kuN(7Z`o^~*MQZjj%8V(9hp+oN{T1$)Od zHT^s=>FCrhKh)XtUhF@Ajta&b7EY*AYi`{eex16Oyz-Y{RIBu(O~=k!{>P7RricIW z69HoSq`#9s38-&`cR7635VEl5_ka1{e;D^k$+mBHRl0uX)n12(ymBg-DbO{KS=uRO z`7Lel!@fOsZs}HPNv{G69{x3CMCA>QZ~f{^T&$3Oc>He_{t8~U>DAJb!QBRpEWA`> z>!8A%VRzTHjGuVt^rZTaK7Uv#y=%`JmUBzF^Kael!!?PWXnj2ARsR`n5+_<0*IeaS zJ7@Jp|ANZbudi(xKjBWxO7k|Jj31x&ORrfKCQqyS_U$@*8peLtq<{L*_rnHd^*TIc z#m>wrvwrFka%@GNt5;i&*mY*jCiC$~Jf=4Moe9;HhFDM2b#pcM4^*65QoUy9rZN5B zPhZk{NQG0I_8xfq*iXL8_x{)F`X?ooNmU=b{$S9MAZ+;XakJQg zgV#?4mp^R#>!;t9Y&ND2XxFvjxj(d@GF47lvW8V#tK2?+|As!d?=*jFOw%RF<5vtE zGyB^>J@;pqUWa$FeVgCE|J#7}&EG#=vEH>k`qy(S-bz`vvhvv9ue6)=dAoPiS5DGk z!KfpzPl#RGJ8#(ek>Aw+-jd$??^AEK?K0s0!~-8H25vJwymhS#|zf2%D%)IB<;&NK0M{jogCw=<|=PJC>Chq$=H&d1!{d8AB zeV^Z6KYaI>>8nfDfW^r<0a5zfoljZL*H$lRaOK+$b%646hsKMOOD}wDDBS(`_{uZ(Rv_mxIx!$EpM%ix&Fjbh;1T@|aCHp9^D4azrm9az1)&hg>9=2vL$ z_gQA?UkyJz)-@oeVwL3;Ct7`9NlgBE;Ld*USE;viTA=!Jornf4|2i?Vv`?Q(&6EF} zQJT4BgJDaLT>)$R-^oLiv{b%&Rx99w&_UuxF{@4Y*#*2Ia|D~v9gxw`YP z^Okoe9y(L;)43hskk#oO(pQi8YSxV}8>V*sR8g(Vz@7cBR~&yub!m?8rA_-cbhz3c z9?CvdV@Q2%x;bV;6n?48dH;fd#mN~nN~yv63DGsvul!(`IJ@`ii&ry?(nC+xsXMpi zF3|S>>3F}Xvj)5q`#3Cp%jCdxE1ACY-KDCpu=VT1?`72Mj$hgm*Zjxt9>UTqeo@^s z$Ib2?_3MRMhei$fVdLP!3(WYn7eBlH&f`v>{+WIh7O4yNb-q8qukMJi+HGnXbHQhF zpElR>Hop4qu-1LoXd+m)!HnyJIiD+o-}~kW{`Oas6Q{39sZi%ptvxY|-*{AOWc^=P zb=zxsd$#HL*1ac}|226=z@sHyN>}0sQf{AIR?_Q4VtUu}!AJb!=*=l11Ag4Jf8Mf> zmSG#4?*Vb&GZ$J6{PCpX@~w}2CyZUO>91865<@%h-`=^!+8sTrCC)fBE-d};p#fj+ zEn43D!v~MjDoq15=9o|3+A$?4K78Dwu*CfXc757-%VgrcPp-ecVAp{~ja!e@-#&SB zN0+*%$NSdBw;!Fd;J4v@UVm-edrKoOS~5Smx21o2w@3v%b81NlyQ|WM(*v3vIrR3; zK^4z!n>#)B=G(2BvHKpXC%ubbU(tR0AJoFO-+okkXp3lg==Z^O?hpBNL^@MCV{2;H z((it*Uae;5Q>B|q*9IF4Iu65+hm1XxrupNiK*iUqN}5&0_w5*`iCXom0mLnObneE9 zBcpe<@bTxM-^o)OzioGM0_h*|^`P-}wpr2xk4&09V%nGU-f388!-moOUhf%kryJL) z>EOGG)%#ujuvga(E1>`Q6>G-KoUnW1wG7<4^6ppf^%}4)`NBW_7LPx3p;G!p5PSGM z@k8A_{JwC2NU>mFNPzoNA4i5io( zV9>kig>2PH6Jc{zmruXzL0!81-LgM7Y9{w>Q>sermTyVFncitfpVqrC-W;9~*Z$Qz zcZY9JFaBqF&f^@z_K`jNR^M{9Qu@ub&sS`_es%GPzsG5={&o9Kx0AEKAAWvz#E`d! z7W$R8Xu4ouME}XBjUkIp|F(2CdFir-;F_jRZ}{V+fn`x|pKxVJv*sxW*p&-? z+TOn(yqerSs&JIT&?LS8j%m7l>!Mv(4z7o-SDWK92F#f}@^rUHH+In1$KVqO)gitx z;#1%2^!CyNRS!(_H^=tqGbXQHrFpa4oZbj`tjxW)Ch+a9oxb^H=Q^KxU;Symx^>YB zGQm8)e*K9D@X(Lm+_~Am;urh<$(!rmzZ3E6mjkx@az!`$MTDeZ{d+^lUyfD%;$g~^ zX7BycxKI6uVb&Elr}n9h@A#=|t2O5r`LbK*EZK0Ld?T`JKXc`e-=A8tCUZ>RD_;#d zPwhXKi&yyKi|^)ko7OHa;be<`%`*C*_~w=AC97wxK09J+(8j90ZuT&he!Os7&8m++ z?|Uq2eACqn&UT#op#As^zy0TYW6uoe+TyDQ`&w*jG%H~BsM#alHC^jIK4TAk^F*~- z0UJmD_Tj0S12%jau%Pj4MNGYfchJ|9yXl*g3+9$qqN5sU_q98fI618{8O@%YnmC{Z zxm%Yr{+E8+ODnxM9~zdg)b7sz#_x2Muvx1|pK6oQ`pb4ZCa*00YW@8Wjvx8KujbbN zy>^{AIk?Z{VJE)sHgs0~f|+YxJ^tRBN)3;WD(sgO{As1Pr@d`C*gJh!8hf~MdR*^* zTV~x%9+a>BXlRY?@BRrh&k-i_SOJ=X{SRHyjS$3N{Yy8CV0^;6bl^ldq7+OXr5 z@hz{s*>Us(rpl&a`n+?&88y>aw%fa1S+UEw%2&4Z^AC^ezo?aUYlYKCKeR+t?7zMv zeyPr_$mDKH-J3f){E^r{<08{Hpw)o7ql&J7PrWhb(BZnDJi6Ve>bTJPL7yiKzrE_~ zl4EP@k9xSdTl}QNucwXO{I?$7PN{i_; z9!Wa$&yEf!w|~(8+v(HIqaXfQeQvY=?mKKT%zqB#7Ky8kxi=&ZQ=_~?K= zhIh|gi|g8WqtC!qw?-CSpRFp*yf^aF%)_6S%-xwhtuRr4ETQ8gpC3MHd2`76fG>ak zu1{QX(U?XFH;1)ulwado@-(Y^tZbk$JTH5!7&(0 z6kPPrZc}B|tX1#zJacMGY4$tyv^4^6japfPO>I=LqrsQ26vXszx7YU?_i?Ru!<*bc zd23S4$%xxy>JI;+!0)vhx!~qor|D_XI;Tp;%mpReT4;x-9Lw!;EI;PM(82l1=K~f5 z-Mu`2k9GW=+v}#hH~p6{XRNw4{Grd_E^|&^pK!=r0Me)Kj@McSo!P6oxozzBgYC9x zdO_mEqJvSbyXk9H+;DbOr$)^mel)%0xV0=gM`U>JN{@D zF`}I!uu_|AdFPUn&sC`O*hrO{3Oe^`KEJ$XSMOQ=p27ra$Gp~mO2)4oXR(0^P1t8K6XYy6m# zdoQgh**WXd%z2gD><-v_sQ&3yXUDEwtZVkM@qECpHQ8;B#=f36CI8h?*GIJe( zi38}gu4!3^TNNGNyGnoVr{1%+pB>t^*!SePlJA%94jQhxF{1Ti-K$^!l~G@{ec1V9 zZ~BaCePMgg6V>Y#9Z6!(DaO<-tW~|jqDNWB2L02w&gggj>mU5QWd5W#Pj`9TiLc}j zm5+@dR8*`!KDngF**+gk+>@cdyRG5z>RW3@Y~0PQKG6Bzq}hf22z|fKHK&C7U0Ze? zYL@BF<3H4Ba^$@o?Y>(%Y~<~R}xpY7ZRzXO*+BHQLd< z`NOwE4|Lp9sbhzAftsX*WqTe>?r&~W`qe+9ADS-wKX&dSC=Q_i8$8Y+!Gi1H?(PmV zxVyUscXxMpx8M!|f({Nrg9ex21PH-r>)B^(>#aS!r>+0#{hs>Pm#(g^{(b73=>8d@ zoB=gfD<;2Afz}~S0WIA?>}wV%|Dk5EY3QB3GUDtZ>eK9Yj%)TUSE15Kp*(LhQ7z_) zyi7eYy5t!lKV7GOug|NQ$--A8OEn6XU(EEI`D-05pgVb!bbj`KUnpk5cZjwj_kD~KGkBL0H1q|SIsE0lJ|Fy8fT2D zZ)qvkbA-XO>G#)XWv}lR1pm{mfjCj`Fbc_mzO<%n>T=Gs_zb+{$B_ZZT3+O zZRs{|um%tuY%DQdw8ROVs^3G?ye4jam3WSTW$~H&=orh@Sr8+Ur59<$`aU+rh30nL z^rwKwbnClh&xMHdt!))njDkPk#Ib*y5CFg3z3|V;nW9`+kzcPQ3;UVPrRy+3!mrls z_NQOminu?l-XGid+#5c|c~LX`bb>LHG_*=KL{Q{0gx>-dosexd_$+46)&4&GCme?a zQy3GE0!2foFfcGMU|AKJCMmP<|LOVv|KdOX7ZLg2J|{L$TmSz*_W0lW4=!$QZjS$N z|2Hou&;RNF{~rlO0s!~_UO*XPn9V^N9F`zuJ|#avUJGs=4l7Mwdjm~DK2;qZK4o1e z2lFphep>1-q9AK0XPC<%NkT%B|l?$xMwPrtPm;y`lG9Fpl@JC{rl5<5cKlqU)Id^ zY=FzoY{31=Tmip;O>{@rbQEH~-DfGzbGWg@*Zy_+`c;QfY3bgOPJ_n#K}qxdVKK?F zeMw2|{W8g6O0mt-R5j-w%!Th}LRJ*abHL1$$6hx<{%h!DgkDQiYB^{6LfEz$qDAZa z2fA)doirXphXh7N*Nqdx&&u5vzZ(Nx@7xGszjS>EE5b6i@Re$7e+!74Qz=H z#`_%_XU@{0Qo-3Wny6!IjvkiF*%`*;7`clI<1TwNwf(fg;(42 z^2N*&;gdOE6t%ts^>}WBzC+?lF7V5V<04a{88C{FkcHr@9q8Bs38c7)R5!XZEQyM{ zgoN6DJEznV2N<#&$^`-&PFO&&>7k(=5>m1mI@2&=YO!?fc_NYF4yiUHcEBaaDoRt5 z6B1yubhx?S6p#>>F*FaG8es$19!Z_S0!b9BoyZa30HSnD97YFVXi$E_o;HJXiwvt|p^4(aLi|u)e92ttf$4`E4)hNT{bq^MuZNli%USuR&Ds+a13X0Fw;`>f-3h?tL!z6Ki+ zH)0pvk-O3{EOQWbm2??^ALqO-lOP*f%sg_JIC5o$DmuM{=PU&hBA1qqz&qH(LQ%gh z8s5*YV_c@1HQePj>)*)-a zK+}EO!nt|s`5jWobJTA}di*=YS02dF?K#)W)@x;X5y60Qr57EG{1^-LXU9@BeWaBMh!R8akScR$de9d0k8m+rE$#= zq{HEs6kw6^Sp`NU3>wv*;IdGkED=7#qzib&+cc7)x__o`#0r+l&Zi0=BbNS8KUa4l6{5_P!wxfT#NQ69C_GOtowmts}_=n()0T^<@E zsx+l7LAu?$&YR_7l?=j#6<*{;xEuG#aCRaajK<48evA*$tLAo!-AObVyOV>`?HK+ zoG2NlKStAU5Hw(6EZAqT8O~_BILnoC<8j@u&bIH_e}$<5PMqR<$;C_sJxt@-T*X@ zWeHsj%QlFDqfW%Fw8x|(oyc*8pn~GbES5OWfkR&m_VLMu$6X_SzM$t}L`w*43FeW$7f7ML(4^u~K9j1yQEOe%g zxX*y&htUpyxD|0Pm4gu2%GVXSo2C&9j^I7&r?DoK+9WQZ%wl)Y*8@m1lg2nlvL@`J zr3ljxzW!lKVTCI<65BL$-+|RB@kn|=YT8pZn{xi~AwTyqfnA#woyqTsrWWT3I4)mt+ugL(Vo3%&^_N3Wp-42)|aICd<6RpSq*olvVR>Pi^IS3^$JC74z&y7UoL!9`f6GE!Yk z%bt>=if`j>9+dq5Hu^Fs!G@>8R42LnfHfUO#L|rs+;vkk9{yG;0hJTU2YY1LiBtk! zBt0_|bl8}t2?0k1@N$nv3qhz!Nhw%yq5Z{ZYOmv6G(rviHSAunO@u2I0rnHR%P5@0 zat}4C?w@&XNmMxQO8c?Nc?78lea(E2Aa}0~ioEdD_MoPN;BJD6Pq0MKIzSoN!ANuH z9zA8T3a*WQ(vVVlfA-$TQ4(tFL{&crfgVF{(y=WQWH>VhE3qYTKeP?LfZ0*X-S6|J zP7L=+yKC;qdmX$&R|r?uBT8-+LQF4~?cX@#90WL4;mpa)O9`woH$n|u@M0J+_cg(W zVRk4qbDpvAeZ09zz+%0toDkj)iBc_+Z2bU7(cI;0S0L)sm#g$W5Xx%;9&@-=sqt@| z102i0XLZJw++3Cx!j(P;ePIa04bf*Q6Fp|ip)56Ru91`G6L<s@3hxSoBqNK8lSgLXyHiS;PxzE!FjzL?+K1(1 zq>gY()tS+vOt@3R+6zTdwFAW`1e$g93<>Y`#z&gs?2&MAUiq^Ltf%PBr@`2}9Hq>0 zhI3dlhX9*u#6IByALer&V)-o$+D{$P+OJF%c+zF#NV)3A?q+sLvkD0|AXLr~yJ7c^ zgC1u{2B>_&hNxN!;Y!XNU5O6eNVEa#Ttbh2c1q^hRy4L?wF4|I8T>=a8oLmEniRn5 zL~mn>5N;W@t%I5})XJG{6frH8mZ*%mj1_|vU5S&*5}T0SB7p7shFz-*5F)O4-bgs{ zB$I~Y?k1MI^zItMi(4CQJG=^g!i1gn}VEYiSBmD#nF8O=wDE5m!Oww}FhWV|)K zZmt^t9?rR-bb`i9zLGb9OIBeMoR{UUMPNz%50Y^a4|>vO^pD3pn6-yT!D9~u+E z%4swiR4eF5w_BIrB~T)P6PB;j>Xi5lKN79{KtxJ} z^*#-_D=6Fo^D5Y=Ff6z>a95EY?c;|;cp7lFs8t5@zG8PXI~kpm>Z)ZpI)=M_nT zu_#n;T-e;BFeD)QB3i;pBTOMB#xBf9u zXueI^*IiX-Cn=XhSeoyxt4tT#E?X*r(&ikx5Aj>2@iMi}AHF_c1xX?VP&4Nhbm~&q zTGKljGXcDP=n*{99;hS}vxL&jPNvS^FTSvJH*Ejzm?Aj+YIbQt=5{Jy&hZ4H#dywQ zb+lM`YeH}y0x`Q7kSNjEgz_PaY%w}4l9z!)u^Z$nDG8or2urbGWZ|b3TI#`|BMV$` zF6Hn75Yti#W`Yoj;MXx6V_0Yxu@cLROyZCp>kn2FJxyfVXWHIM+H?n!xwh494ncB1HDqhL%6=6 z9mWR|H38_g!icA z1&j>}J5n^U>nv0a=aQlmq7^L~b{($Ef@6fIAshn;?usWAuxC&1`L*eDXC33fV}zS%#^|`$^NjW#85S&XC7zI;3VEx zdHfprsh)ukTA*Vo*!PA7T8{(FN7Oa2aFD(Zjl}lBM%Hir>OvXXg9}6^#Nv(rX@S9l zMb?T0;?(1FOp)ATrrG>Ui>i+|92TGK{!$#XUkh8N=9VKAM^oza3T^sB(J_oL7yFGu z8Hb%=e8}TXzJ-s5Wt;JXnuUSkLHliD#y1`phN0jtsA&bZ%1pO?pczLF4ot-RrfO;p zG%Vz0S#Pt_5w|mY^1+YqXtBguQXpeEh;B&7XnjYLV2rD?W|mi6izxhsK8K$!RSOqd zmTJaP9U3vanl(H*kTX0zK!C8jUxlEA4?e)6baFlVogk%NikVgx-+9S_d&g!z<#d9c zRA7{a!Hf>0a2b`E{>j5us>uGV8u^V}Fg6A;Id+V1(a1OEusaYBjC*7m``H&J(~7O~ zZapiig>n0nr4mbKIhBwM*{X605gr*?{hICggpJiWBr}tNc2$woHJ1Z7Dv}vVrGNo( zmE`x+T=?z!Z>*$sO^v6vZJY>{ezPnwgt7Q4Q>5kx%Dh%EC*zbG*dF?+&^@;OHrd!) zGqwJnD;NLs7AKP^B`Y^?m!^^XQV9HRp@n+?VWHXOecPuMLSuQ@dr zpAavfGSwKA?5$J&ukVae6VhJ&n-7OhbBdzMw31?S%KJa0MyZ$PP+dluZcvSp&$104 zI4>%1N(^FwK97e_tzrR;FcWy6&1lrjLH!Ve{T68ZEib2vyDo>!-g3}`46~?kIbA0~ ziN%K_ff>e!E_%Bs)4Y%RLO4O9q$|t4V(MM5ON~aDe1*_Jqda}=1s|`KMFPwnj;&&8 zn2ikAUJj9HB$!4c*!zMMbyt`77gsv`G?tt3iyt*}&i3?OZxvTo6x;$dR_P8`EJ5a5 zVjqF1p8n(g(LnlS4Y8MnT73*&uAYo*g*noM=r>!_pbeW}HNR2lH#My2zr?L1^tnKv z^Gq*Eu*>=L)3)@7IXA6452CZ&Sz;Ao9~*-v(!UU5ZYzp0sMdy!wh+)ecGFB^7b@)` zrUN~hA&9fCF?xp@m-{9b+c=2W5n$qY_L!kxD>uFTqK^!NH^Ji8xgXr-=m?i~`}&9+`62R#Sb|OK{&ggVlO{htLo*F{|AjPJ7bnHZ z$`&SNKfyp;Q0wykFLW~0x0d_58Rf6Ik_c*dHi;&m=mbS~I_2Tz9>H{M? zfzc^7`Vgg5f?@Y|G=)qNp8-lP8lxE<<7CXTB|57U-B(GRDd>@RFP5QfQ!!zg3lL?~ zAvzRMb10W%1mK!G2a~?*d~)zS7dsq@t@eJ|RoG*!Kd(@pfmenV9=4=2-OO;rQ%A3C z*P?e^xr!2!j{+B&5=z}3Hf(_?M|9wlt=7@MQ*#KaEjD;aQ7;m7fXatI?AJ!`1_%!)=1|N@b=*@;1imO3CxF z!-vtG5LH=D>Z{u1gt`ZY|5nHk%(?`Mdzs#^_FsH~h1@^*y3$|z35!fxh9KvxZC!s& zC}Nf0Q@n8wTUND?|8w3U%jk#{D?rMi_H3flHpl)imaw89`(L2 zbtX8n_pOpz$kU4rI-o3nH2=hX(58Mt+v;a)-&K2)u3`~*{IJ|@Ts3o;Aw>vg%G zXA_3iRX%FeoYi6#-%=j6KXP*J5b7l9IXmWquMsM1=t3LdB=k|FVtuQgZ`~p#?2F24 zV}%{-ucu=YINdE7X8Lfb|wrS z%F80nFb+{2i^ej(om#uvS@GtMgA}k_hLMfK9v?@J(3KhWxuR->EiAW88fB%ll4dCG zTMsV%rrzWOxB4WRxkX$BQDp0q!@e2&(GE&Trfcizf*BQrn^+l<%Tw8T+kNy20Y_38 zC?G`$JdS&YfzgpYlOXLIV}(Iahlho0GbiV;jLZsqOx0inVdYR27tP6X6q40DoN1*~ zHZgBiR0i2IZv+k_#}~aYW$D4+owc~uhY?}LkZLUwqNoRPp(uW?kfdD zLVTvIY&gq{hplGV`c_Y5Ryh#P8HV1$L1o9cP9u9V5jMcklciI|c!qbaQDl=V&zCZl zaf&k!tRB~@LfW2M+bvCwtT1MwF6=+L9-sE5$Nto+)KT^iA*hmDDqH=_@yzfuooj}R zsi(V!ftHbm)7QeEt*Ny>Nlr{{U>)R*c^tQnb)NJq-sWs4JB?p3Tx z$2#Y_Ro6PkvE{KsG%c>Vmgqvzpsr_oM{OIJ3A0QMOs%K%tvb0O?d!8yaQflGmN3R% zB{p?vSh$fDefTmC;~L}G$)72|b$KpV+Fw6v?plsX_mQa$IU(L65U~GqDyIwLI$Hrw z<>M@SIlAy8HNWq+4S-QS+~Qg$z?VU-PR$OePIx;l@B#gk)(PcS#_E=c7smew=bC8= zjd6_VoPP|Fk(p$Eg<6Zq%I4$8uLq*}Jj@8@k>+6OElN?(&N2*+o(cV{yF~2au;49G z$SpXLNn%u{0mQ>f>!ZK}F!zHkYzBCRNoJ50vX-W#bX^hT?ujn2NRWPpGs3(#0+OvQ zv8?Iw#2``SBuC~R$3*z>Tj<1AlJFz6B$RVlV_PS7--ovsMTmj8NB@jVQ%$id!b0#V zR7u(%hLJ)A@AMn3)oJb%FkpC#t0$GE3xfM+vuD@o^dgBVN}! zyi)BeA{HA|$!F?L)_zk5Tg29ibJM{dyuY1$tMv=!suVbXyU-H-Uh&ptu!)pN#L~9L z`%RiC&dFavdNY<3?9y|(t(L`t_l7<0p2N$<3$ad`hj{+294w+Id?sx;=26Ob=9?<= z_hhNY=PDLb*8DhbNP^!EqprNl{7sA9GFN|t2P62a!oCa?m6&z#?+%hk_x8tisB4ot zV{G)ye~L*m8a$r|K-i5h&@hU}nTR+iRa*==s8z^R)!rQkslr(I&1h59!;=o9qH3QT zV1Yg6JNM#5daM03cdP8LPvY<7EAC16g-k)?i8MJm-J{WuB1T3(`@a}4PcXV%YziD} zpAHgU(^Oaa{-ENvWR(9}s31nLo2*KLDn zH#i^o{TkZ(`sg@?l@Rsw2#L|118xoM6pCZLt8ikL^ga3J<{#P zz2`dE)j%|V$}n56a5uF{sqpghCYE~0?~ zGv~{va^mJnn<>-+d3J!)N7@peJR5-*9ES<07KlOr%lDkd231rbHKbKdAn~{B9z#GB zmdZBmtLwc`TR~!;OSM^>x1jh?AuP?@Q1`4YbTnLGE?S7M@2&|wgC*RTp^zf7mlvxG zRj{VAr_&HfIlNnx(onKeZ2b9G5#M4m4B=}zQF=HNbCj$BD4$a!^*ZH#AM-H{`2Cc? zIDLSzD8`~oE0vb^>NsIafXvIhjB>a*HNkN)9j6ACdhHlLewID9oREctlcP&aS8&z3 zHw+MEmqo*_QK?i@MhK}(fZLM_o6XlmU}xELw(HT#SH;}%lj!N%0uxN}ty=7Np;EVF z5p#q7%KGJw)$~^e2by>Xn(StWVXrTCIdDY`e$@aj&EzJ`Ii4i!OYb3cyi2PM4))k=Xim;NVM+M8$foq3V_Ul%X7&30A?H3 zWJ%&cC>6hm>X|Ml$vBWOLROX79eBv1hwsPIV4gzhi$0bHC(4tGpl~6PD~*j-$uTdn zFOCF;ojghoDa%CgqoLKi7{c57+q%TWb&~YXk&|I=SzoEPZXf?>=6Os>NU&1grdq`H z2naXi7@_{uV#K+p+Jo~JGv+zttV6`j~C0})u4wHU3ym9t9U)NgPyQ-zdY|nVOVG`kfI$*TxT4x&H*Q7xQO@)eW z>dPhQ_`5i@N>`6u|M{$_+%wLPEtR#clx@wu7i0I-S@Mc~U)HR?PEp|<00E~fRW_^D z>vCsh5>Hp*ZH(0{Q&yAqy@o)G2N*_?a zrQ8>i|tF@cL!Jn|(3iLOKOF@O!j2cdUnIjq);n$n4Az2ZCEWoxGIWT9m=vV5@b;`4~FZlDztxjvh@vYzbrYhZ$=S9QZt zX}fW3r(%yi_7T75yW+?)6&AbfBeDE9F+OfKM#j9pgLOrku7cD7TTNunqJa;_TPRZd>PKlZ#dF=N3w@5^5E z%jX36ImoOhj9Q}}vC#oHw8_@e(qXVMMPRN8`#k$sonn$@l-N@MCxPZ+ulKYlO_^)M z=@;mB(8}PbcUK@yL=2fr_Ja!7>#so4*n7h!R<1^CQ?F>i`QD?)k-CqzyjU8Xj5eba zwQ;2ep{EfjhJOd(=PiIlJb6E=$uR;|kM0iz!IhNmI{A@t7|Q}^y|CuMdSa5;Id!TwKz9Vkq9-`P-?YU!m@k)DMqd&R${V zP~UaU!p2axC37JUkLji0+5Wm;%4{BDT8y%FnWb)GNDgR9hXdd{NqY^WLId|WgM%A_ zR!lcCwL9cLnW)u6a9+TT@P}@xD8S~Qp=70MLzo8KaY_P1y5g`@@~a%W0lc?+{r$33 z4uQ={Sy`M_He_8GN85}5f%5c!=aXr!(R}gZ(7pPO@Z%@ zx4&f0EX_Z6e8sjGQyv|Y1yZ%-k2MEr>caa$y9kqC&|3}ifAW=(*AIb#N0*G}^Jh%a zwmWtslPOceul`@0)tcU7VuYqcTKK5+UKKt}#}7?D$gUwt0afT9{3UnC(C5Zb_v2k! zsG*GOI`eY~V@l2)RN)pXPoe+ZeMD?h4W*wwe)G{=V1`0x{32y}rAo7%`dYJF@b?ZO>q>`b?Wpdp(+)%7sP_bx zpX7US`;Ow0Rol}qvg^A*&*=hD)h)3WTT)!9QuQ84B#r(YkYV=KSnE$VN!jZ=c-lGf zYYqW9LjOYR{=Ue`pr~9SX2=~G?5iOsYPrN2F*dU|zuZ>5Uyt0#;cwS-@V^mepQs_U zEaT@4QK{%qPr1>X;*{wBg=X>Zfi4YnWs5?4 zpHf^K72o8an4!Bfen&ozAT7Dw9VAJJq=E2>5a)IP^G+!hMqdYA zo^u4i5=)89DP_=ji)c@mh}5wCx>(QJ34-m!_ z2n(B3NCO{&ma~FZ{^t3MM&eV?SPjkasudUx9|TKEU20I4yl8t)lpc<13f!jL;WfZi zODxB8pdPpDf!-Z4ujof*M!z;cjaaR;K(V2f9w=YT10%CmK{< zD8VdT+*{4K9E4{4>)h{z@qPV|h|YcN`Nt4f8M`s&=MbWl<|8JnsB*As0cWW;a{cH? zz-vMb5of!)asfwd#Wv!tKENT8xU3_dyVxHT&vG#afy03sIZq7`38jGEfqh4y?5as$uN#YiChnA=Z`wmhExW4JcP zCG>K&F?4^R4flBLzcYD#`)DawbV>;x@B$6QOouzCKt`3A1L1TeP;V>Ze@pUs*S>oa zb4o>(yX<~P!l%N(Ysi9Ou%mNfU5(mw;rtn4)avXeVPYPtalu@SBNz&m!;x5Wxk_Uws~bXa!AWGeio$ESJ1m+E z@sc7eFpy9(y;8z40HaWRRS-%%9)#&}AIki3c$@I5sP3d#1s4yS2T=i(5AiX5 z8Tvy~xrR~#0L=cZLE=s(Eg3yx#`c|z; z8ioA5+9;^V(q1$2M8KW4r>}5+evgCE%h1`N4oSjI`o$x$2vK7jN!xeNAb{&?-L|1;dZjBRs!cep`AR z#ZDdHad%&AzAc1Lv)8|`!UIPS&=?tN#B58G1OP*JE8eWhUQALFxn zP6x!h!yxvlP(esV68q@mE4P97HmIJ((6^$4r8^E%Tj5Mot_oO(?t2pq7FUWgI@PlJ zcpF1Nd8Ko^TjVO+TO?Fz`<8>CZNa&u1f}OKa5Sjhyd{efSvr&(HAZV|zJp$Zh9I1U zl+s<#TpC<12(Ra%zX0AK#DEpL4Ww zH1Qxkkt%d98E_7hm}v_8uQk%wO)Uq-V;~G~o3hZr!)plDxF+C4TOpIw`>&T^K?o(d z0bx|Q4#HS_3Ry-rw>9Rt&Q$k3V*6LY!I^&{0Nj&$Rysw~P;8(m@9?KnkoWPi(N>(y zv(b?E@wA#wUyy0=()Jy*&{4Se3F4a5&qUWRsF)PLKQC**m~JSQvn8dWF+6DW35?H) zw!6EFVY@ z&|iKy5M$$0_&A-lr#AOaGk2N+2LM?mjC*2fCv|k?RvCVj7E|NZVM+F>6T)Ypz-Rt- z*!W=xw^Il6l-Tz{dP9rGJBEP0^8}gYfDs@)U4gAy+TSDlS1wZitDQ2tn~NqYDsJvm zCr_yvA4PD@vYmT_ekv6ZUa(nIf!OZTmi&L+S8==^t$-xYu?7<PWO_Fyq|$1$ z3QXZwfN7P$)XRk5P9`D4TQ0!4e3ryc1&&WQf7Yz_t+K}x%_867*S>%|)T@)=crAy6 zK8KG8JPtD4WX`epfWBSt=>EWOhxmUJy8K02c~y61T%7n#r(4)(r7IObjfg2B)pr=y z0V5LM&kSm8amq;lZ9otqdZr5!jJp}tn0%z?{)q`qmP@KOjfJCzd*DkKgUCe`N1cgl zz~;L1GO5c-w%Zfrd~2-}+sjFxCo%ukUHxUQ-LDGBo*!&n%r{VI6m5&|Ht8U{^hgBE;mn#HhsKV>&+gWMW^g<0s2sC6dlOAGS_8Bs#;z9!$+iSi8C*(c`;2lPw0Az*?j1B#xr7F_YPj&j`?$;kBuk8ijvWeB8n7P} ze~|x)ZOWMQNE;|gxNxKi^x-&IV(r%1UmFKdqb1UIvcBq9BQDZKRvvQl@bs`U1jEA0 zx&IM&pq|QQWoLR#Ab2)4x)YB^iupbbebpfE{v&P#tiL*-XFm+B%zAnTa7vVFF@|YW zX@sZaxQsYN1|HkLQBrW4#Uiry-_e%mp_E-Gw|qF7sl~Oqgh0v5W^Vp@B8V#IA+P`k$aKV?5rblP1&MN16R>z5t?!@<-u4Um0 zUC$o|@?w5>G|#E3ORy!GB|)2wf5C#6%if);M+zm6yU!hL_h&tjno&%#MUo&-#ULS< ze{s8qpZhjyUUbWxvtPAJ${NL(dkpL^YHxzR&bd7Avz45i*4DGeHHh)Hykz39o!zhRep(m%*;vWxR{7}y^ke(81kEbh~2x+kjJdZv%R&wjC50{ zWEu5BCtSLN8AZiU$Eq@RDGZ?RRd|lc&3gV$`?|Jb6d@KZe{z!D3U;;v%-6;>#b?EM zybdrmql;Tk$mWcK&G-3jYbZoK>=qZBZHx0b{;o`pctu1zQ<(j7>UjJ5L$GkgKXBzP zh`Hwa$$j(tpSb$)6SDl?(-ko%N|bKezweZiP~#a4=AB=jPZPacCn@3rv;Cd&QuZn2 zj>0;IKbsaCVjq;vt>v>5H}9w96_N06Xwd6p-y%5d)NLQkF3Uv~>8=TdEspIDqaWt$ z3uv$EyN;i_RD-9gSy5ZHyhDN$@0HgJ2~15))F5Z%SN`+!tpP)tKbqcjvd%y4^!uFnUhT3^ z>>6zx{E!atF_8|>|NCV_pysgo!p56Khof!h3hb<<+a;GoQaCW|;AguSp4nng>%$jP z?^5ggHu1RBtU61QLH?d=Pq84x^80NQDc*ezHm@YP;qn6z(S_iso7y)4MCtL;m?}mBEg$? zY{S?3Qa|OF#FtB(pOYtf1Hzd8lLI< ziM~lO5!sCK=j^rReOzY^Lu*yVKEAuiaMU&iwX$I&z-HMqXxlc}+2^{}_4}Xo)Pz$y z7oi#vf1B-qMRPQRr8w%(+1lI0!Y|7PqHj#%e_mZ3-fEgL$sw6cuLQ@r2htRitlf)CcfweZhp+<5i?<=OJ@KO5jg!)tDSi(jO~2~L+b zYBpcy8N4m-BKur@UA_6&-d#K4vg<_9-aj=v)vkJTiMvAWvA$jWebDjIf$nDKo450M zcqUoONzK#R;>ycKy^1N~6|+MB`o*Xz4&6Li#6#|8-TgKOL2}{QvYkcfx5wtrLBAWT zkioDtm%kL+D-3%lvz1TSgU!kVx4`ox#i=SsH1bc%C`utc{ZXpwqqt8gXN|#Rj}GUb z7I=xXc7jx|egy4H+CYWzvUeyt4%cRwuOE~*>ro0s{g<1T;r$cQKIVNJZX9{j`OB|# zcL&~IH$~0uDGpq@-%0RcMmKz$Nc@XQ zj;Y|Nx9MEJ>v*)r`PbF}*KGBxc1@Fg@`Pu9*TX1w2|fI3f#v+#vtw|=Yf^K}XOCp- zVdD~?7qiXjYG%3bK3%)zO;_JvA1=uCq5YPs}f#azJ&3Z^jk}! z?l7}4QNF)K?+R6^m=gE%eqR!M*n5kWEf8)ps;0Qzc*q7Uc`vjW+fucC7kgZ!uC&T@ z89+l8lj+m$)&D!4wC(6GJ%zqYT|m$3AOylQc$wq(sR${eFgd(sxJbX=Rel~9ka;#} zt9yOt z$R3w=i|UJ+-3_Gt6017;(3c{wq>sC}qG{#LF;cA0>9o4d}^lXeWU;HPY?kB0Y zq8l!H)Ag2*+u3GT?$;_473%$c4I(5zLHyxujpHV0i}r+~q4wAzYETP~|m=e>@PiEFFCEC*5HK$(Tw zFG(c8KfTNz0eT_V9!#C4Srfj8^z!&OXT|rUIT>5^^HtmVc;ama&1-dqmV zF0aWmNgz|Gk{3n=d5qy zdFA~Z5$?-{+pArMQ*<^K!%%=BKx$2#;NRj}y$&NQzb14(4J{yKu&H5VK$r&`!OH%Dpzw+AirDp^1L4Wx|sh; zTpu`+Qq50J*2i)4yD#Ha2d&P>^Uu(UGMt4xI_E&U!y!osWVY_rzJV%exWq@pR-T9A z`-!c}_?uSgMoBCu^~q0VfqiQKD6#G$k1wXUlXIrtxZ7t0_Ill#ih z7<~NI^yn`P^1Sw7?fSBtld)i(f6Y(VUZ1YG@&3N=5a+s@Jxyi>d%;aG+g{iFzMcsN z9{{o7>T8AR{$)VY~&5QAZ~XfWfj1Ng08^YBT- zxa-a$)qJT(lPrbMdmMrMtbf~f{lrDQzPI7t=aWB~diRB!+2!MYOy8-Nl^9#CBpE8k zn=3aL&FRq6Hs!>>PLdWa-s%L`?7zx$8&E z@o;|{wxfgbw*Qy2h_op&n_ZMu=2O!A96J*~7n?PTP5wvG^3YxRs8ieSfSbwx3kpE> zzt2ND?r*s^JZ6*f_bQDVy|1tFL9;zo0LJw-@Uu;4>$bO_MOrIy3&3>W8Hd-N>g4N zReM`tIGA^-e@W&2&4<<>96Pyh1ykn1mRsf>E;^aAf6<)6N|QIFzTW7MF;nLnvYQPg zCWTuJUAAR2k(2ja+};BZ|CorYySP{PpZ$g*kG`494zoV;tKP(;i+nc)Z{0iv_WL<{*ZH<&wT&Ik$$Rqm(KmP{M47P_o%$dw6ts5uvz5pY)jVGQJ1R!`t^@v zmM>qv=yJ~XjIE>7FZdL$@-6adm^JzOl(sd-W{k)*KDo5F?X2H#1ZORn`A$-wHaBn7 zn$=ME!DM=PpYc9x@YMvGoyTOp-eXABgzlsIHGjR}iGIXZ>Qd9bA)^z2|9;uv8FR)A z*sM>{0WwQIi-zG7CubR7@HpXt86uRV>C!f!${=?o!6>|pf^6Rps>H^ z@BVgQ=GY49PnabJtVO@!ldEmmb@k(wvmf~EFZ(Wi*|f;6vvMyVJMebp-PD~Wb+vv8 z7uIPa-wuh5kI019AA5X5#Ra~xuJEI%Die)q)EVUz3Ds2bG2@78$<6-U=uWGQX9wbuR?{Xma# zOMhN~;%#<-=OHPv5J9jL9?uK4R}`<$PK(C?00+PTxW!#94hlxn$s z)C~0c#pK4u*lo)6_p9_M)4aXtsBgu^>#HZD`_pLKfQFsZ7J zxU=o`6?poIr46pc9QNz{qq29q%HQ8jynOekd8UVX_x4@&Tj)RfT(2)WE?!YqR&wfo z$*K9XhQ3kwB&=r5Ix&&=_8(ebz3SV8M~96t%$<8^&ZoP(@0^dWY16W6cAXAAs@Gf` zQ{zB9Ib(C#_q+eR-+J%*lskXdZu{Wj-am`>MP6jyD;sb9`jGL!`2iDF{?_J9r3Qw^ z@flSb+=?21^S6-cA0FuUXOsAhv(39y4mnx;IQGc;D;NCUxu0Jnqso%HgWkJt4mlc7 zIJDOQO=6GTI_iAfg4o|0jD>B3^WQqwW=(0u#6Dv?yt{qx!OMoSs88cH)seE%-5)jm zvf!BJ$|ryCIQ{LT{AtP$dd#a(ctb9Z)lUY>GL_q#(XostkR?wooC_G{>YkpsU&#&g+*e_z3<2U^XKRgv{BK-Dz)aic5UNnuJa&1f)Rnijy^r|z*tNA=nI)qNEPV9Wkdc))Ho5()FLtRy z#*qoXRro7p#pc(`N(XlvG^*%wjctR9a);mhp=H9PyJsfXfBgBQN*P^y*07vk&Rlrs zULU4u+$8Ihd9Me|YLhg{y0qpR|Ju20F9j4okI>_*>Rh|la^&u_>o%KDM4_>@;qO$K zrYzKYhOC>Xd2q1ew9@J|JNw1<{~%*o>me0RZ{BzC-Qz#`uH5%y(~M@9GrsKmYg)b3 z0q-2m`7ERGT!Rap3vc?xPX4>=kTzS*+rB70)8gyL+Q}))@2p7NQ>WyLe_Yq~)l-u; z!S#XPKeimdO<}&5-@Z`)gz?lkH1dO?KY!J=+GLnApx@(k;)hxf4{oV5qiSG>xZ$PE zYc8$$By7y-DG%Q2H+TXXM>opT`WY{Gxl-V};7Gwl<)V(2d(O{)tnV7wN4w_niaBL5 zX$dzG0vVl|yz5}dMOB4rkGl>pUH#G0D%bjLD7`mNQSwh%c(0a!jWWGynU#(GLS+vh z&D2I`$NDFC>Aqtf_#-)N{)UQG9xnKK;E){$C)SDlV)ZiLg=4{@K9zs-AJ%7d{lBc$ z-dfW8@#Lxx-+VY|NH8*D#P~V%z`+|Pfh!-i{dMTKrCW??1KM?Mbp8+RP^!vlOZM<; z>y2+i`-M9IJ2fqzy-~59!73*E!tA8`E z;_cKGt1FND{c5|(pSNqMzIuuTi$))Pb7I``-uc5XjQYC%cb1Iaf1iH4ZI=NLCLR1p zF>t%-(WNtI!zK)h{<`6myBFIHx$~g*=R5ix9Juw@YaP5gKBZl$g`HgtDkeV^anJaX@snQKeefu$+AfzkRqoljdX)K)KQaP^xG zb%63phbBu?$}WCmC_3={xI3w}Cfz+<>(}HyuZ{DY|61d75g?cmj<6cb8^M;7O_8l?i1MI#Qf4!%cp%CwOCX$-@kUZCIQp7 z?)~cX(r!&GpMI}xv8Zds#;p#8s5&03{K3Gjs7 z+|}i338b9=A7bS2$o&-kM5o|es1sRUoXx%JbJ+Qn+6wMq$aGt^x2JuPdW|#GvgR6 zRu}H?{9u58-H~6m+uSntqR*5*ZLa5Udi}lOt^2OiMACGFSvLkVK3507|MgMy-7lvk z&0LpSq0Zx4dt;Zr^|;ok`oFH}w$JkJT+@kd`%bO=Ys##^$IH5utws-~-Z{0RwAaa` zjII|#j{3)wTT(*@{J8nRf)yXHKsGhs3*x_{F18r><0-|J+aLQ*9JgxoUu!NVg>^o# zqjQV(J9|`1nss=5c*ftu0%zxS)bnD+CQUP zlmebTy)2a8U1{T)0nLsce)ra(is!e_pBZ=S-B!)${g2d>-$QS#>b~O-VsYDVKCV5i zMGQRr``|hch728wMsJI8CH*ZgV#@k<_`zj^ZLnB6UW0vPCj>hz{>+FhE62Sk1~XhNOsmW-gIljn|{ zK4U?{Ms+rB9JBw;o{@LEF`fJd-%G0A@7hPbx^`Fv1179mH+J^KJ(I3yqSn>-zI?ye zfFDvW{?l*igtHebWlREbM=oIB*Ud){{xJon4S4)T$=N3Bwnr_kPA;!9rLL+{T(c|P z&UD%{1@F$OT5x6(gfwf)Amr6d0y zuetWuox9ym&HZk~g}ISK-WgWpU)I8J(f-K(Q_dJemz?=+`CR<+6%EGtrOj;g<1+`$ zn=J`2A5(|m2)l9PC%c|!gAlMbR`AHTh8OF+dh4g}!0e)!;S1Bi}P!?>-@OFL~=^wK;*CM*a5D>DdD|&Inx8#05Dtto}`%PNu4 z4Yd2)olcsPUKx*}Pfbf2&;sA1%boB`za3?j-d_j}D_3jx6nyP}rb_snwPQ}V$!tBN z-Oeei%f8(3;KLI~zxS`Xt$(lGCr=ITGiCV6ueuGJQ@?Qby4O#`teTRL+R+-EZrhTPcGIv>y+vQQa@M`#5!F) zbpIu-tlKJ_IrfnyvSR-Y9ns5mZbzkbQ|jK{+2N0*{+XAkzJaX<)E!-X<2&N5v4@Y; z{q*sj##P6MEe!rVam1Z9UzHwTUw`zYE!`3(Cw(=2+?K!f@J?c7bn3b{yP1Doe{j(9 z;_dbR^6MTFk&+QX&ikO?$@?Xr9sFlO#-{w32ymtGN43=_*9|^9I=1mgZyh-w(Q9(j zy0F@B#=rKkQPjA@X>(h3pL8_&>_0m@oZ9hW|8Hi_G>>`oWA*uggU3v|b!W@4HVg8P zo7?Q_uARMYX14|_H--1VS9|ULZ%c2k*_d+VO#g3oXpU{sZn@emtzQ2tU6&tN_;c9e zQta-Biw=}lty;C}F)8}?eDB1E1o4HZ(Uzq4}JGI7V>p;+3Sb*?fmp3 zbgJUW$Ljvum1DBwAE09b_Zr?idp*8ulTAJY*W4aed}FSvEbIQL%d?LREuFtBWqMJP z{&-@?$3EYG+Va+r4S_R${zlmd-Up3WLo3GoegHZ zRv6pA-9F#z%qO+ljcEGd)a}W!ry}o+tvlk2LjN~v%1zNvlo?aZ=oHL zdOWYo@q*Zo!Uh+lTnJngeDBJ_z19hL@BA?J{h7ban6>8ih(|tyyUaUvW8z_RA;_4v zCqZi&batQS*7k8b4z=5==>@TqOAbZ1?xwF*apSqsofj13w zuzTSU<(S#%soUdX4@Iw7++y18pc=y;wrYC4Wlr9KjHWd*f7lUKFR?mNQut2E#2TN+ zP5&afL;vmlueCu6tqEgK?Yq3Hbl05AvlmouvnO!h;reIRoEx`#sjk^4#tVVF*X6W1 z7WZcU)PmPX-x%5Ym%~8^Ck-IeyQXI!X;pk=-x~e-pL);Pac)@K65mtfOTSybCwPSB z=E&Adb+3Q*S7v?Hj^P)MzwI-+^~D`MPgbv2d^DLpuNYgms8;m~OCDz*AM{V(I%D1o zsDJ45(uI@XKGWq%C$5p-S3W*rP;rU+#FWw==lXm&X>X?f-u6Z(s&A_qxoHox_F(7x zljj!o!}R?+*PI&We|^Ob`2W~@7vM;e^gL`Gp^#)yD=I<`%aUzgvS(HUtWe!(V1U_c z-W=5fU}wP{U?4PRm&ctYCQ+5$U5o0<+R7>n`esM33q34bR+tWnijyci6tX2z7HNtn zo3tG?yKVN_T z`RD(C+4)NE=bZoMcisGn&wTZpzxTiVGk^A%|LyO1bawo~uYAMLe#amC@xS<&zO?*j zzUeE!`;UI{_WrJ)myiI{r7JE!?%Czx4eDthq|4I`(OF7U;ECFC!hN}f8{s+ z+^>)S>Ax5L?%(oPmzVzZ@t^wg-~5(0KKc*7|MFk|Z@=eCqJ!|8i}`0M}d(eZ!u6QBE6@Bhwk`t@i3!24~( zpV&J6(SLUM|NJt2)_(f;eD!z!{eSt^cm41`eeJc^UfbI}*!iA&PyYB-pZ_cVAHri_ zLlp09GryMk5P+-j|GI10`+x4-zV`pPnn%O`Twmf)nc5H#w`_=aOXo6mx4qe3@4mdA zP1jGIr)vIlPrCU8K-K(T%g_I<&1?MsD|xQx@7MNIHUE_`Js!B%jv7Y>RL%c8-OT+T z>)ox*Yy96Ud7eG%ya~?TNsk5o3|$Y=<^Jx3Hj6z*J@96S`#N{tTslHg9P)^54igC8 zO``FD&)l+)_@jqAcG?@Qjn}-BOnSeq*F2Do^28_K5agb(^0nDi&kTa## zVs}%@|H)~gWDVTlC@tBLz{b7<(A^p*?m^fEOOXeWi=WLvhoES}$whM@HZv67h@Dn%91S1vGE0V^OYrx^W$HcjgU zN+exN{AksuV!Eib^Cmc!;WiOYqEG<@+mePraTUZ}M5=~gQu^Zh#CV}b!eOH;^$JJL zf^OI=xG}SEVzELG_YO~vb`Kv8_KqJOeSzN!QX^-}bUC`Y(9C4z$+sUK?DXptoX_2$ z=rCLCQJo^gS&Pew6w$=}?RWe4cTe{F2mSlIM<2s`31Emo>vP?9_bqF!czG<|u(Veax@_$QEr#jP z($)S<5{5KZrpAkTf+1G6F3Ig@#@nXT>y0?*N1GuRc`k_( z44UW9m;90IUnB+Ts4Y*&ZiHwCaUFscLVuLK=`ly#4a)hEWyJ(-qc9Q@ktVcJ7+Dkk zH!WY>@M^h)#3lVWuUB1m^wO-90(Hb zvF<34>5Us}nJ7`B)IrL0$d;*H!*?VT26eA2?>L*UnSz&~?#afe*9N6kmt$2Xxk>e4 z)*-#Sb?!J$@{x1<5Qh=XR&^0@_8vtg-Pv1gY9tz?sHs_BOnH6&+=|@=sDcIeAQq4@ zN}9rJTtx>!->IGq%jjb%BZ~xbjWuIsh1V%dzTSi^yL;U*kRneA&&W$|oMWKlJ#m2? zePJj!nG;%hId!pEtZ~{Txq-h&Ik1>uYH&?=k*Wwl7<)*ok+J!TssT8FSkeXzem(t@ z-Pa4FaSwEqcRU#f{NNa++Q(C9pCRArX)l39G|Ij%m@v6i{Mz8$YalM~;RNI?pG|<- zF^TY`q4;`4P}o3(6rBgM|5tbhDs_vxx=!C&$tAGAY+0&SHT=}Srloe%^zgO0S6AduH<#%x_JBO_HOiHhXUXJ!zMzK!%c7;KX-daPbQi+>u(e|90u z4C24i|7UF@d;Zs5zjN*XdnHd3`M-M+u)Er_{y$8_R0%TuEF$%SV;>JxACt_*4^bHV zHrU!=Ki$b79uD0L2AFFSufj(OCM8hiZwfw+q2~@=~_WAl3bzlx`c|8K$J z)&UlT&xn;4=t%?;^jtDt=wu$YZK4QjI~UfHQ7}>d_TtRO%oW|;|Gc% zw$z52-?ygb(=E+>Nr_qPs!?f&Q;P=Ao-<}>y^p5>63L|zIThld_5r2dheI5yX8R^x zx>w?QQKM&T*!Qov^R4w4)BQQ8t%BBL_tCPF*Yz|1 z(_sA%&h44D|CRRNjXQU;`~U9Nb^PCzJPTO=58vCaS|ZYG0{KOQ>?%NQjZlvYP1hPO z`#3TuP;VDxhk$&6I5ZWRjn0@uCz$^LRxT^bEs}DzSI*lC?}Jqi+>#smcz$_JpIno~ zC562rvf{o&&E~Bv!iD!8DseLCW448?$|4SF)mQukv(?h}?ZzZU-0Lj0s<-RcOIZ3e zkpCg}(8;OmJ5;r5vJh0s|MiWH?EY`9dmaCACC>un{}J}kJw7Zd!#&fa1v>=OrJ06= z$_bXbH&DfUcna;dc87n??MC6e(NdtZd9cVufws^Q8nSgEaPNmW4oa%B1b_%IGdXpia$8D*Q5pXK_xn!J?=RafDvZ z=q$smE8KhL+&eQvLEC1gE}IeNTxgoZQkmDK;%CXRgATE91yj8%6_45og%j6j6)-Ru zd8DnRDDa_8)1INJOml{qx0Y3&O0$uc5VlbmxkJ~6sq?Gys;D4CuG$5{Z9|dj%fdoU zIqMedAQFkj-tHUd6n!sZriz}%*HhPXY#2J+Fk2z!~svlb%g zUPN@(0z_SLK+mDUQuD>v1n-WY!|&--`;&T7U>F3FWz# zf!8wdQzHXkw5{c3d>YvQc*Nnt@qahAx?8#P|E;a-^PekuYT5r@UwXY10hEsnFxXI0 zKVL76YLdaLgAJxUyq;4IHk4h_>#3J{2I-O$A{$NMEnn9n5OjP?vZ3&nq!sovJ!2l$ zvLLhXhLD6(Qume29` z*w}A8&EMlQ#WX_C>8A#h{hX6p%zWpC&pzdg^UpKuc_Y_r-P$dCdDCC8us8{jne*?l zIo03UInqZruV2hDPt$~kdB9Uf=^T)0k9HsQkN4i&Jvri9;mOXPkr~Gg znUC*O&$0jTQC95m^b;IQu`}1SyzkC1Det=l183wmnUEuQVbhToJo{uU%016i9JzHT zVy)J^yh+H4zqBcMfA9F@(O~!JQ_eS27e==6Oyqr7uVK_ixs=%^ z3b?fScGw>b-hX(M)o!InLI4SQibE$q>}n0Q{ReM*_-XU8#`D!0Y!h$Dk}hUl;MB^5 zyQudd9WSDi^=g-|nT`DjT|~XR+{T=f>W)ine2&7YU@lF>(2T)N+PxR6;HGGE+DabA zXK?^p=iL@)aaLO<@3>ZLrR_#&LbQ^X8O4NPOAg%@XsPDk6)h9=ow^x83;WXx7j}}W zwN|)ix6+w25(1xq2oKm8Ur`vm8HX-y7@!euQ<|U^hc3;RUIVfMJ^`m&w;f~yg#>5r zBnqK@=K72Tytsdg$`@UqXQHqOGoe&o zR}s=UDpDAl{?1FkZ5*P38=>~a!~^>%f+WIWwXC;AwnP#pmHFH^Q%VBO;O^sAx4rhb z_06Ae0aH4QL{kruF+vew_Qc06I$k;##CzNV;}8w+K5p^rP2!L{G_y~f9?%JD=|10j z{+tE1=xKrw2PllD^t1kjcG~BMq)j$p+s3|+Y*rj0o>a;|$KaDbPiLeY%vmDr7R=8_ zVT?Y-RGYImNXnPVMs{Em z5K#tP=#h31;&azQVeQJ`aMXqY-JZ0^(7`xp3(8cn#dL=C-ydwJB^)LNT;_P9;uzB= zQtD=XO6n$f5S`Drc=JveZ6q}sk&21pYt7=1bZAq%2&T-G;WdMTFkn1D{kwla%pWzm)u+9`{(t0V$Sf?^k0 zC1|mhNK|Zz$n|$3!&$dvKC+dB5^hhDQ5J`;+z-&+&aDqtZci`{-C@-0blxDn&#t|- zAy*xmTh^+KO2@>axLK|0kHs!XY(6$#jNW16q1@g`+qlNDTr#v4unw_qoqY`|%s$Wh z!y33=%hqny%UgRm3zxR;@CjYI?wI9&!&N80?(CgU!2m^(>yHRn7BMsvc#eGaHfZL{ z6u|IorLxQ1^Qoj~utK@#QzE_^Y)|qNNIY!__RdjAmmtR33FGV}9?&H=Qg!7a7x~4b1GFr+_vk5bA z<(TQzWV&N&O+_l!5_H-CXe{vd485H$uX?C}=+u?;eR1=w)R2%$?VAhAoBqNinbv~! zn(lI&?NTJ5#`2{JLZwd?QCLFR)!9;{;b-gV;1x%$D1yV;4qHXeddICv;yUAarRum< zP|MxUUUllg)3-k&*ym@kvi4Qgo)lD;gNWQUDe^hJ?OA?@^0>9Xd)#M7HPSVczS!v> z_aC=<;BiZ+l#g4hilAICqx0^gd%H&myT`kOlfmxMdwbivC;jd1hmQ`9IYrT;4Jaz! zrYDb%9&j?!>6ESrt1Yk`q0oonH0^q_(SC!p;RJpW`^aEJ~|z=Y~mC=b)Nw+>7lq(aI)5GC?6RmDV8bF*7aM zbyc*=C)7cIe|K=$-`?eOK#cuV5Y(MeVqPYbNfM%sH_J5NKH5DV=%kW1sYi}VoWb$K zqurCi7Y0WUA0D3!HnIdoht(%|{P5v}!Au03o->!o)1+oXpl&>Fl?uM+t>UG$T2-pO zpa{1f!?Kcd?719Ii=^Z$@wEWz(p#q~EYa70URT*3-d!z}GF zVm=os<7%1NNaVbb0@jX=C(24loU^tlXd8vmwxECajq?^*PA(jQ9zmHPXOYQKbFCEa zx9-KR=Ku&eTgx~EAHj3D0&wUeKSB=hu@4xa5x;d1crJ+;_%qWyJ=c#fz$qjwnVMjln!D#VG3kWMn^hB(^YVj89mhtRUFrjGGmHQ_*|vlAm9zc%%x{&3czv{ zc#>XH?utpqH)bFvDBNB!6OBx)9H@W^qvmmkhHlAW6UfTf*nqJNHlw$oNJNf~Fncg! zVg9nsZ1oD9E&w$H6B{@5<%B4vY+Rb{fz`zlbs=nm);R(sDr?yyOcDC24bZAgk~14B zS(53>JK-Z364e|6Iyi_r>>E1~>11pxEsa4rl(K)Df4}Ik=j%s2jpF|~R$gNOfU5g{ zHa500@&D^<>(}@HUCFZm{AYRFY2{6(;&qpl7zHndfvE|VSKS;b;$2Z&)XP*{HGz6(1l7_0%x^b~KP8x0 zRV|W9S1~qJ1gr+_Va`|FBq-*oY=4o{Qd(m#3um56Ph`o6A#pe0j18Uz0k-0^<){eV?Vi8Vu$jFIU&lf!_ukL9e|06_Z zL4T{3|C?)TS^T$+>-%4?=2^u3Z`c7($F4mFbc7I)Mp^Q!(bE;8Lcr1N+ezkCm6Ox7urK?XE~;qRh(Bn;^RI!EEBX{D%=|3|z1 zo&DYR#F?Xv3i-dbxz*L>e|PK7*0ub{V8$U?oZMVJIUhjUmEPc`3$*4`n zF7h09joK-6MyMlFTRgGl`a>K}m>7iKH?!EFyF(8~7Wp`aAzA_7_`xx=tchYPsMEBT zG(K&im~%iCrRE3xhEUxhqb7DxNW54Z$CAK(D_fU9k*jHB3hqp9VfbL8OwIbiUI9soxS1*XTN5JY1b(P2TrQ`bS> z6u3U~zJMW)eTQlMPjTouz=_#j!Hoz&euTmxbO{1O1fw`aWEBiObm5-5o*PY90rVZF z4|^Uw#XR(m8v#57+1;WMvd3WPh7;0W8e`goQU;3#ph9@bwP`I4UpkNw6p;?y*qo(e z&Yg_pZ;O4h*4NiA);Dgq1Anx1hNe$(=&){+1K#3eb;(K^X2}BlMG)c%ipD4=OB3j( zn!W7v_x7K{5Uqke-)=7fK-G9)SV-hp6n(AFw?xUdsY5TOobB|9INk}=YKtG(7< zf7#Zh>*s2os`cN)_Sw8;RO$a4x7YLQ|MmU$k17+t%9paktxB@AkUu?YA~JZ?CWaJ4&=;*f2TSAmb& z;UbJcG-kS`=K*|r>hj4_pJxFNvcoQ)qf_z(}l4+nlR;CoP z1$osX_3SdEbdhGEQvfnuABG_`P*nMq)WkbrvzJ300%ytuJYX1JRJObRh}Mo1>B(K9 ztW^)RT1x=jxB+(Cqc;DQWxdB=(;duYDl@)|rh~+3mnD#-)tumi50`+}(rJO)BD|h$ zD*$w0Add=ZJ>E@j!Uur|qah9_L>6PKIl0-nlHNmkX`D#T{z-03ch*4Gu9Oj1RuN^Z<+_ z43=RK(0!z=MT96vv|KvQr1KozaVDIvtkU+k5m*jT$V#SJ)9wM#dkUvyWmSd-Ibhkr zRLB6CAx*rJ^piX{G4uoHRg-wzOi$9~nL6Rm;!`B70pM-ME%&!lhoR7wz%sWrzJt68 zuwek%*l-b{twOmbC|aT96`E|&r=`)!{!j``9#~3;K>)+Zg`PJ}rKwoslT#l`SIwOv zERz|C(@zzIv$-?GMd$8dx=jT;Vz4L;BzxasDJVrPOHU?fvq&P9GV7hb;w&KgOZ6X! zFn|tQCZOjf){*2a3oMiPl-tG$fFWXCVPl`T4hoUOdL&m)4?KIG+QIZ%CemgtrQO$k|(*o)l2Lsn8e>Ch@@d}fA682gbs;X*!FjU)aMY$xlK z+KhEMx3O=dAYwm+$)+QUwb%;Cn9MSg;gf|o?lAca`gEnGJhGPnpMHewh;=p>&|C=9 z3W)Oou#BiYWXBM6u?EuZg7vUMnyq|vRb_6lz;WTo$0TxXFu@K2uAf;3X!bPGK6a2; zbp_Y@x5T@)fc!FT-5|uLNT_G0D3z{InEu33bdo^G1_v=I%OtEQrpIF?%NUZxw#B~@ zPGt>cChajp-P2{AosA1~F!2xy%F2Y{h=6{`(QF!*#!lQtQLaC9eK%5-E^&l@&-EP^ zMiQ=Swo?_LBbbZJ@8qvHY`spDEC7pdvk7H<;RRX)}9@_YH-P}es( zlkB2(?jGOxr&eXEspaO}I6jre0vk^{Vb&PgiQtG$GTBOuOgm9#KM;bc2aa~{?+uQR zzQCXYKGcgfY0Z*Q68@x;l2^bmVv?6UQJI&w%$XYqsu3Jz($Y7}?qm{2Jn$KgxYQ02 zZ9uv|VIo^+j@w2ul*CIh%AUfhG@U@$ZnxWF&m^}@E=jv)mFf!wMXQDlR0K!4;)B@p z#2u$4Kf8pT~0c4D0&!J*Oj8Z!A z_}LA!PRZRyVv5Sxtg=>bc5EUKX0nG-(n=+F5|SmDZa{cT@y|k4VPfJ|pJ|)7DEsMH za0$4@oadrjtK7MiAf}n$+8Z9==rBYC`Oz&-ZkAO__ygStLS)fCL5{^=Nokb!ZV#ws z@*;UiJyQ*dtgGlHx_agIn#&^A6-;6h(N38_KW5pvr>P?cY=YRaQm<}YcSse506SJv z%?_;uua^~s?m3K5GRit)lX(FrfhX6tV3s{*klS9;5x~1E3S&fjc8X*0lnqGFJrlqN zNG$S-a{{3H9Uk#c0DBRL;?O7HUVrcoT_rm>1PA^7JwDDyRJMy|#* z+GCgQkKzy|Ggf=K{Def%cc6!T^aS7#JPA?Yxi;hN3DYRl^gWO!r{zeR{WuyUKN9&e zvLD9LSl1-zn|6qCbSN*lNPftR<)6^cPgu-M8|;mI9MTa(wIr8Bv>AlRpyG_LSx(z9 zeoUub>69ou@wy>mSFLD_EXs)`ui~(fuvkJyMsf8;mrq60~HA#=6LlJusP`IO)NDrb5XbC;1Ao0IjR93@z4J zqvVnwW6uPIL(oT08;!q2I+TtCWqv)P4VCWWlJ_!FY|(=`4lHOX<;Y!EGK_WBddUkM zmewO_xuUuxP12|-Us&bKr?O;Q;2b<6C|46Yf|7CNpa{Ai0n1NvV(-Z+c%lu$Ug2Ie}}RAqT{P#B_0q;9{i>j#K=LF=V=jXfigw&(M^BC(@rmlX8@g? z$#+(Ek|cSZY}&LoGPfhM$R$IETfFFCVSGvzBSas^F0HF9BGFc~?55qJ6jL(I+pdQQ z*k{o*%1skg-5jz{u1_Ka9jeW6^BVHc-4OfCL@GgXh$2-q%7rX&si<>72aS-H$vELm zJRKunjDc(kPXOy%re!>#YQ~c`)hk^efdEEhHtKkv^0kw75pB^Ys{ncgOHcYI>9l@A z=iw7|h1UvEbpey|WT;xAM1{;Vy2Gxn?Fe14qYgHiFlM5rAYm#Afg+8H>FNTDZs-jx z>V_}6>vm2D%l03@O~yU&3I75BxbcmhQ!3ja87J?MJ;tE5g8^ZFM06wHVmlshd1t|jlR#z#- z%eJ32`-u;!nzf8Z^5rU+K*ILH9)b@2x7}_hmM5+=h@{5Cq{S(*b<5+6WMxV$T!wll ziI&LJJ)V)@;=~sR ziBZu{VpQoj*9QSkbi6V$rj%>X z>+CJMpv#vVok(1$lOYaIB6osF1SbJY!?60?@Gb*f%A2hC2971jZlCA}mLl-tk?Wrn zQR(pSJSh&NyGnpp={OKj4Fua~C^D0dCV^;onu;ZlCP5)5k*M?pUYv*{;*$U}^4+a{ z-X5;+SkQ4oM9AGYIn%Dg`lEscryaNs%i!UWg~AXQaN*$*ky$)EVp;4l451yN&>|?Z zxU=)!N5^l!#lK?Dz*WOu%Zm)T>ELsI0)s>k zNcLwLMWw#SSgI9ZERM?TBO@;=q9s z8bl$C&}hoRgOVdk!6k`cL|13Z2@xq71W`lVFkLP@3>|JI4zb71SQYA>8=M_Wl;SG8 zAC1q%|3$ty=G<_f7)aM{xu-b7p6B|bM=U>G%pdwY$U_lQePTGCl9triTA`Za5QdS< zmVxvaXESXj1`C`~E|m(`Uv_J>T_Cw2shQBkZsAx6u%r4T^c~0LCU~ldXnqMvwUkl9 z4z!yM2z*YJ3G}oh6bZiai4*CLQedJo=qwg0T>*B4M*~CXl@1M8!Zt5Uq(+)ibQf#-3EQ(=OjIvo)A2YxZ!;ar2(aW)rB(ztu#94 zJJJp$#2xue>+`XLIyYROig^0Bi7U1$aHW`B&>|tz_pFnIz=+kaa7R{D6<+#7Cz7q|mgn{B)?8$$*=;a?)?r zJi%E2qG>wiO!QAxy)iK!h&+W$5G6bi&~@M->FVMYbM|(tBTQ8BA=xVAJ;ELeggahp1(R2`m2s+!?r%J!; zM|2eOFMxjn>bKgXa)w${I`lu5WX&Rs0n1Jq=wt&Q3ag=dr@)KB8G70SUHJ|q`QD`q zjQpdmGx|mBqcjH(N+)a-~${D#4tAwrWt69+j43rAJXqd4zHTs%{na9`j{EO(A3f8tcXR7yX@P7?V6#O(=- z@T-zEEkUz$gP@4H$7H`)LmXPrlE!j_e9FX1WIc(q>{qmMHGL6-vOR|W2nq2w5C~>u zN+L7?BNn7$vlP;iu_kpgC3fTyM)8a`st1y*MfuSQbE0Rd0NYy(p>4Kjn5f4=;34kF z%W6TgtaFz#R)MB10{DOTc9OFhcBVnqaqPttL~bbsDMC3L?81%L(luD1VF6%h_a5NR zkK91WTTaLk0P=NBJ_%9`g{x~G`RNhYOELbFtmWq@MRTFLcH3&@>XIkuf$PT?;(jFX z0k@K@`mx7?8b4%%Yp}}_0W4Cv03|@$zdo3;Hc4C_8$14 z)qn7yCDsb9O=UV^AreZOaJnzhl+@OjL39a_B#&2Rh?EWWe_a#hn;VO=8b|!Fmj&x7 zD+{OpJ_0e}{_#l!2#erToZ+N1M;h`c!kjz=&qZtpiwL6|4BN%A;N2c$*G7q4bA6fyIv>R(;sMH#03X?i5az){n?OV%vxu@d z^rql6gsgd(qsXlkZ1h&!tmVrD!iu9!PPMsh8;6dFX2m{AVx4%lWtcH$`q)RSz=u9w z1ryf}@hTt_=y|JPf*d!VtO5^)BeV)G#J}tO$BO8l^du3u!#uarRd3n&MF}M04yhq_ zVrJl35v{O~L!`zc)WDZAcxUrAP{E%QHri3(-FVR5Onq#%cJ6@|Yn6hnS5ld5cjTrh zM;&m7L&Pu|(wr>xV*BtBz@fl?1Vb~uT!8~HP=QyS9fjww#cS7UTS*VmddIO9u10ZZRsBK7VzA2nKY&| zOu|txmnspqxd^p6eJ{(jk|Hf$Oy`D@nY~#t+vhlQhcroU%cy*-&g}Xw?f)I*!RY|m z*mnrnpf^y<`6890Z5Z_2Lj6k3&Sp z*mJgX1AyLeJ;2{) zYftBx*m~+UNNj6mQ%nwNK3`tgbSdz?J>AE;A0&x5|+ zG-5)dT*1YW)_Hk0Qk}6mA3E(qMnr4B58X(bDsya{#;zB+e$q2fp&RjQ+-vH=yyPbt zPtzwlqT3h}UXrC0#Y>qWx?gt5WR+9m_nPp5>)JfjohD?cOp* zxWZiM4mpenr!b})d^*mNBX+gl3Ydd`o5hkvVkV?^t(h#gM8FO?k>s{@_%Yw{iKMk*TRJ}T7_RSHD|hbd`qdvKI@nSrVQqzuaO zTpxiUO)Zo??y4FSjs+-f75U^0PYfV!gP5M-rcCre%d#f$LS7)lz0Aqo?%LWKU|&ws zt7XXD?&fAoR$3!s-XXIjyZ-rmFqEE^#*jr}yCf)51AmGpM5Z2szU(uJ`g;6r$$pht zJ9?nC8;3YRokJM9M6ZUVQFLIeCfeRFbK4fovgk}%VOr5zb3Mb(_I|CF6>+{fro{V2 za+D3171~jNLgJDL`7A<~mUJlJMBqJkQU|s@=uVp2Dg`KFCn+GZ#KB*BRGyYy?NqNsro@uLN`VbbVE1^|@C4y1Kcc`flDRO?6L(?b}I!5}_$+>rTf zO{GH0wo%cEeO&W-;2gH?g95;_3;DW&`G?yl0$;P*2`%RvO~vlXqw z^4O+Ty(at#AEa)Dl*7aKwpF^G>L_1DQH@8a9tJj>bxIz!T$l?fs4Sc*`uo^1xXR`W z=cxfpu9cfokq1f^pc?D@p&OxxzFkMI5ciAuqi4fBaKEU9ywJaU;H~>^og$=bXyPN9 zI5Dg8E4N5U()#tuJo=pGexTfICrr^W2zp>LwO|lv+*WykvQ>?jN=(pEe5v%rL93#g ziS-W2s)7j? z@u0ViPP5qO)pd{!^M#7{&C8Vp(-O1kWpuR?(=YS#FGXrba-X~!hajmc5U_HG6{Rs~ zO7y_CygEM#SR{Gi#@(Zil!SSn=~q1A zn%c(>I&4;V7MMVJkfiG?qlQR!@vd`&b{=y^S4gve5*B-U;}))hvTn8<2z6?eCKdxn zl%Bk=QJ{yRa}RpZw~eJ{J~Lp(bRYwlfF}=>Bu^IGzRWMthn_{*uuerGnlhmASEIh@ zf|EQB;c)2M!tYXS40tTFxJ?S|9r7de@Lc*1$*R?Gr)P^cU7)haP8|+FW=Tf$x-lR` z#;bsN<1AU6CCd$T1>8`VM3^+__yMDS1pN^QfC#xo6-G?;m;M7RY9u>Ao69krh98Q=bz-&GV`ppxujy>VVjg`z;5JYQm zplZd3yj218HDi>Tgzr}-aLQnW1ol;P)mWBJ5TW~wB0_^ z(fvDGzhZe$URRccjBm#!as)`m_uIm%t8aOvsh7f?uJneJB4;=6ai3V-TO;c)ccH;akHKt6CR0}r{Ql^A08duZDvj-p>;!a|7 zg#^t+NjC)x?6@S1nL-Ti#m_;zQ;U*wT4+gfPTO2)i*=$S zw(jEQa09Ol2on2cF#_po%}A?`1!fi|uHR3tdD(Y;cM?y4A5TtE*a=W*BR_&8R1_t} z#W_R0C6O5U>8&x`cu$9g47XD`R7;kpTLnDAi${J+b{}5M!ljt!v0s}(t=QtQ8N@9d z@3{Nl08*4pgKuYEuPNc8RRlhAPvW-;BVe@mUU6 zrYMk~Lcp@jSS^Gs%QRReXxaR&_6oq3r84Lx2QE{#;}y_lq_j!~@Ul5O8dSiSm2$2E zm}MBRfG{iJ+GL}jAH=M*9vK)jV^vCl%o}=Y`s(mC4riv1h)O`SMYY|+ zAk9+#>wubFPS?*2Yo;as(fHYHet|8LqfJig=YrSe9X^L%Q7MQex>cnPy|CwR}Wi71){<>s|t?X6EWLV8;qdG69b% zC+64CV=o?h%-nPHfsdJKn&8LE2E!ZxWCaWuAjrxXSQrRd!R%0B$Vz8LO(3#@VqRV- zvdl8GKrk}REvGIVnUS4E1CklmzebQ`DU|B{30C z#yIwvyBT!-Bz{Gk+2!D78K!1{H#4y%1kD6G8p@f*Rym}Zdan0!fSMiM>u(p~nC;x- zmDiD*mKNw|Aw>=3q&plUO)V{plcs*t2R(O7lmnaYb2E(VuzoTIW+@%s!Y)}@Tn?L! zXLPa+B*ndtBW7@ez9W)Sjf9r63Lvx0)4w?k4m)8=Ol;yHr#*~4kEN6Tev)P19LlA! ztFDy&0_=Up^o<;L?~f6W=)MdFYS zh3sfc_)g}cI21TU;lw3;*5_yDUdCFIrs&bn+@hn9=m8!(#M&7@WdL`+BSN;sIL;gL zSaS#1<<7*ZAG-{C65;j35KkmZq3S0OM3vf<>pV+Zljc5W4 zOue4uD)uBXZ)N@9${1#c(CrY7ToQ#-@PV+9_rTHa{k_5Q(HBk*`un>dX8KMLvI3>Q z`Ejo|nWkNKCzCkh zVjGV5T{Vge^-8UpJMIXPsCKy`xmYlt!YLqQxW2j7gRtFhx51%@AVGAh3LpPuYOQih zL$t~lU@YAnD4ht7YB3wco+mc0JQL<|Yf(-TD6E*9_Q$mjv-c_7CZw>`p94|LZp2c5dmx4P?A*yTWQybBV$ zNZKYnus1xw5%W~{6APNblr8zCvz+mIs8o8Hh#w3vm+479kM)o%wdj0S{Q%m@W_3=D zhE~L4>{vnQou3Z$*<$$5#12%;@Q>=3fB+$f9%!kV6dQtW}&XS-{+TV`2z5rwcH zjuhVbK>!0p=YEL+B*NvA5400a_!WAurkr##`Es~S7O*TEdmgg6ZQ+E4%}$UXwQagk z3V2a1-Kpz)cyuDXPck2oKXQF^;`%;zPESY#qu4+~q>AuaT#{sM07_bow{BD+7teGbf zx`ZEO}_F*UtA8x>c1Lx*j^=scR&3eG;+g`SP@`@1P48*C?KKX#JEPw$Cck z3FlZUs!y0n>STf@rzkur7!T|Mk3ylszp@Jn@*l?thS4d4hQ3HXB_q2mO(ae-Qr|AR z63B&yUBr@N49QcB!i6sHm6j|i3v*AC{z3Je(`Kwl2Hu}8ZKewx==;RJYq-CGeouUl zl;f3L9dZaIO^y;T8FeYwCi9??Yy$yq6ignDMzmn-cn_G z8MLKZr4?W;RhCtXv{b9)S~yG9ZG3qsOO<8Mjj>c?(k%#KDPvzM$6FGXp=|VsG$3Vg zjKu2{%;;eE_~fYne(S^ZV+A-;69lN#Bf^Z;Q~>NWH(pc~yi*;Fs7r%@Dz>~`<3D{( z;y+2r@@kw!W`KQq8Bu6t*UpGRW6r)P1R68-Iq+x91m{AZ zF_WAdd&W%m)j^&yBX<-beN;@G3`)hzHFIW0$SEMOFnpW>`tzXU6p)+`8>fKi{Kz;3 zgkK?CoW`?AQKY52=05h_2v;1s*f>O(C}%Gg$LYt(Nwx5|6x6Z~=CY~vRLNx6=01-D z?JGEv8a{)ZvqKnAHBN591r9>O(ZiG>kb?;@d7BsTl$;$h_gwyq2Ztz)=Q2&3p+30U zJ=95VL%>!+fgj;h7F7(6#mS}gI^?$xVPBjwha;5wzDAgNheGbQ_z^x8KES?uQl~N| zOR3Kn3sF0V9@vvVU?jt2L>~y}`cuTaM|Z22`RT|e^@`+Fq!*Sd`pBGx-B(&UK$<|`DliohW7*yR?4>7ztmq$~%q@l?9j zbd$O3^e$i=Lh;S@hf?ctSOTC#%AJg#cKGlVxTB5+RBNJjwW% zJrQPEPMdAHpA>Ks#vUS1RvNFE88W67GXYQ0c~6$~WqHZAj7K~|-1+Jt>$+2WST5C8OBX5o+JFvKjJ@tAfA) zU;*f%FzU&Z9BT(ZRd8_tx(LD^fTslc(Q+I-`v{-jZHW+|)^l+8F6gc($%k~VZBCRo zULN2C5Oj`07NhwThAKdi_{tF|fO-!)|CsYLl6fYG5I90Ta7&&@$+LLy>=}6S?Aa6W z{5iPEnQ3d^obTml^Y)W4;(5>NP{Y>ui(uC0f((b;mKdVwDBs8)GrmFnI(UyQ8y znOrW#qJn(2G~I1f`;^@_sNfkfJrNrafbjr}$+ zo(I3lgp4eu6fn!9MAzeCMbMv0;DhBHcMergeBPY2aA9g)5+@(BNt!j_?uelbuxnUF zwV2so)Ri(6vQR2KbK~TBaFhPPzj?4JF9_X%b+)m%qj>si*28yPTd;#LdL=A6A`^r;<*h4)^ z*pHC!G^V|K5rjw!Bg+=RE|jIEm_7p_)uJBQ^UW#J>s}2XX$czh(%VEfa@Lc?(80S4 z?%&;6yEnquom;DOckA@6=)Hr%e%el{-;?+|K{TUsg$o)EmcoS|zauiyoJgJG4zXh_ z@en(S(lkS<3}Gu@BcUJ_l+M1sR_F2D2_kWLj;3-qBhhPl7qx{m-A4rbwFnxXwY9ai zt=qTRziVr2nSZ)zh#cJFN6?yhgVwzf`RzXsN3EwITGlL&^dt<7ClwsNn? z^K1!#)=l2YtsZDG7r9P{cDE(E9*3h2|9PXeN|Q&^0MWF3g!6YnNGE;dBGT%CXG}?K z!O$MN5wfE=M9EtvKZ!!uAF=%Wy&HM#gH%j30!gwV4kse*M~9G*r#N)9 zFU4(VZa+$h#R@P=T3Q1?riR>6wwjQtT@Idr?wUnq1+*g+0_X)}=*JTjx;Efk(e1ea zU1%k=pQpvNq$liLmE$<+AfZ)O4Gk?q&nLG0G783tLy7*-W${kzv_U`;D99v*t!b=q zOsM)fSxAK`t)`Wwd1kDr@XcTp*gj@-wvqpvB}=OIVIp^=|=W0*Q{HL?|dJo*Nrdk#CP^)#s8TDXsd0kBt|J3oq`e zRtU8h(_XDquD1%BO*jo+rgUmyl(% zEwl>iaZxX4Sjn)X;Ini0DxJN0eNez1`z9<EvQ9%(*LC^Iq} z1M9amg3mMKh`3+OwmztsX9c~G6g!|K8?{G>e20n27V%ssGc`Gz?ESt=o1k0t6<)NM zdvL+`N4^`;GVZ&1`UNu)R4flbor+4AbmYj%q<+3s^jFn!f&DcTyu7Y}V*3ceB z?U2-85wO|%KfiKekiVtjS{z)91NHkWEe>*UDRsm`(cCkS>(Vh@IDfKZnZZ1z0QIFx z*CT=e^m9;Wn4Q;1WLq%Ao`XWuCW!8OBzBwd;b2f_Of^f;Gls4YwbP1LMO%xb&pIt^ z5~Ygzl$?@EHzWr|(DlgWbWu{Ua8fgrFJn?lyG3MIa9^~}5x~fK>diKvx_d;EHQ=&D zc1ims9uB&vMy0e)nlj@76JZdAkX_Vf_7O}9T-*O&(6jwc|L7PT^!Imr;Mp_K-ll_~&8#@jpD*#R z@9iE9_8uOn3Ercs1@>v0{^6l1ML!6XL`!eJDIua5d`-l>8lH|_2^dWC0GEJMM8%GS z0uN7-1KxadY3bQB3%EnjevcnWIW8Rem_)9LIGRKas_%x;GV8;((OnPEZ`pQG?;=tdFpnZHJFi3O^%RI~*w;QF=~I|#IR zuvj|^JaL*P6icw|xOOBZU{Td%$t@AN-vT#Rz$d_WeTTN*ZCYo*V1X7|EW;TpD|6{S z;=zj&D}uSMoK69{U{L!0h&9Pse2VPI10xji6qc2`yU~Fn{MOp3>)Z3^!14eLg0}7= zBz=+YX0tJN`ZC6VyNXP4oWx%`=rkT_tf`#Qmo>SHT<|$MOTfdo!SOr0;PBzj=YeH` zQ%J^3OM5=Rp~JNixd{~mJ5f~ReW-jnCW0do$0~=<5?h}-IEWHoQjtE9%gB$yDZ|cf zlW}>{F!tM&Jvum$M|f);y8$caeSQ+nZjz&ugoUJX^b-XFI~mvc-h6s#9V&Da!uUk? z7=uFz8S?B|I?N?Jw=laUFx@TC2G5_ji#TeNbDMn>!(ZGfvV$4S{qyI&XU~9*p@)c# zl0>o$)7?yEX=r_f07D-qDOH=PX0~YYInC-kNMTV-wN63oFSFj|w^Eg-l66PE!{@0p zaebFWTyeESbAjA z>;uT1*v2qo;>m`-j6s3I#ZOHAR5*pPul2hS>a5P0E*G}}0m}*}z_Oxf3M`lYg_zK} zd+Pw5qwp56I1nE&w+j0v8>H6Ew&V(x2tokX+dyvks+RZ9-?ho^Lz<7=>-w~zq7`#eRCw2<5?6au#-T0OttTc{Yf7+NYcW-KqCuTuL1_@Vo(hjlbx&G)Fj#6!six|1=HOZ-=x6VYN z0FpgNOZMeC^jrr+Q9rH#=Na>bwcg-ARwF+e6nw(KJAJC$w?xG3o)C%n~=V zmnnDF3|l6eJ_ubu8iLjv#Cn6&6PMYY8w&*g1Vmx%+hA*h{d6aTcsO(~K+8&bW4mdq zK#=8CbX5>$e;ZrHr1V+y*E1zszosdhoi~?`P!xwk&0~iiX|xerXen7fCQP*wI}A=b z*KF)7k%@%lXMY`G9Ay=Z7DstbU-Q3LKux~oIY%A7HN|9Z{&h8H-g>0`gJl^x>ejp2 zW~I2s1&Y+%buUuT=52)?rtN|~Mofal0}cew<6(XM$YMg8w9ua6Vg7H)*#egR!K+7dae-nURgfBo-w#c9u3zVqR1`Tp4uC8YQ_GI*v?Q zIp9p06I&6_s|~jD0av{0XawtzH_>i&23v6(^27sSH?wq`-ZBnL8>7nRS29Y9wFf*2 zTn{mn0%_&~uFpa{i0h9$Bw;-`!mmve4x#Ins9#yzr7ZcTpu`N1OdU0Tfk8ldOyA|D zh+cv=1vPP^(WN6E$C2`~mFJBn{0O@~Xg&5@N>WQXcS+L9%pe(qkNx-h4<79fz7t(A(ILpLjOf~F@+DH=$nEZ_o#Px2(BD;5u}m7)v>>s4Z!kD&Pikf3xdf7sA^?HG|2Na}Jga(}Dfbdq-~{VB z3j?FKaK3;V3<`lw0%X&k$$(G+4b$q%8gPsA$K~4bG?4f2SU{kNiNAK`AEkrbgki^> zITKtkO6*zEB*GzAPjExv-Z?&Dc!XY@V8kkbV*HV4Vw)RE%u5jB2;11}fk!)sb(0=% zA8MtiD1hwh7lunE+{l>oZ#h4TSD9iRR4?%34sVKu!H`w6=9FaS=xHgL%*c{Y-4Ujw zTgV{m-UenXPB9{#nts+dcT8#}Bu$_c zsah7xFhP@i63VgBc+CX7)m_nqTd;N+^-DiXDrbrj-%sn}WQm@kW#umB<{6r>^}x3Hc@hd7&HNI{QB%!8^%WP{Tc7#s06mv6=P%Ti@Eew*Oqov*7(-@kw{?u&>Rm zIqKf;yeqbciNl9^J6AJ6B)6e6*m7Tn4ID7U$JuxiV4p4CqH?d;PEU5)WZJgc|uGxC4)&f40w{J)B4!SY}A4AOk~bSDh6 zd*93p!o2Q(*K5T~uvXM8-dMUm)Y6jMYQgJ#LAX9VQlBRBKX6WGIsmSa|Lf~_y4myJ z+ncwq<^NSYmvsIk#cYsxV`XK#;ebUu=Lrf9c=&>Fh@BmmgfYXlx)(bm6kYEXURC)o zPlZax(8Tro=g{>Sq94nzzA@UH&DnB>?VI4W4*2O`PfdR>3@*L8`1&97Jw z(K);0_Z^o+IGjFkC$9Ox*p%>k0iACFO|Be0Xg-k&w52$3V1x!y2qQF_@}&AZ-VPD| z0-WTd>N45O#uG@6y+up251gMYpM)jqAPM2&ACGIGP(D$gKD!*6Ib!B66B1xX+qFCL(^KR&(Jhg zoob}#NsDS&BrHsXrK?h!Sbe*gDWjD$yR6HSjj)Hp?9!~fTnzJSDU0L1wm7btv3{Ec z*u$ggAP5n3wy{s55W0S(wO~P#MYU%U2a9XnAarr)M$>H%5~4R$?vvTfm?L0b*QjvU z%b&U2TIJQKdl>tXJ3$5(vR}-b!ff_h6`!%tnuXQraqJ9`9kVv%qbTp4O!Nfi;Y`;X z7`e=rG8IEQLs>;lOkPzpG|Tv=GC#dqr27{F7}PVGx3jR|IvaTO5DFI`{~O2s))5hZDPIBF}8SmO6*NNb@H0) z!se}fnzw=%F+2Ud4xf;a`jyYZ&Wm};w|erq%|>5Tp&MmNY}}3saz9WW3v^Chzr!%G z)3@xVhDeU=VOY;<#BhhOY90L#pl5U0JTZxm;o-4P@A!{18UtURrF{2x9_2DiQC+ zIB(e$39Ww@M`_8bpfQ`2+5>CFayZ|zbtH1mx>`o2v2ZRScIjfevh2nJ zyIMLpFoGq5p}7AI{b`!iBtB)v;apgY_+VD~>ku$jxS80CCP5Kb(Il|40+<0&zl)|vXqf+M zgkdSVOUID=3{8_2SZ|Gd9rK#cGX?jNZ%?z`%gWaRT9yOA@%+Yok1FgXr zi}}`RrZM(X53i;pt3=h7_1)YYsleU9j&%H+mT4oVQH;4vzar$BzzA z-tX@npB(KTAMNcnU_4)5J48|FGHZ|=>KkioxoVZNF?g`Mdw6oZw_hYX>TyCmgo0z2 zEt!&+^*I}ugB|(j@4+zFw2RP@HTpF*{8-NJ6mz09Ct0o8~!B_DfP>$M6wH4|u-5s0eJ z=Df(9#8#;RpQMK&KFzE^MESBH<3zs11#IzEJ_}4?xtidKn|BB&8e@V|3w$CC?q$;* zU8D}CX_p&LKtRbU2r!<60OM&0edOYL0^^Ijt((t`o4cNsk*@r4hv0(`fHed~`Iyc` zGlLI5EI7_HaB*|lh7oApEGF4nG0@S@^yI^40CXmWsDQS(|Nm|312fa;Rr#;Etm?S_HB`K zAyeuCCWFqac{Z5pW1J3QhP~_g@M)V5*B(=sPXAHjCy)_ zl@&|P`m5=3^>TP0U9R`@tUJ2J?B?d($>nx& z`(GIRp$9uByWe{F@aTB=D9L^|vwh<&#^?Nrob$l4_?tF#oDdOm*TXjS#+XDVAMXOg zdP+t5aopv5Nb4y&ZF@}rw`2jm+P6rs0ij=ymaKzxvF(SWgf*U=P2>fgJmi*BPp~2$u%icA+yZQsMp8{}Gqj%fQIwUz0ax(Mjma++$$zUOPbJd}F;AI^y_8K*zg=dC zf5>NUY+%WexO4+cL5Y`OU|INX@a5k-7ifqx4$9mXNs->!+%u{l)kV#&$JdYCAg+UK zxcHcjgziky8hnHsLN!bSo4wm{!ydnTO{?x=?OBDkti*jnpN`dNb_r^fLAx*R#0A(H z>)9Bq>XqNC==|*0uF_>lmU>c!OA5V$>5glbEtwmkN$!dztL`2RBr9>9v{nrd*F437 zWb?S6=4)8x5ooArb(Xn=og!)%F7PzkjfI|J7Lt%!BU4G#xUhFG=2rbIm^`ZD$ILL!7lkz1JAy`)S^hT1cZJD+uIx@*z%1>HER_Un4 zArcp;ABS)_bZz0Fv5dnS96!L&xd%Py+bC?U)W~pv9dwApsI?-hXe_<7x@LYg`Bc;d zjVn}?*i(`Xm_mL;w*X=w7kw=S>8~VhfbGv!a(Sj&E*oO^%h=jGT#??*rp|=<)~)22J4K8Q9t(7u4uN%FOMRyTrqBV7Vrsh{b&WOC9P$4rU;7SHqBJ) z4>_e2b3IEIpb)ZdYN)r=n&t}iMmpHDm-E7&dF_|gHyO$t4iRQE zypz}%4mBzjrUo&^nL(k-&LBOF4fckLn)t7hVIsTK7@S=))q{@X(j6@H1OtoQAXk;u zWYe6h&?|9U-YCRzz*J$Y@dyThN$5FiQP3BRbootm*Jlc^+EZu!53z@4GW?6DV*T%K ztli11|7+c?>-*oYmj74rT)F%&5dW$0zQ;$}0v3epRp2FB1xS4Q5wat(5NQ4ZVuUc+UhE!Fc-<-$ zPa8+ovz`o|qKnpzogS7OTw4|j^B%&5sI$Yl~;LPk!K|tp7oJ5asB=|bUk?L ziB3@8Xl@%-8OsipGI`;}BOhjp)!vmAY{-1ceiRA=^LSFQp{BS@T!CxFR_abubBur5 z_HK)KnyvpNf)N_V9zjt9J)nI3-`rSR&#wO)n_JiRzbknby#Ch?4R5lztD~-9g&&9{ zgX@+3)3LIP@j?n#OYwOd$G&hh4bizvhs8TCiEuc5;7;7AFmpcX_4+#h`bzm_Hrj(( zW?g`tedxmxnjk+igj#4VnN3-tnZ@l*>NIdCiRuQcimV?msBXF}VF$voDAVCbsx>ac8r5iQy2_R#*zPUx> zNoi1enR1LBL$KPs4$6h}XMz=4fGDpqu{0iPPc1#-U*k}_dipT-JbsN4U0BTXIUjMD zwj;5}$ca4^(n*|t*WRWe1nO%x*76YxjYu0VY0V=aMwWnO#&UlyWGta1)Y43V``^DI*9_~r-`fiS4nc_MbOY0n$}EzhNh{mRx1ZjTvX5clZTQXSjBmUC&uX zRuaAOMJp-JW}P`E*bS11nvD+7Et#?Me)ivk0?>`VvPn_0C= z(@Yfo$|}oSTh$zvxzdnR1|i>lEJT)P7d}-<*@Z63S#vSl(qbbw9k0>)c^pI(B5>s= zk^fSqBj!73wD<*wZ8%u7ooC+6R0MaDhM;ari{QGX$%iH+bxG(?2(8O6iOQ!TrW2nA z7Y&n0%%41Bp`;O+tLyugHlh$2eVJ(^st@V{*|W-8&mG>mq?20@@LW0O-0++ul>j6{ z$km&jTHw*&)4p<_oNQ!e9Tm3c)4@f|@(9nzsis5pcSOZUkMfTyG(=_Qor?4YZiu?Px)tg{w;tua z$`n1h3(gWq!I_ z(Z@_my!6}~?wDN#sC!y2K2*|o9tQ{FXF;S2uwP}}%r_be@M=YW{Z*IzF3%-06Hdn6 zM_bi&xd`2bqVLyrGdH2G>Fm}C_RO*GdGf>Zqdiyp!#TSsUG%Lb9+<}fos}P#Z-CDA zzmNgit&wkw8@?838!8}oA=0i$TC6gy)drO6Z27Y;j&aAZzaRO)%FXJsrzKA|*ZZyL zZay6nck24&N5(F4D@eXAYZCML#11 zdwO$lc7AmF@yB;(=ap-09-MXNI4AE;&p*EX`OSAnrseqKVlOMCDeWxdSh1O5`(F3Z+Zwv1IvdRcz}t5L?1r~uxU-y3Ls75KRfw6Z67 zD`-`ceWeL@>1NrO_-LMtswE4%pEx!vKTQRyRdQH}xA(n|^YTFvMo0g1etPin`_~6Q zoK?`WQk^a{K#|hTGglE|9>w7=m`3lyf|F0#oX^e=PS1Zn`S{Dh@%hKoqw~|_qq!zu z9MRz<;uNe52Df*&whBwDoyghiqob3L=f`iVSZvd|2%nJfoWgaEna$3P!3;Zg6kNW~ zC1pcPQ)DwE+$8gNy`zym%;B3E6_iI)L5wS&_(pI$d{actB$ZhynFy+H3hO(*$@Z2l zT257wrJKyNyywa-oGaU`6)o44>RhuWI(jxCZxNYpm~Pe@5t!API=CuNYSu_$eOa3F zTO4yKDx^Kv3X@A=HJQY*mL$VQ z6$!B`rSw^Ou?us`=f3W0j~nZ0E9Nw-?s$wf|Qp znQ~6aFXUrh))C2$x|B1rgap$Sovn|_`k0(%Gj8WDql#&}mvvBb<1Xc-EF~3rRd?&d z@|7HxwG+@SI{|&Acgb~1WqI;$TM4R3-;L^0c;{hPW-*hEdMegU6*Nk|)-UrOr_|5c z32(0V+F9;z(YBEp=4J+tTk~v~x9ci&tQrr8VOM@%`k*yylw;n;I(;_E<7{Tkg7@C% z@;LW3E^pbiFR0%6!t^)46Go=xyv`V=@jZ0Km^HQKUgs|5GUdjXb5fe}y5v*HctrRY zy`+0^w{xrMdviZrP;S>Pwn}lDr7@LhOY^HqwJK5r-Kd}!z4`U*zhA%lc=SIf?@qy) zK{tPyQ-~DA)S3Ti&OGXN)h`bAJWhmo=`$DmV&1(da>->R4c`6(#p{N{~VIh@V%~n;ce<_xr^3Luh2%5uX0k`;KBmz*00AIa3w{e7<9ba`Mv+GPXkVRA!8j*>} zvzl&GodqR)sY%^@x3iqcN_wwrQnF!ngb99oMfpDZ+~E9K6yO%lV5axE&tZuqIQLV> zoB=%toUBfz&itW|>BI!sN-|pKgMgv3{$+QMUD^It;?G$t_U8>mr%HqPSWRNj*-NYn zl9i1mGgq9fT7|vWNzi@=@P+$mQ*Cj$o-KHQ}W!1Zi`J~OWFz+gr zuhRCIqbh|IUh2m`Vj}WdpokbZ=F=IML-fy*a2Tj8W~lDeaeXY(SVC53Gd2dbM?M>1 zKdq+z?lh7_GLtTZ`I(h;dVzR%W#csp%=FpHg^=0E&+GWeUtO6q{_~}~{QM6uwsyAi z`My@t>2dKRT-7I)Zavs42vZty3q>dpKLp$j+}M5G%-@c8jITp7Twq zLIPb#6nk7DZOzUdUaHs5%4uIBQr<{{EbDik6zE1!jHY3gv}N`NA}QL6Q+dc4Q{DAr z5fOfTlF9c{(QW(C)NbqTOq$OCE-y&$4~Nv%_vssqH=6fr zhQ05wj{}$RcBfI3x6C6aj7RN`UTWzKW-PmW))}f*1&RfhRbAb;DxQIKe=0Q!joejV zX9Uxp*?CEL?PV<$Oi&vtW>mA89iNzu%>FuK2eXx{x2(DcK_KSLK_=*K?#CIEDDC1# zvrsn3(z&Ql%hGS^$FHa4nH5@>kY#U_LUYqt7r46S6?%ECRNo3Yi0qh}lawH9MBhY<_DBwzs#Q?d9x0ThCvt z?LT)?mTCWaJZ2)w5ZW2hgEWce&`2exG4!-90FY_P8H>!-aT$F#cx$diC3y|7P3Tn( z`FELh$+{ly=o|y>3isW1$k`?Ji1$9rI@&4-j5X1AhC3*_9dSB2@O{+&t=&e~Xz+Z` zBW?;HYl)f5^W=lBS#bvs9)s0ORPF`o^fbfD4t=-4Z3@?LQJ5MTaibPs1#g8R<8I>8 zfI4UcWfjTnu5`))$#LKv_~978jVJnMCU*y;gx3WnP=-5YihCF0KVp(3NH?0_Y@CDcN~sWRkWTTHA&r3jBydaYM~U-7b&s6< z5mQb))ILCOWUW`gy0G#3*K%3D^dG3wdlFem5SjSQEF7K_TBX0=rW z3<#GZU%hWcyJBC`p=_E~5AL;7;MY=`*?)nsVU_H5elze4|G(|M7ccVue>=~%*7o1K zC`^Yn!j}Qs9R7Q^2?MIr%d-yM$r5imOjMr|?lEH_K{=ZN8tpI58Kq+IxnK4zf%}@<`P>J& z@J#h4o}04ED1(O`r^>|Wpz5l-t7Iv-PkL>z)U9ui~X`)K5|fg*Y| z7;OUCkLV?V7$w&4IPhAJP(ViNx_l$#WJo^|4_(n{jQ-wn(7V8&A{IbPIVBVlj(i#r zr{%ml`*;>HPFj!9A3W7MAi-M#It?fm(F_I&5r`uyKT z`Om+1yIlw|rbEW+8?bKoU#-?7^qsn&G&BGW88=m0EmM~YgagDv5+D@;WE0|w#sQ6{ zU5{K6pM}IjXaD^=x%h+2Qo>O*#*u7)MLptA5e-l*2*RAjfrp|oL063X9`a%WIIEpzDn`r2hPdYj=5E|q%-^T-{Luvtq@ge%)2t~vlqao!J;j~&G-d##@ zg$FTFg z=zL5NCsL^d$`~abp$Q4(6p1I-E*H#(L&9ZWvR`%;sGg#12M~`rpmOPQwGw7*C@W2n z$A|!TFFFbRDZ;@N;o*?_RDptVDOWKrh#c8zwH`e}=db_c)oH8M@Aq962r|5&SKB03Q{28NzF!ioF#1Zz{DBT-99$14?oak%^V;#_<5AVxk77ncRC3C!{yQG{^@o?;y(` z%)E$39tnLmmAivjAcy-YdBBs7n0eIGN!rE&;5;Vi!;i$Dr1j;7I%3>O4zlvo<4)!j zr)L!l`#h(JF0l+}nnuRQ0SJOT?_hKoN`*;M4i#xgPEoc|#{x{u5xP|N zK4G0hgnhvhb>xTRGZ_8{@bAHH2XBsgr$;C6&W_LDnZGl~{a@%Ui^x9umBlC^#FOV< z!~+r0D2@nBDfF>R#vmsN)X((YhYjfGM(C^MNW2>o4$+z-hNdj$3b<;?hA=@FoP)zgBt7*2PLMo^U9F$Q zH0!HC`Dnu(6ZawoCW`RDCmjc!C6m%~p#l*hRIo~zP0H+~RCD1o?5PcP6H{Fnwcjza&@>+NS92mQ#d$fX2JM&PjaKqIkfYk(seA{8!+ zImmNZNCr2-Q;@EPv4j!qRB@jq6%h{lo=R520HubEPqYLUq&S(Pu*GrovH!q^L+VQ8 zu}Fi*+*nqEt}4WVp2u7v1rV2n5&R=Pj6F3@H-S^v5>z^lI+7nwnPM^T&(QH?5(A2( z2#+itD#vha87zt;#wqqi4>%ay8Fjhps4LrABXwG>V-WjA#91)%r-&1|mn85~@=G%# zOQ>Lb`$%v}ISb6;m8UHbQYKJ)VKMYXB6i0R4Ka)66y#0<{y04LpUIWQdYWD7>CZS@aV7 z)KhSf(6R)~cwpF~#0Fl>3xr3a*RdqjzJg|iNBxwX=2&%F=jH!6zdHZh*ISLlkTdL# zLG_eUB32?jU<*Sm8cX&m+Y02<3xZ7aZlPgx98gJ@>7R1nhMb78Vo`xh6u16h_IP>1 zzJeOCFhEj+=zy=v?vI4aX&5P6T=f(kbeOF!snUQL0z|wFm;)MlgELh#1L^}Gf(%KG z(g(dc300&y_!}IWu9XLuITKpYOs1$Po0*N~X;vp87DAoulr>#aTr$C=O=hN2pj1)| zpeLL=c1bu-7VQu4F`)tth>Jm(&CI~)94-r#dW?M(fz%=qPx*N$G68{7*busvKTKf;JPrc2Vvrqt zf<)|&br-UNB)57HMOO5p7`N607FVa$`ejT4jj=d0Q6-a047{RZEaw&yE;%W}sLcY> zjp&555jLXkg~n6WlhI2xFtogj-7zJX%Bq4rPgPCeV3@BOUyi7_iZ)aM)3P8B_G&O$ zOZaR`89|KMRnmqZ)Kbm3Anp@0p3MFL7LwVo54A1#PvChp;gk zEiLW|h((B(8q0udhYW->!_YPW6|t~8F#&NHM?M>kF zgPRT!-%En0M_rw%rPtB<8;}t)edb!0HvLh`5n2XRsP9d|(r3OWhF!Sw9!!n#&OrwO zGI?Cmjfvi;IV0d`fijbxFLhp}5JUp-K_?s$&KVc#j$Yz{>=2~#bWtY#%%(Dzf=U!~ z^daIb9{5Cz8H0I@Vktj^ZK}|=M%7Ot+#BLQdbwWne|N1&^(nNq9(LgU9*am0KcOPI z04U5x?L7EVwps@Y(G=$KIFKwSU;#Wqw?MwB#kGLAL+|~CZsp&%^3Ybv*tT~B_h|@s~N7Dh&0um;A;ihd5Nc=vutRA2Y?UoatJykSN zd<%9|nMe$)8B(}TBJz;vqxY*eK`0igCX*d>Fiq^ieKo>KicH3-yf5e02ga*OV`2tGEYgM3>(!~ z8C6t%>r;K9)}OuC`gpzq10yt61lv%|xE#L0wRf>?bZeil-ogn$0PSsa2oH?;oklgPMpL|~ScqOCH48-u%X zUO0Xw9CX5jfO)8U=Y5cK(FP8~^din95s@=WY|M!_gh*%J*+dZP18o?Cuxtt-)IJBG z|93W}gsTH`dkiGu#Dbhu?#PXjGwGvieS@ZMrkhHGwQcn6yow##*B2BSph160N z)K4}0xtV_t8>H-Xw$5QL95<8}p^S7mOz$#v&PGTwTz9H6FzHL)@=jj~Wxt}ch-*)U z5c7zFPLSwsW2ORCdz+c8MCOFi9R~7*aXwe{z!~f=d#4@$b;&0 z&cK?9?#F>-_kBH+{9DX^QePi7`-ML!>Yyu2ebrc$(zMwdA|7;&OOU>8av8YoaN>26 znSB1M1SZx~svMr^ndsN7OPNI7OoTfoUhEStDNA;DfYxZTo>W5{>Rvk<j`F_| zA&%TJ3YjNn?M@kgasQiGY4-n6EIxA0!EgnCkG%fvY|F^ zv%&AgRTq|u@f95&H;CjjV5|e5RpTer$?j9!U)e=o%dH$gFkGT^!UVx^8rT`vMY-osmVc|mAOmq)@gR#&vOG!z==`AlD zG~1mIZQ&CVwl!$VW`g-hA0fFrBeC>pn3>Q(C4Yg*sIyZZ>rx6#hw8>ss~i$bb!DU@ zv!RWnPa)wH{HXj=9#b)s!tQ{yU=DygpVY866y-`$*s;FVT6xx{oNTFshdMvXuZovg zV6M~m8EZ3(I`%pLbnBZ9O5<&A(T4&kO`R{Yk}qDa3!d`n<(~ygkB*3l^6WngN>#^j zl`A|&VvKj5J>SRJaU2Jo=qC@#Zw#JgX{x*_^$S6w%@QxN2(OB%qbNRE-%?P9$(49D zR?0dkR0#&Z#&V7N$HTWQ0=MrVDoTPWDDy_pYjmbvW0mV`_bWGe7DZ|6n{~j+ARhJe zO${jN5J3gxvyre~MVRlQo7Oi8N;~v_6|Kyq2iWMVI8Htbh;qcVULW=wi@~c` zq`F|OJo~MsY=7BI71jYy0stHDu)eI=hp@;FI);D(9%N-O&K>&bt7kcor@;9Fi@u#Q zlkH@Jo9E0cpbCN2z<9eSUZoM!ZZ&tbj(bq9QGYW1SPCi&lqQPvOi;>-Un3Y%W2_AG zhZ~h2@PJ&+b-M3pk#|#?fzo0eKMTT*4JfsdrmxxoFTcuioibR)tJzL5BTT;zlm?5x zD(q~Al?Dn*O7EMdKMPU-5V$;=gRh?>qm2?lU^7oVHtY7y7E}cFq*eWfpv>e^NUv(tm7c^y zn5%ggm}F2$(m>q~8r-uoTSV6!+yL@>>Jz0rUZXcG4kF2|J@rByv_yCi1+V-F_7EFt zM@#FeE4q|BI*`>KQfUTCCFAPGLwRoejPFtQv&(JOGeR(|M`La6hn z8%)OM%G<`+Er37=hXj3(lM}uEo znGclK%T;wXXCA*M_mVkyZm2LR#!W!vx8@O`Bg(*>Qo$wt_|66OJHV&d2!BlF`XnqUD}5kA45{IBCU_xrS`pefvc z8IYxZ33K#nh@Tzg$UL*rz6~rWkcOnvhUlP;Sdd}tD`u|*CM^x901#gau;s?^49HRk ziaC0%0h#P?W#QEfWIi1dck24&N5(Fi0q;67?bO00eRf5%Zx+pqCB_jR!W-NO^C%8) z1qAb!av3FyWi{z+s#vntPjm~Uo1h3%;Lrfx+^=dWS2i*r8#56d_!JA$_ea|)i4`!Xo7IB!eqY`- z0GWzrb{26QkQfd$+LPB??Vgs#Qxkh~*-|lCCjOE{IK*sIw zCzwZc<_Wzq^Fq>!1Vus?EG#>kBrFlrzm3^SN~2rIe-zGotf=tpa30M7ygGw`((a_ScN@hj}Cm zubEu42r>wmmjf4Y%+-Tg11u{6*#)V8*flO_6HPmWB zrWz+uYl>#~rZlmaC9|KSR|Df}Zi$7UqhO9lN%y5R;FuCYOpd#TV7o?d6RfI{F;)|5 z4L}w#pYS>4Sm^aUZS(*^HtS$kK4q=z)xIvd_*Tq%=(Y~!fgQ*%J)e2e7R{fwh zIG7=)3}S{9o_5#tdZHUyQDIgXN}19C%PJqk*Y#R_8ow&%Zf0pl%W{!xtoQO&z3Nx= zCaMk6>0uuN@UFE>S?<>vAk&d`RQiSzj&P06NTfX5rXnH}G=e}pI^^Ptzu>z@eHF8} z`2Ma2WMV4ZsK$V%Kz2cRKztJ>QdmKYReLK-*(#MLZ#XzPHW(}69kXXmB5>ErTZzrA!ru)PO=xUW~)ZgCP+MaQbscvzbGl8Nd zBlTj*$2nWM(t!L|f=rOtG>AXF3k&+EI+$li@EtK#0oi$j?s}a|EDhB1N{}V7>Wb}= z{MkO2)mXQ3(%SqUwBI54|0$lkKx6rKZQdzA;X0G%f#p}p-+?sn;mmYdMB zkkd=*lTnca%mK2rle=8@O-cj*vPzIa*vu2Nr`#!hF><&(-b z=`{l~E2w5BuPh5l5>!v!pKsvYrFg&svWWs5uuUW;*!MTlgm^TbY$6}?5!pna^nZ8M zKRRh@JeuB*7S>`O?roHQv9pzCGy8TN2<$*z&T43xl~A|&M&v#Z}yCX}~cvAk(QjUlAWq z&xp$cuMGLFO=48!$%>M2$(kyP=Bh(cO8+}s1yQsTWFg@cj6oH^GQFNay@v%WT_nh! z&2ca#qhN6~17_FgT-AGsFuO+mBE)JyHpJAAIXNG5BF4dsPobrsBf^8mQ%S zV3~+rmk2QvWM``0Lj~CkEc59l35XDLu*`&GX4>B3GVZc8P?)kHYs50^IOfVju>r@- zf~*nCEajLh4=Y_7(6TJZ8nMiBj`=`fHa9J6#4@Wm=7Rv*HR|uq1+qpgvx;Lr6p+or zGET5Z=VO@($IQ09&4t`uX}~daAZx-h>p14hLs1^g8RS0)vL-CElw+F>@em z!ZOP_<^zG*{IskI%dFy<4+3ZnIA#uHO;~0X$9yOtn}ua6aLk#dQO~q!mjtje@l+sp zQmOx^l}PAbmnLp30J7J%NHyE8iVXKbEan6{tF;W&g9C&toe1xFPKIp zu4EOx7C<(LsUOiGIiOdVM#vo#_agB>TM;NW02%nXe(&QsLUI+o7;zfWz{D@}X+Y3W z_Pg{|-D+tRjV0pvD7bu&c~hX72nOXbZIz#aAdwx#>>i_4t~78jwn29IreU0nngBK$ zC=e#t09FEYRZixdSeA+HUDs;?WUA%L!>i$g9Kr<^5eeL;m*uG?!)jZ03UwG`^NIqa z{)uT2y$5giLm$&g-$BPi1Xt9XkQSOu!f5)6ei^6HCJ%CKkeMh`u#%cy4VK{`MYIZd zl;T$c%==g7#4-^NPH;4yjb&%?z@r@AqfgE2U-e1?Ua~@%LA)Z)vAHrY$eN|>FNwyI zAee!iN#n1cAFfcD6J&m~cuCjjbsD@tBG}3M!&_UzU6&?dk}QznW>LACV3{ikStd%? zij;Xl1}2?1%&T|MYXUOW6@tEQca2Lf;43Rt?q4{K$h*KL?SJ=cXc_&p*+c0Dw2c0_ znijKb)c^JeT6%CEZ4|{Z%G3p+2TejZ6GCX+~yLOU7D)pYGuuJOl9-HzCTTp z)F^4+*WT@xp01y0O6Zowhz^;z@g-wo=Sx!^Q-KV^I5&XXA|O+JHw&))MN0#a(SSxt zFycAFSK3gKeb^df6=3cgMwOK&F@LB>+~$TKR0cBL$Af@c6OgHJ>WyOXCcWkX@l!k? zJRlJfNcXp*fp`IAhkh&~!jDfb% zm$$pn<&|sH|L6ABUK5Z7%p(os*Ea$ggl7b}tyXEEmK%_{#RFX3YXgua{h{NN+gjdj zlsQ1=GwgkbeH^$m;Z_7$wlSi^EEk{x^%s;gGs@@$wQw zw(C==6{%Nn5}V)=A-}xmZ=q{T$}uaSu$E!j8NlEa2cuFY3gj}b+*ojgFek`7w1g}{ zc^ottM+LHR?Jfb)yv!k&fx-jyzk!KS-D3iimAWJO6f!~3M!@(4w5V7}@R{6yeJ$$t z)zj7cEXd9UvWDhG)$55$N{n!jxhc0TidSRmj?n~9(SW3hW$%A!;*+64CWsJ}1qTg+ z8DFC_RXH2QxX3m)k&6Qfvi4gRkTzl*wGV;*9iOyscjXJ0Yt)yMZ6cTDK&Gz0tH{5V zRU!%bX0*y&M|ZQ(<&`FeY;WMWoFs`&8uh9;X3wJnI44FY%tNoJ;IYb?`CaUd2&5}k z%yWfeG&XoBEkQP+!NDb_zFdDZLpBZQB%Yuko(u@@g@n5#i13J12HgeTI*CPuM5Ggi zV>6`AEGJQvT&g6zw+E8hi<{~A2_VCtehzSBph;2o(;^_#lr0YKC$#k9X2+E!msHZ8 zAE}5KpT4FOI?ItI4>AcS(~Sm>NjX2kRGH8`q_fAL=?p_>_cX&$mEV6R8L;y4Uv4^J z^so~GBUs=qBn5upX@R>lQUeQviZ@RVoOG2<51jnGiG+_Y$qM8JPKphnoGCX2oOX9Q zWO2|aPLKjzLi!9*NWpiH{im9i8fKdU?hbM*r<8U@vIW;DsVU%YJHztIL9Hp^mXc?= z0y?XiX}MPWvM_F)ZMjftbg&d~>zvEQ(&(tJGcOlQ%{6HTaEs?(&d|1pl7YEakxc=2 zt67*U0DF%z)s>b;fV)vH=2Yx`K-rj4T|Q<@bGW^X%x9%wU4haF<8CuAbBd7n)b?9Z z8p(0X&Ca~4pvsn}fLlCAa|TZJS(+`8`yS`cH4AKdR2R+EoCDmerDbr=anu#e zMQKVSuDaAb&JP53jR3dQY|ak{aI=rs6? z+&cYwu{2e=?lcMeDxhRjz}-&9=T(4EMX3ogQwzASI`1=5fUC;=Tno6bI{PzfERL*m zKo`oQfcvU5K_la|S)M_)36 zL-fOd+!6p+lP9_aMh_!X^i65ptZdN@0k?Yjq8s|hEu1sDA>dXoYxGS4_myUjMmIjH zUuphmq&0_%9MX;CxUVvcG}3Nf6`7>%2O_JVOS)t=NjB+0yEQ5rSX z9M*ZIi=`1)U1ygrmYRH-6@Xjkn1)i5XSxD#>rB&7YO+mN0B)Uc8cI#pxeCCovra>4 z^j>wHd%9Q}sa)#})Wy<>tFH4<7fT}=x6VdgEDO-Mbxvxe09Tb|vkGwQ%+#nU#;x;H z7fU0qy3SHvEH#;`D*^Y_=c-0cx#~J&b+If$`Br(jdP*Qjd61) zbG9D3J)CsT3jl7N(pi;ev6XI;*trhlRyMWsB7mDWy>lJlRyM&is!Q=)LF494@?1;f zRyEBts!Q}-0l0OlXDH2e)i03nIrH-To~4>?u5x{`w9h3<#619FBf#B7^5^@EU1g;a z;O-~|^h&|58Q^Y`2s#DF14;#r>XJbh0k=>(=vu(7YC>q#EY|srl0r8F+=``zMs=PRm??Tc?jsOEVXUbrR`9sYxU~6L4Q`DrwZ%bbi+frB@&XWTO|- zx0hBr2O;3VV$5RSL!3-74U%B4_l@>7^2ofsJTj^7DOGTG(rsHC@4m*vj>L*sP8dP z2%k`)XwD+X@xdo_&zJH9@8)AuO7h_Ix#vsmg4Kagmz)+tmN^q9#4mg8r}(7`%q`#$ zvMb0M9e6rux29MHcZdzqQBHFqqi~W@KM7sBKP&3+9h7o`*L*C88>G5+I2ln9>7?-L zRiy=O3CO)9lVyy4-S&`lm-f9G{(^{`&Fl!JDHD{AR!{WP(aDu0J2#OtUYy z=p__@+sV7LxOdb4Km_zJd_0nW<>PTw`nWnFkvYP}C)DZ@Mxvq=hbWWr)9t*fa>@f-ed=Q!jloE9Vyu7@wIa>WP0A_TJ z*<<7Y_&`(+y|@~^!_+APFr#$L9wP_92cmmGsZ~HsopJys+Q;lM9D7Xn>raW=2OJ+0iPqLMB@B}`N)Jq2(b{vg9lGQaX+rC zFtZo{zu1Ev(Ql5M+SEo4u=gr`^`Vd?)0BbV&6=3x+ z^7xgw%MGyE;@2!ExS{>robF~K7`DFg|#GC#id^szaXv!;5^ot2Yh=xwF)4Zw8{qw=R4xjNMVT<0<>e{GekQw_j%PNVY73%NSg09@xbni~VxIgYYrZZ5pe zb(AgTd5&^*Y5@4v=RBI53$Jq@Wy?)z;8&jmX>KmO&V`gMb7P=>H2Q`GG-A9V7d})E zLeDa7(Wy2Ws4U1X#~}?yiRD^_(?3aES>J_(W7+I}mANg_IRJuVRfyfX4wQ>J)Y4&W zQm}xzC=MWz1HH$V`^qx6e_#%Pzq0|vf3J^ob3P{E!)BgYLTq`&0__;dMEfP6ES+17$pJ8Rudn7LnZS|y9IMbUD!wK}coi%UR1;{;qrzpEgcA=9rZ(Q* zi*nN=td7R4F|1VsY&-&CHdiY(Re5P9#=ukdwOYr6QVlR+9`RF|yD5+x z4tq4>#N-&fMhEhfiYdk56_rj%hJz{MI8fm);h~FUSJ?NFC&m3hyso)6b5m`i|gO8zztic=>A88K@fes5t5^53758d-euL?${#kN$SBQDVGGZg1d?^ zkA|F05QE5g34;}xVHL@&8}@{GnUSv{X0CsOp{-$C5$KuPD3R(a57Z!1?8-kKe%~&&D?lG0`-*BX|;^qhG2J`LP(pZAq;!BD@cSc z$n+(64Sv{6{`v1d!h8hXLEyGA@h6A|BEr7kSBoW|K(*0g96C9vd zc2*7+q)@yOXeF3lAG5{(|LE> zQE#6e%E~AEQezBEO7tE3=$NGEfQ9iMoLJPlRC?E+?My-4vTh#O@eDu4Bn?CMuezS%BEor$TO>gU;=~MW%PVQ*8uQ z)08J=6M4iZkqYKt2!|-p#>sopQG)V7nN!tT6>@Y{M~Ft7a&B_Ni%Ww%|6Lj&>`iDO zw;xCJQi6l|Lh6V~tY@dyI`DzJ$_oB;6Jhl0!JF3zyslMvZ6FX-+k%wiaH1SpBvniJ zp-NTYp{p^4Fp+S|4KabGEI=8$Lp`!H#S?#hxNm;A|An4DJ*VN*rwS-?_Y5*=#TI?A zKwi&(pwnvJ)3ZA2NckR}a~4Z}J7z4R!Kl^xo(5i#GvWb@BQ%ywpCON6Ux8dZwG+-6 z7l;!df*?oC!0m~!b^uPD<*H}6VJ z?ZNtQw#j9Z}DD8BNLl`vX}8a;~Xas z+CT|_Ql^rBhJ^c52mK8hyZQkz$2>XCkH9bVcc%<1PKCO@!0?`9=i%OEz!IKPD-p#gl0Sg;wvmra3SiP z!J_ty6vR}rD99Wnqf!R>aQg1u`Nxxkv$J2`oxb|_nzU5N4c8hZ(?%dcA9Ha1nC1Wi z!hzTz8+~6RwxSV$xsI|LoHMlj!r5}Rr0hbanEyNDXb?}rOl;yIlZu2y>f|ZEG3M>J zT3sE1Sic}vXD1jDPiY+eEwF~Fx3*BZ;;Ef}0we2!qN(cU9{Ut}4upLb@Q7@pK^$2P`v`kD)Z`QpPU40{ zo{l3IF!I>|`;t0_IHK_QZR)U)1Y%5wkpqo$FTqL{sk5UfyRsyPOo^MaBHXrzEK*d% zpP~UL_yVLQHx?0_&_A_#gR3Ca%ETj-$V3A*>r~!y(D6`_Kq``xuxZPMhTmz~M#Dbj z$!zrnxG+Nlo1&`(XumVVEZw*U&bI@^wz!(pp%m`f? z`?G3vKbeG{w;OYKv7`?=5)lqO%st_NrG}FUyCj}zB_M%WPBS<5%cuR#3Z?xt_KEzi z2tv+^k*VRJ!!dC$lqo%x79%iK8FmzqD{`WJ&933>_p?G8wEMM%({(17u-9z}Fn(Di8$ zf9iE$6&Aae7;YxDz3ptJGkVMPDwMz>p#oVx2&Au!^>@Ez5t)&4%F0897 zbho#<+uPlUr9W(Uw`Ra%%h}#eXSFymwr2pt962-afa5?JkhZs+=UI5L;gGr%(pcXR z9?vq+*m^F3A(x**Lt~Ph#WOfKFr8LwaY$@cLV^>ezY20GMc51pNu)tAjC!6x5NTKL z7s2ub3XmEY_mn+qAUUp21CsJ(PISm60TuyGnGDI%aH7B3b8$eMYe*@Wz*6uZ<$f!(8Ccq zlX?spP5W61<}6aDavBn}VI&1V!|k7N26m61p`Rxm`P;j}@5GIu*`~5)%U)su9FZXx zoR(rvv{^el1&60UdhhMdNR{F!90TP>u;ifU8N%zFh36l zoei+6LUtG@OvcG=%tL{$m4a+O_*R1=fpArodKlL`Au9K|O=Lke)=>yk_~blp3hsBC zXp99KNM6PXXmVa&Woz!rw+U=WN`Un(GhURoJAt;V})Cqthlui)wE{9iIC{6wSpvxt5ID+O;8J#-(i-Az{nMo#@ggf1DElTNn}y_ zO%lbx@OR1em9nIkx(j=tdU07`Ow!4oLM^=lL?c1`A>w3&d14tdAUk^ZI+ahpRZ#At zGcAQ!=He^DNkWk!)PlfaNHACP8sbX^DfuK~NDWLmv*#hV-$JMhdQC+5M4*ooEF!`` z!g@XmA77G>XpApO4qLTlT{qIC%(ODc?jvYS9K1z0?YW1X4CyC>^nEpEU#_ALL-s+0 zljlBHQxBx8nsNG@a_6PI2R3*I*3=idcq&i(`np3i*bJ0XRtPWlGV1qc`n4)pi>zaD z#Iim>(M#)8_M~QiXc-Dq!zP9;XMBVM`llp?iPaDcqLvL*!$9trQH&Edp7vJ*56s;$ zjR+`|b`zDe+jR-()>kZvgwj`fvJd7LSgbWTP}XzHRFK!TB!y5!TC=e2EoWD29M2p` zik`SG0We(P7{k^x4+O(ThoA!E-s5OnQo<^dD%LX{` zWX+DV(6sk*(|)$lwD+>pel~O3dwSZ>z>cQKwsvsSWH3F^AObTX5vZT~7)&N0&S3Px zrvr}pRL!em8W9VrD|))>M}0-~NY?2KI76%^sAn|{(%PF;@NBYmM`m?Jitgd!C=Bi>7P4ERlLcKG^5tz2&fSFUDUeqS* zqUl=$@`<=HNOd@vT8jK33k3NiCV>ko@pst0xWe2MC}UtXX53MXISwL1Jh*-~w;T~e zePFfy&E(Dp1JIJok733_1oKoReL_d6oPZ;&jtiJj69cI3#epjhSo99U>8&vc*B(QH zfl{v@Lt-?*?nRpT&s^tk>e~tt!DU}$9;w;W)y^kyTWzl7Kd2zt@g%G}uSum|M+xiZ zPV?mbVInQU6IU>=1LIcfW^6UeM~1dD+9)nUODKC z8H9y^`+h(tCGY85F?fw9q+9{Z>z7<`C0FG7#_ASsw{*RkOMUs_=zosS&X3>z@bTpR z;rdc+X_sOduv&Lw_B+o6t*g*i9k-erHi-i1)obPsrEnAy!Cv37DYbxbsT)a(?lUG& zys_#trH{)~4-=%3(8)kIa2SftX2NwgF1I^srWZ8u(8jCe_NL>Y1Idyu0(KQhIv_iN zo4NO@?N2oDz!m0)_dhw3uLdKdll<`hC%Af&3XKO&@ZfnBZM$woFv(Dt=NK!HwI_ScNI_L;e((-pmH9-3Yw}j4dE~!B3Ic!V1aCsMoqIbF7ha(l+HewvoCs~W2(r@)0X30+A z5pgosY=a+ggDdDLFpfycjbe(E`d+SyWWKE>^Icnh4p<^Q8tR~Y%s}0}kqp0mCo+6% zepz@sCkyY?@m4JvRm;TL`=G6z-b|r*TMNZIodqVplbihRjV8a7o&4_1x$o$??{*Rt ze5O#au@r}5Kn3MW!#wkRTB`+yt|zGYL|E6_!fE}i#gQwhxHUVKF30%yhZYqViSh(0DFX2^}5*r>pLa(Vy0zsr`98NhM zjU)7bToz9M1MO_>?4j>C!=B3~PGa;yZSz}ONd~Yw^BX!2Tt{-29^=3}B+I29#hk*e zz8=oDMI40K9TPK=O{D1}+HtnfhOE%mpW2=OXu;OuDQv6~52;YjljM_2!pKlMpJGY5 z6XK}5a9Y3W4wR1zaHueG4A8X@j#@1s>HEFj)zy`QVTumpqn@v-h~Det!=txnN8KG~ z>tC(b&kC~=8{%MUybK^}C%%#_6OXtSL}-AnIF+PXGP_}Pg*j%!vwQ zSCAT8fZ7LV==iLSzB@QOKHF^la(w>dyPwa|F9)Zm2XD`hkIvA$Q*`+5?W^PS<9Bb* z(7W%^!P{TaPseXxZ6ZR!)=oZ!@W4TC*aR$|PV0=2%-~6?f90I&A|D5%7>@`Vu}i`s zT!@{r7YAMo;=1Y#Mup`#e_NNYtN3(6M9eSA)Cfh!TUGz53<5nc)qv~j{9|lwZEZc@ z+k^jZZEfZMyS=ru`?u}A=iA#ap6_k%?EY?0!(SzgU8>dFa~eCc`YDu8I!J)e!3FyAE4zHq`|)Vd&3cnPuJ>gxHnx@b)NknmO) zMPw5CI3les8pZ**(zLo}39SjH=9Q9cE(M8w^!|mIi!T|ql1%!!yiG!23;k4lOTUNj#PewRO&uF?j63;wrm{0 zg9?`jA(f9ukI;XK3mO`&3*MTy9zAN=e;YcdE+p0@YH6kE`8Qlm^giOD3dKN#6NOEv zLH+sP-g)+HD|i0)wzr?J&;MPN&!2lwTNNar2?2Q8`|Gb(OZI{;>0}>#kfh=-MU0md z30!wf_EB1`bxNX`OBG*g*eGBgIZy~SwSs)KK7U3uaQ)aLsI5@YvG7i|5{~SkjW#^$ zMyP#3rft;z{@uGaYAa^dMjMb5wf)_}X^KxY0Ws{HvB#07}Q_tg+JANDNm_u+SV7%pH+wRyMbZpz{_{L_(_Kls6 zZQHhOqhs67oqDgPYHDUPi}yBDHNVAo&hA&=S^jx$lJ_xwDM>k6iGkrWEXnH7fr^pp zI=*B&h)5CI74LJ8#QWLmVo13D5!f`t48$cq6?~CWPwd~@wkR8bOKfc;<$*$_}?C*Nw05Zui8@&WxK3xPe{i0;^d|4 zIU&3St_ud{Cs66S7=B~aWXDj=Am`2X_3J;)QTH+&B;46WVrclv0Oa+~Es}UR`_@Lo z>Iwk6H4_2@F^(*A7k-k{UT-GE#c+&~grEdvz-F}h?E+?T|5*DgPEoxXaOQ~dH5-`# zVtT1ZZi_$~zaGC#e)%YHbkKAFV*d5A_=zyc()(scMOLU-n>=lS)B|}hiSxAr%&c3@ z5{|BOSPv-6{3Qn_6ZUNbNBX-Hf;&_y(-vkqw~8b|2e|_8>v)pX_N@=pb=PO6Ye6?< zjojR6epk9fOjL41Pnbh5*mq6zczkU9mw+X9B>JMQ(mAlM=IvhC)8oB@4ovTQ8oW2N zkOajl^4U4Crr_v4&&|Q9%EX)_m>8wpYK|xvFbS6L=Po4lt=^(Xg6E%9HVuUPh;KP2 zjZJf?SMm@mixuM!+wI|F=5GGkk+@ff;lu~6b(X$pxYW57NY54kuvCU#NsmcwCBA`= zE9*Qp*RA0)$(cr@-DkbMN@O=rQxug5iO7}e3dO-d=aos+uJdof(^KK3PJ8-{;=g?i zS`Z_qSCOF4@Gov_Dm0G*txig?*zYaR9+Dr)wWAaLxr0h^#1(m^+KY|!Pj7&`3_CC< zKQ9m-S>7H5@P9fLcCCg&9V7&*avPYCeEvxIHCI$aDVJyq&y{$iXT7WeP#zw`6W)(6N!Gs~Ts~Su2aB zCum{Il-2>Z!t`3|!M>bctFuqvtXwmA6@izRjQY_u#7rto`xs|EzFZwfKS24iP z@%Y}LL=y$7;0FqvvTT+N_7|ntPWF^vWLR

    C;LN2d8NRyagqcOuR%1;3+{pa)kqx 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

    >sd34EdLjR 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 literal 0 HcmV?d00001 diff --git a/charts/limesurvey/templates/NOTES.txt b/charts/limesurvey/templates/NOTES.txt new file mode 100644 index 0000000..9391f3f --- /dev/null +++ b/charts/limesurvey/templates/NOTES.txt @@ -0,0 +1,26 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "limesurvey.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "limesurvey.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "limesurvey.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "limesurvey.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080/admin to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} +2. Get your limesurvey login credentials by running: + + echo User: {{ .Values.limesurvey.admin.username }} + echo Password: $(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "limesurvey.secretName" . }} -o jsonpath="{.data.limesurvey-admin-password}" | base64 --decode) diff --git a/charts/limesurvey/templates/_helpers.tpl b/charts/limesurvey/templates/_helpers.tpl new file mode 100644 index 0000000..10f50a3 --- /dev/null +++ b/charts/limesurvey/templates/_helpers.tpl @@ -0,0 +1,105 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "limesurvey.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "limesurvey.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{- define "limesurvey.mariadb.fullname" -}} +{{- printf "%s-mariadb" .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "limesurvey.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "limesurvey.labels" -}} +helm.sh/chart: {{ include "limesurvey.chart" . }} +{{ include "limesurvey.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "limesurvey.selectorLabels" -}} +app.kubernetes.io/name: {{ include "limesurvey.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "limesurvey.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "limesurvey.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} + +{{/* +Return the MariaDB Secret Name +*/}} +{{- define "limesurvey.databaseSecretName" -}} +{{- if .Values.mariadb.enabled }} + {{- if .Values.mariadb.auth.existingSecret -}} + {{- printf "%s" .Values.mariadb.auth.existingSecret -}} + {{- else -}} + {{- printf "%s" (include "limesurvey.mariadb.fullname" .) -}} + {{- end -}} +{{- else if .Values.externalDatabase.existingSecret -}} + {{- printf "%s" .Values.externalDatabase.existingSecret -}} +{{- else -}} + {{- printf "%s-mariadb" (include "limesurvey.fullname" .) -}} +{{- end -}} +{{- end -}} + +{{/* +Return the LimeSurvey Secret Name +*/}} +{{- define "limesurvey.secretName" -}} +{{- if .Values.limesurvey.admin.existingSecret -}} +{{- printf "%s" .Values.limesurvey.admin.existingSecret -}} +{{- else -}} +{{- printf "%s" (include "limesurvey.fullname" .) -}} +{{- end -}} +{{- end -}} + +{{/* +Return the LimeSurvey SMTP Secret Name +*/}} +{{- define "limesurvey.smtpSecretName" -}} +{{- if .Values.limesurvey.smtp.existingSecret -}} +{{- printf "%s" .Values.limesurvey.smtp.existingSecret -}} +{{- else -}} +{{- printf "%s-smtp" (include "limesurvey.fullname" .) -}} +{{- end -}} +{{- end -}} diff --git a/charts/limesurvey/templates/deployment.yaml b/charts/limesurvey/templates/deployment.yaml new file mode 100644 index 0000000..813696c --- /dev/null +++ b/charts/limesurvey/templates/deployment.yaml @@ -0,0 +1,120 @@ +{{- $fullName := include "library-chart.fullname" . -}} +{{- $initContainerName := printf "%s-%s" $fullName "init-data" | trunc 63 | trimSuffix "-" -}} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "library-chart.fullname" . }} + labels: + {{- include "library-chart.labels" . | nindent 4 }} +spec: +{{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} +{{- end }} + selector: + matchLabels: + {{- include "library-chart.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "library-chart.selectorLabels" . | nindent 8 }} + spec: + {{- if .Values.security.enabled }} + volumes: + - name: secret-auth-ini-volume + secret: + secretName: {{ .Release.Name }}-secret-mlflow-auth + {{- end }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + {{- if .Values.service.image.custom.enabled }} + image: "{{ .Values.service.image.custom.version }}" + {{- else }} + image: "{{ .Values.service.image.version }}" + {{- end }} + args: + - --host=0.0.0.0 + - --port=8000 + - --backend-store-uri=postgresql://{{ .Values.postgresql.auth.username }}:{{ .Values.postgresql.auth.password }}@{{ .Values.postgresql.fullnameOverride }}:5432/{{ .Values.postgresql.auth.database}} + {{ if .Values.service.proxyArtifact.enabled -}} + - --artifacts-destination={{ .Values.service.directory }} + {{- else -}} + - --default-artifact-root={{ .Values.service.directory }} + {{- end }} + {{ if .Values.security.enabled -}} + - --app-name=basic-auth + {{- end }} + {{ range .Values.service.customArgs }} + - {{ . }} + {{- end }} + imagePullPolicy: {{ .Values.service.image.pullPolicy }} + envFrom: + {{- if .Values.s3.enabled }} + - secretRef: + name: {{ include "library-chart.secretNameS3" . }} + {{- end }} + {{- if .Values.security.enabled }} + volumeMounts: + - name: secret-auth-ini-volume + mountPath: /home/oyxia/work/basic_auth.ini + subPath: basic_auth.ini + {{- end }} + env: + - name: MLFLOW_S3_ENDPOINT_URL + value: "https://{{ .Values.s3.endpoint }}" + {{- if .Values.security.enabled }} + - name: MLFLOW_AUTH_CONFIG_PATH + value: /home/oyxia/work/basic_auth.ini + {{- end }} + - name: GUNICORN_CMD_ARGS + value: "--timeout {{ .Values.service.gunicornTimeout }}" + ports: + - name: http + containerPort: 8000 + protocol: TCP + readinessProbe: + tcpSocket: + port: 8000 + initialDelaySeconds: 5 + periodSeconds: 10 + livenessProbe: + tcpSocket: + port: 8000 + initialDelaySeconds: 15 + periodSeconds: 20 + resources: + {{- toYaml .Values.resources | nindent 12 }} + + initContainers: + - name: wait-for-postgresql + image: "alpine" + imagePullPolicy: IfNotPresent + command: + - sh + - -c + - | + until printf "." && nc -z -w 2 {{ .Values.postgresql.fullnameOverride }} 5432; do + sleep 2; + done; + echo 'PostgreSQL OK ✓' + resources: + {{- toYaml .Values.resources_init | nindent 12 }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/charts/limesurvey/templates/deployment.yaml stock b/charts/limesurvey/templates/deployment.yaml stock new file mode 100644 index 0000000..95b99d3 --- /dev/null +++ b/charts/limesurvey/templates/deployment.yaml stock @@ -0,0 +1,228 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "limesurvey.fullname" . }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "limesurvey.selectorLabels" . | nindent 6 }} + {{- if .Values.deployment.updateStrategy }} + strategy: {{- toYaml .Values.deployment.updateStrategy | nindent 4 }} + {{- end }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "limesurvey.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "limesurvey.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + volumeMounts: + - name: limesurvey-main + mountPath: "/var/www/html/plugins" + subPath: "plugins" + - name: limesurvey-main + mountPath: "/var/www/html/upload" + subPath: "upload" + - name: limesurvey-main + mountPath: "/var/lime/sessions" + subPath: "sessions" + - name: limesurvey-main + mountPath: "/var/www/html/application/config" + subPath: "config" + {{- range .Values.extraVolumeMounts }} + - name: {{ .name }} + mountPath: {{ .mountPath }} + subPath: {{ .subPath | default "" }} + readOnly: {{ .readOnly }} + {{- end }} + {{- range .Values.extraEmptyDirMounts }} + - name: {{ .name }} + mountPath: {{ .mountPath }} + {{- end }} + env: + - name: LIMESURVEY_DB_TYPE + {{- if eq .Values.mariadb.enabled true }} + value: "mysql" + {{- else }} + value: {{ .Values.externalDatabase.type }} + {{- end }} + - name: LIMESURVEY_DB_HOST + {{- if eq .Values.mariadb.enabled true }} + value: {{ include "limesurvey.mariadb.fullname" . }} + {{- else }} + value: {{ .Values.externalDatabase.host }} + {{- end }} + - name: LIMESURVEY_DB_PORT + {{- if eq .Values.mariadb.enabled true }} + value: {{ coalesce .Values.mariadb.primary.service.ports.mysql .Values.mariadb.primary.service.port 3306 | quote }} + {{- else }} + value: {{ coalesce .Values.externalDatabase.port 3306 | quote }} + {{- end }} + - name: LIMESURVEY_DB_USER + {{- if eq .Values.mariadb.enabled true }} + value: {{ .Values.mariadb.auth.username }} + {{- else }} + value: {{ .Values.externalDatabase.username }} + {{- end }} + - name: LIMESURVEY_DB_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "limesurvey.databaseSecretName" . }} + key: mariadb-password + - name: LIMESURVEY_DB_NAME + {{- if eq .Values.mariadb.enabled true }} + value: {{ .Values.mariadb.auth.database }} + {{- else }} + value: {{ .Values.externalDatabase.database }} + {{- end }} + - name: LIMESURVEY_ADMIN_USER + value: {{ .Values.limesurvey.admin.username | quote }} + - name: LIMESURVEY_ADMIN_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "limesurvey.secretName" . }} + key: limesurvey-admin-password + - name: LIMESURVEY_ADMIN_NAME + value: {{ .Values.limesurvey.admin.name | quote }} + - name: LIMESURVEY_ADMIN_EMAIL + value: {{ .Values.limesurvey.admin.email | quote }} + - name: LIMESURVEY_TABLE_PREFIX + value: {{ .Values.limesurvey.tablePrefix | quote }} + - name: LIMESURVEY_DEBUG + value: {{ .Values.limesurvey.debug | quote }} + - name: LIMESURVEY_SQL_DEBUG + value: {{ .Values.limesurvey.sqlDebug | quote }} + - name: LIMESURVEY_USE_INNODB + value: {{ .Values.limesurvey.useInnodb | quote }} + - name: LIMESURVEY_DB_SESSIONS + value: {{ .Values.limesurvey.dbSessions | quote }} + - name: LIMESURVEY_DONT_SHOW_SCRIPT_NAME + value: {{ .Values.limesurvey.dontShowScriptName | quote }} + - name: TZ + value: {{ .Values.limesurvey.tz | quote }} + - name: LIMESURVEY_SMTP_HOST + value: {{ .Values.limesurvey.smtp.host | quote }} + - name: LIMESURVEY_SMTP_USER + value: {{ .Values.limesurvey.smtp.user | quote }} + - name: LIMESURVEY_SMTP_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "limesurvey.smtpSecretName" . }} + key: limesurvey-smtp-password + - name: LIMESURVEY_SMTP_SSL + value: {{ .Values.limesurvey.smtp.ssl | quote }} + - name: LIMESURVEY_FROM_EMAIL + value: {{ .Values.limesurvey.smtp.from_email | quote }} + - name: LIMESURVEY_SMTP_DEBUG + value: {{ .Values.limesurvey.smtp.debug | quote }} + imagePullPolicy: {{ .Values.image.pullPolicy }} + {{- if .Values.deployment.lifecycleHooks }} + lifecycle: {{- toYaml .Values.deployment.lifecycleHooks | nindent 12 }} + {{- end }} + ports: + - name: http + containerPort: {{ .Values.service.port }} + protocol: TCP + {{- if .Values.limesurvey.livenessProbe.enabled }} + livenessProbe: + httpGet: + path: / + port: http + httpHeaders: + - name: X-Forwarded-Proto + value: https + {{- end }} + {{- if .Values.limesurvey.readinessProbe.enabled }} + readinessProbe: + httpGet: + path: / + port: http + httpHeaders: + - name: X-Forwarded-Proto + value: https + {{- end }} + resources: + {{- toYaml .Values.resources | nindent 12 }} + initContainers: + - name: db-isalive + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + env: + - name: LIMESURVEY_DB_HOST + {{- if eq .Values.mariadb.enabled true }} + value: {{ include "limesurvey.mariadb.fullname" . }} + {{- else }} + value: {{ .Values.externalDatabase.host }} + {{- end }} + - name: LIMESURVEY_DB_PORT + {{- if eq .Values.mariadb.enabled true }} + value: {{ coalesce .Values.mariadb.primary.service.ports.mysql .Values.mariadb.primary.service.port 3306 | quote }} + {{- else }} + value: {{ coalesce .Values.externalDatabase.port 3306 | quote }} + {{- end }} + imagePullPolicy: {{ .Values.image.pullPolicy }} + command: + - "sh" + - "-c" + - "until nc -z -v -w30 ${LIMESURVEY_DB_HOST} ${LIMESURVEY_DB_PORT}; do echo waiting for db; sleep 5; done;" + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + volumes: + - name: limesurvey-main + {{- if .Values.persistence.enabled }} + persistentVolumeClaim: + claimName: {{ .Values.persistence.existingClaim | default (include "limesurvey.fullname" .) }} + {{- else }} + emptyDir: {} + {{- end -}} + {{- range .Values.extraVolumeMounts }} + - name: {{ .name }} + {{- if .existingClaim }} + persistentVolumeClaim: + claimName: {{ .existingClaim }} + {{- else if .hostPath }} + hostPath: + path: {{ .hostPath }} + {{- else if .configMap }} + configMap: + name: {{ .configMap }} + {{- with .items }} + items: + {{- toYaml . | nindent 14 }} + {{- end }} + {{- else }} + emptyDir: {} + {{- end }} + {{- end }} + {{- range .Values.extraEmptyDirMounts }} + - name: {{ .name }} + emptyDir: {} + {{- end -}} diff --git a/charts/limesurvey/templates/hpa.yaml b/charts/limesurvey/templates/hpa.yaml new file mode 100644 index 0000000..86c133a --- /dev/null +++ b/charts/limesurvey/templates/hpa.yaml @@ -0,0 +1,28 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "limesurvey.fullname" . }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "limesurvey.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/charts/limesurvey/templates/ingress.yaml b/charts/limesurvey/templates/ingress.yaml new file mode 100644 index 0000000..911980a --- /dev/null +++ b/charts/limesurvey/templates/ingress.yaml @@ -0,0 +1 @@ +{{ include "library-chart.ingress" . }} \ No newline at end of file diff --git a/charts/limesurvey/templates/networkpolicy-ingress.yaml b/charts/limesurvey/templates/networkpolicy-ingress.yaml new file mode 100644 index 0000000..3003d2d --- /dev/null +++ b/charts/limesurvey/templates/networkpolicy-ingress.yaml @@ -0,0 +1 @@ +{{ include "library-chart.networkPolicyIngress" . }} \ No newline at end of file diff --git a/charts/limesurvey/templates/networkpolicy.yaml b/charts/limesurvey/templates/networkpolicy.yaml new file mode 100644 index 0000000..0fd137c --- /dev/null +++ b/charts/limesurvey/templates/networkpolicy.yaml @@ -0,0 +1 @@ +{{ include "library-chart.networkPolicy" . }} \ No newline at end of file diff --git a/charts/limesurvey/templates/pvc.yaml b/charts/limesurvey/templates/pvc.yaml new file mode 100644 index 0000000..7c4ba08 --- /dev/null +++ b/charts/limesurvey/templates/pvc.yaml @@ -0,0 +1,32 @@ +{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }} +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: {{ template "limesurvey.fullname" . }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} + {{- with .Values.persistence.annotations }} + annotations: +{{ toYaml . | indent 4 }} + {{- end }} + {{- with .Values.persistence.finalizers }} + finalizers: +{{ toYaml . | indent 4 }} + {{- end }} +spec: + accessModes: + {{- range .Values.persistence.accessModes }} + - {{ . | quote }} + {{- end }} + resources: + requests: + storage: {{ .Values.persistence.size | quote }} + {{- if .Values.persistence.storageClass }} + storageClassName: {{ .Values.persistence.storageClass }} + {{- end -}} + {{- with .Values.persistence.selectorLabels }} + selector: + matchLabels: +{{ toYaml . | indent 6 }} + {{- end }} +{{- end -}} diff --git a/charts/limesurvey/templates/secrets.yaml b/charts/limesurvey/templates/secrets.yaml new file mode 100644 index 0000000..8ed3532 --- /dev/null +++ b/charts/limesurvey/templates/secrets.yaml @@ -0,0 +1,48 @@ +{{- if not .Values.limesurvey.admin.existingSecret }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "limesurvey.secretName" . }} + namespace: {{ .Release.Namespace | quote }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} +type: Opaque +data: + {{- if .Values.limesurvey.admin.password }} + limesurvey-admin-password: {{ .Values.limesurvey.admin.password | b64enc | quote }} + {{- else }} + limesurvey-admin-password: {{ randAlphaNum 15 | b64enc | quote }} + {{- end }} +{{- end }} + +{{- if not (or .Values.mariadb.enabled .Values.externalDatabase.existingSecret) }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "limesurvey.databaseSecretName" . }} + namespace: {{ .Release.Namespace | quote }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} +type: Opaque +data: + mariadb-password: {{ required "externalDatabase.password is required" .Values.externalDatabase.password | b64enc | quote }} +{{- end }} +{{- if not .Values.limesurvey.smtp.existingSecret }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "limesurvey.smtpSecretName" . }} + namespace: {{ .Release.Namespace | quote }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} +type: Opaque +data: + {{- if .Values.limesurvey.smtp.password }} + limesurvey-smtp-password: {{ .Values.limesurvey.smtp.password | b64enc | quote }} + {{- else }} + limesurvey-smtp-password: {{ randAlphaNum 15 | b64enc | quote }} + {{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/limesurvey/templates/service.yaml b/charts/limesurvey/templates/service.yaml new file mode 100644 index 0000000..8392184 --- /dev/null +++ b/charts/limesurvey/templates/service.yaml @@ -0,0 +1,18 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "library-chart.fullname" . }} + labels: + {{- include "library-chart.labels" . | nindent 4 }} +spec: + type: {{ .Values.networking.type }} + {{- if .Values.networking.clusterIP }} + clusterIP: {{ .Values.networking.clusterIP }} + {{- end }} + ports: + - port: {{ .Values.networking.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "library-chart.selectorLabels" . | nindent 4 }} diff --git a/charts/limesurvey/templates/service.yaml stock b/charts/limesurvey/templates/service.yaml stock new file mode 100644 index 0000000..1546fec --- /dev/null +++ b/charts/limesurvey/templates/service.yaml stock @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "limesurvey.fullname" . }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "limesurvey.selectorLabels" . | nindent 4 }} diff --git a/charts/limesurvey/templates/serviceaccount.yaml b/charts/limesurvey/templates/serviceaccount.yaml new file mode 100644 index 0000000..53b708d --- /dev/null +++ b/charts/limesurvey/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "limesurvey.serviceAccountName" . }} + labels: + {{- include "limesurvey.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/limesurvey/templates/tests/test-connection.yaml b/charts/limesurvey/templates/tests/test-connection.yaml new file mode 100644 index 0000000..b5db5bb --- /dev/null +++ b/charts/limesurvey/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "limesurvey.fullname" . }}-test-connection" + labels: + {{- include "limesurvey.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "limesurvey.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/charts/limesurvey/values.schema.json b/charts/limesurvey/values.schema.json new file mode 100644 index 0000000..9ed0210 --- /dev/null +++ b/charts/limesurvey/values.schema.json @@ -0,0 +1,282 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "s3": { + "description": "Configuration of temporary identity", + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Add S3 temporary identity inside your environment", + "default": true + }, + "accessKeyId": { + "description": "AWS Access Key", + "type": "string", + "x-onyxia": { + "overwriteDefaultWith": "{{s3.AWS_ACCESS_KEY_ID}}" + }, + "hidden": { + "value": false, + "path": "s3/enabled" + } + }, + "endpoint": { + "description": "AWS S3 Endpoint", + "type": "string", + "x-onyxia": { + "overwriteDefaultWith": "{{s3.AWS_S3_ENDPOINT}}" + }, + "hidden": { + "value": false, + "path": "s3/enabled" + } + }, + "defaultRegion": { + "description": "AWS S3 default region", + "type": "string", + "x-onyxia": { + "overwriteDefaultWith": "{{s3.AWS_DEFAULT_REGION}}" + }, + "hidden": { + "value": false, + "path": "s3/enabled" + } + }, + "secretAccessKey": { + "description": "AWS S3 secret access key", + "type": "string", + "render": "password", + "x-onyxia": { + "overwriteDefaultWith": "{{s3.AWS_SECRET_ACCESS_KEY}}" + }, + "hidden": { + "value": false, + "path": "s3/enabled" + } + }, + "sessionToken": { + "description": "AWS S3 session Token", + "type": "string", + "render": "password", + "x-onyxia": { + "overwriteDefaultWith": "{{s3.AWS_SESSION_TOKEN}}" + }, + "hidden": { + "value": false, + "path": "s3/enabled" + } + } + } + }, + "ingress": { + "type": "object", + "form": true, + "title": "Ingress Details", + "properties": { + "enabled": { + "description": "Enable Ingress", + "type": "boolean", + "default": true, + "x-onyxia": { + "hidden": true, + "overwriteDefaultWith": "k8s.ingress" + } + }, + "hostname": { + "type": "string", + "form": true, + "title": "Hostname", + "x-onyxia": { + "hidden": false, + "overwriteDefaultWith": "{{project.id}}-limesurvey.{{k8s.domain}}" + } + }, + "ingressClassName": { + "type": "string", + "form": true, + "title": "ingressClassName", + "default": "", + "x-onyxia": { + "hidden": true, + "overwriteDefaultWith": "{{k8s.ingressClassName}}" + } + } + } + }, + "route": { + "type": "object", + "form": true, + "title": "Route details", + "properties": { + "enabled": { + "description": "Enable route", + "type": "boolean", + "default": false, + "x-onyxia": { + "hidden": false, + "overwriteDefaultWith": "k8s.route" + } + }, + "hostname": { + "type": "string", + "form": true, + "title": "Hostname", + "x-onyxia": { + "hidden": false, + "overwriteDefaultWith": "{{project.id}}-limesurvey.{{k8s.domain}}" + } + } + } + }, + "security": { + "description": "security specific configuration", + "type": "object", + "properties": { + "password": { + "type": "string", + "description": "Password", + "default": "changeme", + "render": "password", + "x-onyxia": { + "overwriteDefaultWith": "{{project.password}}" + } + }, + "allowlist": { + "type": "object", + "description": "IP protection", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enable IP protection", + "description": "Only the configured set of IPs will be able to reach the service", + "default": true, + "x-onyxia": { + "overwriteDefaultWith": "region.defaultIpProtection" + } + }, + "ip": { + "type": "string", + "description": "the white list of IP is whitespace", + "title": "Whitelist of IP", + "default": "0.0.0.0", + "x-onyxia": { + "overwriteDefaultWith": "{{user.ip}}" + }, + "hidden": { + "value": false, + "path": "security/allowlist/enabled" + } + } + } + }, + "networkPolicy": { + "type": "object", + "description": "Define access policy to the service", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enable network policy", + "description": "Only pod from the same namespace will be allowed", + "default": true, + "x-onyxia": { + "overwriteDefaultWith": "region.defaultNetworkPolicy" + } + }, + "from": { + "type": "array", + "description": "Array of source allowed to have network access to your service", + "default": [ + { + "namespaceSelector": { + "matchLabels": { + "kubernetes.io/metadata.name": "ingress" + } + } + } + ], + "x-onyxia": { + "overwriteDefaultWith": "region.from" + } + } + } + } + } + }, + "resources": { + "description": "Your service will have at least the requested resources and never more than its limits. No limit for a resource and you can consume everything left on the host machine.", + "type": "object", + "properties": { + "requests": { + "description": "Guaranteed resources", + "type": "object", + "properties": { + "cpu": { + "description": "The amount of cpu guaranteed", + "title": "CPU", + "type": "string", + "default": "100m", + "render": "slider", + "sliderMin": 50, + "sliderMax": 40000, + "sliderStep": 50, + "sliderUnit": "m", + "sliderExtremity": "down", + "sliderExtremitySemantic": "guaranteed", + "sliderRangeId": "cpu" + }, + "memory": { + "description": "The amount of memory guaranteed", + "title": "memory", + "type": "string", + "default": "2Gi", + "render": "slider", + "sliderMin": 1, + "sliderMax": 200, + "sliderStep": 1, + "sliderUnit": "Gi", + "sliderExtremity": "down", + "sliderExtremitySemantic": "guaranteed", + "sliderRangeId": "memory" + } + } + }, + "limits": { + "description": "max resources", + "type": "object", + "properties": { + "cpu": { + "description": "The maximum amount of cpu", + "title": "CPU", + "type": "string", + "default": "30000m", + "render": "slider", + "sliderMin": 50, + "sliderMax": 40000, + "sliderStep": 50, + "sliderUnit": "m", + "sliderExtremity": "up", + "sliderExtremitySemantic": "Maximum", + "sliderRangeId": "cpu" + }, + "memory": { + "description": "The maximum amount of memory", + "title": "Memory", + "type": "string", + "default": "50Gi", + "render": "slider", + "sliderMin": 1, + "sliderMax": 200, + "sliderStep": 1, + "sliderUnit": "Gi", + "sliderExtremity": "up", + "sliderExtremitySemantic": "Maximum", + "sliderRangeId": "memory" + } + } + } + } + } + } +} diff --git a/charts/limesurvey/values.yaml b/charts/limesurvey/values.yaml new file mode 100644 index 0000000..ff492b9 --- /dev/null +++ b/charts/limesurvey/values.yaml @@ -0,0 +1,270 @@ +# Default values for limesurvey. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +# -- (int) Numbers of replicas +replicaCount: 1 + +image: + # -- The docker image repository to use + repository: adamzammit/limesurvey + # -- The docker image pull policy + pullPolicy: IfNotPresent + # -- The docker image tag to use + # @default -- vhart appVersion + tag: "" + +imagePullSecrets: [] +# -- String to override the default generated name +nameOverride: "" +# -- String to override the default generated fullname +fullnameOverride: "" + +deployment: {} + +networking: + type: ClusterIP + service: + port: 80 + + +serviceAccount: + # -- Specifies whether a service account should be created + create: false + # -- Annotations to add to the service account + annotations: {} + # -- The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +s3: + # Specifies whether a config map should be created + enabled: true + # The name of the configmap to use. + # If not set and create is true, a name is generated using the fullname template + configMapName: "" + accessKeyId: "" + endpoint: "" + defaultRegion: "" + secretAccessKey: "" + sessionToken: "" + +# -- Annotations for the pods +podAnnotations: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + + # runAsNonRoot: true + # readOnlyRootFilesystem: true + # runAsUser: 1000 + +service: + # -- Specifies what type of Service should be created + type: ClusterIP + # -- Default Service port + port: 80 + +ingress: + # -- Specifies whether Ingress should be created or not + enabled: false + # -- Specifies what type of Ingress should be created + className: "" + # -- Additional annotations + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: chart-example.local + paths: + - path: / + pathType: ImplementationSpecific + # -- Ingress tls + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +limesurvey: + admin: + # -- The full name of the Limesurvey administrator + name: Lime Administrator + # -- The email address of the Limesurvey administrator + email: lime@lime.lime + # -- The username of the Limesurvey administrator) + username: admin + # -- The password of the Limesurvey administrator + password: "" + # -- Use existing secret (admin.password will be ignored). + # secret must contain the key limesurvey-admin-password + existingSecret: "" + smtp: + # -- set the SMTP host - you can also specify a different port than 25 by using this format: [hostname:port], e.g. "smtp.example.com:587") + host: "" + # -- only set this if your server requires authorization - if you set it you HAVE to set a password too + user: "" + # -- SMTP authorization password - empty password is not allowed + password: "" + # -- Use existing secret (smtp.password will be ignored). + # secret must contain the key limesurvey-smtp-password + existingSecret: "" + # -- set this to "ssl" to use SSL/TLS or "tls" to use StartTLS for SMTP connection + ssl: "" + # -- The email address where messages will be sent from + from_email: your-email@example.net + # -- set this to any value to enable SMTP debug mode + debug: "" + + # -- Set this to "myprefix_" if you want your table names to have the myprefix_ + tablePrefix: "lime_" + # -- Debug level of Limesurvey, 0 is off, 1 for errors, 2 for strict PHP and to be able to edit standard templates + debug: "0" + # -- Debug level of Limesurvey for SQL, 0 is off, 1 is on - note requires LIMESURVEY_DEBUG set to 2 + sqlDebug: "0" + # -- Leave blank or don't set to use standard MyISAM database. Set to any value to use InnoDB + useInnodb: "true" + # -- Leave blank or don't set to use file based sessions. Set to any value to use DB based sessions + dbSessions: "" + # -- Leave blank or don't set to show the script name `index.php` in URLs. Set to any value to omit the script name + dontShowScriptName: "" + # -- Time zone name. If set, will configure PHP and LimeSurvey to use this time zone + tz: "Europe/Berlin" + + + livenessProbe: + enabled: true + readinessProbe: + enabled: true +persistence: + # -- Enable persistence using Persistent Volume Claims + # ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ + enabled: true + storageClass: null + accessModes: + - ReadWriteOnce + size: 5Gi + annotations: + helm.sh/resource-policy: "keep" + finalizers: + - kubernetes.io/pvc-protection + selectorLabels: {} + existingClaim: null + +# -- This allows you to mount additional volumes +# into the Limesurvey container +extraVolumeMounts: [] +# - name: extra-volume-0 +# mountPath: /mnt/volume0 +# readOnly: true +# existingClaim: volume-claim +# - name: extra-volume-1 +# mountPath: /mnt/volume1 +# readOnly: true +# hostPath: /usr/shared/ +# - name: extra-volume-configmap +# configMap: limesurvey +# items: +# - key: config.php +# path: application/config/config.php + +# -- This allows you to mount additional "emptyDirs" +# into the Limesurvey container +extraEmptyDirMounts: [] +# - name: extra-empty-dir +# mountPath: /var/lib/foobar + +# MariaDB chart configuration +# ref: https://github.com/bitnami/charts/tree/main/bitnami/mariadb +mariadb: + # -- Deploy a MariaDB server + enabled: true + auth: + database: limesurvey + username: limesurvey + password: changeme + # -- Use existing secret (auth.rootPassword, auth.password, and auth.replicationPassword will be ignored). + # secret must contain the keys mariadb-root-password, mariadb-replication-password and mariadb-password + existingSecret: "" + + architecture: standalone + + primary: + persistence: + # -- Enable persistence using Persistent Volume Claims + # ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ + enabled: true + # -- Use an existing Persistent Volume Claim (must be created ahead of time) + # existingClaim: "" + # storageClass: "" + accessMode: ReadWriteOnce + size: 8Gi + # -- Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if primary.resources is set (primary.resources is recommended for production). + # More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15 + resourcesPreset: "none" + +## -- Use an externally provisioned database instance +## Ignored when mariadb.enabled is set to true +externalDatabase: + # -- Type of external database ("mysql" or "pgsql") + type: mysql + # -- External Database server host + host: mariadb.example.com + # -- External Database server port + port: 3306 + # -- External Database username + username: limesurvey + # -- External Database user password + password: "" + # -- External Database database name + database: limesurvey + # -- Use an existing secret for retrieving the database password. + # The secret must contain the field "mariadb-password" + existingSecret: "" + +# -- Set the resources requests and limits +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +# -- Set the node selector for the pod. +nodeSelector: {} + +# -- Set the tolerations for the pod. +tolerations: [] + +# -- Set the affinity for the pod. +affinity: {} + +route: + enabled: false + annotations: + [] + # route.openshift.io/termination: "reencrypt" + hostname: chart-example.local + tls: + termination: edge + # key: + # certificate: + # caCertificate: + # destinationCACertificate: + wildcardPolicy: None \ No newline at end of file diff --git a/charts/wordpress final/.helmignore b/charts/wordpress final/.helmignore new file mode 100644 index 0000000..fb56657 --- /dev/null +++ b/charts/wordpress final/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +# img folder +img/ diff --git a/charts/wordpress final/Chart.lock b/charts/wordpress final/Chart.lock new file mode 100644 index 0000000..ef8e5e1 --- /dev/null +++ b/charts/wordpress final/Chart.lock @@ -0,0 +1,12 @@ +dependencies: +- name: memcached + repository: oci://registry-1.docker.io/bitnamicharts + version: 6.14.0 +- name: mariadb + repository: oci://registry-1.docker.io/bitnamicharts + version: 16.5.0 +- name: common + repository: oci://registry-1.docker.io/bitnamicharts + version: 2.19.1 +digest: sha256:420c4b9b97133ce4147094ae303112a1577557b87247bcdf5607a87202d5b51b +generated: "2024-04-24T17:19:44.8027405+02:00" diff --git a/charts/wordpress final/Chart.yaml b/charts/wordpress final/Chart.yaml new file mode 100644 index 0000000..dc524b1 --- /dev/null +++ b/charts/wordpress final/Chart.yaml @@ -0,0 +1,47 @@ +# Copyright VMware, Inc. +# SPDX-License-Identifier: APACHE-2.0 + +annotations: + category: CMS + licenses: Apache-2.0 + images: | + - name: apache-exporter + image: docker.io/bitnami/apache-exporter:1.0.6-debian-12-r8 + - name: os-shell + image: docker.io/bitnami/os-shell:12-debian-12-r16 + - name: wordpress + image: docker.io/bitnami/wordpress:6.4.3-debian-12-r20 +apiVersion: v2 +appVersion: 6.4.3 +dependencies: +- condition: memcached.enabled + name: memcached + repository: oci://registry-1.docker.io/bitnamicharts + version: 6.x.x +- condition: mariadb.enabled + name: mariadb + repository: oci://registry-1.docker.io/bitnamicharts + version: 16.x.x +- name: common + repository: oci://registry-1.docker.io/bitnamicharts + tags: + - bitnami-common + version: 2.x.x +description: WordPress is the world's most popular blogging and content management platform. Powerful yet simple, everyone from students to global corporations use it to build beautiful, functional websites. +home: https://bitnami.com +icon: https://bitnami.com/assets/stacks/wordpress/img/wordpress-stack-220x234.png +keywords: +- application +- blog +- cms +- http +- php +- web +- wordpress +maintainers: +- name: VMware, Inc. + url: https://github.com/bitnami/charts +name: wordpress-final +sources: +- https://github.com/bitnami/charts/tree/main/bitnami/wordpress +version: 20.1.9 diff --git a/charts/wordpress final/README.md b/charts/wordpress final/README.md new file mode 100644 index 0000000..006c3d0 --- /dev/null +++ b/charts/wordpress final/README.md @@ -0,0 +1,772 @@ + + +# Bitnami package for WordPress + +WordPress is the world's most popular blogging and content management platform. Powerful yet simple, everyone from students to global corporations use it to build beautiful, functional websites. + +[Overview of WordPress](http://www.wordpress.org) + +## TL;DR + +```console +helm install my-release oci://registry-1.docker.io/bitnamicharts/wordpress +``` + +Looking to use WordPress in production? Try [VMware Tanzu Application Catalog](https://bitnami.com/enterprise), the enterprise edition of Bitnami Application Catalog. + +## Introduction + +This chart bootstraps a [WordPress](https://github.com/bitnami/containers/tree/main/bitnami/wordpress) deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. + +It also packages the [Bitnami MariaDB chart](https://github.com/bitnami/charts/tree/main/bitnami/mariadb) which is required for bootstrapping a MariaDB deployment for the database requirements of the WordPress application, and the [Bitnami Memcached chart](https://github.com/bitnami/charts/tree/main/bitnami/memcached) that can be used to cache database queries. + +Bitnami charts can be used with [Kubeapps](https://kubeapps.dev/) for deployment and management of Helm Charts in clusters. + +## Prerequisites + +- Kubernetes 1.23+ +- Helm 3.8.0+ +- PV provisioner support in the underlying infrastructure +- ReadWriteMany volumes for deployment scaling + +## Installing the Chart + +To install the chart with the release name `my-release`: + +```console +helm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/wordpress +``` + +> Note: You need to substitute the placeholders `REGISTRY_NAME` and `REPOSITORY_NAME` with a reference to your Helm chart registry and repository. For example, in the case of Bitnami, you need to use `REGISTRY_NAME=registry-1.docker.io` and `REPOSITORY_NAME=bitnamicharts`. + +The command deploys WordPress on the Kubernetes cluster in the default configuration. The [Parameters](#parameters) section lists the parameters that can be configured during installation. + +> **Tip**: List all releases using `helm list` + +## Uninstalling the Chart + +To uninstall/delete the `my-release` deployment: + +```console +helm delete my-release +``` + +The command removes all the Kubernetes components associated with the chart and deletes the release. + +## Parameters + +### Global parameters + +| Name | Description | Value | +| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- | +| `global.imageRegistry` | Global Docker image registry | `""` | +| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` | +| `global.storageClass` | Global StorageClass for Persistent Volume(s) | `""` | +| `global.compatibility.openshift.adaptSecurityContext` | Adapt the securityContext sections of the deployment to make them compatible with Openshift restricted-v2 SCC: remove runAsUser, runAsGroup and fsGroup and let the platform use their allowed default IDs. Possible values: auto (apply if the detected running cluster is Openshift), force (perform the adaptation always), disabled (do not perform adaptation) | `disabled` | + +### Common parameters + +| Name | Description | Value | +| ------------------------ | -------------------------------------------------------------------------------------------- | --------------- | +| `kubeVersion` | Override Kubernetes version | `""` | +| `nameOverride` | String to partially override common.names.fullname template (will maintain the release name) | `""` | +| `fullnameOverride` | String to fully override common.names.fullname template | `""` | +| `commonLabels` | Labels to add to all deployed resources | `{}` | +| `commonAnnotations` | Annotations to add to all deployed resources | `{}` | +| `clusterDomain` | Kubernetes Cluster Domain | `cluster.local` | +| `extraDeploy` | Array of extra objects to deploy with the release | `[]` | +| `diagnosticMode.enabled` | Enable diagnostic mode (all probes will be disabled and the command will be overridden) | `false` | +| `diagnosticMode.command` | Command to override all containers in the deployment | `["sleep"]` | +| `diagnosticMode.args` | Args to override all containers in the deployment | `["infinity"]` | + +### WordPress Image parameters + +| Name | Description | Value | +| ------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------- | +| `image.registry` | WordPress image registry | `REGISTRY_NAME` | +| `image.repository` | WordPress image repository | `REPOSITORY_NAME/wordpress` | +| `image.digest` | WordPress image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `""` | +| `image.pullPolicy` | WordPress image pull policy | `IfNotPresent` | +| `image.pullSecrets` | WordPress image pull secrets | `[]` | +| `image.debug` | Specify if debug values should be set | `false` | + +### WordPress Configuration parameters + +| Name | Description | Value | +| -------------------------------------- | ------------------------------------------------------------------------------------- | ------------------ | +| `wordpressUsername` | WordPress username | `user` | +| `wordpressPassword` | WordPress user password | `""` | +| `existingSecret` | Name of existing secret containing WordPress credentials | `""` | +| `wordpressEmail` | WordPress user email | `user@example.com` | +| `wordpressFirstName` | WordPress user first name | `FirstName` | +| `wordpressLastName` | WordPress user last name | `LastName` | +| `wordpressBlogName` | Blog name | `User's Blog!` | +| `wordpressTablePrefix` | Prefix to use for WordPress database tables | `wp_` | +| `wordpressScheme` | Scheme to use to generate WordPress URLs | `http` | +| `wordpressSkipInstall` | Skip wizard installation | `false` | +| `wordpressExtraConfigContent` | Add extra content to the default wp-config.php file | `""` | +| `wordpressConfiguration` | The content for your custom wp-config.php file (advanced feature) | `""` | +| `existingWordPressConfigurationSecret` | The name of an existing secret with your custom wp-config.php file (advanced feature) | `""` | +| `wordpressConfigureCache` | Enable W3 Total Cache plugin and configure cache settings | `false` | +| `wordpressPlugins` | Array of plugins to install and activate. Can be specified as `all` or `none`. | `none` | +| `apacheConfiguration` | The content for your custom httpd.conf file (advanced feature) | `""` | +| `existingApacheConfigurationConfigMap` | The name of an existing secret with your custom httpd.conf file (advanced feature) | `""` | +| `customPostInitScripts` | Custom post-init.d user scripts | `{}` | +| `smtpHost` | SMTP server host | `""` | +| `smtpPort` | SMTP server port | `""` | +| `smtpUser` | SMTP username | `""` | +| `smtpPassword` | SMTP user password | `""` | +| `smtpProtocol` | SMTP protocol | `""` | +| `smtpExistingSecret` | The name of an existing secret with SMTP credentials | `""` | +| `allowEmptyPassword` | Allow the container to be started with blank passwords | `true` | +| `allowOverrideNone` | Configure Apache to prohibit overriding directives with htaccess files | `false` | +| `overrideDatabaseSettings` | Allow overriding the database settings persisted in wp-config.php | `false` | +| `htaccessPersistenceEnabled` | Persist custom changes on htaccess files | `false` | +| `customHTAccessCM` | The name of an existing ConfigMap with custom htaccess rules | `""` | +| `command` | Override default container command (useful when using custom images) | `[]` | +| `args` | Override default container args (useful when using custom images) | `[]` | +| `extraEnvVars` | Array with extra environment variables to add to the WordPress container | `[]` | +| `extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars | `""` | +| `extraEnvVarsSecret` | Name of existing Secret containing extra env vars | `""` | + +### WordPress Multisite Configuration parameters + +| Name | Description | Value | +| ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ----------- | +| `multisite.enable` | Whether to enable WordPress Multisite configuration. | `false` | +| `multisite.host` | WordPress Multisite hostname/address. This value is mandatory when enabling Multisite mode. | `""` | +| `multisite.networkType` | WordPress Multisite network type to enable. Allowed values: `subfolder`, `subdirectory` or `subdomain`. | `subdomain` | +| `multisite.enableNipIoRedirect` | Whether to enable IP address redirection to nip.io wildcard DNS. Useful when running on an IP address with subdomain network type. | `false` | + +### WordPress deployment parameters + +| Name | Description | Value | +| --------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | +| `replicaCount` | Number of WordPress replicas to deploy | `1` | +| `updateStrategy.type` | WordPress deployment strategy type | `RollingUpdate` | +| `schedulerName` | Alternate scheduler | `""` | +| `terminationGracePeriodSeconds` | In seconds, time given to the WordPress pod to terminate gracefully | `""` | +| `topologySpreadConstraints` | Topology Spread Constraints for pod assignment spread across your cluster among failure-domains. Evaluated as a template | `[]` | +| `priorityClassName` | Name of the existing priority class to be used by WordPress pods, priority class needs to be created beforehand | `""` | +| `automountServiceAccountToken` | Mount Service Account token in pod | `false` | +| `hostAliases` | WordPress pod host aliases | `[]` | +| `extraVolumes` | Optionally specify extra list of additional volumes for WordPress pods | `[]` | +| `extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for WordPress container(s) | `[]` | +| `sidecars` | Add additional sidecar containers to the WordPress pod | `[]` | +| `initContainers` | Add additional init containers to the WordPress pods | `[]` | +| `podLabels` | Extra labels for WordPress pods | `{}` | +| `podAnnotations` | Annotations for WordPress pods | `{}` | +| `podAffinityPreset` | Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `podAntiAffinityPreset` | Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `soft` | +| `nodeAffinityPreset.type` | Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `nodeAffinityPreset.key` | Node label key to match. Ignored if `affinity` is set | `""` | +| `nodeAffinityPreset.values` | Node label values to match. Ignored if `affinity` is set | `[]` | +| `affinity` | Affinity for pod assignment | `{}` | +| `nodeSelector` | Node labels for pod assignment | `{}` | +| `tolerations` | Tolerations for pod assignment | `[]` | +| `resourcesPreset` | Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production). | `none` | +| `resources` | Set container requests and limits for different resources like CPU or memory (essential for production workloads) | `{}` | +| `containerPorts.http` | WordPress HTTP container port | `8080` | +| `containerPorts.https` | WordPress HTTPS container port | `8443` | +| `extraContainerPorts` | Optionally specify extra list of additional ports for WordPress container(s) | `[]` | +| `podSecurityContext.enabled` | Enabled WordPress pods' Security Context | `true` | +| `podSecurityContext.fsGroupChangePolicy` | Set filesystem group change policy | `Always` | +| `podSecurityContext.sysctls` | Set kernel settings using the sysctl interface | `[]` | +| `podSecurityContext.supplementalGroups` | Set filesystem extra groups | `[]` | +| `podSecurityContext.fsGroup` | Set WordPress pod's Security Context fsGroup | `1001` | +| `containerSecurityContext.enabled` | Enabled containers' Security Context | `true` | +| `containerSecurityContext.seLinuxOptions` | Set SELinux options in container | `nil` | +| `containerSecurityContext.runAsUser` | Set containers' Security Context runAsUser | `1001` | +| `containerSecurityContext.runAsNonRoot` | Set container's Security Context runAsNonRoot | `true` | +| `containerSecurityContext.privileged` | Set container's Security Context privileged | `false` | +| `containerSecurityContext.readOnlyRootFilesystem` | Set container's Security Context readOnlyRootFilesystem | `false` | +| `containerSecurityContext.allowPrivilegeEscalation` | Set container's Security Context allowPrivilegeEscalation | `false` | +| `containerSecurityContext.capabilities.drop` | List of capabilities to be dropped | `["ALL"]` | +| `containerSecurityContext.seccompProfile.type` | Set container's Security Context seccomp profile | `RuntimeDefault` | +| `livenessProbe.enabled` | Enable livenessProbe on WordPress containers | `true` | +| `livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `120` | +| `livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | +| `livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `5` | +| `livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `6` | +| `livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `readinessProbe.enabled` | Enable readinessProbe on WordPress containers | `true` | +| `readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `30` | +| `readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `5` | +| `readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `6` | +| `readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `startupProbe.enabled` | Enable startupProbe on WordPress containers | `false` | +| `startupProbe.initialDelaySeconds` | Initial delay seconds for startupProbe | `30` | +| `startupProbe.periodSeconds` | Period seconds for startupProbe | `10` | +| `startupProbe.timeoutSeconds` | Timeout seconds for startupProbe | `5` | +| `startupProbe.failureThreshold` | Failure threshold for startupProbe | `6` | +| `startupProbe.successThreshold` | Success threshold for startupProbe | `1` | +| `customLivenessProbe` | Custom livenessProbe that overrides the default one | `{}` | +| `customReadinessProbe` | Custom readinessProbe that overrides the default one | `{}` | +| `customStartupProbe` | Custom startupProbe that overrides the default one | `{}` | +| `lifecycleHooks` | for the WordPress container(s) to automate configuration before or after startup | `{}` | + +### Traffic Exposure Parameters + +| Name | Description | Value | +| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ | +| `service.type` | WordPress service type | `LoadBalancer` | +| `service.ports.http` | WordPress service HTTP port | `80` | +| `service.ports.https` | WordPress service HTTPS port | `443` | +| `service.httpsTargetPort` | Target port for HTTPS | `https` | +| `service.nodePorts.http` | Node port for HTTP | `""` | +| `service.nodePorts.https` | Node port for HTTPS | `""` | +| `service.sessionAffinity` | Control where client requests go, to the same pod or round-robin | `None` | +| `service.sessionAffinityConfig` | Additional settings for the sessionAffinity | `{}` | +| `service.clusterIP` | WordPress service Cluster IP | `""` | +| `service.loadBalancerIP` | WordPress service Load Balancer IP | `""` | +| `service.loadBalancerSourceRanges` | WordPress service Load Balancer sources | `[]` | +| `service.externalTrafficPolicy` | WordPress service external traffic policy | `Cluster` | +| `service.annotations` | Additional custom annotations for WordPress service | `{}` | +| `service.extraPorts` | Extra port to expose on WordPress service | `[]` | +| `ingress.enabled` | Enable ingress record generation for WordPress | `false` | +| `ingress.pathType` | Ingress path type | `ImplementationSpecific` | +| `ingress.apiVersion` | Force Ingress API version (automatically detected if not set) | `""` | +| `ingress.ingressClassName` | IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+) | `""` | +| `ingress.hostname` | Default host for the ingress record. The hostname is templated and thus can contain other variable references. | `wordpress.local` | +| `ingress.path` | Default path for the ingress record | `/` | +| `ingress.annotations` | Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations. | `{}` | +| `ingress.tls` | Enable TLS configuration for the host defined at `ingress.hostname` parameter | `false` | +| `ingress.tlsWwwPrefix` | Adds www subdomain to default cert | `false` | +| `ingress.selfSigned` | Create a TLS secret for this ingress record using self-signed certificates generated by Helm | `false` | +| `ingress.extraHosts` | An array with additional hostname(s) to be covered with the ingress record. The host names are templated and thus can contain other variable references. | `[]` | +| `ingress.extraPaths` | An array with additional arbitrary paths that may need to be added to the ingress under the main host | `[]` | +| `ingress.extraTls` | TLS configuration for additional hostname(s) to be covered with this ingress record | `[]` | +| `ingress.secrets` | Custom TLS certificates as secrets | `[]` | +| `ingress.extraRules` | Additional rules to be covered with this ingress record | `[]` | + +### Persistence Parameters + +| Name | Description | Value | +| ----------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- | +| `persistence.enabled` | Enable persistence using Persistent Volume Claims | `true` | +| `persistence.storageClass` | Persistent Volume storage class | `""` | +| `persistence.accessModes` | Persistent Volume access modes | `[]` | +| `persistence.accessMode` | Persistent Volume access mode (DEPRECATED: use `persistence.accessModes` instead) | `ReadWriteOnce` | +| `persistence.size` | Persistent Volume size | `10Gi` | +| `persistence.dataSource` | Custom PVC data source | `{}` | +| `persistence.existingClaim` | The name of an existing PVC to use for persistence | `""` | +| `persistence.selector` | Selector to match an existing Persistent Volume for WordPress data PVC | `{}` | +| `persistence.annotations` | Persistent Volume Claim annotations | `{}` | +| `volumePermissions.enabled` | Enable init container that changes the owner/group of the PV mount point to `runAsUser:fsGroup` | `false` | +| `volumePermissions.image.registry` | OS Shell + Utility image registry | `REGISTRY_NAME` | +| `volumePermissions.image.repository` | OS Shell + Utility image repository | `REPOSITORY_NAME/os-shell` | +| `volumePermissions.image.digest` | OS Shell + Utility image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `""` | +| `volumePermissions.image.pullPolicy` | OS Shell + Utility image pull policy | `IfNotPresent` | +| `volumePermissions.image.pullSecrets` | OS Shell + Utility image pull secrets | `[]` | +| `volumePermissions.resourcesPreset` | Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if volumePermissions.resources is set (volumePermissions.resources is recommended for production). | `none` | +| `volumePermissions.resources` | Set container requests and limits for different resources like CPU or memory (essential for production workloads) | `{}` | +| `volumePermissions.containerSecurityContext.seLinuxOptions` | Set SELinux options in container | `nil` | +| `volumePermissions.containerSecurityContext.runAsUser` | User ID for the init container | `0` | + +### Other Parameters + +| Name | Description | Value | +| --------------------------------------------- | ---------------------------------------------------------------------- | ------- | +| `serviceAccount.create` | Enable creation of ServiceAccount for WordPress pod | `true` | +| `serviceAccount.name` | The name of the ServiceAccount to use. | `""` | +| `serviceAccount.automountServiceAccountToken` | Allows auto mount of ServiceAccountToken on the serviceAccount created | `false` | +| `serviceAccount.annotations` | Additional custom annotations for the ServiceAccount | `{}` | +| `pdb.create` | Enable a Pod Disruption Budget creation | `false` | +| `pdb.minAvailable` | Minimum number/percentage of pods that should remain scheduled | `1` | +| `pdb.maxUnavailable` | Maximum number/percentage of pods that may be made unavailable | `""` | +| `autoscaling.enabled` | Enable Horizontal POD autoscaling for WordPress | `false` | +| `autoscaling.minReplicas` | Minimum number of WordPress replicas | `1` | +| `autoscaling.maxReplicas` | Maximum number of WordPress replicas | `11` | +| `autoscaling.targetCPU` | Target CPU utilization percentage | `50` | +| `autoscaling.targetMemory` | Target Memory utilization percentage | `50` | + +### Metrics Parameters + +| Name | Description | Value | +| ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | +| `metrics.enabled` | Start a sidecar prometheus exporter to expose metrics | `false` | +| `metrics.image.registry` | Apache exporter image registry | `REGISTRY_NAME` | +| `metrics.image.repository` | Apache exporter image repository | `REPOSITORY_NAME/apache-exporter` | +| `metrics.image.digest` | Apache exporter image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag | `""` | +| `metrics.image.pullPolicy` | Apache exporter image pull policy | `IfNotPresent` | +| `metrics.image.pullSecrets` | Apache exporter image pull secrets | `[]` | +| `metrics.containerPorts.metrics` | Prometheus exporter container port | `9117` | +| `metrics.livenessProbe.enabled` | Enable livenessProbe on Prometheus exporter containers | `true` | +| `metrics.livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `15` | +| `metrics.livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | +| `metrics.livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `5` | +| `metrics.livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | +| `metrics.livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `metrics.readinessProbe.enabled` | Enable readinessProbe on Prometheus exporter containers | `true` | +| `metrics.readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `5` | +| `metrics.readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `metrics.readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `3` | +| `metrics.readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `3` | +| `metrics.readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `metrics.startupProbe.enabled` | Enable startupProbe on Prometheus exporter containers | `false` | +| `metrics.startupProbe.initialDelaySeconds` | Initial delay seconds for startupProbe | `10` | +| `metrics.startupProbe.periodSeconds` | Period seconds for startupProbe | `10` | +| `metrics.startupProbe.timeoutSeconds` | Timeout seconds for startupProbe | `1` | +| `metrics.startupProbe.failureThreshold` | Failure threshold for startupProbe | `15` | +| `metrics.startupProbe.successThreshold` | Success threshold for startupProbe | `1` | +| `metrics.customLivenessProbe` | Custom livenessProbe that overrides the default one | `{}` | +| `metrics.customReadinessProbe` | Custom readinessProbe that overrides the default one | `{}` | +| `metrics.customStartupProbe` | Custom startupProbe that overrides the default one | `{}` | +| `metrics.resourcesPreset` | Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if metrics.resources is set (metrics.resources is recommended for production). | `none` | +| `metrics.resources` | Set container requests and limits for different resources like CPU or memory (essential for production workloads) | `{}` | +| `metrics.containerSecurityContext.enabled` | Enabled containers' Security Context | `true` | +| `metrics.containerSecurityContext.seLinuxOptions` | Set SELinux options in container | `nil` | +| `metrics.containerSecurityContext.runAsUser` | Set containers' Security Context runAsUser | `1001` | +| `metrics.containerSecurityContext.runAsNonRoot` | Set container's Security Context runAsNonRoot | `true` | +| `metrics.containerSecurityContext.privileged` | Set container's Security Context privileged | `false` | +| `metrics.containerSecurityContext.readOnlyRootFilesystem` | Set container's Security Context readOnlyRootFilesystem | `false` | +| `metrics.containerSecurityContext.allowPrivilegeEscalation` | Set container's Security Context allowPrivilegeEscalation | `false` | +| `metrics.containerSecurityContext.capabilities.drop` | List of capabilities to be dropped | `["ALL"]` | +| `metrics.containerSecurityContext.seccompProfile.type` | Set container's Security Context seccomp profile | `RuntimeDefault` | +| `metrics.service.ports.metrics` | Prometheus metrics service port | `9150` | +| `metrics.service.annotations` | Additional custom annotations for Metrics service | `{}` | +| `metrics.serviceMonitor.enabled` | Create ServiceMonitor Resource for scraping metrics using Prometheus Operator | `false` | +| `metrics.serviceMonitor.namespace` | Namespace for the ServiceMonitor Resource (defaults to the Release Namespace) | `""` | +| `metrics.serviceMonitor.interval` | Interval at which metrics should be scraped. | `""` | +| `metrics.serviceMonitor.scrapeTimeout` | Timeout after which the scrape is ended | `""` | +| `metrics.serviceMonitor.labels` | Additional labels that can be used so ServiceMonitor will be discovered by Prometheus | `{}` | +| `metrics.serviceMonitor.selector` | Prometheus instance selector labels | `{}` | +| `metrics.serviceMonitor.relabelings` | RelabelConfigs to apply to samples before scraping | `[]` | +| `metrics.serviceMonitor.metricRelabelings` | MetricRelabelConfigs to apply to samples before ingestion | `[]` | +| `metrics.serviceMonitor.honorLabels` | Specify honorLabels parameter to add the scrape endpoint | `false` | +| `metrics.serviceMonitor.jobLabel` | The name of the label on the target service to use as the job name in prometheus. | `""` | + +### NetworkPolicy parameters + +| Name | Description | Value | +| ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ------- | +| `networkPolicy.enabled` | Enable network policies | `false` | +| `networkPolicy.metrics.enabled` | Enable network policy for metrics (prometheus) | `false` | +| `networkPolicy.metrics.namespaceSelector` | Monitoring namespace selector labels. These labels will be used to identify the prometheus' namespace. | `{}` | +| `networkPolicy.metrics.podSelector` | Monitoring pod selector labels. These labels will be used to identify the Prometheus pods. | `{}` | +| `networkPolicy.ingress.enabled` | Enable network policy for Ingress Proxies | `false` | +| `networkPolicy.ingress.namespaceSelector` | Ingress Proxy namespace selector labels. These labels will be used to identify the Ingress Proxy's namespace. | `{}` | +| `networkPolicy.ingress.podSelector` | Ingress Proxy pods selector labels. These labels will be used to identify the Ingress Proxy pods. | `{}` | +| `networkPolicy.ingressRules.backendOnlyAccessibleByFrontend` | Enable ingress rule that makes the backend (mariadb) only accessible by testlink's pods. | `false` | +| `networkPolicy.ingressRules.customBackendSelector` | Backend selector labels. These labels will be used to identify the backend pods. | `{}` | +| `networkPolicy.ingressRules.accessOnlyFrom.enabled` | Enable ingress rule that makes testlink only accessible from a particular origin | `false` | +| `networkPolicy.ingressRules.accessOnlyFrom.namespaceSelector` | Namespace selector label that is allowed to access testlink. This label will be used to identified the allowed namespace(s). | `{}` | +| `networkPolicy.ingressRules.accessOnlyFrom.podSelector` | Pods selector label that is allowed to access testlink. This label will be used to identified the allowed pod(s). | `{}` | +| `networkPolicy.ingressRules.customRules` | Custom network policy ingress rule | `{}` | +| `networkPolicy.egressRules.denyConnectionsToExternal` | Enable egress rule that denies outgoing traffic outside the cluster, except for DNS (port 53). | `false` | +| `networkPolicy.egressRules.customRules` | Custom network policy rule | `{}` | + +### Database Parameters + +| Name | Description | Value | +| ------------------------------------------ | ---------------------------------------------------------------------------------------------- | ------------------- | +| `mariadb.enabled` | Deploy a MariaDB server to satisfy the applications database requirements | `true` | +| `mariadb.architecture` | MariaDB architecture. Allowed values: `standalone` or `replication` | `standalone` | +| `mariadb.auth.rootPassword` | MariaDB root password | `""` | +| `mariadb.auth.database` | MariaDB custom database | `bitnami_wordpress` | +| `mariadb.auth.username` | MariaDB custom user name | `bn_wordpress` | +| `mariadb.auth.password` | MariaDB custom user password | `""` | +| `mariadb.primary.persistence.enabled` | Enable persistence on MariaDB using PVC(s) | `true` | +| `mariadb.primary.persistence.storageClass` | Persistent Volume storage class | `""` | +| `mariadb.primary.persistence.accessModes` | Persistent Volume access modes | `[]` | +| `mariadb.primary.persistence.size` | Persistent Volume size | `8Gi` | +| `externalDatabase.host` | External Database server host | `localhost` | +| `externalDatabase.port` | External Database server port | `3306` | +| `externalDatabase.user` | External Database username | `bn_wordpress` | +| `externalDatabase.password` | External Database user password | `""` | +| `externalDatabase.database` | External Database database name | `bitnami_wordpress` | +| `externalDatabase.existingSecret` | The name of an existing secret with database credentials. Evaluated as a template | `""` | +| `memcached.enabled` | Deploy a Memcached server for caching database queries | `false` | +| `memcached.auth.enabled` | Enable Memcached authentication | `false` | +| `memcached.auth.username` | Memcached admin user | `""` | +| `memcached.auth.password` | Memcached admin password | `""` | +| `memcached.auth.existingPasswordSecret` | Existing secret with Memcached credentials (must contain a value for `memcached-password` key) | `""` | +| `memcached.service.port` | Memcached service port | `11211` | +| `externalCache.host` | External cache server host | `localhost` | +| `externalCache.port` | External cache server port | `11211` | + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, + +```console +helm install my-release \ + --set wordpressUsername=admin \ + --set wordpressPassword=password \ + --set mariadb.auth.rootPassword=secretpassword \ + oci://REGISTRY_NAME/REPOSITORY_NAME/wordpress +``` + +> Note: You need to substitute the placeholders `REGISTRY_NAME` and `REPOSITORY_NAME` with a reference to your Helm chart registry and repository. For example, in the case of Bitnami, you need to use `REGISTRY_NAME=registry-1.docker.io` and `REPOSITORY_NAME=bitnamicharts`. + +The above command sets the WordPress administrator account username and password to `admin` and `password` respectively. Additionally, it sets the MariaDB `root` user password to `secretpassword`. + +> NOTE: Once this chart is deployed, it is not possible to change the application's access credentials, such as usernames or passwords, using Helm. To change these application credentials after deployment, delete any persistent volumes (PVs) used by the chart and re-deploy it, or use the application's built-in administrative tools if available. + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example, + +```console +helm install my-release -f values.yaml oci://REGISTRY_NAME/REPOSITORY_NAME/wordpress +``` + +> Note: You need to substitute the placeholders `REGISTRY_NAME` and `REPOSITORY_NAME` with a reference to your Helm chart registry and repository. For example, in the case of Bitnami, you need to use `REGISTRY_NAME=registry-1.docker.io` and `REPOSITORY_NAME=bitnamicharts`. +> **Tip**: You can use the default [values.yaml](https://github.com/bitnami/charts/tree/main/bitnami/wordpress/values.yaml) + +## Configuration and installation details + +### Resource requests and limits + +Bitnami charts allow setting resource requests and limits for all containers inside the chart deployment. These are inside the `resources` value (check parameter table). Setting requests is essential for production workloads and these should be adapted to your specific use case. + +To make this process easier, the chart contains the `resourcesPreset` values, which automatically sets the `resources` section according to different presets. Check these presets in [the bitnami/common chart](https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15). However, in production workloads using `resourcePreset` is discouraged as it may not fully adapt to your specific needs. Find more information on container resource management in the [official Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/). + +### [Rolling VS Immutable tags](https://docs.bitnami.com/tutorials/understand-rolling-tags-containers) + +It is strongly recommended to use immutable tags in a production environment. This ensures your deployment does not change automatically if the same tag is updated with a different image. + +Bitnami will release a new chart updating its containers if a new version of the main container, significant changes, or critical vulnerabilities exist. + +### Known limitations + +When performing admin operations that require activating the maintenance mode (such as updating a plugin or theme), it's activated in only one replica (see: [bug report](https://core.trac.wordpress.org/ticket/50797)). This implies that WP could be attending requests on other replicas while performing admin operations, with unpredictable consequences. + +To avoid that, you can manually activate/deactivate the maintenance mode on every replica using the WP CLI. For instance, if you installed WP with three replicas, you can run the commands below to activate the maintenance mode in all of them (assuming that the release name is `wordpress`): + +```console +kubectl exec $(kubectl get pods -l app.kubernetes.io/name=wordpress -o jsonpath='{.items[0].metadata.name}') -c wordpress -- wp maintenance-mode activate +kubectl exec $(kubectl get pods -l app.kubernetes.io/name=wordpress -o jsonpath='{.items[1].metadata.name}') -c wordpress -- wp maintenance-mode activate +kubectl exec $(kubectl get pods -l app.kubernetes.io/name=wordpress -o jsonpath='{.items[2].metadata.name}') -c wordpress -- wp maintenance-mode activate +``` + +### External database support + +You may want to have WordPress connect to an external database rather than installing one inside your cluster. Typical reasons for this are to use a managed database service, or to share a common database server for all your applications. To achieve this, the chart allows you to specify credentials for an external database with the [`externalDatabase` parameter](#database-parameters). You should also disable the MariaDB installation with the `mariadb.enabled` option. Here is an example: + +```console +mariadb.enabled=false +externalDatabase.host=myexternalhost +externalDatabase.user=myuser +externalDatabase.password=mypassword +externalDatabase.database=mydatabase +externalDatabase.port=3306 +``` + +If the database already contains data from a previous WordPress installation, set the `wordpressSkipInstall` parameter to `true`. This parameter forces the container to skip the WordPress installation wizard. Otherwise, the container will assume it is a fresh installation and execute the installation wizard, potentially modifying or resetting the data in the existing database. + +[Refer to the container documentation for more information](https://github.com/bitnami/containers/tree/main/bitnami/wordpress#connect-wordpress-container-to-an-existing-database). + +### Memcached + +This chart provides support for using Memcached to cache database queries and objects improving the website performance. To enable this feature, set `wordpressConfigureCache` and `memcached.enabled` parameters to `true`. + +When this feature is enabled, a Memcached server will be deployed in your K8s cluster using the Bitnami Memcached chart and the [W3 Total Cache](https://wordpress.org/plugins/w3-total-cache/) plugin will be activated and configured to use the Memcached server for database caching. + +It is also possible to use an external cache server rather than installing one inside your cluster. To achieve this, the chart allows you to specify credentials for an external cache server with the [`externalCache` parameter](#database-parameters). You should also disable the Memcached installation with the `memcached.enabled` option. Here is an example: + +```console +wordpressConfigureCache=true +memcached.enabled=false +externalCache.host=myexternalcachehost +externalCache.port=11211 +``` + +### Ingress + +This chart provides support for Ingress resources. If you have an ingress controller installed on your cluster, such as [nginx-ingress-controller](https://github.com/bitnami/charts/tree/main/bitnami/nginx-ingress-controller) or [contour](https://github.com/bitnami/charts/tree/main/bitnami/contour) you can utilize the ingress controller to serve your application.To enable Ingress integration, set `ingress.enabled` to `true`. + +The most common scenario is to have one host name mapped to the deployment. In this case, the `ingress.hostname` property can be used to set the host name. The `ingress.tls` parameter can be used to add the TLS configuration for this host. + +However, it is also possible to have more than one host. To facilitate this, the `ingress.extraHosts` parameter (if available) can be set with the host names specified as an array. The `ingress.extraTLS` parameter (if available) can also be used to add the TLS configuration for extra hosts. + +> NOTE: For each host specified in the `ingress.extraHosts` parameter, it is necessary to set a name, path, and any annotations that the Ingress controller should know about. Not all annotations are supported by all Ingress controllers, but [this annotation reference document](https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md) lists the annotations supported by many popular Ingress controllers. + +Adding the TLS parameter (where available) will cause the chart to generate HTTPS URLs, and the application will be available on port 443. The actual TLS secrets do not have to be generated by this chart. However, if TLS is enabled, the Ingress record will not work until the TLS secret exists. + +[Learn more about Ingress controllers](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/). + +### TLS secrets + +This chart facilitates the creation of TLS secrets for use with the Ingress controller (although this is not mandatory). There are several common use cases: + +- Generate certificate secrets based on chart parameters. +- Enable externally generated certificates. +- Manage application certificates via an external service (like [cert-manager](https://github.com/jetstack/cert-manager/)). +- Create self-signed certificates within the chart (if supported). + +In the first two cases, a certificate and a key are needed. Files are expected in `.pem` format. + +Here is an example of a certificate file: + +> NOTE: There may be more than one certificate if there is a certificate chain. + +```text +-----BEGIN CERTIFICATE----- +MIID6TCCAtGgAwIBAgIJAIaCwivkeB5EMA0GCSqGSIb3DQEBCwUAMFYxCzAJBgNV +... +jScrvkiBO65F46KioCL9h5tDvomdU1aqpI/CBzhvZn1c0ZTf87tGQR8NK7v7 +-----END CERTIFICATE----- +``` + +Here is an example of a certificate key: + +```text +-----BEGIN RSA PRIVATE KEY----- +MIIEogIBAAKCAQEAvLYcyu8f3skuRyUgeeNpeDvYBCDcgq+LsWap6zbX5f8oLqp4 +... +wrj2wDbCDCFmfqnSJ+dKI3vFLlEz44sAV8jX/kd4Y6ZTQhlLbYc= +-----END RSA PRIVATE KEY----- +``` + +- If using Helm to manage the certificates based on the parameters, copy these values into the `certificate` and `key` values for a given `*.ingress.secrets` entry. +- If managing TLS secrets separately, it is necessary to create a TLS secret with name `INGRESS_HOSTNAME-tls` (where INGRESS_HOSTNAME is a placeholder to be replaced with the hostname you set using the `*.ingress.hostname` parameter). +- If your cluster has a [cert-manager](https://github.com/jetstack/cert-manager) add-on to automate the management and issuance of TLS certificates, add to `*.ingress.annotations` the [corresponding ones](https://cert-manager.io/docs/usage/ingress/#supported-annotations) for cert-manager. +- If using self-signed certificates created by Helm, set both `*.ingress.tls` and `*.ingress.selfSigned` to `true`. + +### `.htaccess` files + +For performance and security reasons, it is a good practice to configure Apache with the `AllowOverride None` directive. Instead of using `.htaccess` files, Apache will load the same directives at boot time. These directives are located in `/opt/bitnami/wordpress/wordpress-htaccess.conf`. + +By default, the container image includes all the default `.htaccess` files in WordPress (together with the default plugins). To enable this feature, install the chart with the value `allowOverrideNone=yes`. + +However, some plugins may include `.htaccess` directives that will not be loaded when `AllowOverride` is set to `None`. To make them work, create a custom `wordpress-htaccess.conf` file with all the required directives. After creating it, create a Kubernetes ConfigMap with it (for example, named `custom-htaccess`) and install the chart with the correct parameters as shown below: + +```text + allowOverrideNone=true + customHTAccessCM=custom-htaccess +``` + +Some plugins permit editing the `.htaccess` file and it may be necessary to persist it in order to keep those edits. To make these plugins work, set the `htaccessPersistenceEnabled` parameter as shown below: + +```text + allowOverrideNone=false + htaccessPersistenceEnabled=true +``` + +## Persistence + +The [Bitnami WordPress](https://github.com/bitnami/containers/tree/main/bitnami/wordpress) image stores the WordPress data and configurations at the `/bitnami` path of the container. Persistent Volume Claims are used to keep the data across deployments. + +If you encounter errors when working with persistent volumes, refer to our [troubleshooting guide for persistent volumes](https://docs.bitnami.com/kubernetes/faq/troubleshooting/troubleshooting-persistence-volumes/). + +### Additional environment variables + +In case you want to add extra environment variables (useful for advanced operations like custom init scripts), you can use the `extraEnvVars` property. + +```yaml +wordpress: + extraEnvVars: + - name: LOG_LEVEL + value: error +``` + +Alternatively, you can use a ConfigMap or a Secret with the environment variables. To do so, use the `extraEnvVarsCM` or the `extraEnvVarsSecret` values. + +### Sidecars + +If additional containers are needed in the same pod as WordPress (such as additional metrics or logging exporters), they can be defined using the `sidecars` parameter. + +```yaml +sidecars: +- name: your-image-name + image: your-image + imagePullPolicy: Always + ports: + - name: portname + containerPort: 1234 +``` + +If these sidecars export extra ports, extra port definitions can be added using the `service.extraPorts` parameter (where available), as shown in the example below: + +```yaml +service: + extraPorts: + - name: extraPort + port: 11311 + targetPort: 11311 +``` + +> NOTE: This Helm chart already includes sidecar containers for the Prometheus exporters (where applicable). These can be activated by adding the `--enable-metrics=true` parameter at deployment time. The `sidecars` parameter should therefore only be used for any extra sidecar containers. + +If additional init containers are needed in the same pod, they can be defined using the `initContainers` parameter. Here is an example: + +```yaml +initContainers: + - name: your-image-name + image: your-image + imagePullPolicy: Always + ports: + - name: portname + containerPort: 1234 +``` + +Learn more about [sidecar containers](https://kubernetes.io/docs/concepts/workloads/pods/) and [init containers](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/). + +### Pod affinity + +This chart allows you to set your custom affinity using the `affinity` parameter. Learn more about Pod affinity in the [kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity). + +As an alternative, use one of the preset configurations for pod affinity, pod anti-affinity, and node affinity available at the [bitnami/common](https://github.com/bitnami/charts/tree/main/bitnami/common#affinities) chart. To do so, set the `podAffinityPreset`, `podAntiAffinityPreset`, or `nodeAffinityPreset` parameters. + +## Troubleshooting + +Find more information about how to deal with common errors related to Bitnami's Helm charts in [this troubleshooting guide](https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues). + +## Notable changes + +### 13.2.0 + +Removed support for limiting auto-updates to WordPress core via the `wordpressAutoUpdateLevel` option. To update WordPress core, we recommend you use the `helm upgrade` command to update your deployment instead of using the built-in update functionality. + +### 11.0.0 + +The [Bitnami WordPress](https://github.com/bitnami/containers/tree/main/bitnami/wordpress) image was refactored and now the source code is published in GitHub in the `rootfs` folder of the container image. + +In addition, several new features have been implemented: + +- Multisite mode is now supported via `multisite.*` options. +- Plugins can be installed and activated on the first deployment via the `wordpressPlugins` option. +- Added support for limiting auto-updates to WordPress core via the `wordpressAutoUpdateLevel` option. In addition, auto-updates have been disabled by default. To update WordPress core, we recommend to swap the container image version for your deployment instead of using the built-in update functionality. + +To enable the new features, it is not possible to do it by upgrading an existing deployment. Instead, it is necessary to perform a fresh deploy. + +## Upgrading + +### To 20.0.0 + +This major release bumps the and MariaDB chart version to [16.x.x](https://github.com/bitnami/charts/pull/23054); no major issues are expected during the upgrade. + +### To 19.0.0 + +This major release bumps the MariaDB version to 11.2. No major issues are expected during the upgrade. + +### To 18.0.0 + +This major release bumps the MariaDB version to 11.1. No major issues are expected during the upgrade. + +### To 17.0.0 + +This major release bumps the MariaDB version to 11.0. Follow the [upstream instructions](https://mariadb.com/kb/en/upgrading-from-mariadb-10-11-to-mariadb-11-0/) for upgrading from MariaDB 10.11 to 11.0. No major issues are expected during the upgrade. + +### To 16.0.0 + +This major release bumps the MariaDB version to 10.11. Follow the [upstream instructions](https://mariadb.com/kb/en/upgrading-from-mariadb-10-6-to-mariadb-10-11/) for upgrading from MariaDB 10.6 to 10.11. No major issues are expected during the upgrade. + +### To 14.0.0 + +This major release bumps the MariaDB version to 10.6. Follow the [upstream instructions](https://mariadb.com/kb/en/upgrading-from-mariadb-105-to-mariadb-106/) for upgrading from MariaDB 10.5 to 10.6. No major issues are expected during the upgrade. + +### To 13.0.0 + +This major release renames several values in this chart and adds missing features, in order to be inline with the rest of assets in the Bitnami charts repository. + +- `service.port` and `service.httpsPort` have been regrouped under the `service.ports` map. +- `metrics.service.port` has been regrouped under the `metrics.service.ports` map. +- `serviceAccountName` has been deprecated in favor of `serviceAccount` map. + +Additionally updates the MariaDB & Memcached subcharts to their newest major `10.x.x` and `6.x.x`, respectively, which contain similar changes. + +### To 12.0.0 + +WordPress version was bumped to its latest major, `5.8.x`. Though no incompatibilities are expected while upgrading from previous versions, WordPress recommends backing up your application first. + +Site backups can be easily performed using tools such as [VaultPress](https://vaultpress.com/) or [All-in-One WP Migration](https://wordpress.org/plugins/all-in-one-wp-migration/). + +### To 11.0.0 + +The [Bitnami WordPress](https://github.com/bitnami/containers/tree/main/bitnami/wordpress) image was refactored and now the source code is published in GitHub in the `rootfs` folder of the container image. + +Compatibility is not guaranteed due to the amount of involved changes, however no breaking changes are expected. + +### To 10.0.0 + +[On November 13, 2020, Helm v2 support was formally finished](https://github.com/helm/charts#status-of-the-project), this major version is the result of the required changes applied to the Helm Chart to be able to incorporate the different features added in Helm v3 and to be consistent with the Helm project itself regarding the Helm v2 EOL. + +#### Additional upgrade notes + +- MariaDB dependency version was bumped to a new major version that introduces several incompatibilities. Therefore, backwards compatibility is not guaranteed unless an external database is used. Check [MariaDB Upgrading Notes](https://github.com/bitnami/charts/tree/main/bitnami/mariadb#to-800) for more information. +- If you want to upgrade to this version from a previous one installed with Helm v3, there are two alternatives: + - Install a new WordPress chart, and migrate your WordPress site using backup/restore tools such as [VaultPress](https://vaultpress.com/) or [All-in-One WP Migration](https://wordpress.org/plugins/all-in-one-wp-migration/). + - Reuse the PVC used to hold the MariaDB data on your previous release. To do so, follow the instructions below (the following example assumes that the release name is `wordpress`). + +> Warning: please create a backup of your database before running any of these actions. The steps below would be only valid if your application (e.g. any plugins or custom code) is compatible with MariaDB 10.5. + +Obtain the credentials and the name of the PVC used to hold the MariaDB data on your current release: + +```console +export WORDPRESS_PASSWORD=$(kubectl get secret --namespace default wordpress -o jsonpath="{.data.wordpress-password}" | base64 -d) +export MARIADB_ROOT_PASSWORD=$(kubectl get secret --namespace default wordpress-mariadb -o jsonpath="{.data.mariadb-root-password}" | base64 -d) +export MARIADB_PASSWORD=$(kubectl get secret --namespace default wordpress-mariadb -o jsonpath="{.data.mariadb-password}" | base64 -d) +export MARIADB_PVC=$(kubectl get pvc -l app.kubernetes.io/instance=wordpress,app.kubernetes.io/name=mariadb,app.kubernetes.io/component=primary -o jsonpath="{.items[0].metadata.name}") +``` + +Upgrade your release (maintaining the version) disabling MariaDB and scaling WordPress replicas to 0: + +```console +helm upgrade wordpress oci://REGISTRY_NAME/REPOSITORY_NAME/wordpress --set wordpressPassword=$WORDPRESS_PASSWORD --set replicaCount=0 --set mariadb.enabled=false --version 9.6.4 +``` + +> Note: You need to substitute the placeholders `REGISTRY_NAME` and `REPOSITORY_NAME` with a reference to your Helm chart registry and repository. For example, in the case of Bitnami, you need to use `REGISTRY_NAME=registry-1.docker.io` and `REPOSITORY_NAME=bitnamicharts`. + +Finally, upgrade you release to `10.0.0` reusing the existing PVC, and enabling back MariaDB: + +```console +helm upgrade wordpress oci://REGISTRY_NAME/REPOSITORY_NAME/wordpress --set mariadb.primary.persistence.existingClaim=$MARIADB_PVC --set mariadb.auth.rootPassword=$MARIADB_ROOT_PASSWORD --set mariadb.auth.password=$MARIADB_PASSWORD --set wordpressPassword=$WORDPRESS_PASSWORD +``` + +> Note: You need to substitute the placeholders `REGISTRY_NAME` and `REPOSITORY_NAME` with a reference to your Helm chart registry and repository. For example, in the case of Bitnami, you need to use `REGISTRY_NAME=registry-1.docker.io` and `REPOSITORY_NAME=bitnamicharts`. + +You should see the lines below in MariaDB container logs: + +```console +$ kubectl logs $(kubectl get pods -l app.kubernetes.io/instance=wordpress,app.kubernetes.io/name=mariadb,app.kubernetes.io/component=primary -o jsonpath="{.items[0].metadata.name}") +... +mariadb 12:13:24.98 INFO ==> Using persisted data +mariadb 12:13:25.01 INFO ==> Running mysql_upgrade +... +``` + +### To 9.0.0 + +The [Bitnami WordPress](https://github.com/bitnami/containers/tree/main/bitnami/wordpress) image was migrated to a "non-root" user approach. Previously the container ran as the `root` user and the Apache daemon was started as the `daemon` user. From now on, both the container and the Apache daemon run as user `1001`. You can revert this behavior by setting the parameters `securityContext.runAsUser`, and `securityContext.fsGroup` to `0`. +Chart labels and Ingress configuration were also adapted to follow the Helm charts best practices. + +Consequences: + +- The HTTP/HTTPS ports exposed by the container are now `8080/8443` instead of `80/443`. +- No writing permissions will be granted on `wp-config.php` by default. +- Backwards compatibility is not guaranteed. + +To upgrade to `9.0.0`, it's recommended to install a new WordPress chart, and migrate your WordPress site using backup/restore tools such as [VaultPress](https://vaultpress.com/) or [All-in-One WP Migration](https://wordpress.org/plugins/all-in-one-wp-migration/). + +### To 8.0.0 + +Helm performs a lookup for the object based on its group (apps), version (v1), and kind (Deployment). Also known as its GroupVersionKind, or GVK. Changing the GVK is considered a compatibility breaker from Kubernetes' point of view, so you cannot "upgrade" those objects to the new GVK in-place. Earlier versions of Helm 3 did not perform the lookup correctly which has since been fixed to match the spec. + +In the `apiVersion` of the deployment resources was updated to `apps/v1` in tune with the API's deprecated, resulting in compatibility breakage. + +This major version signifies this change. + +### To 3.0.0 + +Backwards compatibility is not guaranteed unless you modify the labels used on the chart's deployments. +Use the workaround below to upgrade from versions previous to `3.0.0`. The following example assumes that the release name is `wordpress`: + +```console +kubectl patch deployment wordpress-wordpress --type=json -p='[{"op": "remove", "path": "/spec/selector/matchLabels/chart"}]' +kubectl delete statefulset wordpress-mariadb --cascade=false +``` + +## License + +Copyright © 2024 Broadcom. The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. \ No newline at end of file diff --git a/charts/wordpress final/charts/common-2.19.1.tgz b/charts/wordpress final/charts/common-2.19.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..2aec1c88ed12d4638372b8677b0bd9e335975da3 GIT binary patch literal 15699 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 F0RZ?j)H?tG literal 0 HcmV?d00001 diff --git a/charts/wordpress final/charts/mariadb-16.5.0.tgz b/charts/wordpress final/charts/mariadb-16.5.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..8c88035b8e9461d677b411a18b641fb00c90cdd0 GIT binary patch literal 51501 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 literal 0 HcmV?d00001 diff --git a/charts/wordpress final/charts/memcached-6.14.0.tgz b/charts/wordpress final/charts/memcached-6.14.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..af49218f961439a6cb8b1dc7001ee18d9bcc8ed9 GIT binary patch literal 40339 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

    BqWyo9yBJ|ZzmN28FG7}}z7O1!*E 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 literal 0 HcmV?d00001 diff --git a/charts/wordpress final/curl b/charts/wordpress final/curl new file mode 100644 index 0000000..e69de29 diff --git a/charts/wordpress final/index.yaml b/charts/wordpress final/index.yaml new file mode 100644 index 0000000..73be1d0 --- /dev/null +++ b/charts/wordpress final/index.yaml @@ -0,0 +1,161 @@ +apiVersion: v1 +entries: + common: + - annotations: + category: Infrastructure + licenses: Apache-2.0 + apiVersion: v2 + appVersion: 2.19.0 + created: "2024-04-15T08:17:31.201694+02:00" + description: A Library Helm Chart for grouping common logic between bitnami charts. + This chart is not deployable by itself. + digest: 89e4008ba84ebc4b1838b7266bd991958f57eedb841e9268726de971dc78cfd1 + home: https://bitnami.com + icon: https://bitnami.com/downloads/logos/bitnami-mark.png + keywords: + - common + - helper + - template + - function + - bitnami + maintainers: + - name: VMware, Inc. + url: https://github.com/bitnami/charts + name: common + sources: + - https://github.com/bitnami/charts + type: library + urls: + - charts/common-2.19.0.tgz + version: 2.19.0 + mariadb: + - annotations: + category: Database + images: | + - name: mariadb + image: docker.io/bitnami/mariadb:11.2.3-debian-12-r4 + - name: mysqld-exporter + image: docker.io/bitnami/mysqld-exporter:0.15.1-debian-12-r8 + - name: os-shell + image: docker.io/bitnami/os-shell:12-debian-12-r16 + licenses: Apache-2.0 + apiVersion: v2 + appVersion: 11.2.3 + created: "2024-04-15T08:17:31.2084884+02:00" + dependencies: + - name: common + repository: oci://registry-1.docker.io/bitnamicharts + tags: + - bitnami-common + version: 2.x.x + description: MariaDB is an open source, community-developed SQL database server + that is widely in use around the world due to its enterprise features, flexibility, + and collaboration with leading tech firms. + digest: 68baeb5bed0d05469e805fff6745b68ddd77a585033a0d03fcc90ab108677529 + home: https://bitnami.com + icon: https://bitnami.com/assets/stacks/mariadb/img/mariadb-stack-220x234.png + keywords: + - mariadb + - mysql + - database + - sql + - prometheus + maintainers: + - name: VMware, Inc. + url: https://github.com/bitnami/charts + name: mariadb + sources: + - https://github.com/bitnami/charts/tree/main/bitnami/mariadb + urls: + - charts/mariadb-16.5.0.tgz + version: 16.5.0 + memcached: + - annotations: + category: Infrastructure + images: | + - name: memcached + image: docker.io/bitnami/memcached:1.6.24-debian-12-r0 + - name: memcached-exporter + image: docker.io/bitnami/memcached-exporter:0.14.2-debian-12-r10 + - name: os-shell + image: docker.io/bitnami/os-shell:12-debian-12-r16 + licenses: Apache-2.0 + apiVersion: v2 + appVersion: 1.6.24 + created: "2024-04-15T08:17:31.213548+02:00" + dependencies: + - name: common + repository: oci://registry-1.docker.io/bitnamicharts + tags: + - bitnami-common + version: 2.x.x + description: Memcached is an high-performance, distributed memory object caching + system, generic in nature, but intended for use in speeding up dynamic web applications + by alleviating database load. + digest: 729aa0fc402dcc3eb493028ef124a744f907b8dba997519bb7dea588703a3c5f + home: https://bitnami.com + icon: https://bitnami.com/assets/stacks/memcached/img/memcached-stack-220x234.png + keywords: + - memcached + - cache + maintainers: + - name: VMware, Inc. + url: https://github.com/bitnami/charts + name: memcached + sources: + - https://github.com/bitnami/charts/tree/main/bitnami/memcached + urls: + - charts/memcached-6.14.0.tgz + version: 6.14.0 + wordpress: + - annotations: + category: CMS + images: | + - name: apache-exporter + image: docker.io/bitnami/apache-exporter:1.0.6-debian-12-r8 + - name: os-shell + image: docker.io/bitnami/os-shell:12-debian-12-r16 + - name: wordpress + image: docker.io/bitnami/wordpress:6.4.3-debian-12-r20 + licenses: Apache-2.0 + apiVersion: v2 + appVersion: 6.4.3 + created: "2024-04-15T08:17:31.201694+02:00" + dependencies: + - condition: memcached.enabled + name: memcached + repository: oci://registry-1.docker.io/bitnamicharts + version: 6.x.x + - condition: mariadb.enabled + name: mariadb + repository: oci://registry-1.docker.io/bitnamicharts + version: 16.x.x + - name: common + repository: oci://registry-1.docker.io/bitnamicharts + tags: + - bitnami-common + version: 2.x.x + description: WordPress is the world's most popular blogging and content management + platform. Powerful yet simple, everyone from students to global corporations + use it to build beautiful, functional websites. + digest: 13bb5d3f211ed22015c505a6d6508eabdf6f7bcb1e45f462362b0c5c870ffebf + home: https://bitnami.com + icon: https://bitnami.com/assets/stacks/wordpress/img/wordpress-stack-220x234.png + keywords: + - application + - blog + - cms + - http + - php + - web + - wordpress + maintainers: + - name: VMware, Inc. + url: https://github.com/bitnami/charts + name: wordpress + sources: + - https://github.com/bitnami/charts/tree/main/bitnami/wordpress + urls: + - wordpress-20.1.2.tgz + version: 20.1.2 +generated: "2024-04-15T08:17:31.1874317+02:00" diff --git a/charts/wordpress final/template.txt b/charts/wordpress final/template.txt new file mode 100644 index 0000000..2c0592d --- /dev/null +++ b/charts/wordpress final/template.txt @@ -0,0 +1,564 @@ +--- +# Source: wordpress-final/charts/mariadb/templates/networkpolicy.yaml +kind: NetworkPolicy +apiVersion: networking.k8s.io/v1 +metadata: + name: kk-mariadb + namespace: "default" + labels: + app.kubernetes.io/instance: kk + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mariadb + app.kubernetes.io/version: 11.2.3 + helm.sh/chart: mariadb-16.5.0 +spec: + podSelector: + matchLabels: + app.kubernetes.io/instance: kk + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mariadb + app.kubernetes.io/version: 11.2.3 + helm.sh/chart: mariadb-16.5.0 + policyTypes: + - Ingress + - Egress + egress: + - {} + ingress: + - ports: + - port: 3306 + - port: 3306 +--- +# Source: wordpress-final/charts/mariadb/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: kk-mariadb + namespace: "default" + labels: + app.kubernetes.io/instance: kk + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mariadb + app.kubernetes.io/version: 11.2.3 + helm.sh/chart: mariadb-16.5.0 +automountServiceAccountToken: false +--- +# Source: wordpress-final/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: kk-wordpress-final + namespace: "default" + labels: + app.kubernetes.io/instance: kk + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: wordpress-final + app.kubernetes.io/version: 6.4.3 + helm.sh/chart: wordpress-final-20.1.9 +automountServiceAccountToken: false +--- +# Source: wordpress-final/charts/mariadb/templates/secrets.yaml +apiVersion: v1 +kind: Secret +metadata: + name: kk-mariadb + namespace: "default" + labels: + app.kubernetes.io/instance: kk + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mariadb + app.kubernetes.io/version: 11.2.3 + helm.sh/chart: mariadb-16.5.0 +type: Opaque +data: + mariadb-root-password: "V29yZHByZXMxMjMh" + mariadb-password: "V29yZHByZXMxMjMh" +--- +# Source: wordpress-final/templates/secrets.yaml +apiVersion: v1 +kind: Secret +metadata: + name: kk-wordpress-final + namespace: "default" + labels: + app.kubernetes.io/instance: kk + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: wordpress-final + app.kubernetes.io/version: 6.4.3 + helm.sh/chart: wordpress-final-20.1.9 +type: Opaque +data: + wordpress-password: "V29yZHByZXNzMTIzIQ==" +--- +# Source: wordpress-final/charts/mariadb/templates/primary/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: kk-mariadb + namespace: "default" + labels: + app.kubernetes.io/instance: kk + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mariadb + app.kubernetes.io/version: 11.2.3 + helm.sh/chart: mariadb-16.5.0 + app.kubernetes.io/component: primary +data: + my.cnf: |- + [mysqld] + skip-name-resolve + explicit_defaults_for_timestamp + basedir=/opt/bitnami/mariadb + datadir=/bitnami/mariadb/data + plugin_dir=/opt/bitnami/mariadb/plugin + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + tmpdir=/opt/bitnami/mariadb/tmp + max_allowed_packet=16M + bind-address=* + pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid + log-error=/opt/bitnami/mariadb/logs/mysqld.log + character-set-server=UTF8 + collation-server=utf8_general_ci + slow_query_log=0 + long_query_time=10.0 + + [client] + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + default-character-set=UTF8 + plugin_dir=/opt/bitnami/mariadb/plugin + + [manager] + port=3306 + socket=/opt/bitnami/mariadb/tmp/mysql.sock + pid-file=/opt/bitnami/mariadb/tmp/mysqld.pid +--- +# Source: wordpress-final/templates/pvc.yaml +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: kk-wordpress-final + namespace: "default" + labels: + app.kubernetes.io/instance: kk + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: wordpress-final + app.kubernetes.io/version: 6.4.3 + helm.sh/chart: wordpress-final-20.1.9 +spec: + accessModes: + - "ReadWriteOnce" + resources: + requests: + storage: "10Gi" +--- +# Source: wordpress-final/charts/mariadb/templates/primary/svc.yaml +apiVersion: v1 +kind: Service +metadata: + name: kk-mariadb + namespace: "default" + labels: + app.kubernetes.io/instance: kk + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mariadb + app.kubernetes.io/version: 11.2.3 + helm.sh/chart: mariadb-16.5.0 + app.kubernetes.io/component: primary + annotations: +spec: + type: ClusterIP + sessionAffinity: None + ports: + - name: mysql + port: 3306 + protocol: TCP + targetPort: mysql + nodePort: null + selector: + app.kubernetes.io/instance: kk + app.kubernetes.io/name: mariadb + app.kubernetes.io/component: primary +--- +# Source: wordpress-final/templates/svc.yaml +apiVersion: v1 +kind: Service +metadata: + name: kk-wordpress-final + namespace: "default" + labels: + app.kubernetes.io/instance: kk + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: wordpress-final + app.kubernetes.io/version: 6.4.3 + helm.sh/chart: wordpress-final-20.1.9 +spec: + type: LoadBalancer + externalTrafficPolicy: "Cluster" + sessionAffinity: None + ports: + - name: http + port: 80 + protocol: TCP + targetPort: http + - name: https + port: 443 + protocol: TCP + targetPort: https + selector: + app.kubernetes.io/instance: kk + app.kubernetes.io/name: wordpress-final +--- +# Source: wordpress-final/templates/deployment.yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: kk-wordpress-final + namespace: "default" + labels: + app.kubernetes.io/instance: kk + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: wordpress-final + app.kubernetes.io/version: 6.4.3 + helm.sh/chart: wordpress-final-20.1.9 +spec: + selector: + matchLabels: + app.kubernetes.io/instance: kk + app.kubernetes.io/name: wordpress-final + strategy: + type: RollingUpdate + replicas: 1 + template: + metadata: + labels: + app.kubernetes.io/instance: kk + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: wordpress-final + app.kubernetes.io/version: 6.4.3 + helm.sh/chart: wordpress-final-20.1.9 + spec: + + automountServiceAccountToken: false + # yamllint disable rule:indentation + hostAliases: + - hostnames: + - status.localhost + ip: 127.0.0.1 + # yamllint enable rule:indentation + affinity: + podAffinity: + + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: + app.kubernetes.io/instance: kk + app.kubernetes.io/name: wordpress-final + topologyKey: kubernetes.io/hostname + weight: 1 + nodeAffinity: + + securityContext: + fsGroup: 1001 + fsGroupChangePolicy: Always + supplementalGroups: [] + sysctls: [] + serviceAccountName: kk-wordpress-final + containers: + - name: wordpress + image: docker.io/bitnami/wordpress:6.4.3-debian-12-r20 + imagePullPolicy: "IfNotPresent" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: false + runAsNonRoot: true + runAsUser: 1001 + seLinuxOptions: null + seccompProfile: + type: RuntimeDefault + env: + - name: BITNAMI_DEBUG + value: "false" + - name: ALLOW_EMPTY_PASSWORD + value: "yes" + - name: WORDPRESS_SKIP_BOOTSTRAP + value: "no" + - name: MARIADB_HOST + value: "kk-mariadb" + - name: MARIADB_PORT_NUMBER + value: "3306" + - name: WORDPRESS_DATABASE_NAME + value: "bitnami_wordpress" + - name: WORDPRESS_DATABASE_USER + value: "bn_wordpress" + - name: WORDPRESS_DATABASE_PASSWORD + valueFrom: + secretKeyRef: + name: kk-mariadb + key: mariadb-password + - name: WORDPRESS_USERNAME + value: "wordpress" + - name: WORDPRESS_PASSWORD + valueFrom: + secretKeyRef: + name: kk-wordpress-final + key: wordpress-password + - name: WORDPRESS_EMAIL + value: "user@example.com" + - name: WORDPRESS_FIRST_NAME + value: "FirstName" + - name: WORDPRESS_LAST_NAME + value: "LastName" + - name: WORDPRESS_HTACCESS_OVERRIDE_NONE + value: "no" + - name: WORDPRESS_ENABLE_HTACCESS_PERSISTENCE + value: "no" + - name: WORDPRESS_BLOG_NAME + value: "User's Blog!" + - name: WORDPRESS_TABLE_PREFIX + value: "wp_" + - name: WORDPRESS_SCHEME + value: "http" + - name: WORDPRESS_EXTRA_WP_CONFIG_CONTENT + value: "" + - name: WORDPRESS_PLUGINS + value: "none" + - name: WORDPRESS_OVERRIDE_DATABASE_SETTINGS + value: "no" + - name: APACHE_HTTP_PORT_NUMBER + value: "8080" + - name: APACHE_HTTPS_PORT_NUMBER + value: "8443" + envFrom: + ports: + - name: http + containerPort: 8080 + - name: https + containerPort: 8443 + livenessProbe: + failureThreshold: 6 + httpGet: + httpHeaders: [] + path: /wp-admin/install.php + port: 'http' + scheme: 'HTTP' + initialDelaySeconds: 120 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + readinessProbe: + failureThreshold: 6 + httpGet: + httpHeaders: [] + path: /wp-login.php + port: 'http' + scheme: 'HTTP' + initialDelaySeconds: 30 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 5 + volumeMounts: + - mountPath: /bitnami/wordpress + name: wordpress-data + subPath: wordpress + volumes: + - name: wordpress-data + persistentVolumeClaim: + claimName: kk-wordpress-final +--- +# Source: wordpress-final/charts/mariadb/templates/primary/statefulset.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: kk-mariadb + namespace: "default" + labels: + app.kubernetes.io/instance: kk + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mariadb + app.kubernetes.io/version: 11.2.3 + helm.sh/chart: mariadb-16.5.0 + app.kubernetes.io/component: primary +spec: + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/instance: kk + app.kubernetes.io/name: mariadb + app.kubernetes.io/component: primary + serviceName: kk-mariadb + updateStrategy: + type: RollingUpdate + template: + metadata: + annotations: + checksum/configuration: e770d59116449161b84896dd37312bcccd9b8a27c657a9309bbafbe41e2a4d3a + labels: + app.kubernetes.io/instance: kk + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: mariadb + app.kubernetes.io/version: 11.2.3 + helm.sh/chart: mariadb-16.5.0 + app.kubernetes.io/component: primary + spec: + + automountServiceAccountToken: false + serviceAccountName: kk-mariadb + affinity: + podAffinity: + + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: + app.kubernetes.io/instance: kk + app.kubernetes.io/name: mariadb + app.kubernetes.io/component: primary + topologyKey: kubernetes.io/hostname + weight: 1 + nodeAffinity: + + securityContext: + fsGroup: 1001 + fsGroupChangePolicy: Always + supplementalGroups: [] + sysctls: [] + containers: + - name: mariadb + image: docker.io/bitnami/mariadb:11.2.3-debian-12-r4 + imagePullPolicy: "IfNotPresent" + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + privileged: false + readOnlyRootFilesystem: false + runAsGroup: 0 + runAsNonRoot: true + runAsUser: 1001 + seccompProfile: + type: RuntimeDefault + env: + - name: BITNAMI_DEBUG + value: "false" + - name: MARIADB_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: kk-mariadb + key: mariadb-root-password + - name: MARIADB_USER + value: "bn_wordpress" + - name: MARIADB_PASSWORD + valueFrom: + secretKeyRef: + name: kk-mariadb + key: mariadb-password + - name: MARIADB_DATABASE + value: "bitnami_wordpress" + ports: + - name: mysql + containerPort: 3306 + livenessProbe: + failureThreshold: 3 + initialDelaySeconds: 120 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + exec: + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_ROOT_PASSWORD_FILE") + fi + mysqladmin status -uroot -p"${password_aux}" + readinessProbe: + failureThreshold: 3 + initialDelaySeconds: 30 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + exec: + command: + - /bin/bash + - -ec + - | + password_aux="${MARIADB_ROOT_PASSWORD:-}" + if [[ -f "${MARIADB_ROOT_PASSWORD_FILE:-}" ]]; then + password_aux=$(cat "$MARIADB_ROOT_PASSWORD_FILE") + fi + mysqladmin status -uroot -p"${password_aux}" + volumeMounts: + - name: data + mountPath: /bitnami/mariadb + - name: config + mountPath: /opt/bitnami/mariadb/conf/my.cnf + subPath: my.cnf + - name: empty-dir + mountPath: /tmp + subPath: tmp-dir + - name: empty-dir + mountPath: /opt/bitnami/mariadb/conf + subPath: app-conf-dir + - name: empty-dir + mountPath: /opt/bitnami/mariadb/tmp + subPath: app-tmp-dir + - name: empty-dir + mountPath: /opt/bitnami/mariadb/logs + subPath: app-logs-dir + volumes: + - name: empty-dir + emptyDir: {} + - name: config + configMap: + name: kk-mariadb + volumeClaimTemplates: + - metadata: + name: data + labels: + app.kubernetes.io/instance: kk + app.kubernetes.io/name: mariadb + app.kubernetes.io/component: primary + spec: + accessModes: + - "ReadWriteOnce" + resources: + requests: + storage: "8Gi" +--- +# Source: wordpress-final/templates/ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: kk-wordpress-final + namespace: "default" + labels: + app.kubernetes.io/instance: kk + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: wordpress-final + app.kubernetes.io/version: 6.4.3 + helm.sh/chart: wordpress-final-20.1.9 +spec: + rules: + - host: "wordpress-genes.lab.groupe-genes.fr" + http: + paths: + - path: + pathType: + backend: + service: + name: kk-wordpress-final + port: + name: http diff --git a/charts/wordpress final/templates/NOTES.txt b/charts/wordpress final/templates/NOTES.txt new file mode 100644 index 0000000..722c965 --- /dev/null +++ b/charts/wordpress final/templates/NOTES.txt @@ -0,0 +1,96 @@ +CHART NAME: {{ .Chart.Name }} +CHART VERSION: {{ .Chart.Version }} +APP VERSION: {{ .Chart.AppVersion }} + +** Please be patient while the chart is being deployed ** + +{{- if .Values.diagnosticMode.enabled }} +The chart has been deployed in diagnostic mode. All probes have been disabled and the command has been overwritten with: + + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 4 }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 4 }} + +Get the list of pods by executing: + + kubectl get pods --namespace {{ .Release.Namespace }} -l app.kubernetes.io/instance={{ .Release.Name }} + +Access the pod you want to debug by executing + + kubectl exec --namespace {{ .Release.Namespace }} -ti -- bash + +In order to replicate the container startup scripts execute this command: + + /opt/bitnami/scripts/wordpress/entrypoint.sh /opt/bitnami/scripts/apache/run.sh + +{{- else }} + +Your WordPress site can be accessed through the following DNS name from within your cluster: + + {{ include "common.names.fullname" . }}.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }} (port {{ .Values.service.ports.http }}) + +To access your WordPress site from outside the cluster follow the steps below: + +{{- if .Values.ingress.enabled }} + +1. Get the WordPress URL and associate WordPress hostname to your cluster external IP: + + export CLUSTER_IP=$(minikube ip) # On Minikube. Use: `kubectl cluster-info` on others K8s clusters + echo "WordPress URL: http{{ if .Values.ingress.tls }}s{{ end }}://{{ .Values.ingress.hostname }}/" + echo "$CLUSTER_IP {{ .Values.ingress.hostname }}" | sudo tee -a /etc/hosts + +{{- else }} +{{- $port := .Values.service.ports.http | toString }} + +1. Get the WordPress URL by running these commands: + +{{- if contains "NodePort" .Values.service.type }} + + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.names.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo "WordPress URL: http://$NODE_IP:$NODE_PORT/" + echo "WordPress Admin URL: http://$NODE_IP:$NODE_PORT/admin" + +{{- else if contains "LoadBalancer" .Values.service.type }} + + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + Watch the status with: 'kubectl get svc --namespace {{ .Release.Namespace }} -w {{ include "common.names.fullname" . }}' + + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "common.names.fullname" . }} --template "{{ "{{ range (index .status.loadBalancer.ingress 0) }}{{ . }}{{ end }}" }}") + echo "WordPress URL: http://$SERVICE_IP{{- if ne $port "80" }}:{{ .Values.service.ports.http }}{{ end }}/" + echo "WordPress Admin URL: http://$SERVICE_IP{{- if ne $port "80" }}:{{ .Values.service.ports.http }}{{ end }}/admin" + +{{- else if contains "ClusterIP" .Values.service.type }} + + kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ include "common.names.fullname" . }} {{ .Values.service.ports.http }}:{{ .Values.service.ports.http }} & + echo "WordPress URL: http://127.0.0.1{{- if ne $port "80" }}:{{ .Values.service.ports.http }}{{ end }}//" + echo "WordPress Admin URL: http://127.0.0.1{{- if ne $port "80" }}:{{ .Values.service.ports.http }}{{ end }}//admin" + +{{- end }} +{{- end }} + +2. Open a browser and access WordPress using the obtained URL. + +3. Login with the following credentials below to see your blog: + + echo Username: {{ .Values.wordpressUsername }} + echo Password: $(kubectl get secret --namespace {{ .Release.Namespace }} {{ include "common.names.fullname" . }} -o jsonpath="{.data.wordpress-password}" | base64 -d) + +{{- if .Values.metrics.enabled }} + +You can access Apache Prometheus metrics following the steps below: + +1. Get the Apache Prometheus metrics URL by running: + + kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ printf "%s-metrics" (include "common.names.fullname" .) }} {{ .Values.metrics.service.ports.metrics }}:{{ .Values.metrics.service.ports.metrics }} & + echo "Apache Prometheus metrics URL: http://127.0.0.1:{{ .Values.metrics.service.ports.metrics }}/metrics" + +2. Open a browser and access Apache Prometheus metrics using the obtained URL. + +{{- end }} +{{- end }} + +{{- include "wordpress.validateValues" . }} +{{- include "common.warnings.rollingTag" .Values.image }} +{{- include "common.warnings.rollingTag" .Values.metrics.image }} +{{- include "common.warnings.rollingTag" .Values.volumePermissions.image }} +{{- include "common.warnings.resources" (dict "sections" (list "metrics" "" "volumePermissions") "context" $) }} diff --git a/charts/wordpress final/templates/_helpers.tpl b/charts/wordpress final/templates/_helpers.tpl new file mode 100644 index 0000000..7483623 --- /dev/null +++ b/charts/wordpress final/templates/_helpers.tpl @@ -0,0 +1,286 @@ +{{/* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{/* vim: set filetype=mustache: */}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +*/}} +{{- define "wordpress.mariadb.fullname" -}} +{{- include "common.names.dependency.fullname" (dict "chartName" "mariadb" "chartValues" .Values.mariadb "context" $) -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +*/}} +{{- define "wordpress.memcached.fullname" -}} +{{- include "common.names.dependency.fullname" (dict "chartName" "memcached" "chartValues" .Values.memcached "context" $) -}} +{{- end -}} + +{{/* +Return the proper WordPress image name +*/}} +{{- define "wordpress.image" -}} +{{- include "common.images.image" (dict "imageRoot" .Values.image "global" .Values.global) -}} +{{- end -}} + +{{/* +Return the proper image name (for the metrics image) +*/}} +{{- define "wordpress.metrics.image" -}} +{{- include "common.images.image" (dict "imageRoot" .Values.metrics.image "global" .Values.global) -}} +{{- end -}} + +{{/* +Return the proper image name (for the init container volume-permissions image) +*/}} +{{- define "wordpress.volumePermissions.image" -}} +{{- include "common.images.image" ( dict "imageRoot" .Values.volumePermissions.image "global" .Values.global ) -}} +{{- end -}} + +{{/* +Return the proper Docker Image Registry Secret Names +*/}} +{{- define "wordpress.imagePullSecrets" -}} +{{- include "common.images.pullSecrets" (dict "images" (list .Values.image .Values.metrics.image .Values.volumePermissions.image) "global" .Values.global) -}} +{{- end -}} + +{{/* + Create the name of the service account to use + */}} +{{- define "wordpress.serviceAccountName" -}} +{{- if .Values.serviceAccount.create -}} + {{ default (include "common.names.fullname" .) .Values.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.serviceAccount.name }} +{{- end -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "wordpress.customHTAccessCM" -}} +{{- printf "%s" .Values.customHTAccessCM -}} +{{- end -}} + +{{/* +Return the WordPress configuration secret +*/}} +{{- define "wordpress.configSecretName" -}} +{{- if .Values.existingWordPressConfigurationSecret -}} + {{- printf "%s" (tpl .Values.existingWordPressConfigurationSecret $) -}} +{{- else -}} + {{- printf "%s-configuration" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} + +{{/* +Return true if a secret object should be created for WordPress configuration +*/}} +{{- define "wordpress.createConfigSecret" -}} +{{- if and .Values.wordpressConfiguration (not .Values.existingWordPressConfigurationSecret) }} + {{- true -}} +{{- end -}} +{{- end -}} + +{{/* +Return the WordPress Apache configuration configmap +*/}} +{{- define "wordpress.apache.configmapName" -}} +{{- if .Values.existingApacheConfigurationConfigMap -}} + {{- printf "%s" (tpl .Values.existingApacheConfigurationConfigMap $) -}} +{{- else -}} + {{- printf "%s-apache-configuration" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} + +{{/* +Return true if a secret object should be created for Apache configuration +*/}} +{{- define "wordpress.apache.createConfigmap" -}} +{{- if and .Values.apacheConfiguration (not .Values.existingApacheConfigurationConfigMap) }} + {{- true -}} +{{- end -}} +{{- end -}} + +{{/* +Return the MariaDB Hostname +*/}} +{{- define "wordpress.databaseHost" -}} +{{- if .Values.mariadb.enabled }} + {{- if eq .Values.mariadb.architecture "replication" }} + {{- printf "%s-primary" (include "wordpress.mariadb.fullname" .) | trunc 63 | trimSuffix "-" -}} + {{- else -}} + {{- printf "%s" (include "wordpress.mariadb.fullname" .) -}} + {{- end -}} +{{- else -}} + {{- printf "%s" .Values.externalDatabase.host -}} +{{- end -}} +{{- end -}} + +{{/* +Return the MariaDB Port +*/}} +{{- define "wordpress.databasePort" -}} +{{- if .Values.mariadb.enabled }} + {{- printf "3306" -}} +{{- else -}} + {{- printf "%d" (.Values.externalDatabase.port | int ) -}} +{{- end -}} +{{- end -}} + +{{/* +Return the MariaDB Database Name +*/}} +{{- define "wordpress.databaseName" -}} +{{- if .Values.mariadb.enabled }} + {{- printf "%s" .Values.mariadb.auth.database -}} +{{- else -}} + {{- printf "%s" .Values.externalDatabase.database -}} +{{- end -}} +{{- end -}} + +{{/* +Return the MariaDB User +*/}} +{{- define "wordpress.databaseUser" -}} +{{- if .Values.mariadb.enabled }} + {{- printf "%s" .Values.mariadb.auth.username -}} +{{- else -}} + {{- printf "%s" .Values.externalDatabase.user -}} +{{- end -}} +{{- end -}} + +{{/* +Return the MariaDB Secret Name +*/}} +{{- define "wordpress.databaseSecretName" -}} +{{- if .Values.mariadb.enabled }} + {{- if .Values.mariadb.auth.existingSecret -}} + {{- printf "%s" .Values.mariadb.auth.existingSecret -}} + {{- else -}} + {{- printf "%s" (include "wordpress.mariadb.fullname" .) -}} + {{- end -}} +{{- else if .Values.externalDatabase.existingSecret -}} + {{- include "common.tplvalues.render" (dict "value" .Values.externalDatabase.existingSecret "context" $) -}} +{{- else -}} + {{- printf "%s-externaldb" (include "common.names.fullname" .) -}} +{{- end -}} +{{- end -}} + +{{/* +Return the Memcached Hostname +*/}} +{{- define "wordpress.cacheHost" -}} +{{- if .Values.memcached.enabled }} + {{- $releaseNamespace := .Release.Namespace }} + {{- $clusterDomain := .Values.clusterDomain }} + {{- printf "%s.%s.svc.%s" (include "wordpress.memcached.fullname" .) $releaseNamespace $clusterDomain -}} +{{- else -}} + {{- printf "%s" .Values.externalCache.host -}} +{{- end -}} +{{- end -}} + +{{/* +Return the Memcached Port +*/}} +{{- define "wordpress.cachePort" -}} +{{- if .Values.memcached.enabled }} + {{- printf "11211" -}} +{{- else -}} + {{- printf "%d" (.Values.externalCache.port | int ) -}} +{{- end -}} +{{- end -}} + +{{/* +Return the WordPress Secret Name +*/}} +{{- define "wordpress.secretName" -}} +{{- if .Values.existingSecret }} + {{- printf "%s" .Values.existingSecret -}} +{{- else -}} + {{- printf "%s" (include "common.names.fullname" .) -}} +{{- end -}} +{{- end -}} + +{{/* +Return the SMTP Secret Name +*/}} +{{- define "wordpress.smtpSecretName" -}} +{{- if .Values.smtpExistingSecret }} + {{- printf "%s" .Values.smtpExistingSecret -}} +{{- else -}} + {{- printf "%s" (include "common.names.fullname" .) -}} +{{- end -}} +{{- end -}} + +{{/* +Compile all warnings into a single message. +*/}} +{{- define "wordpress.validateValues" -}} +{{- $messages := list -}} +{{- $messages := append $messages (include "wordpress.validateValues.configuration" .) -}} +{{- $messages := append $messages (include "wordpress.validateValues.htaccess" .) -}} +{{- $messages := append $messages (include "wordpress.validateValues.database" .) -}} +{{- $messages := append $messages (include "wordpress.validateValues.cache" .) -}} +{{- $messages := without $messages "" -}} +{{- $message := join "\n" $messages -}} +{{- if $message -}} +{{- printf "\nVALUES VALIDATION:\n%s" $message | fail -}} +{{- end -}} +{{- end -}} + +{{/* +Validate values of WordPress - Custom wp-config.php +*/}} +{{- define "wordpress.validateValues.configuration" -}} +{{- if and (or .Values.wordpressConfiguration .Values.existingWordPressConfigurationSecret) (not .Values.wordpressSkipInstall) -}} +wordpress: wordpressConfiguration + You are trying to use a wp-config.php file. This setup is only supported + when skipping wizard installation (--set wordpressSkipInstall=true). +{{- end -}} +{{- end -}} + +{{/* +Validate values of WordPress - htaccess configuration +*/}} +{{- define "wordpress.validateValues.htaccess" -}} +{{- if and .Values.customHTAccessCM .Values.allowOverrideNone -}} +wordpress: customHTAccessCM + You are trying to use custom htaccess rules but Apache was configured + to prohibit overriding directives with htaccess files. To use this feature, + allow overriding Apache directives (--set allowOverrideNone=false). +{{- end -}} +{{- end -}} + +{{/* Validate values of WordPress - Database */}} +{{- define "wordpress.validateValues.database" -}} +{{- if and (not .Values.mariadb.enabled) (or (empty .Values.externalDatabase.host) (empty .Values.externalDatabase.port) (empty .Values.externalDatabase.database)) -}} +wordpress: database + You disable the MariaDB installation but you did not provide the required parameters + to use an external database. To use an external database, please ensure you provide + (at least) the following values: + + externalDatabase.host=DB_SERVER_HOST + externalDatabase.database=DB_NAME + externalDatabase.port=DB_SERVER_PORT +{{- end -}} +{{- end -}} + +{{/* Validate values of WordPress - Cache */}} +{{- define "wordpress.validateValues.cache" -}} +{{- if and .Values.wordpressConfigureCache (not .Values.memcached.enabled) (or (empty .Values.externalCache.host) (empty .Values.externalCache.port)) -}} +wordpress: cache + You enabled cache via W3 Total Cache without but you did not enable the Memcached + installation nor you did provided the required parameters to use an external cache server. + Please enable the Memcached installation (--set memcached.enabled=true) or + provide the external cache server values: + + externalCache.host=CACHE_SERVER_HOST + externalCache.port=CACHE_SERVER_PORT +{{- end -}} +{{- end -}} diff --git a/charts/wordpress final/templates/config-secret.yaml b/charts/wordpress final/templates/config-secret.yaml new file mode 100644 index 0000000..9dff348 --- /dev/null +++ b/charts/wordpress final/templates/config-secret.yaml @@ -0,0 +1,18 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if (include "wordpress.createConfigSecret" .) }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ printf "%s-configuration" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +data: + wp-config.php: {{ .Values.wordpressConfiguration | b64enc }} +{{- end }} diff --git a/charts/wordpress final/templates/deployment.yaml b/charts/wordpress final/templates/deployment.yaml new file mode 100644 index 0000000..720d8fa --- /dev/null +++ b/charts/wordpress final/templates/deployment.yaml @@ -0,0 +1,389 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ include "common.names.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }} + selector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} + {{- if .Values.updateStrategy }} + strategy: {{- toYaml .Values.updateStrategy | nindent 4 }} + {{- end }} + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + template: + metadata: + labels: {{- include "common.labels.standard" ( dict "customLabels" $podLabels "context" $ ) | nindent 8 }} + {{- if or .Values.podAnnotations .Values.metrics.enabled (include "wordpress.createConfigSecret" .) }} + annotations: + {{- if .Values.podAnnotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.podAnnotations "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.metrics.podAnnotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.metrics.podAnnotations "context" $) | nindent 8 }} + {{- end }} + {{- if (include "wordpress.createConfigSecret" .) }} + checksum/config-secret: {{ include (print $.Template.BasePath "/config-secret.yaml") . | sha256sum }} + {{- end }} + {{- end }} + spec: + {{- include "wordpress.imagePullSecrets" . | nindent 6 }} + automountServiceAccountToken: {{ .Values.automountServiceAccountToken }} + {{- if .Values.hostAliases }} + # yamllint disable rule:indentation + hostAliases: {{- include "common.tplvalues.render" (dict "value" .Values.hostAliases "context" $) | nindent 8 }} + # yamllint enable rule:indentation + {{- end }} + {{- if .Values.affinity }} + affinity: {{- include "common.tplvalues.render" (dict "value" .Values.affinity "context" $) | nindent 8 }} + {{- else }} + affinity: + podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.podAffinityPreset "customLabels" $podLabels "context" $) | nindent 10 }} + podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.podAntiAffinityPreset "customLabels" $podLabels "context" $) | nindent 10 }} + nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.nodeAffinityPreset.type "key" .Values.nodeAffinityPreset.key "values" .Values.nodeAffinityPreset.values) | nindent 10 }} + {{- end }} + {{- if .Values.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" (dict "value" .Values.nodeSelector "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.tolerations }} + tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.tolerations "context" $) | nindent 8 }} + {{- end }} + {{- if .Values.priorityClassName }} + priorityClassName: {{ .Values.priorityClassName }} + {{- end }} + {{- if .Values.schedulerName }} + schedulerName: {{ .Values.schedulerName | quote }} + {{- end }} + {{- if .Values.podSecurityContext.enabled }} + securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.podSecurityContext "context" $) | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "wordpress.serviceAccountName" .}} + {{- if .Values.terminationGracePeriodSeconds }} + terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }} + {{- end }} + {{- if .Values.topologySpreadConstraints }} + topologySpreadConstraints: {{- include "common.tplvalues.render" (dict "value" .Values.topologySpreadConstraints "context" .) | nindent 8 }} + {{- end }} + {{- if or (and .Values.podSecurityContext.enabled .Values.volumePermissions.enabled .Values.persistence.enabled) (.Values.initContainers) }} + initContainers: + {{- if and .Values.podSecurityContext.enabled .Values.volumePermissions.enabled .Values.persistence.enabled }} + - name: volume-permissions + image: "{{ include "wordpress.volumePermissions.image" . }}" + imagePullPolicy: {{ .Values.volumePermissions.image.pullPolicy | quote }} + command: + - /bin/bash + args: + - -ec + - | + mkdir -p /bitnami/wordpress + {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) "auto" }} + find /bitnami/wordpress -mindepth 0 -maxdepth 1 -not -name ".snapshot" -not -name "lost+found" | xargs -r chown -R $(id -u):$(id -G | cut -d " " -f2) + {{- else }} + find /bitnami/wordpress -mindepth 0 -maxdepth 1 -not -name ".snapshot" -not -name "lost+found" | xargs -r chown -R {{ .Values.containerSecurityContext.runAsUser }}:{{ .Values.podSecurityContext.fsGroup }} + {{- end }} + {{- if eq ( toString ( .Values.volumePermissions.containerSecurityContext.runAsUser )) "auto " }} + securityContext: {{- omit .Values.volumePermissions.containerSecurityContext "runAsUser" | toYaml | nindent 12 }} + {{- else }} + securityContext: {{- .Values.volumePermissions.containerSecurityContext | toYaml | nindent 12 }} + {{- end }} + {{- if .Values.volumePermissions.resources }} + resources: {{- toYaml .Values.volumePermissions.resources | nindent 12 }} + {{- else if ne .Values.volumePermissions.resourcesPreset "none" }} + resources: {{- include "common.resources.preset" (dict "type" .Values.volumePermissions.resourcesPreset) | nindent 12 }} + {{- end }} + volumeMounts: + - mountPath: /bitnami/wordpress + name: wordpress-data + subPath: wordpress + {{- end }} + {{- if .Values.initContainers }} + {{- include "common.tplvalues.render" (dict "value" .Values.initContainers "context" $) | nindent 8 }} + {{- end }} + {{- end }} + containers: + - name: wordpress + image: {{ include "wordpress.image" . }} + imagePullPolicy: {{ .Values.image.pullPolicy | quote }} + {{- if .Values.diagnosticMode.enabled }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} + {{- else if .Values.command }} + command: {{- include "common.tplvalues.render" ( dict "value" .Values.command "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.diagnosticMode.enabled }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }} + {{- else if .Values.args }} + args: {{- include "common.tplvalues.render" ( dict "value" .Values.args "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.containerSecurityContext.enabled }} + securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.containerSecurityContext "context" $) | nindent 12 }} + {{- end }} + env: + - name: BITNAMI_DEBUG + value: {{ ternary "true" "false" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }} + - name: ALLOW_EMPTY_PASSWORD + value: {{ ternary "yes" "no" .Values.allowEmptyPassword | quote }} + - name: WORDPRESS_SKIP_BOOTSTRAP + value: {{ ternary "yes" "no" .Values.wordpressSkipInstall | quote }} + {{- if or .Values.wordpressConfiguration .Values.existingWordPressConfigurationSecret }} + # Override the default data to persist omiting wp-config.php from the list since + # it is mounted as a read-only file from a Secret + - name: WORDPRESS_DATA_TO_PERSIST + value: "wp-content" + {{- else }} + - name: MARIADB_HOST + value: {{ include "wordpress.databaseHost" . | quote }} + - name: MARIADB_PORT_NUMBER + value: {{ include "wordpress.databasePort" . | quote }} + - name: WORDPRESS_DATABASE_NAME + value: {{ include "wordpress.databaseName" . | quote }} + - name: WORDPRESS_DATABASE_USER + value: {{ include "wordpress.databaseUser" . | quote }} + - name: WORDPRESS_DATABASE_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "wordpress.databaseSecretName" . }} + key: mariadb-password + - name: WORDPRESS_USERNAME + value: {{ .Values.wordpressUsername | quote }} + - name: WORDPRESS_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "wordpress.secretName" . }} + key: wordpress-password + - name: WORDPRESS_EMAIL + value: {{ .Values.wordpressEmail | quote }} + - name: WORDPRESS_FIRST_NAME + value: {{ .Values.wordpressFirstName | quote }} + - name: WORDPRESS_LAST_NAME + value: {{ .Values.wordpressLastName | quote }} + - name: WORDPRESS_HTACCESS_OVERRIDE_NONE + value: {{ ternary "yes" "no" .Values.allowOverrideNone | quote }} + - name: WORDPRESS_ENABLE_HTACCESS_PERSISTENCE + value: {{ ternary "yes" "no" .Values.htaccessPersistenceEnabled | quote }} + - name: WORDPRESS_BLOG_NAME + value: {{ .Values.wordpressBlogName | quote }} + - name: WORDPRESS_TABLE_PREFIX + value: {{ .Values.wordpressTablePrefix | quote }} + - name: WORDPRESS_SCHEME + value: {{ .Values.wordpressScheme | quote }} + - name: WORDPRESS_EXTRA_WP_CONFIG_CONTENT + value: {{ .Values.wordpressExtraConfigContent | quote }} + - name: WORDPRESS_PLUGINS + value: {{ join "," .Values.wordpressPlugins | quote }} + - name: WORDPRESS_OVERRIDE_DATABASE_SETTINGS + value: {{ ternary "yes" "no" .Values.overrideDatabaseSettings | quote }} + {{- end }} + {{- if .Values.multisite.enable }} + - name: WORDPRESS_ENABLE_MULTISITE + value: "yes" + - name: WORDPRESS_MULTISITE_HOST + value: {{ .Values.multisite.host | quote }} + - name: WORDPRESS_MULTISITE_EXTERNAL_HTTP_PORT_NUMBER + value: {{ .Values.service.ports.http | quote }} + - name: WORDPRESS_MULTISITE_EXTERNAL_HTTPS_PORT_NUMBER + value: {{ .Values.service.ports.https | quote }} + - name: WORDPRESS_MULTISITE_NETWORK_TYPE + value: {{ .Values.multisite.networkType | quote }} + - name: WORDPRESS_MULTISITE_ENABLE_NIP_IO_REDIRECTION + value: {{ ternary "yes" "no" .Values.multisite.enableNipIoRedirect | quote }} + {{- end }} + {{- if .Values.smtpHost }} + - name: SMTP_HOST + value: {{ .Values.smtpHost | quote }} + {{- end }} + {{- if .Values.smtpPort }} + - name: SMTP_PORT + value: {{ .Values.smtpPort | quote }} + {{- end }} + {{- if .Values.smtpUser }} + - name: SMTP_USER + value: {{ .Values.smtpUser | quote }} + {{- end }} + {{- if or .Values.smtpPassword .Values.smtpExistingSecret }} + - name: SMTP_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "wordpress.smtpSecretName" . }} + key: smtp-password + {{- end }} + {{- if .Values.smtpProtocol }} + - name: SMTP_PROTOCOL + value: {{ .Values.smtpProtocol | quote }} + {{- end }} + - name: APACHE_HTTP_PORT_NUMBER + value: {{ .Values.containerPorts.http | quote }} + - name: APACHE_HTTPS_PORT_NUMBER + value: {{ .Values.containerPorts.https | quote }} + {{- if .Values.extraEnvVars }} + {{- include "common.tplvalues.render" (dict "value" .Values.extraEnvVars "context" $) | nindent 12 }} + {{- end }} + envFrom: + {{- if .Values.extraEnvVarsCM }} + - configMapRef: + name: {{ include "common.tplvalues.render" (dict "value" .Values.extraEnvVarsCM "context" $) }} + {{- end }} + {{- if .Values.extraEnvVarsSecret }} + - secretRef: + name: {{ include "common.tplvalues.render" (dict "value" .Values.extraEnvVarsSecret "context" $) }} + {{- end }} + ports: + - name: http + containerPort: {{ .Values.containerPorts.http }} + - name: https + containerPort: {{ .Values.containerPorts.https }} + {{- if .Values.extraContainerPorts }} + {{- include "common.tplvalues.render" (dict "value" .Values.extraContainerPorts "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.lifecycleHooks }} + lifecycle: {{- include "common.tplvalues.render" (dict "value" .Values.lifecycleHooks "context" $) | nindent 12 }} + {{- end }} + {{- if not .Values.diagnosticMode.enabled }} + {{- if .Values.customLivenessProbe }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.customLivenessProbe "context" $) | nindent 12 }} + {{- else if .Values.livenessProbe.enabled }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.livenessProbe "enabled") "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.customReadinessProbe }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.customReadinessProbe "context" $) | nindent 12 }} + {{- else if .Values.readinessProbe.enabled }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.readinessProbe "enabled") "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.customStartupProbe }} + startupProbe: {{- include "common.tplvalues.render" (dict "value" .Values.customStartupProbe "context" $) | nindent 12 }} + {{- else if .Values.startupProbe.enabled }} + startupProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.startupProbe "enabled") "context" $) | nindent 12 }} + {{- end }} + {{- end }} + {{- if .Values.resources }} + resources: {{- toYaml .Values.resources | nindent 12 }} + {{- else if ne .Values.resourcesPreset "none" }} + resources: {{- include "common.resources.preset" (dict "type" .Values.resourcesPreset) | nindent 12 }} + {{- end }} + volumeMounts: + - mountPath: /bitnami/wordpress + name: wordpress-data + subPath: wordpress + {{- if or .Values.wordpressConfiguration .Values.existingWordPressConfigurationSecret }} + - name: wordpress-config + mountPath: /opt/bitnami/wordpress/wp-config.php + subPath: wp-config.php + {{- end }} + {{- if or .Values.apacheConfiguration .Values.existingApacheConfigurationConfigMap }} + - name: apache-config + mountPath: /opt/bitnami/apache/conf/httpd.conf + subPath: httpd.conf + {{- end }} + {{- if and (not .Values.allowOverrideNone) .Values.customHTAccessCM }} + - mountPath: /opt/bitnami/apache/conf/vhosts/htaccess + name: custom-htaccess + {{- end }} + {{- if or .Values.customPostInitScripts .Values.wordpressConfigureCache }} + - mountPath: /docker-entrypoint-init.d + name: custom-postinit + {{- end }} + {{- if .Values.extraVolumeMounts }} + {{- include "common.tplvalues.render" (dict "value" .Values.extraVolumeMounts "context" $) | nindent 12 }} + {{- end }} + {{- if .Values.metrics.enabled }} + - name: metrics + image: {{ include "wordpress.metrics.image" . }} + imagePullPolicy: {{ .Values.metrics.image.pullPolicy | quote }} + {{- if .Values.diagnosticMode.enabled }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }} + {{- else if .Values.diagnosticMode.enabled }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} + {{- else }} + command: + - /bin/apache_exporter + - --scrape_uri + - http://status.localhost:8080/server-status/?auto + {{- end }} + ports: + - name: metrics + containerPort: {{ .Values.metrics.containerPorts.metrics }} + {{- if not .Values.diagnosticMode.enabled }} + {{- if .Values.metrics.customLivenessProbe }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.metrics.customLivenessProbe "context" $) | nindent 12 }} + {{- else if .Values.metrics.livenessProbe.enabled }} + livenessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.metrics.livenessProbe "enabled") "context" $) | nindent 12 }} + httpGet: + path: /metrics + port: metrics + {{- end }} + {{- if .Values.metrics.customReadinessProbe }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.metrics.customReadinessProbe "context" $) | nindent 12 }} + {{- else if .Values.metrics.readinessProbe.enabled }} + readinessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.metrics.readinessProbe "enabled") "context" $) | nindent 12 }} + httpGet: + path: /metrics + port: metrics + {{- end }} + {{- if .Values.metrics.customStartupProbe }} + startupProbe: {{- include "common.tplvalues.render" (dict "value" .Values.metrics.customStartupProbe "context" $) | nindent 12 }} + {{- else if .Values.metrics.startupProbe.enabled }} + startupProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.metrics.startupProbe "enabled") "context" $) | nindent 12 }} + tcpSocket: + port: metrics + {{- end }} + {{- end }} + {{- if .Values.metrics.resources }} + resources: {{- toYaml .Values.metrics.resources | nindent 12 }} + {{- else if ne .Values.metrics.resourcesPreset "none" }} + resources: {{- include "common.resources.preset" (dict "type" .Values.metrics.resourcesPreset) | nindent 12 }} + {{- end }} + {{- if .Values.metrics.containerSecurityContext.enabled }} + securityContext: {{- include "common.compatibility.renderSecurityContext" (dict "secContext" .Values.metrics.containerSecurityContext "context" $) | nindent 12 }} + {{- end }} + {{- end }} + {{- if .Values.sidecars }} + {{- include "common.tplvalues.render" (dict "value" .Values.sidecars "context" $) | nindent 8 }} + {{- end }} + volumes: + {{- if or .Values.wordpressConfiguration .Values.existingWordPressConfigurationSecret }} + - name: wordpress-config + secret: + secretName: {{ include "wordpress.configSecretName" . }} + defaultMode: 0644 + {{- end }} + {{- if or .Values.apacheConfiguration .Values.existingApacheConfigurationConfigMap }} + - name: apache-config + configMap: + name: {{ include "wordpress.apache.configmapName" . }} + defaultMode: 0644 + {{- end }} + {{- if and (not .Values.allowOverrideNone) .Values.customHTAccessCM }} + - name: custom-htaccess + configMap: + name: {{ include "wordpress.customHTAccessCM" . }} + items: + - key: wordpress-htaccess.conf + path: wordpress-htaccess.conf + {{- end }} + {{- if or .Values.customPostInitScripts .Values.wordpressConfigureCache }} + - name: custom-postinit + configMap: + name: {{ printf "%s-postinit" (include "common.names.fullname" .) }} + defaultMode: 0755 + {{- end }} + - name: wordpress-data + {{- if .Values.persistence.enabled }} + persistentVolumeClaim: + claimName: {{ .Values.persistence.existingClaim | default (include "common.names.fullname" .) }} + {{- else }} + emptyDir: {} + {{- end }} + {{- if .Values.extraVolumes }} + {{- include "common.tplvalues.render" (dict "value" .Values.extraVolumes "context" $) | nindent 8 }} + {{- end }} diff --git a/charts/wordpress final/templates/externaldb-secrets.yaml b/charts/wordpress final/templates/externaldb-secrets.yaml new file mode 100644 index 0000000..ae5edb1 --- /dev/null +++ b/charts/wordpress final/templates/externaldb-secrets.yaml @@ -0,0 +1,19 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if not (or .Values.mariadb.enabled .Values.externalDatabase.existingSecret) }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ printf "%s-externaldb" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +type: Opaque +data: + mariadb-password: {{ .Values.externalDatabase.password | b64enc | quote }} +{{- end }} diff --git a/charts/wordpress final/templates/extra-list.yaml b/charts/wordpress final/templates/extra-list.yaml new file mode 100644 index 0000000..2d35a58 --- /dev/null +++ b/charts/wordpress final/templates/extra-list.yaml @@ -0,0 +1,9 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- range .Values.extraDeploy }} +--- +{{ include "common.tplvalues.render" (dict "value" . "context" $) }} +{{- end }} diff --git a/charts/wordpress final/templates/hpa.yaml b/charts/wordpress final/templates/hpa.yaml new file mode 100644 index 0000000..2426dd2 --- /dev/null +++ b/charts/wordpress final/templates/hpa.yaml @@ -0,0 +1,48 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if .Values.autoscaling.enabled }} +apiVersion: {{ include "common.capabilities.hpa.apiVersion" ( dict "context" $ ) }} +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "common.names.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + scaleTargetRef: + apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} + kind: Deployment + name: {{ include "common.names.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetMemory }} + - type: Resource + resource: + name: memory + {{- if semverCompare "<1.23-0" (include "common.capabilities.kubeVersion" .) }} + targetAverageUtilization: {{ .Values.autoscaling.targetMemory }} + {{- else }} + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetMemory }} + {{- end }} + {{- end }} + {{- if .Values.autoscaling.targetCPU }} + - type: Resource + resource: + name: cpu + {{- if semverCompare "<1.23-0" (include "common.capabilities.kubeVersion" .) }} + targetAverageUtilization: {{ .Values.autoscaling.targetCPU }} + {{- else }} + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetCPU }} + {{- end }} + {{- end }} +{{- end }} diff --git a/charts/wordpress final/templates/httpd-configmap.yaml b/charts/wordpress final/templates/httpd-configmap.yaml new file mode 100644 index 0000000..30a434a --- /dev/null +++ b/charts/wordpress final/templates/httpd-configmap.yaml @@ -0,0 +1,19 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if (include "wordpress.apache.createConfigmap" .) }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ printf "%s-apache-configuration" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +data: + httpd.conf: |- + {{- .Values.apacheConfiguration | nindent 4 }} +{{- end }} diff --git a/charts/wordpress final/templates/ingress.yaml b/charts/wordpress final/templates/ingress.yaml new file mode 100644 index 0000000..3fe25b4 --- /dev/null +++ b/charts/wordpress final/templates/ingress.yaml @@ -0,0 +1,62 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if .Values.ingress.enabled }} +apiVersion: {{ include "common.capabilities.ingress.apiVersion" . }} +kind: Ingress +metadata: + name: {{ include "common.names.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if or .Values.ingress.annotations .Values.commonAnnotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.ingress.annotations .Values.commonAnnotations ) "context" . ) }} + annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.ingressClassName (eq "true" (include "common.ingress.supportsIngressClassname" .)) }} + ingressClassName: {{ .Values.ingress.ingressClassName | quote }} + {{- end }} + rules: + {{- if .Values.ingress.hostname }} + - host: {{ tpl .Values.ingress.hostname $ | quote }} + http: + paths: + {{- if .Values.ingress.extraPaths }} + {{- toYaml .Values.ingress.extraPaths | nindent 10 }} + {{- end }} + - path: {{ .Values.ingress.path }} + {{- if eq "true" (include "common.ingress.supportsPathType" .) }} + pathType: {{ .Values.ingress.pathType }} + {{- end }} + backend: {{- include "common.ingress.backend" (dict "serviceName" (include "common.names.fullname" .) "servicePort" "http" "context" $) | nindent 14 }} + {{- end }} + {{- range .Values.ingress.extraHosts }} + - host: {{ tpl .name $ | quote }} + http: + paths: + - path: {{ default "/" .path }} + {{- if eq "true" (include "common.ingress.supportsPathType" $) }} + pathType: {{ default "ImplementationSpecific" .pathType }} + {{- end }} + backend: {{- include "common.ingress.backend" (dict "serviceName" (include "common.names.fullname" $) "servicePort" "http" "context" $) | nindent 14 }} + {{- end }} + {{- if .Values.ingress.extraRules }} + {{- include "common.tplvalues.render" (dict "value" .Values.ingress.extraRules "context" $) | nindent 4 }} + {{- end }} + {{- if or (and .Values.ingress.tls (or (include "common.ingress.certManagerRequest" ( dict "annotations" .Values.ingress.annotations )) .Values.ingress.selfSigned)) .Values.ingress.extraTls }} + tls: + {{- if and .Values.ingress.tls (or (include "common.ingress.certManagerRequest" ( dict "annotations" .Values.ingress.annotations )) .Values.ingress.selfSigned) }} + - hosts: + - {{ tpl .Values.ingress.hostname $ | quote }} + {{- if or (.Values.ingress.tlsWwwPrefix) (eq (index .Values.ingress.annotations "nginx.ingress.kubernetes.io/from-to-www-redirect") "true" ) }} + - {{ printf "www.%s" (tpl .Values.ingress.hostname $) | quote }} + {{- end }} + secretName: {{ printf "%s-tls" (tpl .Values.ingress.hostname $) }} + {{- end }} + {{- if .Values.ingress.extraTls }} + {{- include "common.tplvalues.render" (dict "value" .Values.ingress.extraTls "context" $) | nindent 4 }} + {{- end }} + {{- end }} +{{- end }} diff --git a/charts/wordpress final/templates/metrics-svc.yaml b/charts/wordpress final/templates/metrics-svc.yaml new file mode 100644 index 0000000..1731ac3 --- /dev/null +++ b/charts/wordpress final/templates/metrics-svc.yaml @@ -0,0 +1,27 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if .Values.metrics.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ printf "%s-metrics" (include "common.names.fullname" .) }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: metrics + {{- if or .Values.metrics.service.annotations .Values.commonAnnotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.service.annotations .Values.commonAnnotations ) "context" . ) }} + annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }} + {{- end }} +spec: + type: ClusterIP + ports: + - name: metrics + port: {{ .Values.metrics.service.ports.metrics }} + protocol: TCP + targetPort: metrics + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }} + selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }} +{{- end }} diff --git a/charts/wordpress final/templates/networkpolicy-backend-ingress.yaml b/charts/wordpress final/templates/networkpolicy-backend-ingress.yaml new file mode 100644 index 0000000..7133256 --- /dev/null +++ b/charts/wordpress final/templates/networkpolicy-backend-ingress.yaml @@ -0,0 +1,30 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if and .Values.networkPolicy.enabled .Values.networkPolicy.ingressRules.backendOnlyAccessibleByFrontend }} +apiVersion: {{ include "common.capabilities.networkPolicy.apiVersion" . }} +kind: NetworkPolicy +metadata: + name: {{ printf "%s-backend" (include "common.names.fullname" .) }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + podSelector: + matchLabels: + {{- if .Values.networkPolicy.ingressRules.customBackendSelector }} + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingressRules.customBackendSelector "context" $) | nindent 6 }} + {{- else }} + app.kubernetes.io/name: mariadb + app.kubernetes.io/instance: {{ .Release.Name }} + {{- end }} + ingress: + - from: + - podSelector: + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }} + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 14 }} +{{- end }} diff --git a/charts/wordpress final/templates/networkpolicy-egress.yaml b/charts/wordpress final/templates/networkpolicy-egress.yaml new file mode 100644 index 0000000..9c8a442 --- /dev/null +++ b/charts/wordpress final/templates/networkpolicy-egress.yaml @@ -0,0 +1,35 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if and .Values.networkPolicy.enabled (or .Values.networkPolicy.egressRules.denyConnectionsToExternal .Values.networkPolicy.egressRules.customRules) }} +apiVersion: {{ include "common.capabilities.networkPolicy.apiVersion" . }} +kind: NetworkPolicy +metadata: + name: {{ printf "%s-egress" (include "common.names.fullname" .) }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + podSelector: + matchLabels: + app.kubernetes.io/instance: {{ .Release.Name }} + policyTypes: + - Egress + egress: + {{- if .Values.networkPolicy.egressRules.denyConnectionsToExternal }} + - ports: + - port: 53 + protocol: UDP + - port: 53 + protocol: TCP + - to: + - namespaceSelector: {} + {{- end }} + {{- if .Values.networkPolicy.egressRules.customRules }} + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.egressRules.customRules "context" $) | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/wordpress final/templates/networkpolicy-ingress.yaml b/charts/wordpress final/templates/networkpolicy-ingress.yaml new file mode 100644 index 0000000..c05c1e6 --- /dev/null +++ b/charts/wordpress final/templates/networkpolicy-ingress.yaml @@ -0,0 +1,63 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if and .Values.networkPolicy.enabled (or .Values.networkPolicy.ingress.enabled .Values.networkPolicy.metrics.enabled .Values.networkPolicy.ingressRules.accessOnlyFrom.enabled) }} +apiVersion: {{ include "common.capabilities.networkPolicy.apiVersion" . }} +kind: NetworkPolicy +metadata: + name: {{ printf "%s-ingress" (include "common.names.fullname" .) }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }} + podSelector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} + ingress: + {{- if and .Values.ingress.enabled .Values.networkPolicy.ingress.enabled (or .Values.networkPolicy.ingress.namespaceSelector .Values.networkPolicy.ingress.podSelector) }} + - from: + {{- if .Values.networkPolicy.ingress.namespaceSelector }} + - namespaceSelector: + matchLabels: + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingress.namespaceSelector "context" $) | nindent 14 }} + {{- end }} + {{- if .Values.networkPolicy.ingress.podSelector }} + - podSelector: + matchLabels: + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingress.podSelector "context" $) | nindent 14 }} + {{- end }} + {{- end }} + {{- if and .Values.metrics.enabled .Values.networkPolicy.metrics.enabled (or .Values.networkPolicy.metrics.namespaceSelector .Values.networkPolicy.metrics.podSelector) }} + - from: + {{- if .Values.networkPolicy.metrics.namespaceSelector }} + - namespaceSelector: + matchLabels: + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.metrics.namespaceSelector "context" $) | nindent 14 }} + {{- end }} + {{- if .Values.networkPolicy.metrics.podSelector }} + - podSelector: + matchLabels: + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.metrics.podSelector "context" $) | nindent 14 }} + {{- end }} + {{- end }} + {{- if and .Values.networkPolicy.ingressRules.accessOnlyFrom.enabled (or .Values.networkPolicy.ingressRules.accessOnlyFrom.namespaceSelector .Values.networkPolicy.ingressRules.accessOnlyFrom.podSelector) }} + - from: + {{- if .Values.networkPolicy.ingressRules.accessOnlyFrom.namespaceSelector }} + - namespaceSelector: + matchLabels: + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingressRules.accessOnlyFrom.namespaceSelector "context" $) | nindent 14 }} + {{- end }} + {{- if .Values.networkPolicy.ingressRules.accessOnlyFrom.podSelector }} + - podSelector: + matchLabels: + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingressRules.accessOnlyFrom.podSelector "context" $) | nindent 14 }} + {{- end }} + {{- end }} + {{- if .Values.networkPolicy.ingressRules.customRules }} + {{- include "common.tplvalues.render" (dict "value" .Values.networkPolicy.ingressRules.customRules "context" $) | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/wordpress final/templates/pdb.yaml b/charts/wordpress final/templates/pdb.yaml new file mode 100644 index 0000000..07c3777 --- /dev/null +++ b/charts/wordpress final/templates/pdb.yaml @@ -0,0 +1,26 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if .Values.pdb.create }} +apiVersion: {{ include "common.capabilities.policy.apiVersion" . }} +kind: PodDisruptionBudget +metadata: + name: {{ include "common.names.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- if .Values.pdb.minAvailable }} + minAvailable: {{ .Values.pdb.minAvailable }} + {{- end }} + {{- if .Values.pdb.maxUnavailable }} + maxUnavailable: {{ .Values.pdb.maxUnavailable }} + {{- end }} + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }} + selector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 6 }} +{{- end }} diff --git a/charts/wordpress final/templates/postinit-configmap.yaml b/charts/wordpress final/templates/postinit-configmap.yaml new file mode 100644 index 0000000..48f8b63 --- /dev/null +++ b/charts/wordpress final/templates/postinit-configmap.yaml @@ -0,0 +1,46 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if or .Values.customPostInitScripts .Values.wordpressConfigureCache }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ printf "%s-postinit" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +data: + {{- if .Values.wordpressConfigureCache }} + {{- $memcachedFullname := include "wordpress.cacheHost" . }} + {{- $memcachedPort := include "wordpress.cachePort" . | int }} + 00-configure-w3-total-cache.sh: |- + #!/bin/bash + + # Add permissions to edit wp-config.php + chmod +w /bitnami/wordpress/wp-config.php + + # Activate W3 Total Cache pairs + wp plugin activate w3-total-cache + wp total-cache fix_environment + + # Choose 'Memcached' as database and object cache method + wp total-cache option set dbcache.engine memcached --type=string + wp total-cache option set objectcache.engine memcached --type=string + wp total-cache flush all + wp total-cache option set dbcache.memcached.servers {{ $memcachedFullname }}:{{ $memcachedPort }} --type=string + wp total-cache option set dbcache.enabled true --type=boolean + wp total-cache option set objectcache.memcached.servers {{ $memcachedFullname }}:{{ $memcachedPort }} --type=string + wp total-cache option set objectcache.enabled true --type=boolean + wp total-cache flush all + + # Revoke permissions to edit wp-config.php + chmod a-w /bitnami/wordpress/wp-config.php + {{- end }} + {{- if .Values.customPostInitScripts }} + {{- include "common.tplvalues.render" (dict "value" .Values.customPostInitScripts "context" $) | nindent 2 }} + {{- end }} +{{- end }} diff --git a/charts/wordpress final/templates/pvc.yaml b/charts/wordpress final/templates/pvc.yaml new file mode 100644 index 0000000..9d4f62f --- /dev/null +++ b/charts/wordpress final/templates/pvc.yaml @@ -0,0 +1,36 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: {{ include "common.names.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if or .Values.persistence.annotations .Values.commonAnnotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.persistence.annotations .Values.commonAnnotations ) "context" . ) }} + annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }} + {{- end }} +spec: + accessModes: + {{- if not (empty .Values.persistence.accessModes) }} + {{- range .Values.persistence.accessModes }} + - {{ . | quote }} + {{- end }} + {{- else }} + - {{ .Values.persistence.accessMode | quote }} + {{- end }} + resources: + requests: + storage: {{ .Values.persistence.size | quote }} + {{- include "common.storage.class" (dict "persistence" .Values.persistence "global" .Values.global) | nindent 2 }} + {{- if .Values.persistence.selector }} + selector: {{- include "common.tplvalues.render" (dict "value" .Values.persistence.selector "context" $) | nindent 4 }} + {{- end -}} + {{- if .Values.persistence.dataSource }} + dataSource: {{- include "common.tplvalues.render" (dict "value" .Values.persistence.dataSource "context" $) | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/wordpress final/templates/secrets.yaml b/charts/wordpress final/templates/secrets.yaml new file mode 100644 index 0000000..22e6a04 --- /dev/null +++ b/charts/wordpress final/templates/secrets.yaml @@ -0,0 +1,26 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if or (not .Values.existingSecret) (and (not .Values.smtpExistingSecret) .Values.smtpPassword) }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "common.names.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +type: Opaque +data: + {{- if not .Values.existingSecret }} + wordpress-password: {{ include "common.secrets.passwords.manage" (dict "secret" (include "common.names.fullname" .) "key" "wordpress-password" "providedValues" (list "wordpressPassword") "context" $) }} + {{- end }} + {{- if and .Values.smtpPassword (not .Values.smtpExistingSecret) }} + {{- if .Values.smtpPassword }} + smtp-password: {{ .Values.smtpPassword | b64enc | quote }} + {{- end }} + {{- end }} +{{- end }} diff --git a/charts/wordpress final/templates/serviceaccount.yaml b/charts/wordpress final/templates/serviceaccount.yaml new file mode 100644 index 0000000..0ee982a --- /dev/null +++ b/charts/wordpress final/templates/serviceaccount.yaml @@ -0,0 +1,18 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "wordpress.serviceAccountName" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if or .Values.serviceAccount.annotations .Values.commonAnnotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.serviceAccount.annotations .Values.commonAnnotations ) "context" . ) }} + annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }} + {{- end }} +automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }} +{{- end -}} diff --git a/charts/wordpress final/templates/servicemonitor.yaml b/charts/wordpress final/templates/servicemonitor.yaml new file mode 100644 index 0000000..e0aa8a9 --- /dev/null +++ b/charts/wordpress final/templates/servicemonitor.yaml @@ -0,0 +1,43 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ include "common.names.fullname" . }} + namespace: {{ default .Release.Namespace .Values.metrics.serviceMonitor.namespace | quote }} + {{- $labels := include "common.tplvalues.merge" ( dict "values" ( list .Values.metrics.serviceMonitor.labels .Values.commonLabels ) "context" . ) }} + labels: {{- include "common.labels.standard" ( dict "customLabels" $labels "context" $ ) | nindent 4 }} + app.kubernetes.io/component: metrics + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +spec: + {{- if .Values.metrics.serviceMonitor.jobLabel }} + jobLabel: {{ .Values.metrics.serviceMonitor.jobLabel }} + {{- end }} + endpoints: + - port: metrics + {{- if .Values.metrics.serviceMonitor.interval }} + interval: {{ .Values.metrics.serviceMonitor.interval }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.scrapeTimeout }} + scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }} + {{- end }} + honorLabels: {{ .Values.metrics.serviceMonitor.honorLabels }} + {{- if .Values.metrics.serviceMonitor.relabellings }} + metricRelabelings: {{- toYaml .Values.metrics.serviceMonitor.relabellings | nindent 8 }} + {{- end }} + {{- if .Values.metrics.serviceMonitor.relabelings }} + relabelings: {{- toYaml .Values.metrics.serviceMonitor.relabelings | nindent 6 }} + {{- end }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace | quote }} + selector: + matchLabels: {{- include "common.labels.matchLabels" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 6 }} + app.kubernetes.io/component: metrics +{{- end }} diff --git a/charts/wordpress final/templates/svc.yaml b/charts/wordpress final/templates/svc.yaml new file mode 100644 index 0000000..b8739e1 --- /dev/null +++ b/charts/wordpress final/templates/svc.yaml @@ -0,0 +1,59 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +apiVersion: v1 +kind: Service +metadata: + name: {{ include "common.names.fullname" . }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if or .Values.service.annotations .Values.commonAnnotations }} + {{- $annotations := include "common.tplvalues.merge" ( dict "values" ( list .Values.service.annotations .Values.commonAnnotations ) "context" . ) }} + annotations: {{- include "common.tplvalues.render" ( dict "value" $annotations "context" $) | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.service.type }} + {{- if and .Values.service.clusterIP (eq .Values.service.type "ClusterIP") }} + clusterIP: {{ .Values.service.clusterIP }} + {{- end }} + {{- if or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort") }} + externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }} + {{- end }} + {{- if and (eq .Values.service.type "LoadBalancer") (not (empty .Values.service.loadBalancerSourceRanges)) }} + loadBalancerSourceRanges: {{ .Values.service.loadBalancerSourceRanges }} + {{- end }} + {{- if and (eq .Values.service.type "LoadBalancer") (not (empty .Values.service.loadBalancerIP)) }} + loadBalancerIP: {{ .Values.service.loadBalancerIP }} + {{- end }} + {{- if .Values.service.sessionAffinity }} + sessionAffinity: {{ .Values.service.sessionAffinity }} + {{- end }} + {{- if .Values.service.sessionAffinityConfig }} + sessionAffinityConfig: {{- include "common.tplvalues.render" (dict "value" .Values.service.sessionAffinityConfig "context" $) | nindent 4 }} + {{- end }} + ports: + - name: http + port: {{ .Values.service.ports.http }} + protocol: TCP + targetPort: http + {{- if (and (or (eq .Values.service.type "NodePort") (eq .Values.service.type "LoadBalancer")) (not (empty .Values.service.nodePorts.http))) }} + nodePort: {{ .Values.service.nodePorts.http }} + {{- else if eq .Values.service.type "ClusterIP" }} + nodePort: null + {{- end }} + - name: https + port: {{ .Values.service.ports.https }} + protocol: TCP + targetPort: {{ .Values.service.httpsTargetPort }} + {{- if (and (or (eq .Values.service.type "NodePort") (eq .Values.service.type "LoadBalancer")) (not (empty .Values.service.nodePorts.https))) }} + nodePort: {{ .Values.service.nodePorts.https }} + {{- else if eq .Values.service.type "ClusterIP" }} + nodePort: null + {{- end }} + {{- if .Values.service.extraPorts }} + {{- include "common.tplvalues.render" (dict "value" .Values.service.extraPorts "context" $) | nindent 4 }} + {{- end }} + {{- $podLabels := include "common.tplvalues.merge" ( dict "values" ( list .Values.podLabels .Values.commonLabels ) "context" . ) }} + selector: {{- include "common.labels.matchLabels" ( dict "customLabels" $podLabels "context" $ ) | nindent 4 }} diff --git a/charts/wordpress final/templates/tls-secrets.yaml b/charts/wordpress final/templates/tls-secrets.yaml new file mode 100644 index 0000000..728ab58 --- /dev/null +++ b/charts/wordpress final/templates/tls-secrets.yaml @@ -0,0 +1,44 @@ +{{- /* +Copyright VMware, Inc. +SPDX-License-Identifier: APACHE-2.0 +*/}} + +{{- if .Values.ingress.enabled }} +{{- if .Values.ingress.secrets }} +{{- range .Values.ingress.secrets }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ .name }} + namespace: {{ $.Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" $.Values.commonLabels "context" $ ) | nindent 4 }} + {{- if $.Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +type: kubernetes.io/tls +data: + tls.crt: {{ .certificate | b64enc }} + tls.key: {{ .key | b64enc }} +--- +{{- end }} +{{- end }} +{{- if and .Values.ingress.tls .Values.ingress.selfSigned }} +{{- $secretName := printf "%s-tls" .Values.ingress.hostname }} +{{- $ca := genCA "wordpress-ca" 365 }} +{{- $cert := genSignedCert .Values.ingress.hostname nil (list .Values.ingress.hostname) 365 $ca }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ $secretName }} + namespace: {{ .Release.Namespace | quote }} + labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} + {{- if .Values.commonAnnotations }} + annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} +type: kubernetes.io/tls +data: + tls.crt: {{ include "common.secrets.lookup" (dict "secret" $secretName "key" "tls.crt" "defaultValue" $cert.Cert "context" $) }} + tls.key: {{ include "common.secrets.lookup" (dict "secret" $secretName "key" "tls.key" "defaultValue" $cert.Key "context" $) }} + ca.crt: {{ include "common.secrets.lookup" (dict "secret" $secretName "key" "ca.crt" "defaultValue" $ca.Cert "context" $) }} +{{- end }} +{{- end }} diff --git a/charts/wordpress final/values.schema.json b/charts/wordpress final/values.schema.json new file mode 100644 index 0000000..6945e87 --- /dev/null +++ b/charts/wordpress final/values.schema.json @@ -0,0 +1,31 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "ingress": { + "type": "object", + "form": true, + "title": "Ingress Details", + "properties": { + "enabled": { + "description": "Enable Ingress", + "type": "boolean", + "default": true, + "x-onyxia": { + "hidden": true, + "overwriteDefaultWith": "k8s.ingress" + } + }, + "hostname": { + "type": "string", + "form": true, + "title": "Hostname", + "x-onyxia": { + "hidden": true, + "overwriteDefaultWith": "{{project.id}}-{{k8s.randomSubdomain}}-0.{{k8s.domain}}" + } + } + } + } + } +} diff --git a/charts/wordpress final/values.schema.json.original b/charts/wordpress final/values.schema.json.original new file mode 100644 index 0000000..0e2466a --- /dev/null +++ b/charts/wordpress final/values.schema.json.original @@ -0,0 +1,212 @@ +{ + "$schema": "http://json-schema.org/schema#", + "type": "object", + "properties": { + "wordpressUsername": { + "type": "string", + "title": "Username", + "form": true + }, + "wordpressPassword": { + "type": "string", + "title": "Password", + "form": true, + "description": "Defaults to a random 10-character alphanumeric string if not set" + }, + "wordpressEmail": { + "type": "string", + "title": "Admin email", + "form": true + }, + "wordpressBlogName": { + "type": "string", + "title": "Blog Name", + "form": true + }, + "persistence": { + "type": "object", + "properties": { + "size": { + "type": "string", + "title": "Persistent Volume Size", + "form": true, + "render": "slider", + "sliderMin": 1, + "sliderMax": 100, + "sliderUnit": "Gi" + } + } + }, + "mariadb": { + "type": "object", + "title": "MariaDB Details", + "form": true, + "properties": { + "enabled": { + "type": "boolean", + "title": "Use a new MariaDB database hosted in the cluster", + "form": true, + "description": "Whether to deploy a mariadb server to satisfy the applications database requirements. To use an external database switch this off and configure the external database details" + }, + "primary": { + "type": "object", + "properties": { + "persistence": { + "type": "object", + "properties": { + "size": { + "type": "string", + "title": "Volume Size", + "form": true, + "hidden": { + "value": false, + "path": "mariadb/enabled" + }, + "render": "slider", + "sliderMin": 1, + "sliderMax": 100, + "sliderUnit": "Gi" + } + } + } + } + } + } + }, + "externalDatabase": { + "type": "object", + "title": "External Database Details", + "description": "If MariaDB is disabled. Use this section to specify the external database details", + "form": true, + "properties": { + "host": { + "type": "string", + "form": true, + "title": "Database Host", + "hidden": "mariadb/enabled" + }, + "user": { + "type": "string", + "form": true, + "title": "Database Username", + "hidden": "mariadb/enabled" + }, + "password": { + "type": "string", + "form": true, + "title": "Database Password", + "hidden": "mariadb/enabled" + }, + "database": { + "type": "string", + "form": true, + "title": "Database Name", + "hidden": "mariadb/enabled" + }, + "port": { + "type": "integer", + "form": true, + "title": "Database Port", + "hidden": "mariadb/enabled" + } + } + }, + "ingress": { + "type": "object", + "form": true, + "title": "Ingress Configuration", + "properties": { + "enabled": { + "type": "boolean", + "form": true, + "title": "Use a custom hostname", + "description": "Enable the ingress resource that allows you to access the WordPress installation." + }, + "hostname": { + "type": "string", + "form": true, + "title": "Hostname", + "hidden": { + "value": false, + "path": "ingress/enabled" + } + }, + "tls": { + "type": "boolean", + "form": true, + "title": "Create a TLS secret", + "hidden": { + "value": false, + "path": "ingress/enabled" + } + } + } + }, + "service": { + "type": "object", + "form": true, + "title": "Service Configuration", + "properties": { + "type": { + "type": "string", + "form": true, + "title": "Service Type", + "description": "Allowed values: \"ClusterIP\", \"NodePort\" and \"LoadBalancer\"" + } + } + }, + "resources": { + "type": "object", + "title": "Required Resources", + "description": "Configure resource requests", + "form": true, + "properties": { + "requests": { + "type": "object", + "properties": { + "memory": { + "type": "string", + "form": true, + "render": "slider", + "title": "Memory Request", + "sliderMin": 10, + "sliderMax": 2048, + "sliderUnit": "Mi" + }, + "cpu": { + "type": "string", + "form": true, + "render": "slider", + "title": "CPU Request", + "sliderMin": 10, + "sliderMax": 2000, + "sliderUnit": "m" + } + } + } + } + }, + "volumePermissions": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "form": true, + "title": "Enable Init Containers", + "description": "Use an init container to set required folder permissions on the data volume before mounting it in the final destination" + } + } + }, + "metrics": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enable Metrics", + "description": "Prometheus Exporter / Metrics", + "form": true + } + } + } + } +} diff --git a/charts/wordpress final/values.yaml b/charts/wordpress final/values.yaml new file mode 100644 index 0000000..b6bca17 --- /dev/null +++ b/charts/wordpress final/values.yaml @@ -0,0 +1,1260 @@ +# Copyright VMware, Inc. +# SPDX-License-Identifier: APACHE-2.0 + +## @section Global parameters +## Global Docker image parameters +## Please, note that this will override the image parameters, including dependencies, configured to use the global value +## Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass +## + +## @param global.imageRegistry Global Docker image registry +## @param global.imagePullSecrets Global Docker registry secret names as an array +## @param global.storageClass Global StorageClass for Persistent Volume(s) +## +global: + imageRegistry: "" + ## E.g. + ## imagePullSecrets: + ## - myRegistryKeySecretName + ## + imagePullSecrets: [] + storageClass: "" + ## Compatibility adaptations for Kubernetes platforms + ## + compatibility: + ## Compatibility adaptations for Openshift + ## + openshift: + ## @param global.compatibility.openshift.adaptSecurityContext Adapt the securityContext sections of the deployment to make them compatible with Openshift restricted-v2 SCC: remove runAsUser, runAsGroup and fsGroup and let the platform use their allowed default IDs. Possible values: auto (apply if the detected running cluster is Openshift), force (perform the adaptation always), disabled (do not perform adaptation) + ## + adaptSecurityContext: disabled +## @section Common parameters +## + +## @param kubeVersion Override Kubernetes version +## +kubeVersion: "" +## @param nameOverride String to partially override common.names.fullname template (will maintain the release name) +## +nameOverride: "" +## @param fullnameOverride String to fully override common.names.fullname template +## +fullnameOverride: "" +## @param commonLabels Labels to add to all deployed resources +## +commonLabels: {} +## @param commonAnnotations Annotations to add to all deployed resources +## +commonAnnotations: {} +## @param clusterDomain Kubernetes Cluster Domain +## +clusterDomain: cluster.local +## @param extraDeploy Array of extra objects to deploy with the release +## +extraDeploy: [] +## Enable diagnostic mode in the deployment +## +diagnosticMode: + ## @param diagnosticMode.enabled Enable diagnostic mode (all probes will be disabled and the command will be overridden) + ## + enabled: false + ## @param diagnosticMode.command Command to override all containers in the deployment + ## + command: + - sleep + ## @param diagnosticMode.args Args to override all containers in the deployment + ## + args: + - infinity +## @section WordPress Image parameters +## + +## Bitnami WordPress image +## ref: https://hub.docker.com/r/bitnami/wordpress/tags/ +## @param image.registry [default: REGISTRY_NAME] WordPress image registry +## @param image.repository [default: REPOSITORY_NAME/wordpress] WordPress image repository +## @skip image.tag WordPress image tag (immutable tags are recommended) +## @param image.digest WordPress image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag +## @param image.pullPolicy WordPress image pull policy +## @param image.pullSecrets WordPress image pull secrets +## @param image.debug Specify if debug values should be set +## +image: + registry: docker.io + repository: bitnami/wordpress + tag: 6.4.3-debian-12-r20 + digest: "" + ## Specify a imagePullPolicy + ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' + ## ref: https://kubernetes.io/docs/concepts/containers/images/#pre-pulled-images + ## + 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/ + ## e.g: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + pullSecrets: [] + ## Enable debug mode + ## + debug: false +## @section WordPress Configuration parameters +## WordPress settings based on environment variables +## ref: https://github.com/bitnami/containers/tree/main/bitnami/wordpress#environment-variables +## + +## @param wordpressUsername WordPress username +## +wordpressUsername: wordpress +## @param wordpressPassword WordPress user password +## Defaults to a random 10-character alphanumeric string if not set +## +wordpressPassword: Wordpress123! +## @param existingSecret Name of existing secret containing WordPress credentials +## NOTE: Must contain key `wordpress-password` +## NOTE: When it's set, the `wordpressPassword` parameter is ignored +## +existingSecret: "" +## @param wordpressEmail WordPress user email +## +wordpressEmail: user@example.com +## @param wordpressFirstName WordPress user first name +## +wordpressFirstName: FirstName +## @param wordpressLastName WordPress user last name +## +wordpressLastName: LastName +## @param wordpressBlogName Blog name +## +wordpressBlogName: User's Blog! +## @param wordpressTablePrefix Prefix to use for WordPress database tables +## +wordpressTablePrefix: wp_ +## @param wordpressScheme Scheme to use to generate WordPress URLs +## +wordpressScheme: http +## @param wordpressSkipInstall Skip wizard installation +## NOTE: useful if you use an external database that already contains WordPress data +## ref: https://github.com/bitnami/containers/tree/main/bitnami/wordpress#connect-wordpress-docker-container-to-an-existing-database +## +wordpressSkipInstall: false +## @param wordpressExtraConfigContent Add extra content to the default wp-config.php file +## e.g: +## wordpressExtraConfigContent: | +## @ini_set( 'post_max_size', '128M'); +## @ini_set( 'memory_limit', '256M' ); +## +wordpressExtraConfigContent: "" +## @param wordpressConfiguration The content for your custom wp-config.php file (advanced feature) +## NOTE: This will override configuring WordPress based on environment variables (including those set by the chart) +## NOTE: Currently only supported when `wordpressSkipInstall=true` +## +wordpressConfiguration: "" +## @param existingWordPressConfigurationSecret The name of an existing secret with your custom wp-config.php file (advanced feature) +## NOTE: When it's set the `wordpressConfiguration` parameter is ignored +## +existingWordPressConfigurationSecret: "" +## @param wordpressConfigureCache Enable W3 Total Cache plugin and configure cache settings +## NOTE: useful if you deploy Memcached for caching database queries or you use an external cache server +## +wordpressConfigureCache: false +## @param wordpressPlugins Array of plugins to install and activate. Can be specified as `all` or `none`. +## NOTE: If set to all, only plugins that are already installed will be activated, and if set to none, no plugins will be activated +## +wordpressPlugins: none +## @param apacheConfiguration The content for your custom httpd.conf file (advanced feature) +## +apacheConfiguration: "" +## @param existingApacheConfigurationConfigMap The name of an existing secret with your custom httpd.conf file (advanced feature) +## NOTE: When it's set the `apacheConfiguration` parameter is ignored +## +existingApacheConfigurationConfigMap: "" +## @param customPostInitScripts Custom post-init.d user scripts +## ref: https://github.com/bitnami/containers/tree/main/bitnami/wordpress +## NOTE: supported formats are `.sh`, `.sql` or `.php` +## NOTE: scripts are exclusively executed during the 1st boot of the container +## e.g: +## customPostInitScripts: +## enable-multisite.sh: | +## #!/bin/bash +## chmod +w /bitnami/wordpress/wp-config.php +## wp core multisite-install --url=example.com --title="Welcome to the WordPress Multisite" --admin_user="doesntmatternotreallyused" --admin_password="doesntmatternotreallyused" --admin_email="user@example.com" +## cat /docker-entrypoint-init.d/.htaccess > /bitnami/wordpress/.htaccess +## chmod -w bitnami/wordpress/wp-config.php +## .htaccess: | +## RewriteEngine On +## RewriteBase / +## ... +## +customPostInitScripts: {} +## SMTP mail delivery configuration +## ref: https://github.com/bitnami/containers/tree/main/bitnami/wordpress/#smtp-configuration +## @param smtpHost SMTP server host +## @param smtpPort SMTP server port +## @param smtpUser SMTP username +## @param smtpPassword SMTP user password +## @param smtpProtocol SMTP protocol +## +smtpHost: "" +smtpPort: "" +smtpUser: "" +smtpPassword: "" +smtpProtocol: "" +## @param smtpExistingSecret The name of an existing secret with SMTP credentials +## NOTE: Must contain key `smtp-password` +## NOTE: When it's set, the `smtpPassword` parameter is ignored +## +smtpExistingSecret: "" +## @param allowEmptyPassword Allow the container to be started with blank passwords +## +allowEmptyPassword: true +## @param allowOverrideNone Configure Apache to prohibit overriding directives with htaccess files +## +allowOverrideNone: false +## @param overrideDatabaseSettings Allow overriding the database settings persisted in wp-config.php +## +overrideDatabaseSettings: false +## @param htaccessPersistenceEnabled Persist custom changes on htaccess files +## If `allowOverrideNone` is `false`, it will persist `/opt/bitnami/wordpress/wordpress-htaccess.conf` +## If `allowOverrideNone` is `true`, it will persist `/opt/bitnami/wordpress/.htaccess` +## +htaccessPersistenceEnabled: false +## @param customHTAccessCM The name of an existing ConfigMap with custom htaccess rules +## NOTE: Must contain key `wordpress-htaccess.conf` with the file content +## NOTE: Requires setting `allowOverrideNone=false` +## +customHTAccessCM: "" +## @param command Override default container command (useful when using custom images) +## +command: [] +## @param args Override default container args (useful when using custom images) +## +args: [] +## @param extraEnvVars Array with extra environment variables to add to the WordPress container +## e.g: +## extraEnvVars: +## - name: FOO +## value: "bar" +## +extraEnvVars: [] +## @param extraEnvVarsCM Name of existing ConfigMap containing extra env vars +## +extraEnvVarsCM: "" +## @param extraEnvVarsSecret Name of existing Secret containing extra env vars +## +extraEnvVarsSecret: "" +## @section WordPress Multisite Configuration parameters +## ref: https://github.com/bitnami/containers/tree/main/bitnami/wordpress#multisite-configuration +## + +## @param multisite.enable Whether to enable WordPress Multisite configuration. +## @param multisite.host WordPress Multisite hostname/address. This value is mandatory when enabling Multisite mode. +## @param multisite.networkType WordPress Multisite network type to enable. Allowed values: `subfolder`, `subdirectory` or `subdomain`. +## @param multisite.enableNipIoRedirect Whether to enable IP address redirection to nip.io wildcard DNS. Useful when running on an IP address with subdomain network type. +## +multisite: + enable: false + host: "" + networkType: subdomain + enableNipIoRedirect: false +## @section WordPress deployment parameters +## + +## @param replicaCount Number of WordPress replicas to deploy +## NOTE: ReadWriteMany PVC(s) are required if replicaCount > 1 +## +replicaCount: 1 +## @param updateStrategy.type WordPress deployment strategy type +## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy +## NOTE: Set it to `Recreate` if you use a PV that cannot be mounted on multiple pods +## e.g: +## updateStrategy: +## type: RollingUpdate +## rollingUpdate: +## maxSurge: 25% +## maxUnavailable: 25% +## +updateStrategy: + type: RollingUpdate +## @param schedulerName Alternate scheduler +## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ +## +schedulerName: "" +## @param terminationGracePeriodSeconds In seconds, time given to the WordPress pod to terminate gracefully +## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods +## +terminationGracePeriodSeconds: "" +## @param topologySpreadConstraints Topology Spread Constraints for pod assignment spread across your cluster among failure-domains. Evaluated as a template +## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/#spread-constraints-for-pods +## +topologySpreadConstraints: [] +## @param priorityClassName Name of the existing priority class to be used by WordPress pods, priority class needs to be created beforehand +## Ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/ +## +priorityClassName: "" +## @param automountServiceAccountToken Mount Service Account token in pod +## +automountServiceAccountToken: false +## @param hostAliases [array] WordPress pod host aliases +## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ +## +hostAliases: + ## Required for Apache exporter to work + ## + - ip: "127.0.0.1" + hostnames: + - "status.localhost" +## @param extraVolumes Optionally specify extra list of additional volumes for WordPress pods +## +extraVolumes: [] +## @param extraVolumeMounts Optionally specify extra list of additional volumeMounts for WordPress container(s) +## +extraVolumeMounts: [] +## @param sidecars Add additional sidecar containers to the WordPress pod +## e.g: +## sidecars: +## - name: your-image-name +## image: your-image +## imagePullPolicy: Always +## ports: +## - name: portname +## containerPort: 1234 +## +sidecars: [] +## @param initContainers Add additional init containers to the WordPress pods +## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ +## e.g: +## initContainers: +## - name: your-image-name +## image: your-image +## imagePullPolicy: Always +## command: ['sh', '-c', 'copy themes and plugins from git and push to /bitnami/wordpress/wp-content. Should work with extraVolumeMounts and extraVolumes'] +## +initContainers: [] +## @param podLabels Extra labels for WordPress pods +## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ +## +podLabels: {} +## @param podAnnotations Annotations for WordPress pods +## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ +## +podAnnotations: {} +## @param podAffinityPreset Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` +## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity +## +podAffinityPreset: "" +## @param podAntiAffinityPreset Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` +## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity +## +podAntiAffinityPreset: soft +## Node affinity preset +## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity +## +nodeAffinityPreset: + ## @param nodeAffinityPreset.type Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard` + ## + type: "" + ## @param nodeAffinityPreset.key Node label key to match. Ignored if `affinity` is set + ## + key: "" + ## @param nodeAffinityPreset.values Node label values to match. Ignored if `affinity` is set + ## E.g. + ## values: + ## - e2e-az1 + ## - e2e-az2 + ## + values: [] +## @param affinity Affinity for pod assignment +## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity +## NOTE: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set +## +affinity: {} +## @param nodeSelector Node labels for pod assignment +## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ +## +nodeSelector: {} +## @param tolerations Tolerations for pod assignment +## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ +## +tolerations: [] +## WordPress containers' resource requests and limits +## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ +## @param resourcesPreset Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production). +## More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15 +## +resourcesPreset: "none" +## @param resources Set container requests and limits for different resources like CPU or memory (essential for production workloads) +## Example: +## resources: +## requests: +## cpu: 2 +## memory: 512Mi +## limits: +## cpu: 3 +## memory: 1024Mi +## +resources: {} +## Container ports +## @param containerPorts.http WordPress HTTP container port +## @param containerPorts.https WordPress HTTPS container port +## +containerPorts: + http: 8080 + https: 8443 +## @param extraContainerPorts Optionally specify extra list of additional ports for WordPress container(s) +## e.g: +## extraContainerPorts: +## - name: myservice +## containerPort: 9090 +## +extraContainerPorts: [] +## Configure Pods Security Context +## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod +## @param podSecurityContext.enabled Enabled WordPress pods' Security Context +## @param podSecurityContext.fsGroupChangePolicy Set filesystem group change policy +## @param podSecurityContext.sysctls Set kernel settings using the sysctl interface +## @param podSecurityContext.supplementalGroups Set filesystem extra groups +## @param podSecurityContext.fsGroup Set WordPress pod's Security Context fsGroup +## +podSecurityContext: + enabled: true + fsGroupChangePolicy: Always + sysctls: [] + supplementalGroups: [] + fsGroup: 1001 +## Configure Container Security Context (only main container) +## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container +## @param containerSecurityContext.enabled Enabled containers' Security Context +## @param containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container +## @param containerSecurityContext.runAsUser Set containers' Security Context runAsUser +## @param containerSecurityContext.runAsNonRoot Set container's Security Context runAsNonRoot +## @param containerSecurityContext.privileged Set container's Security Context privileged +## @param containerSecurityContext.readOnlyRootFilesystem Set container's Security Context readOnlyRootFilesystem +## @param containerSecurityContext.allowPrivilegeEscalation Set container's Security Context allowPrivilegeEscalation +## @param containerSecurityContext.capabilities.drop List of capabilities to be dropped +## @param containerSecurityContext.seccompProfile.type Set container's Security Context seccomp profile +## +containerSecurityContext: + enabled: true + seLinuxOptions: null + runAsUser: 1001 + runAsNonRoot: true + privileged: false + readOnlyRootFilesystem: false + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] + seccompProfile: + type: "RuntimeDefault" +## Configure extra options for WordPress containers' liveness, readiness and startup probes +## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes +## @param livenessProbe.enabled Enable livenessProbe on WordPress containers +## @skip livenessProbe.httpGet +## @param livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe +## @param livenessProbe.periodSeconds Period seconds for livenessProbe +## @param livenessProbe.timeoutSeconds Timeout seconds for livenessProbe +## @param livenessProbe.failureThreshold Failure threshold for livenessProbe +## @param livenessProbe.successThreshold Success threshold for livenessProbe +## +livenessProbe: + enabled: true + httpGet: + path: /wp-admin/install.php + port: '{{ .Values.wordpressScheme }}' + scheme: '{{ .Values.wordpressScheme | upper }}' + ## If using an HTTPS-terminating load-balancer, the probes may need to behave + ## like the balancer to prevent HTTP 302 responses. According to the Kubernetes + ## docs, 302 should be considered "successful", but this issue on GitHub + ## (https://github.com/kubernetes/kubernetes/issues/47893) shows that it isn't. + ## E.g. + ## httpHeaders: + ## - name: X-Forwarded-Proto + ## value: https + ## + httpHeaders: [] + initialDelaySeconds: 120 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 6 + successThreshold: 1 +## @param readinessProbe.enabled Enable readinessProbe on WordPress containers +## @skip readinessProbe.httpGet +## @param readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe +## @param readinessProbe.periodSeconds Period seconds for readinessProbe +## @param readinessProbe.timeoutSeconds Timeout seconds for readinessProbe +## @param readinessProbe.failureThreshold Failure threshold for readinessProbe +## @param readinessProbe.successThreshold Success threshold for readinessProbe +## +readinessProbe: + enabled: true + httpGet: + path: /wp-login.php + port: '{{ .Values.wordpressScheme }}' + scheme: '{{ .Values.wordpressScheme | upper }}' + ## If using an HTTPS-terminating load-balancer, the probes may need to behave + ## like the balancer to prevent HTTP 302 responses. According to the Kubernetes + ## docs, 302 should be considered "successful", but this issue on GitHub + ## (https://github.com/kubernetes/kubernetes/issues/47893) shows that it isn't. + ## E.g. + ## httpHeaders: + ## - name: X-Forwarded-Proto + ## value: https + ## + httpHeaders: [] + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 6 + successThreshold: 1 +## @param startupProbe.enabled Enable startupProbe on WordPress containers +## @skip startupProbe.httpGet +## @param startupProbe.initialDelaySeconds Initial delay seconds for startupProbe +## @param startupProbe.periodSeconds Period seconds for startupProbe +## @param startupProbe.timeoutSeconds Timeout seconds for startupProbe +## @param startupProbe.failureThreshold Failure threshold for startupProbe +## @param startupProbe.successThreshold Success threshold for startupProbe +## +startupProbe: + enabled: false + httpGet: + path: /wp-login.php + port: '{{ .Values.wordpressScheme }}' + scheme: '{{ .Values.wordpressScheme | upper }}' + ## If using an HTTPS-terminating load-balancer, the probes may need to behave + ## like the balancer to prevent HTTP 302 responses. According to the Kubernetes + ## docs, 302 should be considered "successful", but this issue on GitHub + ## (https://github.com/kubernetes/kubernetes/issues/47893) shows that it isn't. + ## E.g. + ## httpHeaders: + ## - name: X-Forwarded-Proto + ## value: https + ## + httpHeaders: [] + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 6 + successThreshold: 1 +## @param customLivenessProbe Custom livenessProbe that overrides the default one +## +customLivenessProbe: {} +## @param customReadinessProbe Custom readinessProbe that overrides the default one +## +customReadinessProbe: {} +## @param customStartupProbe Custom startupProbe that overrides the default one +## +customStartupProbe: {} +## @param lifecycleHooks for the WordPress container(s) to automate configuration before or after startup +## +lifecycleHooks: {} +## @section Traffic Exposure Parameters +## + +## WordPress service parameters +## +service: + ## @param service.type WordPress service type + ## + type: LoadBalancer + ## @param service.ports.http WordPress service HTTP port + ## @param service.ports.https WordPress service HTTPS port + ## + ports: + http: 80 + https: 443 + ## @param service.httpsTargetPort Target port for HTTPS + ## + httpsTargetPort: https + ## Node ports to expose + ## @param service.nodePorts.http Node port for HTTP + ## @param service.nodePorts.https Node port for HTTPS + ## NOTE: choose port between <30000-32767> + ## + nodePorts: + http: "" + https: "" + ## @param service.sessionAffinity Control where client requests go, to the same pod or round-robin + ## Values: ClientIP or None + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/ + ## + sessionAffinity: None + ## @param service.sessionAffinityConfig Additional settings for the sessionAffinity + ## sessionAffinityConfig: + ## clientIP: + ## timeoutSeconds: 300 + ## + sessionAffinityConfig: {} + ## @param service.clusterIP WordPress service Cluster IP + ## e.g.: + ## clusterIP: None + ## + clusterIP: "" + ## @param service.loadBalancerIP WordPress service Load Balancer IP + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer + ## + loadBalancerIP: "" + ## @param service.loadBalancerSourceRanges WordPress service Load Balancer sources + ## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service + ## e.g: + ## loadBalancerSourceRanges: + ## - 10.10.10.0/24 + ## + loadBalancerSourceRanges: [] + ## @param service.externalTrafficPolicy WordPress service external traffic policy + ## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip + ## + externalTrafficPolicy: Cluster + ## @param service.annotations Additional custom annotations for WordPress service + ## + annotations: {} + ## @param service.extraPorts Extra port to expose on WordPress service + ## + extraPorts: [] +## Configure the ingress resource that allows you to access the WordPress installation +## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/ +## +ingress: + enabled: true + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hostname: wordpress-genes.lab.groupe-genes.fr + ## @param ingress.enabled Enable ingress record generation for WordPress + ## + ## enabled: false + ## @param ingress.pathType Ingress path type + ## + ## pathType: ImplementationSpecific + ## @param ingress.apiVersion Force Ingress API version (automatically detected if not set) + ## + apiVersion: "" + ## @param ingress.ingressClassName IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+) + ## This is supported in Kubernetes 1.18+ and required if you have more than one IngressClass marked as the default for your cluster . + ## ref: https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/ + ## + ingressClassName: "" + ## @param ingress.hostname Default host for the ingress record. The hostname is templated and thus can contain other variable references. + ## + ## hostname: wordpress.local + ## @param ingress.path Default path for the ingress record + ## NOTE: You may need to set this to '/*' in order to use this with ALB ingress controllers + ## + ## path: / + ## @param ingress.annotations Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations. + ## For a full list of possible ingress annotations, please see + ## ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md + ## Use this parameter to set the required annotations for cert-manager, see + ## ref: https://cert-manager.io/docs/usage/ingress/#supported-annotations + ## + ## e.g: + ## annotations: + ## kubernetes.io/ingress.class: nginx + ## cert-manager.io/cluster-issuer: cluster-issuer-name + ## + ## annotations: {} + ## @param ingress.tls Enable TLS configuration for the host defined at `ingress.hostname` parameter + ## TLS certificates will be retrieved from a TLS secret with name: `{{- printf "%s-tls" .Values.ingress.hostname }}` + ## You can: + ## - Use the `ingress.secrets` parameter to create this TLS secret + ## - Rely on cert-manager to create it by setting the corresponding annotations + ## - Rely on Helm to create self-signed certificates by setting `ingress.selfSigned=true` + ## + tls: [] + ## @param ingress.tlsWwwPrefix Adds www subdomain to default cert + ## Creates tls host with ingress.hostname: {{ print "www.%s" .Values.ingress.hostname }} + ## Is enabled if "nginx.ingress.kubernetes.io/from-to-www-redirect" is "true" + tlsWwwPrefix: false + ## @param ingress.selfSigned Create a TLS secret for this ingress record using self-signed certificates generated by Helm + ## + selfSigned: false + ## @param ingress.extraHosts An array with additional hostname(s) to be covered with the ingress record. The host names are templated and thus can contain other variable references. + ## e.g: + ## extraHosts: + ## - name: wordpress.local + ## path: / + ## + extraHosts: [] + ## @param ingress.extraPaths An array with additional arbitrary paths that may need to be added to the ingress under the main host + ## e.g: + ## extraPaths: + ## - path: /* + ## backend: + ## serviceName: ssl-redirect + ## servicePort: use-annotation + ## + extraPaths: [] + ## @param ingress.extraTls TLS configuration for additional hostname(s) to be covered with this ingress record + ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls + ## e.g: + ## extraTls: + ## - hosts: + ## - wordpress.local + ## secretName: wordpress.local-tls + ## + extraTls: [] + ## @param ingress.secrets Custom TLS certificates as secrets + ## NOTE: 'key' and 'certificate' are expected in PEM format + ## NOTE: 'name' should line up with a 'secretName' set further up + ## If it is not set and you're using cert-manager, this is unneeded, as it will create a secret for you with valid certificates + ## If it is not set and you're NOT using cert-manager either, self-signed certificates will be created valid for 365 days + ## It is also possible to create and manage the certificates outside of this helm chart + ## Please see README.md for more information + ## e.g: + ## secrets: + ## - name: wordpress.local-tls + ## key: |- + ## -----BEGIN RSA PRIVATE KEY----- + ## ... + ## -----END RSA PRIVATE KEY----- + ## certificate: |- + ## -----BEGIN CERTIFICATE----- + ## ... + ## -----END CERTIFICATE----- + ## + secrets: [] + ## @param ingress.extraRules Additional rules to be covered with this ingress record + ## ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-rules + ## e.g: + ## extraRules: + ## - host: wordpress.local + ## http: + ## path: / + ## backend: + ## service: + ## name: wordpress-svc + ## port: + ## name: http + ## + extraRules: [] +## @section Persistence Parameters +## + +## Persistence Parameters +## ref: https://kubernetes.io/docs/concepts/storage/persistent-volumes/ +## +persistence: + ## @param persistence.enabled Enable persistence using Persistent Volume Claims + ## + enabled: true + ## @param persistence.storageClass Persistent Volume storage class + ## If defined, storageClassName: + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner + ## + storageClass: "" + ## @param persistence.accessModes [array] Persistent Volume access modes + ## + accessModes: + - ReadWriteOnce + ## @param persistence.accessMode Persistent Volume access mode (DEPRECATED: use `persistence.accessModes` instead) + ## + accessMode: ReadWriteOnce + ## @param persistence.size Persistent Volume size + ## + size: 10Gi + ## @param persistence.dataSource Custom PVC data source + ## + dataSource: {} + ## @param persistence.existingClaim The name of an existing PVC to use for persistence + ## + existingClaim: "" + ## @param persistence.selector Selector to match an existing Persistent Volume for WordPress data PVC + ## If set, the PVC can't have a PV dynamically provisioned for it + ## E.g. + ## selector: + ## matchLabels: + ## app: my-app + ## + selector: {} + ## @param persistence.annotations Persistent Volume Claim annotations + ## + annotations: {} +## Init containers parameters: +## volumePermissions: Change the owner and group of the persistent volume(s) mountpoint(s) to 'runAsUser:fsGroup' on each node +## +volumePermissions: + ## @param volumePermissions.enabled Enable init container that changes the owner/group of the PV mount point to `runAsUser:fsGroup` + ## + enabled: false + ## OS Shell + Utility image + ## ref: https://hub.docker.com/r/bitnami/os-shell/tags/ + ## @param volumePermissions.image.registry [default: REGISTRY_NAME] OS Shell + Utility image registry + ## @param volumePermissions.image.repository [default: REPOSITORY_NAME/os-shell] OS Shell + Utility image repository + ## @skip volumePermissions.image.tag OS Shell + Utility image tag (immutable tags are recommended) + ## @param volumePermissions.image.digest OS Shell + Utility image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag + ## @param volumePermissions.image.pullPolicy OS Shell + Utility image pull policy + ## @param volumePermissions.image.pullSecrets OS Shell + Utility image pull secrets + ## + image: + registry: docker.io + repository: bitnami/os-shell + tag: 12-debian-12-r16 + digest: "" + 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/ + ## e.g: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + pullSecrets: [] + ## Init container's resource requests and limits + ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + ## @param volumePermissions.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if volumePermissions.resources is set (volumePermissions.resources is recommended for production). + ## More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15 + ## + resourcesPreset: "none" + ## @param volumePermissions.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads) + ## Example: + ## resources: + ## requests: + ## cpu: 2 + ## memory: 512Mi + ## limits: + ## cpu: 3 + ## memory: 1024Mi + ## + resources: {} + ## Init container' Security Context + ## Note: the chown of the data folder is done to containerSecurityContext.runAsUser + ## and not the below volumePermissions.containerSecurityContext.runAsUser + ## @param volumePermissions.containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container + ## @param volumePermissions.containerSecurityContext.runAsUser User ID for the init container + ## + containerSecurityContext: + seLinuxOptions: null + runAsUser: 0 +## @section Other Parameters +## + +## WordPress Service Account +## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ +## +serviceAccount: + ## @param serviceAccount.create Enable creation of ServiceAccount for WordPress pod + ## + create: true + ## @param serviceAccount.name The name of the ServiceAccount to use. + ## If not set and create is true, a name is generated using the common.names.fullname template + ## + name: "" + ## @param serviceAccount.automountServiceAccountToken Allows auto mount of ServiceAccountToken on the serviceAccount created + ## Can be set to false if pods using this serviceAccount do not need to use K8s API + ## + automountServiceAccountToken: false + ## @param serviceAccount.annotations Additional custom annotations for the ServiceAccount + ## + annotations: {} +## WordPress Pod Disruption Budget configuration +## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/ +## @param pdb.create Enable a Pod Disruption Budget creation +## @param pdb.minAvailable Minimum number/percentage of pods that should remain scheduled +## @param pdb.maxUnavailable Maximum number/percentage of pods that may be made unavailable +## +pdb: + create: false + minAvailable: 1 + maxUnavailable: "" +## WordPress Autoscaling configuration +## ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/ +## @param autoscaling.enabled Enable Horizontal POD autoscaling for WordPress +## @param autoscaling.minReplicas Minimum number of WordPress replicas +## @param autoscaling.maxReplicas Maximum number of WordPress replicas +## @param autoscaling.targetCPU Target CPU utilization percentage +## @param autoscaling.targetMemory Target Memory utilization percentage +## +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 11 + targetCPU: 50 + targetMemory: 50 +## @section Metrics Parameters +## + +## Prometheus Exporter / Metrics configuration +## +metrics: + ## @param metrics.enabled Start a sidecar prometheus exporter to expose metrics + ## + enabled: false + ## Bitnami Apache exporter image + ## ref: https://hub.docker.com/r/bitnami/apache-exporter/tags/ + ## @param metrics.image.registry [default: REGISTRY_NAME] Apache exporter image registry + ## @param metrics.image.repository [default: REPOSITORY_NAME/apache-exporter] Apache exporter image repository + ## @skip metrics.image.tag Apache exporter image tag (immutable tags are recommended) + ## @param metrics.image.digest Apache exporter image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag + ## @param metrics.image.pullPolicy Apache exporter image pull policy + ## @param metrics.image.pullSecrets Apache exporter image pull secrets + ## + image: + registry: docker.io + repository: bitnami/apache-exporter + tag: 1.0.6-debian-12-r8 + digest: "" + 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/ + ## e.g: + ## pullSecrets: + ## - myRegistryKeySecretName + ## + pullSecrets: [] + ## @param metrics.containerPorts.metrics Prometheus exporter container port + ## + containerPorts: + metrics: 9117 + ## Configure extra options for Prometheus exporter containers' liveness, readiness and startup probes + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes + ## @param metrics.livenessProbe.enabled Enable livenessProbe on Prometheus exporter containers + ## @param metrics.livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe + ## @param metrics.livenessProbe.periodSeconds Period seconds for livenessProbe + ## @param metrics.livenessProbe.timeoutSeconds Timeout seconds for livenessProbe + ## @param metrics.livenessProbe.failureThreshold Failure threshold for livenessProbe + ## @param metrics.livenessProbe.successThreshold Success threshold for livenessProbe + ## + livenessProbe: + enabled: true + initialDelaySeconds: 15 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 + successThreshold: 1 + ## @param metrics.readinessProbe.enabled Enable readinessProbe on Prometheus exporter containers + ## @param metrics.readinessProbe.initialDelaySeconds Initial delay seconds for readinessProbe + ## @param metrics.readinessProbe.periodSeconds Period seconds for readinessProbe + ## @param metrics.readinessProbe.timeoutSeconds Timeout seconds for readinessProbe + ## @param metrics.readinessProbe.failureThreshold Failure threshold for readinessProbe + ## @param metrics.readinessProbe.successThreshold Success threshold for readinessProbe + ## + readinessProbe: + enabled: true + initialDelaySeconds: 5 + periodSeconds: 10 + timeoutSeconds: 3 + failureThreshold: 3 + successThreshold: 1 + ## @param metrics.startupProbe.enabled Enable startupProbe on Prometheus exporter containers + ## @param metrics.startupProbe.initialDelaySeconds Initial delay seconds for startupProbe + ## @param metrics.startupProbe.periodSeconds Period seconds for startupProbe + ## @param metrics.startupProbe.timeoutSeconds Timeout seconds for startupProbe + ## @param metrics.startupProbe.failureThreshold Failure threshold for startupProbe + ## @param metrics.startupProbe.successThreshold Success threshold for startupProbe + ## + startupProbe: + enabled: false + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 1 + failureThreshold: 15 + successThreshold: 1 + ## @param metrics.customLivenessProbe Custom livenessProbe that overrides the default one + ## + customLivenessProbe: {} + ## @param metrics.customReadinessProbe Custom readinessProbe that overrides the default one + ## + customReadinessProbe: {} + ## @param metrics.customStartupProbe Custom startupProbe that overrides the default one + ## + customStartupProbe: {} + ## Prometheus exporter container's resource requests and limits + ## ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + ## @param metrics.resourcesPreset Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if metrics.resources is set (metrics.resources is recommended for production). + ## More information: https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15 + ## + resourcesPreset: "none" + ## @param metrics.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads) + ## Example: + ## resources: + ## requests: + ## cpu: 2 + ## memory: 512Mi + ## limits: + ## cpu: 3 + ## memory: 1024Mi + ## + resources: {} + ## Configure Container Security Context + ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container + ## @param metrics.containerSecurityContext.enabled Enabled containers' Security Context + ## @param metrics.containerSecurityContext.seLinuxOptions [object,nullable] Set SELinux options in container + ## @param metrics.containerSecurityContext.runAsUser Set containers' Security Context runAsUser + ## @param metrics.containerSecurityContext.runAsNonRoot Set container's Security Context runAsNonRoot + ## @param metrics.containerSecurityContext.privileged Set container's Security Context privileged + ## @param metrics.containerSecurityContext.readOnlyRootFilesystem Set container's Security Context readOnlyRootFilesystem + ## @param metrics.containerSecurityContext.allowPrivilegeEscalation Set container's Security Context allowPrivilegeEscalation + ## @param metrics.containerSecurityContext.capabilities.drop List of capabilities to be dropped + ## @param metrics.containerSecurityContext.seccompProfile.type Set container's Security Context seccomp profile + ## + containerSecurityContext: + enabled: true + seLinuxOptions: null + runAsUser: 1001 + runAsNonRoot: true + privileged: false + readOnlyRootFilesystem: false + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] + seccompProfile: + type: "RuntimeDefault" + ## Prometheus exporter service parameters + ## + service: + ## @param metrics.service.ports.metrics Prometheus metrics service port + ## + ports: + metrics: 9150 + ## @param metrics.service.annotations [object] Additional custom annotations for Metrics service + ## + annotations: + prometheus.io/scrape: "true" + prometheus.io/port: "{{ .Values.metrics.containerPorts.metrics }}" + ## Prometheus Operator ServiceMonitor configuration + ## + serviceMonitor: + ## @param metrics.serviceMonitor.enabled Create ServiceMonitor Resource for scraping metrics using Prometheus Operator + ## + enabled: false + ## @param metrics.serviceMonitor.namespace Namespace for the ServiceMonitor Resource (defaults to the Release Namespace) + ## + namespace: "" + ## @param metrics.serviceMonitor.interval Interval at which metrics should be scraped. + ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint + ## + interval: "" + ## @param metrics.serviceMonitor.scrapeTimeout Timeout after which the scrape is ended + ## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint + ## + scrapeTimeout: "" + ## @param metrics.serviceMonitor.labels Additional labels that can be used so ServiceMonitor will be discovered by Prometheus + ## + labels: {} + ## @param metrics.serviceMonitor.selector Prometheus instance selector labels + ## ref: https://github.com/bitnami/charts/tree/main/bitnami/prometheus-operator#prometheus-configuration + ## + selector: {} + ## @param metrics.serviceMonitor.relabelings RelabelConfigs to apply to samples before scraping + ## + relabelings: [] + ## @param metrics.serviceMonitor.metricRelabelings MetricRelabelConfigs to apply to samples before ingestion + ## + metricRelabelings: [] + ## @param metrics.serviceMonitor.honorLabels Specify honorLabels parameter to add the scrape endpoint + ## + honorLabels: false + ## @param metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in prometheus. + ## + jobLabel: "" +## @section NetworkPolicy parameters +## + +## Add networkpolicies +## +networkPolicy: + ## @param networkPolicy.enabled Enable network policies + ## If ingress.enabled or metrics.enabled are true, configure networkPolicy.ingress and networkPolicy.metrics selectors respectively to allow communication + ## + enabled: false + ## @param networkPolicy.metrics.enabled Enable network policy for metrics (prometheus) + ## @param networkPolicy.metrics.namespaceSelector [object] Monitoring namespace selector labels. These labels will be used to identify the prometheus' namespace. + ## @param networkPolicy.metrics.podSelector [object] Monitoring pod selector labels. These labels will be used to identify the Prometheus pods. + ## + metrics: + enabled: false + ## e.g: + ## podSelector: + ## label: monitoring + ## + podSelector: {} + ## e.g: + ## namespaceSelector: + ## label: monitoring + ## + namespaceSelector: {} + ## @param networkPolicy.ingress.enabled Enable network policy for Ingress Proxies + ## @param networkPolicy.ingress.namespaceSelector [object] Ingress Proxy namespace selector labels. These labels will be used to identify the Ingress Proxy's namespace. + ## @param networkPolicy.ingress.podSelector [object] Ingress Proxy pods selector labels. These labels will be used to identify the Ingress Proxy pods. + ## + ingress: + enabled: false + ## e.g: + ## podSelector: + ## label: ingress + ## + podSelector: {} + ## e.g: + ## namespaceSelector: + ## label: ingress + ## + namespaceSelector: {} + ## @param networkPolicy.ingressRules.backendOnlyAccessibleByFrontend Enable ingress rule that makes the backend (mariadb) only accessible by testlink's pods. + ## @param networkPolicy.ingressRules.customBackendSelector [object] Backend selector labels. These labels will be used to identify the backend pods. + ## @param networkPolicy.ingressRules.accessOnlyFrom.enabled Enable ingress rule that makes testlink only accessible from a particular origin + ## @param networkPolicy.ingressRules.accessOnlyFrom.namespaceSelector [object] Namespace selector label that is allowed to access testlink. This label will be used to identified the allowed namespace(s). + ## @param networkPolicy.ingressRules.accessOnlyFrom.podSelector [object] Pods selector label that is allowed to access testlink. This label will be used to identified the allowed pod(s). + ## @param networkPolicy.ingressRules.customRules [object] Custom network policy ingress rule + ## + ingressRules: + ## mariadb backend only can be accessed from testlink + ## + backendOnlyAccessibleByFrontend: false + ## Additional custom backend selector + ## e.g: + ## customBackendSelector: + ## - to: + ## - namespaceSelector: + ## matchLabels: + ## label: example + ## + customBackendSelector: {} + ## Allow only from the indicated: + ## + accessOnlyFrom: + enabled: false + ## e.g: + ## podSelector: + ## label: access + ## + podSelector: {} + ## e.g: + ## namespaceSelector: + ## label: access + ## + namespaceSelector: {} + ## custom ingress rules + ## e.g: + ## customRules: + ## - from: + ## - namespaceSelector: + ## matchLabels: + ## label: example + ## + customRules: {} + ## @param networkPolicy.egressRules.denyConnectionsToExternal Enable egress rule that denies outgoing traffic outside the cluster, except for DNS (port 53). + ## @param networkPolicy.egressRules.customRules [object] Custom network policy rule + ## + egressRules: + # Deny connections to external. This is not compatible with an external database. + denyConnectionsToExternal: false + ## Additional custom egress rules + ## e.g: + ## customRules: + ## - to: + ## - namespaceSelector: + ## matchLabels: + ## label: example + ## + customRules: {} +## @section Database Parameters +## + +## MariaDB chart configuration +## ref: https://github.com/bitnami/charts/blob/main/bitnami/mariadb/values.yaml +## +mariadb: + ## @param mariadb.enabled Deploy a MariaDB server to satisfy the applications database requirements + ## To use an external database set this to false and configure the `externalDatabase.*` parameters + ## + enabled: true + ## @param mariadb.architecture MariaDB architecture. Allowed values: `standalone` or `replication` + ## + architecture: standalone + ## MariaDB Authentication parameters + ## @param mariadb.auth.rootPassword MariaDB root password + ## @param mariadb.auth.database MariaDB custom database + ## @param mariadb.auth.username MariaDB custom user name + ## @param mariadb.auth.password MariaDB custom user password + ## ref: https://github.com/bitnami/containers/tree/main/bitnami/mariadb#setting-the-root-password-on-first-run + ## https://github.com/bitnami/containers/blob/main/bitnami/mariadb/README.md#creating-a-database-on-first-run + ## https://github.com/bitnami/containers/blob/main/bitnami/mariadb/README.md#creating-a-database-user-on-first-run + ## + auth: + rootPassword: Wordpres123! + database: bitnami_wordpress + username: bn_wordpress + password: Wordpres123! + ## MariaDB Primary configuration + ## + primary: + ## MariaDB Primary Persistence parameters + ## ref: https://kubernetes.io/docs/concepts/storage/persistent-volumes/ + ## @param mariadb.primary.persistence.enabled Enable persistence on MariaDB using PVC(s) + ## @param mariadb.primary.persistence.storageClass Persistent Volume storage class + ## @param mariadb.primary.persistence.accessModes [array] Persistent Volume access modes + ## @param mariadb.primary.persistence.size Persistent Volume size + ## + persistence: + enabled: true + storageClass: "" + accessModes: + - ReadWriteOnce + size: 8Gi +## External Database Configuration +## All of these values are only used if `mariadb.enabled=false` +## +externalDatabase: + ## @param externalDatabase.host External Database server host + ## + host: localhost + ## @param externalDatabase.port External Database server port + ## + port: 3306 + ## @param externalDatabase.user External Database username + ## + user: bn_wordpress + ## @param externalDatabase.password External Database user password + ## + password: Wordpres123! + ## @param externalDatabase.database External Database database name + ## + database: bitnami_wordpress + ## @param externalDatabase.existingSecret The name of an existing secret with database credentials. Evaluated as a template + ## NOTE: Must contain key `mariadb-password` + ## NOTE: When it's set, the `externalDatabase.password` parameter is ignored + ## + existingSecret: "" +## Memcached chart configuration +## ref: https://github.com/bitnami/charts/blob/main/bitnami/memcached/values.yaml +## +memcached: + ## @param memcached.enabled Deploy a Memcached server for caching database queries + ## + enabled: false + ## Authentication parameters + ## ref: https://github.com/bitnami/containers/tree/main/bitnami/memcached#creating-the-memcached-admin-user + ## + auth: + ## @param memcached.auth.enabled Enable Memcached authentication + ## + enabled: false + ## @param memcached.auth.username Memcached admin user + ## + username: "" + ## @param memcached.auth.password Memcached admin password + ## + password: "" + ## @param memcached.auth.existingPasswordSecret Existing secret with Memcached credentials (must contain a value for `memcached-password` key) + ## + existingPasswordSecret: "" + ## Service parameters + ## + service: + ## @param memcached.service.port Memcached service port + ## + port: 11211 +## External Memcached Configuration +## All of these values are only used if `memcached.enabled=false` +## +externalCache: + ## @param externalCache.host External cache server host + ## + host: localhost + ## @param externalCache.port External cache server port + ## + port: 11211 diff --git a/charts/wordpress final/wordpress-final-20.1.9.tgz b/charts/wordpress final/wordpress-final-20.1.9.tgz new file mode 100644 index 0000000000000000000000000000000000000000..ac6503cb45d625358a551b4edfdb34b9dad3b661 GIT binary patch literal 148058 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

  • Ow3f6xIqZ};CENj;y6v0aHxj-HAk=d@YTXK)(K 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
  • |@O{VyB_wfs^o z;CYO+Yr4EClV6@$ck_!N>*Q3+a-DlC<32vk&+78OqL&up|3dlypAycgPb7EbY2=|7 zyYMFs&(hI|enL*KDRtQqCsLwRXSx8UgxQ?@VJ)%@XF2FSw@ z15tk)3G5ni5(n5L$oZRtoL`;Q2Zb}ljnW{Pq2E&+$a(dpoC1S&rDy}KL-|DZAt4u8 zzz4xXVxP+7RzqdB3TR06Aw)8v0&Qwky?S>h%fd-WOuVk!IUbq2AgYlpq=kihnjdfg z-XUm(1YScsALp`Q#gJ&|#C*(X#gu6*&c= zG8GnDQ~fSOZ1Y9_g+!=MsYv9_9waR`n^F}u=EJiH)2JY_8+{a+m(%xhv;+!2e$tw( zp`LQ#)=qVEV6qpB)#;oSGq=4DHnH%=WldUpB*oH#gs< zapOh?L6P*0L;E`5Q<0;n?ekF%ul_hELS;Is~*Z}t|A<<1<94GO=Rwr z=MycDD8LoZhQUkD>v4j$Uh#bJSF}k!c_dB{i6L91mrGuR3gSXV_ng-P<%FR75HTT~; zjm>QjcJ@qz@*gLp9&ZcxPN}1v=Pzyo_wLK*h30m@*=rBC2yqa!g!_33-_N(35!3?i zmnAg3e9=68ReTelrs0Z!>(YI6NpatYFip_2B?0nOj%yV@>A1!1Y zQ>FXM^o7VLpUNMr;g#xSeH{$r1gb*h%cp-8PZ5nE(t(RWJSTp3?}`&hQ>nVxRIxm^ z9JF~!W+Hl^9(o_E z7`)0yT0&!vdo34mbI%&y>vK!+&{l%3wok!7}z#5Br3 zz$9*%(W`y|rsn_JO)Q~?IIA&BrCrnXo9D55L3zh%NP|>^S6_J-L^M-kwPm5 zti@)5g3o$pb*n*8q3MIN{XrYLs`ZvMtr$O$GS%msDctL;_?>r4?mv-jVKXq-`S8@5 z{u+zgfaVx5!>>0LmATF(nYCg%msSSmRd|j{hkQvO^n>%rSnh(cND-_y9NatWyipc1 z`~s>jUfwX58I8&Y_79K?z1hpQX4MokombXPu|~IW+ppT9?C~v*V{=c_x)&^AInc7~ zoLWyZpqnr9E?jJ;iN$Lz3*g5%;w0geOo^l{@COPw!Tt<+V9NDdt;sxGp7Lt5;{w~k z4$YBCaSb9zN2~LHDyAnd$4}g@iK)2bbdeK~Xq-$Ov^{`1WO5GS4ngq*r||dO%VT=! zS11(1i-CHfnlc&T*$0HE)6Q;<13yDh_t0u5 zf^i>WJnD=cZ~{F_Bd|Z~@S`w`MOG;}!?xUc6?e=KSYZK*`)?kP5U$}5vM+!th3N8` z&y88whIF3_T{B;5=CnM6RXOe8q^6rZ4GD0PEC9Uf3k#7&*hEh+$!u;niOKV!*aj>J zD#|33^E)#M3YEm~b`aWe(Mc9G)(mw@ahU_<$dkKK&I^SB+MuV%2Zy+>gm%wRm8+o z$Etb=Pt}K~1;(rZ$~%^0%fVYHTUGb;OzL=&LAHN@90z4F^EBftz0UcpAC>%97E;oL2ErYaSnBD^=lQp;6}!J%9&Y?mhgEaBNm zHUoA=INFpu)nO1%Fxu{R)z5cnNI3P-b{B1?aa=8Rt;3}M>NKqxC@(xpD?33`1u`a| zPL&_-VGz8b378+9Uw--7!Ue=Ly_RyhNH}`lwsAXdsFPtLFJY~(Ya}M=XcUkVLz_2F ziI;b2SPxBu(r+0pTuWLnZ=b*uaxjO5QstzJZHoNt$?<$S*V?JSxbfP=O=xMNpsC`ra0~c zwJO+yYG~z4TN9Slq8CcHX7)4V;nYZRj`i|(g{{&hJiE8e1~JRdma9Q-l(EVZgZ|9Jl5(f{Kvo-dXE!H&Or zrYH$P%%@t$s!7e01@gc{S$ZCi)St#$1@gf1^KZnIy2`Ck`UAiS2Y*)MZsDUX?&=8A zij>Cxp2e#A3M*Vm+yZ+-+9dccsI`%;Qx_Ncy{Qa&Xlqfq|EOs zCVYZpp_DY?u{euXsDB7`1td!5-MOrZ3xbM)L27o5igt~(_<38+J1`^%J;8B2KQLak z!>USIaW9z~4U6yy^OCH77SeIbF1=1HC9b7HT=Vw{9^sQ@sUD0--ywlRZ?8 zU1iJJ)R?}TU19pqI&T3=tn8F3#blPFv`Wn;C!w4(69>rEZN!{-#0MD#!XHN_&ayYf3;c}CP)^ljgr+wz}wBAib*}% z60`;*qi0{_fz!-Ooy|exx=^%gWnU`eK}I6kS~R4V2L?jdItUSTSXDUH`${OD`z@}l zzW=KO$2G)%c|NG-|J!}k|L*3w^Zj21bEc6jv6Ti_-6WU9;V?|^>S_iT&fHvglgxWo{aR{?RT|E%%W^c@`No<-*D0Pu)E}|H z)|I>;{w6;>DY+w*#EiVBiVL^ZPOrvMBvw&4IGIwS0&_^#$@Q5Q8>tI|%5IKmgpA1b zq`@Pk;GCTuplq6>m>ifQg;*aB<{gb>Cn!@nf4Rrh6D{udK7U4Y&QR2`n!%yvt5!Hz zLyYT^`s4zZ5O{zGC}L4hmu^FH&8}4?SMEzP+b+@}IB+jZiG}{k7Xb9|!EG@6#>td$ zL4K4k_YaW%sY?~9%r07<IK`P+GdeM>Gpuz;3-r`FxEYQItn?O5bsi?A;Oj> zq^HL*S`vh7K+lu|%(MI)Yx9UjBRYPI<1KS9V#GLPFr^WSSs{-879yV{o=mV86SWj= z3PRAv_BXpPUvw8s6rKk7Ttl1TRYC0ZJ%B01F`PLs%hamPX9U9(OEO?>nj}w}L75uv zcUX`U$wffz>e~Bzrlx3ZgoQLw4Lf#%6z7sgu&-(qIl0Dijl=}+Jbxjl>|tmxkIzk? z)%CwC%;n;3p#m<@|6V+QS+V~PoUH2W8{_^L;(|5=3{<)7%^U))pB*aUIk2a+aW~GY%{CQu#k!3!A?rtG1V@4`g zw~7=Fejc1f<6wq3k;5dBzU6_ZjQUkd}nG+ZNLLBOu8aW0w9CW{CPF^w!zHFE{qYFF_^%QFC&iPq~h3Y;80#jC;9 zA?CJ($|t9U7Q>2MM#JhNv)&PQhpv~CX$dYf z`}+skob{?H!!rfZ_VCa(ZLdmr;WkV`EuEN3wS=Nkb8K=(s-hDtkiL9zpq35X&5i@= z;Uktt$-!U?`3$--jE*MxxHCBHd=5Dvy6FNKS(P%>rf{LG2HU_0RB83T(h}Ir^;VnZ zxZO(63zkLQyc93*)T6~lu+v4Q_7nj}g!l*}4=aE4gu#tw6YE&zRYU{HY2@4_>e@Wq z1dde6S>~Nyz?X6M8Q0Q{1((Xv*hPaXS|A^EUKD+c1`lRZD!4W`eLXD57To7n!7YG^ zX()5HRl(&g46?-#>$pLE681XB=|bC(!N!Q7=fJ-qr=kU4HhP;Y8|lnNA3&PSE1c+P zmzp+h33SA`C1kqj`@-)+Y+jMcws7sbPI|$f$GEST$Bd;MT`_(cFzmzf5&O1%tuh%p zg}g}~Z^@-aakrTI1d=IwEb>SU+Hf?Y^2++Zb&0M2tA~Za zkd&^c~?= z4H;3g(1JhwAP7I*k|$HE69e7E5p%~a_lF_ zKwgd_20qqZ^HC#2B_%GYgypNhqI_Dt%(dyta2xMT*ATC>2(VmUs(!1#0G%s9i+O<2 zK}&a-O}jOBtn2f_S#vih14H_W1{Cv|6~{#Rw18p>oK>H(GhT}MHkY|ATq-6|?i_aY z1=z+yuzN)p(hNk4V#=`s@;24lD#ux~ZvofZDymJkZfIQ-uUBq9l;!5$aJTwNZ$BAD zg?sKS*uDYHGhzld2loXh1GrIM9}A++#pR}WH(T#0%qjMV4M)KX^uL!ccgy+TUvBR{>VJ3gd^!E^t)!V( z->qHyGqiYbbU!oDM$HdmR@_YMGkx5S&R2udr8GWMUpI%-WU{i-S8A(X<-^>Y(1dtN z%4@yo$^co#%PpnJq*-+=wIerLS)oB~JY_6tP#wAT$tm<&(~jJJjhngEMyg*gtiM=& zonQY{9Rf%aX&O$oM77m>suGuHsZlL16l_+FHI4M-6t7u3Elals_0^PbL4ACO!G1JXEEfo*#XyP%UPo^&<5@mj5(&+n)X&PpRY zm}c*}`Nn3a%dD}2Pf4AZIlPf5D8} zT(WM)?Dwmh;nrmTVbPeaX#d$BJl`w(|G(URzWZqZxr^ru+J7X?y!!6HI2r$a{YD^7 zkoU(3WRJGl5~RSsp)JVn>Xr;bRrD@r5YqM6Vh}2})nE{sZ^kJ$(O|||XjCc{z9&f1%hC$2(E_Idd9=N?6*ksqdjsKXxE8gs1>CFH1az|x+xDgh zvBbQuYI|#F<)*eb-RwQLy|uQ`G)d66X`xxOp3^vnMP?dnL9Jk>xmAq=7~kVXDqFZRm*UoTz`_8#qjckz5d``_&Bf4^D3;jfVY z=gXV@V34=!`2{`Pl9{iJ%;k)HP)QAi!@P=y1&uyz8xstn^=z+dU#e~6 zrq(5B^q$+6S{pH%MYr2DVcgF0y0PU#t*Zy_&s8r*Ke*X!Zz9aN;cfYGt@^CT{u48i zj5%pA0xj_W+J0HF|Ga$pc>nKio-b$rIZ-ro8%7|D9Pf=KD2J)p9F&*2nN7&*>vjx7 z^$1?dI%G9*!!R&4E!CQcGVL-eZ>wL6Tb112ycM~jV?iI5t~AHHsJ^#a!-`wnY`&m1 zrCO{Ov(0LLwRp2$TeCLS6k?_dMbW&XF=S2TQdDTqqEm|OY3v9!U6kiz4ziauD9k0! zRx@zB=7sqqyHAFO)x>9?c+@9Z@_8ZwlRKhL7Odf%x93%fEfvHy8IB7{crMAT$3{K# zZQi~HsXXd7HAp2SAs>oXWMOtbQ!=RFvYA zPc3TcoIJL%p*ZVb%+|Dc2VKq*vA8{Jqf>}dxlCJe!$txvce2=Fwq8>(hSzMWvWB=M#jIwun$yq?Em!tr-EZ@iF?Li$!X>AmL9Dz*W5{~d zgVrOu74DH2{g54qF6JO0D_5819J)pJ8jC9;W4B_AxXll*;&h9N z)_%Mm`!6RxZB7KXDF4^q;6>U0@5SC@{;xZE)?@!&$pCyRiRN~$|0;UCH@05@r`hZa zpKoUIRXyB}vA2TEc4k>st(`@-(c!Mp$R(KxH-@sMh9LDA=JY?r*NH9{HfB|ErzSZj zWQ1t8VJA|;;2joC4jl-#PqUbKHRjojNuN|5(4K|tE8|CUYeqd!|alIE<)k)B& z!ZtoGg{sVixEM)x(bniGK>0zC!!(&JKc87rqeaD2K~9ze^Ill<^Kxm9p__OT7O>rH zLCwZ4;Wu4txvyxlv;5CW)HcU=&Mw((+b*);#*UZvle2q&_=f96W+=sA=k3+?o5FI& zr}{Q-sF|ro@1@B}?RYAAyivr|=v!kNEHZlIyhR;rZBj_{w%s*XKp^HHy|lV_(e zDg~f~A6k4W3`T{L=L`eKI;EGE8PK-}XnU{QdM0YcjvLT_ZF`on%iehmQ!j2`n@h-C zU9}fF4YHT)KxgS(aqlQYJ74^uqo(fd6>H^C`ywt@_xf3n{%`MARV%;({eSP}Zb|>& z9Soj7-v7Ik=gawjX?0kZ0Y!gEs=B_C-Jv`z>?0P91_Q}lHp?QPV-kSFE2l}<&zu>w zh}0Vlw3yt`+xB{U+s=AxBl0y#dMb}}EpFU&}dvy7jhbQvx#ohi(EBqi+Yw*BQh$}dGF@0_Qhjr z9E(#y=F=I-<^;kq~nNj(q6_~ApZ}ZKOdCN|919X zJj(xf@@$|JoJbxcAlE$1tlTgnG)!p#Nw#C`UE(njZf66XPpCj5jbp|Wfy9Ia0eGvR z5GUS*M&m8SNq`eN)f-;^9!Gv>14U%4{F^tGQ9=8WqW@plMen0vhFAnOB}gbH90fEY zZpVFf_UoD4o;n-o2uKnAbaaM%%0^yUmFz!72e>)rKC(J2J1v-B9T6El)v)_o9bX@8a+*jo| z`>o?ng~xm%+os_djac9l-l5^Re{U@eORoRZ*N3m(zIH=@nLZZW|9Uald0ATj+b_0X zKCb_}cs9^?G>LFX&1!f$fHEd-Evpl*X_X$t&O1jXvh8Jelq?tOwfe!**;<(-S77~8B>w)S#R6*nRiLJ zOId%Y`d8h{E}>tKMS=ySBS(R<{%0tSrJ$J=1MqN6e=^-qw>y_K^7oNc!Rh!djyoYq zuoQnK(9etqzN3J6!`P+7ZNgA02x2Km zIL;h}gcQSL&ioWk8U6>I^BMZ6%suEFNB>FDVO|;?;RFY4oKLhyj_a|oPojkIm{UQz zTOi2fFA(u5G{8pLeAcw9Cigf>GJrZA*jkj}6LU7DJ`o5TN-=gvG$BDuxIkAE>P?V` zBPnvhaRXeen390SC?Z#yicl&Ac}2q&s_mMs4TU(uW5V4|r$~f_4q%`9_+vUGIF3c$ z+NFNu`efQygzl3#V6#vPqf$6l&BISNLa?5WRQohSUXY4}a82+hoPfG7XhKA%(?ha9 z9+89ywC(Qf{;ktf4eYw#xP!l`I#LfMvJLoo788%+0MRH;6C}I|2{C-xK*u2-lT*f$ zoMz2ZkmQxjVzQ3}s9ha|d?GwfLHF86uV9@ZQ`}N2sccm0SpoB;?$tqve8OQIkbRV` zu1?2Vg$uem%}N6HRQqx@*ez><>_=l7ed=@)JYLkSYA3;CyP0iw`-QvR^U09nsJA`n z@fW+DPMik82@9yV5LQ6;Xoj$A{v@lIoppg=_4F{f!ZYzys!JIh5@%1rnw~t}Qm0l@ zPmslrNAFm2!igYJ@>Id2&ih3U5at}uItbB(C@aK#NR1L5%#biZN2(D?l^OWDAGDd@ z^uZ!qfTHVmIzAbu7P^P(NU(w$H5NF2p(8Y7DY{~5;G=+E68S|Cg2<@h0M<#jvL`FbaYCv|1+lvc@GmH=zkV=c1Hh0mgwP|f6`7z zDm07QJ<(RaVLp+5p(V4E&Lw9GL5IOC6`4Sa>chBMvzC7Hd&v6TJx%WdiRnHZ?rjEN^X&n1}w=ZB3zeu=D} zw0j%95n*>UBN5Hlg@kOnlFscu2` zn-I!H85>fxFtfXnbMn5%6}<2DdiCO~#>(olD?$Mtl0ffJIF8#_Ra5vr#=oZ|lY#Tu z_~Q?hU92$X-fJ{`u}2~=yR!NDbEhz9KMwK{yRNIvj3k=wXP1|aT5)oCcJ}l8(^uIC zq-=}da~AGfFOfzxIGl}&U*@38%#IqdHWXK)Ak^P5ET2sjySyZ`xjkN5mg%+~>ibr? zW8>$~fWOX$eQW_}Ev=~H;$O6y&`axa0VfH77YTB?SPfxfJk+^qDliR4gw^l zUlh*tnGYDsOA~eAI9nxL9yktA{L@m=mX`Q(2T#mG|5Y|ovd%Z3Fm$q2M?S@jC&+5% z;K`=c3%w+O%I3tb2YfEZ9?9+!=d^%&4E-ipB*8my{($^Tu0@5P9m(FXATRb%&+m5X zP_Vrc3bt(&Y_A6e+qZy%?J^29(?B2MF~`1?RDgw?Gqmjv+(D=F@qL8eu_+0Mgrn`< zEwnS(8Eh#Pdb(pw+2{%j1S*JBk47}2VnX~}#UImTk`BT6A&FNTMK?r(lT`HBsFzGg zPg{k-CPD=Y@o$V9bCgu|l!u{^1J(jecChbFa5N@D8Elj-Lw?UK1$vEvf{-xD6c~>g z$B7bReL5Nun3fU2Ny=qYzE9xnRSk7lNl?&=T!&iZ1)E0Jl^y}2i6Fs9Dpi>KTCT`Y z_WJ!BS99f`CpgJqzapF~2FE67f(05%;hk}xNP@;eJi$Yf zP!CoVNVpRgvN4H>ocSv}Q*yA}0VX7~69l)NQr3QrIOM0 zI?{wHJQ86}nPd=>XX}~LMi;xb&xnxS8y7TLF_t%h))dcr9vOjyNAUzKYBD#8+ z=ugpDO`aJ;!q9YAQ_BZIMrnWo8eM|*^dF{g*{5q8v6D1moZ>+AIT0+FlAZ)_2mamd z#Y`l<927Ov{cr6S+l;2R!Z2XtzA8g{awO1aZ@SYF#`#M!t55 zKa8hm=G^B~cl_x8B@@p*h6pU3C%S=00X1pom5{{+~K=KwYj0KKc*bN~PV literal 0 HcmV?d00001 diff --git a/charts/wordpress-raw/.helmignore b/charts/wordpress-raw/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/charts/wordpress-raw/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/charts/wordpress-raw/Chart.lock b/charts/wordpress-raw/Chart.lock new file mode 100644 index 0000000..2f40d6c --- /dev/null +++ b/charts/wordpress-raw/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: mariadb + repository: https://groundhog2k.github.io/helm-charts + version: 0.3.14 +digest: sha256:375cfa874809b30e37b4459addf6bfbe413bdb58862246e64260f3011f3ad448 +generated: "2023-08-15T19:41:56.623332511+02:00" diff --git a/charts/wordpress-raw/Chart.yaml b/charts/wordpress-raw/Chart.yaml new file mode 100644 index 0000000..df7748d --- /dev/null +++ b/charts/wordpress-raw/Chart.yaml @@ -0,0 +1,13 @@ +apiVersion: v2 +appVersion: 6.5.0-apache +dependencies: +- condition: mariadb.enabled + name: mariadb + repository: https://groundhog2k.github.io/helm-charts + version: 0.3.14 +description: A Helm chart for Wordpress on Kubernetes +maintainers: +- name: groundhog2k +name: wordpress +type: application +version: 0.11.0 diff --git a/charts/wordpress-raw/README.md b/charts/wordpress-raw/README.md new file mode 100644 index 0000000..0fc3dc0 --- /dev/null +++ b/charts/wordpress-raw/README.md @@ -0,0 +1,176 @@ +# Wordpress + +![Version: 0.11.0](https://img.shields.io/badge/Version-0.11.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 6.5.0-apache](https://img.shields.io/badge/AppVersion-6.5.0--apache-informational?style=flat-square) + +## Changelog + +see [RELEASENOTES.md](RELEASENOTES.md) + +A Helm chart for Wordpress on Kubernetes + +## TL;DR + +```bash +helm repo add groundhog2k https://groundhog2k.github.io/helm-charts/ +helm install my-release groundhog2k/wordpress +``` + +## Introduction + +This chart uses the original [Wordpress from Docker](https://hub.docker.com/_/wordpress) to deploy Wordpress in Kubernetes. + +It fully supports deployment of the multi-architecture docker image. + +## Prerequisites + +- Kubernetes 1.12+ +- Helm 3.x +- PV provisioner support in the underlying infrastructure + +## Installing the Chart + +To install the chart with the release name `my-release`: + +```bash +helm install my-release groundhog2k/wordpress +``` + +## Uninstalling the Chart + +To uninstall/delete the `my-release` deployment: + +```bash +helm uninstall my-release +``` + +## Requirements + +| Repository | Name | Version | +|------------|------|---------| +| @groundhog2k | mariadb | 0.3.14 | + +## Common parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| fullnameOverride | string | `""` | Fully override the deployment name | +| nameOverride | string | `""` | Partially override the deployment name | + +## Deployment parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| image.pullPolicy | string | `"IfNotPresent"` | Image pull policy | +| image.registry | string | `"docker.io"` | Image registry | +| image.repository | string | `"wordpress"` | Image name | +| image.tag | string | `""` | Image tag | +| imagePullSecrets | list | `[]` | Image pull secrets | +| extraInitContainers | list | `[]` | Extra init containers | +| extaContainers | list | `[]` | Extra containers for usage as sidecars | +| strategy | object | `{}` | Pod deployment strategy | +| livenessProbe | object | `see values.yaml` | Liveness probe configuration | +| startupProbe | object | `see values.yaml` | Startup probe configuration | +| readinessProbe | object | `see values.yaml` | Readiness probe configuration | +| customLivenessProbe | object | `{}` | Custom liveness probe (overwrites default liveness probe configuration) | +| customStartupProbe | object | `{}` | Custom startup probe (overwrites default startup probe configuration) | +| customReadinessProbe | object | `{}` | Custom readiness probe (overwrites default readiness probe configuration) | +| resources | object | `{}` | Resource limits and requests | +| nodeSelector | object | `{}` | Deployment node selector | +| customLabels | object | `{}` | Additional labels for Deployment or StatefulSet | +| customAnnotations | object | `{}` | Additional annotations for Deployment or StatefulSet | +| podAnnotations | object | `{}` | Additional pod annotations | +| podLabels | object | `{}` | Additional pod labels | +| podSecurityContext | object | `see values.yaml` | Pod security context | +| securityContext | object | `see values.yaml` | Container security context | +| env | list | `[]` | Additional container environmment variables | +| args | list | `[]` | Arguments for the container entrypoint process | +| serviceAccount.create | bool | `false` | Enable service account creation | +| serviceAccount.name | string | `""` | Optional name of the service account | +| serviceAccount.annotations | object | `{}` | Additional service account annotations | +| affinity | object | `{}` | Affinity for pod assignment | +| tolerations | list | `[]` | Tolerations for pod assignment | +| topologySpreadConstraints | object | `{}` | Topology spread constraints for pods | +| containerPort | int | `8000` | Internal http container port | +| replicaCount | int | `1` | Number of replicas | +| revisionHistoryLimit | int | `nil` | Maximum number of revisions maintained in revision history +| podDisruptionBudget | object | `{}` | Pod disruption budget | +| podDisruptionBudget.minAvailable | int | `nil` | Minimum number of pods that must be available after eviction | +| podDisruptionBudget.maxUnavailable | int | `nil` | Maximum number of pods that can be unavailable after eviction | + +## Service paramters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| service.port | int | `80` | Wordpress HTTP service port | +| service.type | string | `"ClusterIP"` | Service type | +| service.nodePort | int | `nil` | The node port (only relevant for type LoadBalancer or NodePort) | +| service.clusterIP | string | `nil` | The cluster ip address (only relevant for type LoadBalancer or NodePort) | +| service.loadBalancerIP | string | `nil` | The load balancer ip address (only relevant for type LoadBalancer) | +| service.annotations | object | `{}` | Additional service annotations | +| service.labels | object | `{}` | Additional service labels | + +## Ingress parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| ingress.enabled | bool | `false` | Enable ingress for Wordpress service | +| ingress.className | string | `nil` | Optional ingress class name | +| ingress.annotations | object | `{}` | Additional annotations for ingress | +| ingress.labels | object | `{}` | Additional ingress lables | +| ingress.hosts[0].host | string | `""` | Hostname for the ingress endpoint | +| ingress.hosts[0].host.paths[0].path | string | `"/"` | Default root path | +| ingress.hosts[0].host.paths[0].pathType | string | `ImplementationSpecific` | Ingress path type (ImplementationSpecific, Prefix, Exact) | +| ingress.tls | list | `[]` | Ingress TLS parameters | +| ingress.maxBodySize | string | `"64m"` | Maximum body size for post requests | + +## Network policies + +Allows to define optional network policies for [ingress and egress](https://kubernetes.io/docs/concepts/services-networking/network-policies/) +The policyTypes will be automatically set + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| networkPolicy.ingress | object | `{}` | Ingress network policies | +| networkPolicy.egress | object | `{}` | Egress network policies | + +## Database settings + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| externalDatabase.host | string | `nil` | External database host | +| externalDatabase.name | string | `"wordpress"` | External database name | +| externalDatabase.user | string | `nil` | External database user name | +| externalDatabase.password | string | `nil` | External database user password | +| mariadb.enabled | bool | `false` | Enable MariaDB deployment (will disable external database settings) | +| mariadb.settings.rootPassword | string | `nil` | MariaDB root user password | +| mariadb.storage | string | `nil` | MariaDB storage settings | +| mariadb.userDatabase.name | string | `nil` | MariaDB wordpress database name | +| mariadb.userDatabase.password | string | `nil` | MariaDB wordpress database user | +| mariadb.userDatabase.user | string | `nil` | MariaDB wordpress database user password | + +## Wordpress parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| apacheDefaultSiteConfig | string | `""` | Overwrite default apache 000-default.conf | +| apachePortsConfig | string | `""` | Overwrite default apache ports.conf | +| customPhpConfig | string | `""` | Additional PHP custom.ini | +| settings.tablePrefix | string | `nil` | Database table name prefix | +| settings.maxFileUploadSize | string | `64M` | Maximum file upload size | +| settings.memoryLimit | string | `128M` | PHP memory limit | +| settings.configExtra | string | `nil` | Extra values embedded inside wp-config.php | +| extraEnvSecrets | list | `[]` | A list of existing secrets that will be mounted into the container as environment variables | +| extraEnvConfigs | list | `[]` | A list of existing configmaps that will be mounted into the container as environment variables | +| extraSecrets | list | `[]` | A list of additional existing secrets that will be mounted into the container | + +## Storage parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| storage.accessModes[0] | string | `"ReadWriteOnce"` | Storage access mode | +| storage.persistentVolumeClaimName | string | `nil` | PVC name when existing storage volume should be used | +| storage.requestedSize | string | `nil` | Size for new PVC, when no existing PVC is used | +| storage.className | string | `nil` | Storage class name | +| storage.keepPvc | bool | `false` | Keep a created Persistent volume claim when uninstalling the helm chart | +| storage.annotations | object | `{}` | Additional storage annotations | +| storage.labels | object | `{}` | Additional storage labels | diff --git a/charts/wordpress-raw/RELEASENOTES.md b/charts/wordpress-raw/RELEASENOTES.md new file mode 100644 index 0000000..f5e43e7 --- /dev/null +++ b/charts/wordpress-raw/RELEASENOTES.md @@ -0,0 +1,46 @@ +# Changelog + +| Chart version | App version | Change description | +| :------------ | :---------- | :----------------- | +| 0.4.9 | 5.8.3-apache | Implemented startupProbe support | +| 0.4.10 | 5.8.3-apache | Updated chart dependencies | +| 0.5.0 | 5.9.0-apache | Upgraded to Wordpress 5.9.0 | +| 0.5.1 | 5.9.0-apache | Updated chart dependencies (mariadb 0.2.18) | +| 0.5.2 | 5.9.2-apache | Upgraded to Wordpress 5.9.2 | +| 0.5.3 | 5.9.2-apache | Updated chart dependencies (mariadb 0.2.20) | +| 0.5.4 | 5.9.3-apache | Upgraded to Wordpress 5.9.3 | +| 0.6.0 | 6.0.0-apache | Upgraded to Wordpress 6.0.0 | +| 0.6.1 | 6.0.0-apache | Updated chart dependencies (mariadb 0.2.21) | +| 0.6.2 | 6.0.1-apache | Upgraded to Wordpress 6.0.1 | +| 0.6.3 | 6.0.1-apache | Updated chart dependencies (mariadb 0.2.22) | +| 0.6.4 | 6.0.2-apache | Upgraded to Wordpress 6.0.2 | +| 0.6.5 | 6.0.2-apache | Implemented support for image.registry option | +| 0.6.6 | 6.0.2-apache | Updated chart dependencies (mariadb 0.2.23) | +| 0.6.7 | 6.0.3-apache | Upgraded to Wordpress 6.0.3 | +| 0.7.0 | 6.1.0-apache | Upgraded to Wordpress 6.1.0 | +| 0.7.1 | 6.1.1-apache | Upgraded to Wordpress 6.1.1 | +| 0.7.2 | 6.1.1-apache | Updated chart dependencies (mariadb 0.2.24) | +| 0.7.3 | 6.1.1-apache | Fixed values documentation - thx @generalovmaksim | +| 0.7.4 | 6.1.1-apache | Updated version detection for pod disruption budget | +| 0.7.5 | 6.1.1-apache | Updated chart dependencies (mariadb 0.2.25) | +| 0.7.6 | 6.1.1-apache | Fixed health probe warnings | +| 0.8.0 | 6.2.0-apache | Upgraded to Wordpress 6.2.0 | +| 0.8.1 | 6.2.0-apache | Updated chart dependencies (mariadb 0.3.11) | +| 0.8.2 | 6.2.0-apache | Added support for extra configuration (WORDPRESS_CONFIG_EXTRA) - thx @MihaiMoldovanu | +| 0.8.3 | 6.2.0-apache | Updated chart dependencies (mariadb 0.3.12) | +| 0.8.4 | 6.2.1-apache | Upgraded to Wordpress 6.2.1 | +| 0.8.5 | 6.2.2-apache | Upgraded to Wordpress 6.2.2 | +| 0.8.6 | 6.2.2-apache | Updated chart dependencies (mariadb 0.3.13) | +| 0.8.7 | 6.2.2-apache | Updated chart dependencies (mariadb 0.3.14) | +| 0.9.0 | 6.3.0-apache | Upgraded to Wordpress 6.3.0 | +| 0.9.1 | 6.3.1-apache | Upgraded to Wordpress 6.3.1 | +| 0.9.2 | 6.3.2-apache | Upgraded to Wordpress 6.3.2 | +| 0.10.0 | 6.4.0-apache | Upgraded to Wordpress 6.4.0 | +| 0.10.1 | 6.4.1-apache | Upgraded to Wordpress 6.4.1 | +| 0.10.2 | 6.4.2-apache | Upgraded to Wordpress 6.4.2 | +| 0.10.3 | 6.4.2-apache | Added optional ingressClassName and removed deprecated api support | +| 0.10.4 | 6.4.2-apache | Refactored ingress configuration and added optional labels | +| 0.10.5 | 6.4.2-apache | Added support for network policies and additional labels and annotations | +| 0.10.6 | 6.4.3-apache | Upgraded to Wordpress 6.4.3 | +| 0.11.0 | 6.5.0-apache | Upgraded to Wordpress 6.5.0 | +| | | | diff --git a/charts/wordpress-raw/charts/mariadb/.helmignore b/charts/wordpress-raw/charts/mariadb/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/charts/wordpress-raw/charts/mariadb/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/charts/wordpress-raw/charts/mariadb/Chart.yaml b/charts/wordpress-raw/charts/mariadb/Chart.yaml new file mode 100644 index 0000000..992f969 --- /dev/null +++ b/charts/wordpress-raw/charts/mariadb/Chart.yaml @@ -0,0 +1,8 @@ +apiVersion: v2 +appVersion: 10.6.15 +description: A Helm chart for MariaDB on Kubernetes +maintainers: +- name: groundhog2k +name: mariadb +type: application +version: 0.3.14 diff --git a/charts/wordpress-raw/charts/mariadb/README.md b/charts/wordpress-raw/charts/mariadb/README.md new file mode 100644 index 0000000..3247bae --- /dev/null +++ b/charts/wordpress-raw/charts/mariadb/README.md @@ -0,0 +1,128 @@ +# MariaDB + +![Version: 0.9.0](https://img.shields.io/badge/Version-0.9.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 11.0.2](https://img.shields.io/badge/AppVersion-11.0.2-informational?style=flat-square) + +## Changelog + +see [RELEASENOTES.md](RELEASENOTES.md) + +A Helm chart for MariaDB on Kubernetes + +## TL;DR + +```bash +helm repo add groundhog2k https://groundhog2k.github.io/helm-charts/ +helm install my-release groundhog2k/mariadb +``` + +## Introduction + +This chart uses the original [MariaDB image from Docker Hub](https://hub.docker.com/_/mariadb) to deploy a stateful MariaDB instance in a Kubernetes cluster. + +It fully supports deployment of the multi-architecture docker image. + +## Prerequisites + +- Kubernetes 1.12+ +- Helm 3.x +- PV provisioner support in the underlying infrastructure + +## Installing the Chart + +To install the chart with the release name `my-release`: + +```bash +helm install my-release groundhog2k/mariadb +``` + +## Uninstalling the Chart + +To uninstall/delete the `my-release` deployment: + +```bash +helm uninstall my-release +``` + +## Common parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| fullnameOverride | string | `""` | Fully override the deployment name | +| nameOverride | string | `""` | Partially override the deployment name | + +## Deployment parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| image.pullPolicy | string | `"IfNotPresent"` | Image pull policy | +| image.registry | string | `"docker.io"` | Image registry | +| image.repository | string | `"mariadb"` | Image name | +| image.tag | string | `""` | Image tag | +| imagePullSecrets | list | `[]` | Image pull secrets | +| extraInitContainers | list | `[]` | Extra init containers | +| extaContainers | list | `[]` | Extra containers for usage as sidecars | +| startupProbe | object | `see values.yaml` | Startup probe configuration | +| livenessProbe | object | `see values.yaml` | Liveness probe configuration | +| readinessProbe | object | `see values.yaml` | Readiness probe configuration | +| customStartupProbe | object | `{}` | Custom startup probe (overwrites default startup probe configuration) | +| customLivenessProbe | object | `{}` | Custom liveness probe (overwrites default liveness probe configuration) | +| customReadinessProbe | object | `{}` | Custom readiness probe (overwrites default readiness probe configuration) | +| resources | object | `{}` | Resource limits and requests | +| initResources | object | `{}` | Resource limits and requests for the default init container | +| nodeSelector | object | `{}` | Deployment node selector | +| podAnnotations | object | `{}` | Additional pod annotations | +| podSecurityContext | object | `see values.yaml` | Pod security context | +| securityContext | object | `see values.yaml` | Container security context | +| env | list | `[]` | Additional container environmment variables | +| serviceAccount.annotations | object | `{}` | Additional service account annotations | +| serviceAccount.create | bool | `false` | Enable service account creation | +| serviceAccount.name | string | `""` | Name of the service account | +| affinity | object | `{}` | Affinity for pod assignment | +| tolerations | list | `[]` | Tolerations for pod assignment | +| podManagementPolicy | string | `"OrderedReady"` | Pod management policy | +| updateStrategyType | string | `"RollingUpdate"` | Pod update strategy | +| revisionHistoryLimit | int | `nil` | Maximum number of revisions maintained in revision history + +## Service paramters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| service.type | string | `"ClusterIP"` | Service type | +| service.port | int | `3306` | MariaDB service port | +| service.nodePort | int | `nil` | The node port (only relevant for type LoadBalancer or NodePort) | +| service.clusterIP | string | `nil` | The cluster ip address (only relevant for type LoadBalancer or NodePort) | +| service.loadBalancerIP | string | `nil` | The load balancer ip address (only relevant for type LoadBalancer) | +| service.annotations | object | `{}` | Additional service annotations | + +## Storage parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| storage.accessModes[0] | string | `"ReadWriteOnce"` | Storage access mode | +| storage.persistentVolumeClaimName | string | `nil` | PVC name when existing storage volume should be used | +| storage.volumeName | string | `"db-volume"` | Internal volume name and prefix of a created PVC | +| storage.requestedSize | string | `nil` | Size for new PVC, when no existing PVC is used | +| storage.className | string | `nil` | Storage class name | +| storage.keepPvc | bool | `false` | Keep a created Persistent volume claim when uninstalling the helm chart (only for option `useDeployment: true`) | + +## MariaDB parameters + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| useDeployment | bool | `false` | Use Kubernetes Deployment instead of StatefulSet | +| userDatabase | object | `{}` | Optional MariaDB user database | +| userDatabase.name | string | `""` | Name of the user database | +| userDatabase.user | string | `""` | User name with full access to user database| +| userDatabase.password | string | `""` | Password of created user | +| settings.rootPassword | string | `nil` | MariaDB root password | +| settings.allowEmptyRootPassword | bool | `false` | Set true to allow an empty root password | +| settings.skipTZInfo | bool | `false` | Set true to skip loading timezone data during init | +| settings.arguments | list | `[]` | Additional arguments for mysqld (entrypoint process) | +| customConfig | string | `nil` | Additional MariaDB custom configuration mounted as `/etc/mysql/custom.cnf` | +| extraEnvSecrets | list | `[]` | A list of existing secrets that will be mounted into the container as environment variables | +| extraSecretConfigs | string | `nil` | An existing secret with files that will be mounted into the container as custom MariaDB configuration files (`*.cnf`) in `/etc/mysql/conf.d` | +| customScripts | object | `nil` | Optional custom scripts that can be defined inline and will be mounted as files in `/docker-entrypoint-initdb.d` | +| extraScripts | string | `nil` | An existing configMap with files that will be mounted into the container as script files (`*.sql`, `*.sh`) in `/docker-entrypoint-initdb.d` | +| extraSecrets | list | `[]` | A list of additional existing secrets that will be mounted into the container | +| extraSecrets[].name | string | `nil` | Name of the existing K8s secret | +| extraSecrets[].mountPath | string | `nil` | Mount path where the secret should be mounted into the container (f.e. /mysecretfolder) | diff --git a/charts/wordpress-raw/charts/mariadb/RELEASENOTES.md b/charts/wordpress-raw/charts/mariadb/RELEASENOTES.md new file mode 100644 index 0000000..135fe3a --- /dev/null +++ b/charts/wordpress-raw/charts/mariadb/RELEASENOTES.md @@ -0,0 +1,68 @@ +# Changelog + +| Chart version | App version | Change description | +| :------------ | :---------- | :----------------- | +| 0.2.17 | 10.5.13 | Implemented startupProbe support | +| 0.2.18 | 10.5.13 | Implemented support for extra secrets and advanced configuration capabilites | +| 0.2.19 | 10.5.13 | Implemented support for extra containers | +| 0.2.20 | 10.5.15 | Upgraded MariaDB to 10.5.15 | +| 0.2.21 | 10.5.16 | Upgraded MariaDB to 10.5.16 | +| 0.2.22 | 10.5.17 | Upgraded MariaDB to 10.5.17 | +| 0.2.23 | 10.5.17 | Implemented support for custom inline init scripts and image.registry option | +| 0.2.24 | 10.5.18 | Upgraded MariaDB to 10.5.18 | +| 0.2.25 | 10.5.19 | Upgraded MariaDB to 10.5.19 | +| 0.2.26 | 10.5.20 | Upgraded MariaDB to 10.5.20 | +| 0.2.27 | 10.5.21 | Upgraded MariaDB to 10.5.21 | +| 0.2.28 | 10.5.22 | Upgraded MariaDB to 10.5.22 | +| 0.3.1 | 10.6.5 | Implemented startupProbe support | +| 0.3.2 | 10.6.5 | Implemented support for extra secrets and advanced configuration capabilites | +| 0.3.3 | 10.6.5 | Implemented support for extra containers | +| 0.3.4 | 10.6.7 | Upgraded MariaDB to 10.6.7 | +| 0.3.5 | 10.6.8 | Upgraded MariaDB to 10.6.8 | +| 0.3.6 | 10.6.9 | Upgraded MariaDB to 10.6.9 | +| 0.3.7 | 10.6.10 | Upgraded MariaDB to 10.6.10 | +| 0.3.8 | 10.6.10 | Implemented support for custom inline init scripts and image.registry option | +| 0.3.9 | 10.6.11 | Upgraded MariaDB to 10.6.11 | +| 0.3.10 | 10.6.12 | Upgraded MariaDB to 10.6.12 | +| 0.3.11 | 10.6.12 | Upgraded MariaDB to 10.6.12 (Fixed MariaDB version) | +| 0.3.12 | 10.6.13 | Upgraded MariaDB to 10.6.13 | +| 0.3.13 | 10.6.14 | Upgraded MariaDB to 10.6.14 | +| 0.3.14 | 10.6.15 | Upgraded MariaDB to 10.6.15 | +| 0.4.1 | 10.7.1 | Implemented startupProbe support | +| 0.4.2 | 10.7.1 | Implemented support for extra secrets and advanced configuration capabilites | +| 0.4.3 | 10.7.1 | Implemented support for extra containers | +| 0.4.4 | 10.7.3 | Upgraded MariaDB to 10.7.3 | +| 0.4.5 | 10.7.4 | Upgraded MariaDB to 10.7.4 | +| 0.4.6 | 10.7.5 | Upgraded MariaDB to 10.7.5 | +| 0.4.7 | 10.7.6 | Upgraded MariaDB to 10.7.6 | +| 0.4.8 | 10.7.6 | Implemented support for custom inline init scripts and image.registry option | +| 0.4.9 | 10.7.7 | Upgraded MariaDB to 10.7.7 | +| 0.4.10 | 10.7.8 | Upgraded MariaDB to 10.7.8 | +| 0.5.0 | 10.8.3 | Upgraded MariaDB to 10.8.3 | +| 0.5.1 | 10.8.4 | Upgraded MariaDB to 10.8.4 | +| 0.5.2 | 10.8.5 | Upgraded MariaDB to 10.8.5 | +| 0.5.3 | 10.8.5 | Implemented support for custom inline init scripts and image.registry option | +| 0.5.4 | 10.8.6 | Upgraded MariaDB to 10.8.6 | +| 0.5.5 | 10.8.7 | Upgraded MariaDB to 10.8.7 | +| 0.5.6 | 10.8.8 | Upgraded MariaDB to 10.8.8 | +| 0.6.0 | 10.9.2 | Upgraded MariaDB to 10.9.2 | +| 0.6.1 | 10.9.3 | Upgraded MariaDB to 10.9.3 | +| 0.6.2 | 10.9.3 | Implemented support for custom inline init scripts | +| 0.6.3 | 10.9.3 | Implemented support for image.registry option | +| 0.6.4 | 10.9.4 | Upgraded MariaDB to 10.9.4 | +| 0.6.5 | 10.9.5 | Upgraded MariaDB to 10.9.5 | +| 0.6.6 | 10.9.6 | Upgraded MariaDB to 10.9.6 | +| 0.6.7 | 10.9.7 | Upgraded MariaDB to 10.9.7 | +| 0.7.0 | 10.10.2 | Upgraded MariaDB to 10.10.2 | +| 0.7.1 | 10.10.2 | Added support for init container resources (thx @Footur) | +| 0.7.2 | 10.10.3 | Upgraded MariaDB to 10.10.3 | +| 0.7.3 | 10.10.4 | Upgraded MariaDB to 10.10.4 | +| 0.7.4 | 10.10.5 | Upgraded MariaDB to 10.10.5 | +| 0.8.0 | 10.11.2 | Upgraded MariaDB to 10.11.2 | +| 0.8.1 | 10.11.2 | Implemented alternative distribution with `Deployment` template (thx @tim-hanssen) | +| 0.8.2 | 10.11.2 | Fix default update strategy to `Recreate` for distribution with `Deployment` | +| 0.8.3 | 10.11.2 | Updated default security context | +| 0.8.4 | 10.11.3 | Upgraded MariaDB to 10.11.3 | +| 0.8.5 | 10.11.4 | Upgraded MariaDB to 10.11.4 | +| 0.9.0 | 11.0.2 | Upgraded MariaDB to 11.0.2 | +| | | | diff --git a/charts/wordpress-raw/charts/mariadb/templates/_helpers.tpl b/charts/wordpress-raw/charts/mariadb/templates/_helpers.tpl new file mode 100644 index 0000000..57d99ab --- /dev/null +++ b/charts/wordpress-raw/charts/mariadb/templates/_helpers.tpl @@ -0,0 +1,72 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "mariadb.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "mariadb.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "mariadb.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "mariadb.labels" -}} +helm.sh/chart: {{ include "mariadb.chart" . }} +{{ include "mariadb.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "mariadb.selectorLabels" -}} +app.kubernetes.io/name: {{ include "mariadb.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "mariadb.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "mariadb.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} + +{{/* +Generate secret with configuration +*/}} +{{- define "mariadb.createSecureConfig" -}} + {{- if or (.Values.settings.rootPassword) (.Values.userDatabase) }} +true + {{- end }} +{{- end }} diff --git a/charts/wordpress-raw/charts/mariadb/templates/customconfig.yaml b/charts/wordpress-raw/charts/mariadb/templates/customconfig.yaml new file mode 100644 index 0000000..d97b930 --- /dev/null +++ b/charts/wordpress-raw/charts/mariadb/templates/customconfig.yaml @@ -0,0 +1,11 @@ +{{- if .Values.customConfig }} +kind: ConfigMap +apiVersion: v1 +metadata: + name: {{ include "mariadb.fullname" . }} + labels: + {{- include "mariadb.labels" . | nindent 4 }} +data: + custom.cnf: | + {{- .Values.customConfig | nindent 4 }} +{{- end }} diff --git a/charts/wordpress-raw/charts/mariadb/templates/customscripts.yaml b/charts/wordpress-raw/charts/mariadb/templates/customscripts.yaml new file mode 100644 index 0000000..be82bf3 --- /dev/null +++ b/charts/wordpress-raw/charts/mariadb/templates/customscripts.yaml @@ -0,0 +1,13 @@ +{{- if .Values.customScripts }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "mariadb.fullname" . }}-customscripts + labels: + {{- include "mariadb.labels" . | nindent 4 }} +data: + {{- range $name, $value := .Values.customScripts }} + {{- $name | nindent 2 }}: | + {{- $value | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/wordpress-raw/charts/mariadb/templates/pvc.yaml b/charts/wordpress-raw/charts/mariadb/templates/pvc.yaml new file mode 100644 index 0000000..963bd26 --- /dev/null +++ b/charts/wordpress-raw/charts/mariadb/templates/pvc.yaml @@ -0,0 +1,27 @@ +{{- if .Values.useDeployment }} +{{- $createPvc := and (empty .Values.storage.persistentVolumeClaimName) (.Values.storage.requestedSize) }} +{{- if $createPvc }} +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: {{ include "mariadb.fullname" . }} + labels: + {{- include "mariadb.labels" . | nindent 4 }} + {{- if .Values.storage.keepPvc }} + annotations: + "helm.sh/resource-policy": keep + {{- end }} +spec: + {{- with .Values.storage }} + accessModes: + {{- toYaml .accessModes | nindent 4 }} + volumeMode: Filesystem + resources: + requests: + storage: {{ .requestedSize }} + {{- if .className }} + storageClassName: {{ .className }} + {{- end }} + {{- end }} +{{- end }} +{{- end }} diff --git a/charts/wordpress-raw/charts/mariadb/templates/scripts.yaml b/charts/wordpress-raw/charts/mariadb/templates/scripts.yaml new file mode 100644 index 0000000..150731d --- /dev/null +++ b/charts/wordpress-raw/charts/mariadb/templates/scripts.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "mariadb.fullname" . }}-scripts + labels: + {{- include "mariadb.labels" . | nindent 4 }} +data: + init.sh: | + #!/bin/sh + echo "Start initialization" + if [ -d /extrascripts ]; then + echo "Copy extra scripts" + cp /extrascripts/* /scripts + fi + if [ -d /customscripts ]; then + echo "Copy custom scripts" + cp /customscripts/* /scripts + fi + if [ -d /extraconfigs ]; then + echo "Copy extra configs" + cp /extraconfigs/* /configs + fi + if [ -d /customconfig ]; then + echo "Copy custom config" + cp /customconfig/* /configs + fi + echo "Initialization done." diff --git a/charts/wordpress-raw/charts/mariadb/templates/secureconfig.yaml b/charts/wordpress-raw/charts/mariadb/templates/secureconfig.yaml new file mode 100644 index 0000000..30340c7 --- /dev/null +++ b/charts/wordpress-raw/charts/mariadb/templates/secureconfig.yaml @@ -0,0 +1,22 @@ +{{- if include "mariadb.createSecureConfig" . }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "mariadb.fullname" . }} + labels: + {{- include "mariadb.labels" . | nindent 4 }} +type: Opaque +data: + {{- with .Values.settings }} + {{- if .rootPassword }} + MARIADB_ROOT_PASSWORD: {{ .rootPassword | b64enc }} + {{- end }} + {{- end }} + {{- with .Values.userDatabase }} + MARIADB_DATABASE: {{ required "Values: userDatabase.name is mandatory if userDatabase is specified." .name | b64enc }} + {{- if .user }} + MARIADB_USER: {{ .user | b64enc }} + MARIADB_PASSWORD: {{ required "Values: userDatabase.password is mandatory if userDatabase.user is specified." .password | b64enc }} + {{- end }} + {{- end }} +{{- end }} diff --git a/charts/wordpress-raw/charts/mariadb/templates/service.yaml b/charts/wordpress-raw/charts/mariadb/templates/service.yaml new file mode 100644 index 0000000..42c40cf --- /dev/null +++ b/charts/wordpress-raw/charts/mariadb/templates/service.yaml @@ -0,0 +1,28 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "mariadb.fullname" . }} + labels: + {{- include "mariadb.labels" . | nindent 4 }} + {{- with .Values.service.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: sql + protocol: TCP + name: sql + {{- if and ( or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort") ) (.Values.service.nodePort) }} + nodePort: {{ .Values.service.nodePort }} + {{- end }} + {{- if and (eq .Values.service.type "LoadBalancer") (.Values.service.loadBalancerIP) }} + loadBalancerIP: {{ .Values.service.loadBalancerIP }} + {{- end }} + {{- if .Values.service.clusterIP }} + clusterIP: {{ .Values.service.clusterIP }} + {{- end }} + selector: + {{- include "mariadb.selectorLabels" . | nindent 4 }} diff --git a/charts/wordpress-raw/charts/mariadb/templates/serviceaccount.yaml b/charts/wordpress-raw/charts/mariadb/templates/serviceaccount.yaml new file mode 100644 index 0000000..be9895d --- /dev/null +++ b/charts/wordpress-raw/charts/mariadb/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "mariadb.serviceAccountName" . }} + labels: + {{- include "mariadb.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/wordpress-raw/charts/mariadb/templates/statefulset.yaml b/charts/wordpress-raw/charts/mariadb/templates/statefulset.yaml new file mode 100644 index 0000000..6dbaa34 --- /dev/null +++ b/charts/wordpress-raw/charts/mariadb/templates/statefulset.yaml @@ -0,0 +1,295 @@ +{{- $usedeployment := .Values.useDeployment }} +{{- $fullname := include "mariadb.fullname" . }} +apiVersion: apps/v1 +{{- if $usedeployment }} +kind: Deployment +{{- else }} +kind: StatefulSet +{{- end }} +metadata: + name: {{ $fullname }} + labels: + {{- include "mariadb.labels" . | nindent 4 }} +spec: + replicas: 1 + {{- if .Values.revisionHistoryLimit }} + revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} + {{- end }} + {{- if not $usedeployment }} + serviceName: {{ $fullname }} + podManagementPolicy: {{ .Values.podManagementPolicy }} + updateStrategy: + type: {{ .Values.updateStrategyType }} + {{- else }} + strategy: + type: Recreate + {{- end }} + selector: + matchLabels: + {{- include "mariadb.selectorLabels" . | nindent 6 }} + template: + metadata: + annotations: + checksum/customconfig: {{ include (print $.Template.BasePath "/customconfig.yaml") . | sha256sum }} + checksum/secureconfig: {{ include (print $.Template.BasePath "/secureconfig.yaml") . | sha256sum }} + checksum/customscripts: {{ include (print $.Template.BasePath "/customscripts.yaml") . | sha256sum }} + checksum/scripts: {{ include (print $.Template.BasePath "/scripts.yaml") . | sha256sum }} + {{- with .Values.podAnnotations }} + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "mariadb.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "mariadb.serviceAccountName" . }} + {{- with .Values.podSecurityContext }} + securityContext: + {{- toYaml . | nindent 8 }} + {{- end }} + initContainers: + - name: {{ .Chart.Name }}-init + {{- with .Values.securityContext }} + securityContext: + {{- toYaml . | nindent 12 }} + {{- end }} + image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + volumeMounts: + {{- if .Values.extraScripts }} + - mountPath: /extrascripts + name: extrascripts-volume + {{- end }} + {{- if .Values.customScripts }} + - mountPath: /customscripts + name: customscripts-volume + {{- end }} + {{- if .Values.extraSecretConfigs }} + - mountPath: /extraconfigs + name: extraconfigs-volume + {{- end }} + {{- if .Values.customConfig }} + - mountPath: /customconfig + name: customconfig-volume + {{- end }} + - mountPath: /initscripts + name: initscripts + - mountPath: /scripts + name: scripts + - mountPath: /configs + name: configs + command: [ "/initscripts/init.sh" ] + {{- with .Values.initResources }} + resources: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.extraInitContainers }} + {{- toYaml . | nindent 8 }} + {{- end }} + containers: + - name: {{ .Chart.Name }} + {{- with .Values.securityContext }} + securityContext: + {{- toYaml . | nindent 12 }} + {{- end }} + image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - name: sql + containerPort: 3306 + protocol: TCP + {{- if .Values.customStartupProbe }} + startupProbe: + {{- toYaml .Values.customStartupProbe | nindent 12 }} + {{- else }} + {{- if .Values.startupProbe.enabled }} + startupProbe: + exec: + command: + - bash + - -c + - healthcheck.sh --connect --innodb_initialized + {{- with .Values.startupProbe }} + initialDelaySeconds: {{ .initialDelaySeconds }} + timeoutSeconds: {{ .timeoutSeconds }} + failureThreshold: {{ .failureThreshold }} + successThreshold: {{ .successThreshold }} + periodSeconds: {{ .periodSeconds }} + {{- end }} + {{- end }} + {{- end }} + {{- if .Values.customLivenessProbe }} + livenessProbe: + {{- toYaml .Values.customLivenessProbe | nindent 12 }} + {{- else }} + {{- if .Values.livenessProbe.enabled }} + livenessProbe: + exec: + command: + - bash + - -c + - healthcheck.sh --connect --innodb_initialized + {{- with .Values.livenessProbe }} + initialDelaySeconds: {{ .initialDelaySeconds }} + timeoutSeconds: {{ .timeoutSeconds }} + failureThreshold: {{ .failureThreshold }} + successThreshold: {{ .successThreshold }} + periodSeconds: {{ .periodSeconds }} + {{- end }} + {{- end }} + {{- end }} + {{- if .Values.customReadinessProbe }} + readinessProbe: + {{- toYaml .Values.customReadinessProbe | nindent 12 }} + {{- else }} + {{- if .Values.readinessProbe.enabled }} + readinessProbe: + exec: + command: + - bash + - -c + - healthcheck.sh --connect --innodb_initialized + {{- with .Values.readinessProbe }} + initialDelaySeconds: {{ .initialDelaySeconds }} + timeoutSeconds: {{ .timeoutSeconds }} + failureThreshold: {{ .failureThreshold }} + successThreshold: {{ .successThreshold }} + periodSeconds: {{ .periodSeconds }} + {{- end }} + {{- end }} + {{- end }} + {{- with .Values.resources }} + resources: + {{- toYaml . | nindent 12 }} + {{- end }} + volumeMounts: + - mountPath: /var/lib/mysql + name: {{ .Values.storage.volumeName }} + - mountPath: /tmp + name: tmp-volume + - mountPath: /var/run/mysqld + name: tmp-volume + - mountPath: /etc/mysql/conf.d + name: configs + - mountPath: /docker-entrypoint-initdb.d + name: scripts + {{- range $secret := .Values.extraSecrets }} + - name: {{ $secret.name }} + mountPath: {{ $secret.mountPath }} + {{- end }} + {{- if .Values.settings.arguments }} + args: + {{- range .Values.settings.arguments }} + - {{ . }} + {{- end }} + {{- end }} + env: + {{- if .Values.settings.skipTZInfo }} + - name: MARIADB_INITDB_SKIP_TZINFO + value: "yes" + {{- end }} + {{- if .Values.settings.allowEmptyRootPassword }} + - name: MARIADB_ALLOW_EMPTY_ROOT_PASSWORD + value: "yes" + {{- end }} + {{- with .Values.env }} + {{- toYaml . | nindent 12 }} + {{- end }} + envFrom: + {{- if include "mariadb.createSecureConfig" . }} + - secretRef: + name: {{ $fullname }} + {{- end }} + {{- range .Values.extraEnvSecrets }} + - secretRef: + name: {{ . }} + {{- end }} + {{- with .Values.extraContainers }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + volumes: + - name: tmp-volume + emptyDir: {} + - name: configs + emptyDir: {} + - name: scripts + emptyDir: {} + - name: initscripts + configMap: + name: {{ $fullname }}-scripts + defaultMode: 0555 + {{- if .Values.customScripts }} + - name: customscripts-volume + configMap: + name: {{ $fullname }}-customscripts + defaultMode: 0555 + {{- end }} + {{- if .Values.extraSecretConfigs }} + - name: extraconfigs-volume + secret: + secretName: {{ .Values.extraSecretConfigs }} + {{- end }} + {{- if .Values.customConfig }} + - name: customconfig-volume + configMap: + name: {{ $fullname }} + {{- end }} + {{- if .Values.extraScripts }} + - name: extrascripts-volume + configMap: + name: {{ .Values.extraScripts }} + defaultMode: 0555 + {{- end }} + {{- range $secret := .Values.extraSecrets }} + - name: {{ $secret.name }} + secret: + secretName: {{ $secret.name }} + defaultMode: 0440 + {{- end }} +{{- with .Values.storage }} + {{- $createPvc := and (empty .persistentVolumeClaimName) .requestedSize }} + {{- if not $createPvc }} + - name: {{ .volumeName }} + {{- if .persistentVolumeClaimName }} + persistentVolumeClaim: + claimName: {{ .persistentVolumeClaimName }} + {{- else }} + emptyDir: {} + {{- end }} + {{- else }} + {{- if $usedeployment }} + - name: {{ .volumeName }} + persistentVolumeClaim: + claimName: {{ $fullname }} + {{- else }} + volumeClaimTemplates: + - metadata: + name: {{ .volumeName }} + spec: + {{- with .accessModes }} + accessModes: + {{- toYaml . | nindent 10 }} + {{- end }} + {{- if .className }} + storageClassName: {{ .className }} + {{- end }} + resources: + requests: + storage: {{ .requestedSize }} + {{- end }} + {{- end }} +{{- end }} diff --git a/charts/wordpress-raw/charts/mariadb/values.yaml b/charts/wordpress-raw/charts/mariadb/values.yaml new file mode 100644 index 0000000..fef36b9 --- /dev/null +++ b/charts/wordpress-raw/charts/mariadb/values.yaml @@ -0,0 +1,220 @@ +## Default values for MariaDB deployment + +## MariaDB docker image +image: + registry: "docker.io" + repository: "mariadb" + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "" + +## Pull secrets and name override options +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +## Optional service account +serviceAccount: + # Specifies whether a service account should be created + create: false + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +## Additional node selector +nodeSelector: {} + +## Additional pod annotations +podAnnotations: {} + +## Pod management policy +podManagementPolicy: OrderedReady + +## Pod update strategy +updateStrategyType: RollingUpdate + +## Pod security options +podSecurityContext: + fsGroup: 999 + supplementalGroups: + - 999 + +## Default security options to run MariaDB as non-root, read only container without privilege escalation +securityContext: + allowPrivilegeEscalation: false + privileged: false + readOnlyRootFilesystem: true + runAsNonRoot: true + runAsGroup: 999 + runAsUser: 999 + capabilities: + drop: + - ALL + +## Default database service port (default MySQL/MariaDB port) +service: + type: ClusterIP + port: 3306 + ## The node port (only relevant for type LoadBalancer or NodePort) + nodePort: + ## The cluster ip address (only relevant for type LoadBalancer or NodePort) + clusterIP: + ## The loadbalancer ip address (only relevant for type LoadBalancer) + loadBalancerIP: + # Annotations to add to the service + annotations: {} + +# Resource limits and requests +resources: {} + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +# Resource limits and requests +initResources: {} + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +tolerations: [] + +affinity: {} + +## Maximum number of revisions maintained in revision history +revisionHistoryLimit: + +## Custom startup probe (overwrites default startup probe) +customStartupProbe: {} + +## Default startup probe +startupProbe: + enabled: true + initialDelaySeconds: 10 + timeoutSeconds: 5 + failureThreshold: 30 + successThreshold: 1 + periodSeconds: 10 + +## Custom liveness probe (overwrites default liveness probe) +customLivenessProbe: {} + +## Default liveness probe +livenessProbe: + enabled: true + initialDelaySeconds: 120 + timeoutSeconds: 5 + failureThreshold: 3 + successThreshold: 1 + periodSeconds: 10 + +## Custom readiness probe (overwrites default readiness probe) +customReadinessProbe: {} + +## Default readiness probe +readinessProbe: + enabled: true + initialDelaySeconds: 30 + timeoutSeconds: 5 + failureThreshold: 3 + successThreshold: 1 + periodSeconds: 10 + +## Extra init containers +extraInitContainers: [] + +## Extra containers for usage as sidecars +extraContainers: [] + +## Additional environment variables +env: [] + +## Use Kubernetes Deployment instead of StatefulSet +useDeployment: false + +## Database configuration +settings: + ## Arguments for the container entrypoint process + arguments: [] + # - --character-set-server=utf8mb4 + # - --collation-server=utf8mb4_unicode_ci + + ## The root user password + rootPassword: + + ## Set true to allow an empty root password + allowEmptyRootPassword: false + + ## Set true to skip loading timezone data during init + skipTZInfo: false + +## Optional user database which is created during first startup with user and password +userDatabase: {} + ## Name of the user database + # name: + + ## Database user with full access rights + # user: + + ## Password of the database user + # password: + +## Optional custom configuration block that will be mounted as file in /etc/mysql/conf.d/custom.cnf +## For more flexible options see extraSecretConfigs: section +customConfig: | + +## Optional custom scripts that can be defined inline and will be mounted as files in /docker-entrypoint-initdb.d +customScripts: {} +# 01-a-script.sh: | +# echo "hello" +# 02-another-script.sh: | +# echo "hello 2" + +## A list of existing secrets that will be mounted into the container as environment variables +## As an alternative these secrets can set the database root password or optional user database when userDatabase: and rootPassword: were not specified +## For example: Setting MARIADB_DATABASE, MARIADB_USER, MARIADB_PASSWORD will allow creating a user database and grant access for the given user +extraEnvSecrets: [] + +## An existing secret with files that will be mounted into the container as custom MariaDB configuration files (*.cnf) in /etc/mysql/conf.d +## For more details see https://hub.docker.com/_/mariadb +extraSecretConfigs: + +## An existing configMap with files that will be mounted into the container as script files (*.sql, *.sh) in /docker-entrypoint-initdb.d +## For more details see https://hub.docker.com/_/mariadb +extraScripts: + +## A list of additional existing secrets that will be mounted into the container +## The mounted files of the secrets can be used for advanced configuration - f.e. TLS +extraSecrets: [] + ## Name of the existing K8s secret +# - name: + ## Mount path where the secret should be mounted into the container (f.e. /mysecretfolder) +# mountPath: + +## Storage parameters +storage: + ## Set persistentVolumenClaimName to reference an existing PVC + persistentVolumeClaimName: + + ## Internal volume name and prefix of a created PVC + volumeName: "db-volume" + + ## Alternative set requestedSize to define a size for a dynamically created PVC + requestedSize: + + ## the storage class name + className: + + ## Default access mode (ReadWriteOnce) + accessModes: + - ReadWriteOnce + + ## Keep a created Persistent volume claim when uninstalling the helm chart (only for option useDeployment: true) + keepPvc: false diff --git a/charts/wordpress-raw/templates/_helpers.tpl b/charts/wordpress-raw/templates/_helpers.tpl new file mode 100644 index 0000000..bcb6a06 --- /dev/null +++ b/charts/wordpress-raw/templates/_helpers.tpl @@ -0,0 +1,88 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "wordpress.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "wordpress.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{- define "mariadb.servicename" -}} +{{- if .Values.mariadb.fullnameOverride }} +{{- .Values.mariadb.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default "mariadb" .Values.mariadb.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{- define "redis.servicename" -}} +{{- if .Values.redis.fullnameOverride }} +{{- .Values.redis.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default "redis" .Values.redis.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "wordpress.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "wordpress.labels" -}} +helm.sh/chart: {{ include "wordpress.chart" . }} +{{ include "wordpress.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "wordpress.selectorLabels" -}} +app.kubernetes.io/name: {{ include "wordpress.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "wordpress.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "wordpress.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/charts/wordpress-raw/templates/deployment.yaml b/charts/wordpress-raw/templates/deployment.yaml new file mode 100644 index 0000000..d505a1a --- /dev/null +++ b/charts/wordpress-raw/templates/deployment.yaml @@ -0,0 +1,223 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "wordpress.fullname" . }} + labels: + {{- include "wordpress.labels" . | nindent 4 }} + {{- with .Values.customLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.customAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + replicas: {{ .Values.replicaCount }} + {{- if .Values.revisionHistoryLimit }} + revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} + {{- end }} + selector: + matchLabels: + {{- include "wordpress.selectorLabels" . | nindent 6 }} + {{- with .Values.strategy }} + strategy: + {{- toYaml . | nindent 4 }} + {{- end }} + template: + metadata: + annotations: + checksum/secureconfig: {{ include (print $.Template.BasePath "/secureconfig.yaml") . | sha256sum }} + checksum/extendedconfig: {{ include (print $.Template.BasePath "/extendedconfig.yaml") . | sha256sum }} + {{- with .Values.podAnnotations }} + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "wordpress.selectorLabels" . | nindent 8 }} + {{- with .Values.podLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "wordpress.serviceAccountName" . }} + {{- with .Values.podSecurityContext }} + securityContext: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.extraInitContainers }} + initContainers: + {{- toYaml . | nindent 8 }} + {{- end }} + containers: + - name: {{ .Chart.Name }} + {{- with .Values.securityContext }} + securityContext: + {{- toYaml . | nindent 12 }} + {{- end }} + image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + envFrom: + - secretRef: + name: {{ include "wordpress.fullname" . }} + {{- range .Values.extraEnvSecrets }} + - secretRef: + name: {{ . }} + {{- end }} + {{- range .Values.extraEnvConfigs }} + - configMapRef: + name: {{ . }} + {{- end }} + {{- with .Values.env }} + env: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- if .Values.args }} + args: + {{- range .Values.args }} + - {{ . }} + {{- end }} + {{- end }} + ports: + - name: http + containerPort: {{ .Values.containerPort }} + protocol: TCP + {{- if .Values.customStartupProbe }} + startupProbe: + {{- toYaml .Values.customStartupProbe | nindent 12 }} + {{- else }} + {{- if .Values.startupProbe.enabled }} + startupProbe: + httpGet: + path: /wp-login.php + port: http + httpHeaders: + - name: Host + value: localhost:{{ .Values.containerPort }} + - name: x-forwarded-proto + value: https + {{- with .Values.startupProbe }} + initialDelaySeconds: {{ .initialDelaySeconds }} + timeoutSeconds: {{ .timeoutSeconds }} + failureThreshold: {{ .failureThreshold }} + successThreshold: {{ .successThreshold }} + periodSeconds: {{ .periodSeconds }} + {{- end }} + {{- end }} + {{- end }} + {{- if .Values.customLivenessProbe }} + livenessProbe: + {{- toYaml .Values.customLivenessProbe | nindent 12 }} + {{- else }} + {{- if .Values.livenessProbe.enabled }} + livenessProbe: + httpGet: + path: /wp-admin/install.php + port: http + httpHeaders: + - name: Host + value: localhost:{{ .Values.containerPort }} + - name: x-forwarded-proto + value: https + {{- with .Values.livenessProbe }} + initialDelaySeconds: {{ .initialDelaySeconds }} + timeoutSeconds: {{ .timeoutSeconds }} + failureThreshold: {{ .failureThreshold }} + successThreshold: {{ .successThreshold }} + periodSeconds: {{ .periodSeconds }} + {{- end }} + {{- end }} + {{- end }} + {{- if .Values.customReadinessProbe }} + readinessProbe: + {{- toYaml .Values.customReadinessProbe | nindent 12 }} + {{- else }} + {{- if .Values.readinessProbe.enabled }} + readinessProbe: + httpGet: + path: /wp-login.php + port: http + httpHeaders: + - name: Host + value: localhost:{{ .Values.containerPort }} + - name: x-forwarded-proto + value: https + {{- with .Values.readinessProbe }} + initialDelaySeconds: {{ .initialDelaySeconds }} + timeoutSeconds: {{ .timeoutSeconds }} + failureThreshold: {{ .failureThreshold }} + successThreshold: {{ .successThreshold }} + periodSeconds: {{ .periodSeconds }} + {{- end }} + {{- end }} + {{- end }} + {{- with .Values.resources }} + resources: + {{- toYaml . | nindent 12 }} + {{- end }} + volumeMounts: + - mountPath: /var/www/html + name: wordpress-vol + - mountPath: /tmp + name: tmp + - mountPath: /var/run + name: run + - mountPath: /etc/apache2/ports.conf + subPath: ports.conf + name: extended + - mountPath: /etc/apache2/000-default.conf + subPath: 000-default.conf + name: extended + - mountPath: /usr/local/etc/php/conf.d/custom.ini + subPath: custom.ini + name: extended + {{- range $secret := .Values.extraSecrets }} + - mountPath: {{ $secret.mountPath }} + name: {{ $secret.name }} + {{- end }} + {{- with .Values.extraContainers }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.topologySpreadConstraints }} + topologySpreadConstraints: + {{- toYaml . | nindent 8 }} + {{- end }} + volumes: + - name: tmp + emptyDir: {} + - name: run + emptyDir: {} + - name: extended + configMap: + name: {{ include "wordpress.fullname" . }}-extended + {{- range $secret := .Values.extraSecrets }} + - name: {{ $secret.name }} + secret: + secretName: {{ $secret.name }} + defaultMode: 0440 + {{- end }} + - name: wordpress-vol + {{- if .Values.storage.persistentVolumeClaimName }} + persistentVolumeClaim: + claimName: {{ .Values.storage.persistentVolumeClaimName }} + {{- else }} + {{- if .Values.storage.requestedSize }} + persistentVolumeClaim: + claimName: {{ include "wordpress.fullname" . }} + {{- else }} + emptyDir: {} + {{- end }} + {{- end }} \ No newline at end of file diff --git a/charts/wordpress-raw/templates/extendedconfig.yaml b/charts/wordpress-raw/templates/extendedconfig.yaml new file mode 100644 index 0000000..e1b46b8 --- /dev/null +++ b/charts/wordpress-raw/templates/extendedconfig.yaml @@ -0,0 +1,33 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "wordpress.fullname" . }}-extended + labels: + {{- include "wordpress.labels" . | nindent 4 }} +data: + 000-default.conf: | + {{- if .Values.apacheDefaultSiteConfig }} + {{ .Values.apacheDefaultSiteConfig | nindent 4 }} + {{- else }} + + ServerAdmin webmaster@localhost + DocumentRoot /var/www/html + + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + + {{- end }} + ports.conf: | + {{- if .Values.apachePortsConfig }} + {{ .Values.apachePortsConfig | nindent 4 }} + {{- else }} + Listen {{ .Values.containerPort }} + {{- end }} + custom.ini: | + {{- if .Values.customPhpConfig }} + {{ .Values.customPhpConfig | nindent 4 }} + {{- else }} + upload_max_filesize = {{ .Values.settings.maxFileUploadSize }} + post_max_size = {{ .Values.settings.maxFileUploadSize }} + memory_limit = {{ .Values.settings.memoryLimit }} + {{- end }} diff --git a/charts/wordpress-raw/templates/ingress.yaml b/charts/wordpress-raw/templates/ingress.yaml new file mode 100644 index 0000000..9967af2 --- /dev/null +++ b/charts/wordpress-raw/templates/ingress.yaml @@ -0,0 +1,52 @@ +{{- if .Values.ingress.enabled }} +{{- $fullName := include "wordpress.fullname" . -}} +{{- $labels := include "wordpress.labels" . -}} +{{- $svcPort := .Values.service.port -}} +{{- with .Values.ingress }} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- $labels | nindent 4 }} + {{- with .labels }} + {{- toYaml . | nindent 4 }} + {{- end }} + annotations: + {{- if .maxBodySize }} + nginx.ingress.kubernetes.io/proxy-body-size: {{ .maxBodySize }} + {{- end }} + {{- with .annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if .className }} + ingressClassName: {{ .className }} + {{- end }} + {{- if .tls }} + tls: + {{- range .tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + pathType: {{ .pathType }} + backend: + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- end }} + {{- end }} +{{- end }} +{{- end }} diff --git a/charts/wordpress-raw/templates/networkpolicy.yaml b/charts/wordpress-raw/templates/networkpolicy.yaml new file mode 100644 index 0000000..387dadb --- /dev/null +++ b/charts/wordpress-raw/templates/networkpolicy.yaml @@ -0,0 +1,25 @@ +{{- with .Values.networkPolicy }} +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: {{ include "wordpress.fullname" $ }} +spec: + podSelector: + matchLabels: + {{- include "wordpress.selectorLabels" $ | nindent 6 }} + policyTypes: + {{- if .ingress }} + - Ingress + {{- end }} + {{- if .egress }} + - Egress + {{- end }} + {{- with .ingress }} + ingress: + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .egress }} + egress: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/wordpress-raw/templates/pdp.yaml b/charts/wordpress-raw/templates/pdp.yaml new file mode 100644 index 0000000..e09e6da --- /dev/null +++ b/charts/wordpress-raw/templates/pdp.yaml @@ -0,0 +1,22 @@ +{{- if and (.Values.podDisruptionBudget) (or .Values.podDisruptionBudget.minAvailable .Values.podDisruptionBudget.maxUnavailable) }} +{{- if .Capabilities.APIVersions.Has "policy/v1" }} +apiVersion: policy/v1 +{{- else }} +apiVersion: policy/v1beta1 +{{- end }} +kind: PodDisruptionBudget +metadata: + name: {{ include "wordpress.fullname" . }} + labels: + {{- include "wordpress.labels" . | nindent 4 }} +spec: + {{- if .Values.podDisruptionBudget.minAvailable }} + minAvailable: {{ .Values.podDisruptionBudget.minAvailable }} + {{- end }} + {{- if .Values.podDisruptionBudget.maxUnavailable }} + maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable }} + {{- end }} + selector: + matchLabels: + {{- include "wordpress.selectorLabels" . | nindent 6 }} +{{- end }} diff --git a/charts/wordpress-raw/templates/pvc.yaml b/charts/wordpress-raw/templates/pvc.yaml new file mode 100644 index 0000000..1d21709 --- /dev/null +++ b/charts/wordpress-raw/templates/pvc.yaml @@ -0,0 +1,33 @@ +{{- $createNcPvc := and (empty .Values.storage.persistentVolumeClaimName) (.Values.storage.requestedSize) }} +{{- if $createNcPvc }} +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: {{ include "wordpress.fullname" . }} + labels: + {{- include "wordpress.labels" . | nindent 4 }} + {{- with .Values.storage.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- if or .Values.storage.keepPvc .Values.storage.annotations }} + annotations: + {{- if .Values.storage.keepPvc }} + "helm.sh/resource-policy": keep + {{- end }} + {{- with .Values.storage.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- end }} +spec: + {{- with .Values.storage }} + accessModes: + {{- toYaml .accessModes | nindent 4 }} + volumeMode: Filesystem + resources: + requests: + storage: {{ .requestedSize }} + {{- if .className }} + storageClassName: {{ .className }} + {{- end }} + {{- end }} +{{- end }} diff --git a/charts/wordpress-raw/templates/secureconfig.yaml b/charts/wordpress-raw/templates/secureconfig.yaml new file mode 100644 index 0000000..77b1fd0 --- /dev/null +++ b/charts/wordpress-raw/templates/secureconfig.yaml @@ -0,0 +1,30 @@ +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "wordpress.fullname" . }} + labels: + {{- include "wordpress.labels" . | nindent 4 }} +data: +{{- if .Values.mariadb.enabled }} + WORDPRESS_DB_HOST: {{ (include "mariadb.servicename" .) | b64enc }} + {{- with .Values.mariadb.userDatabase }} + WORDPRESS_DB_NAME: {{ .name | b64enc }} + WORDPRESS_DB_USER: {{ .user | b64enc }} + WORDPRESS_DB_PASSWORD: {{ .password | b64enc }} + {{- end }} +{{- else }} +{{- with .Values.externalDatabase }} + WORDPRESS_DB_NAME: {{ .name | b64enc }} + WORDPRESS_DB_USER: {{ .user | b64enc }} + WORDPRESS_DB_PASSWORD: {{ .password | b64enc }} + WORDPRESS_DB_HOST: {{ .host | b64enc }} +{{- end }} +{{- end }} +{{- with .Values.settings }} + {{- if .tablePrefix }} + WORDPRESS_TABLE_PREFIX: {{ .tablePrefix | b64enc }} + {{- end }} + {{- if .configExtra }} + WORDPRESS_CONFIG_EXTRA: {{ .configExtra | b64enc }} + {{- end }} +{{- end }} diff --git a/charts/wordpress-raw/templates/service.yaml b/charts/wordpress-raw/templates/service.yaml new file mode 100644 index 0000000..757f723 --- /dev/null +++ b/charts/wordpress-raw/templates/service.yaml @@ -0,0 +1,31 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "wordpress.fullname" . }} + labels: + {{- include "wordpress.labels" . | nindent 4 }} + {{- with .Values.service.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.service.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + {{- if and ( or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort") ) (.Values.service.nodePort) }} + nodePort: {{ .Values.service.nodePort }} + {{- end }} + {{- if and (eq .Values.service.type "LoadBalancer") (.Values.service.loadBalancerIP) }} + loadBalancerIP: {{ .Values.service.loadBalancerIP }} + {{- end }} + {{- if .Values.service.clusterIP }} + clusterIP: {{ .Values.service.clusterIP }} + {{- end }} + selector: + {{- include "wordpress.selectorLabels" . | nindent 4 }} diff --git a/charts/wordpress-raw/templates/serviceaccount.yaml b/charts/wordpress-raw/templates/serviceaccount.yaml new file mode 100644 index 0000000..2db9c9c --- /dev/null +++ b/charts/wordpress-raw/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "wordpress.serviceAccountName" . }} + labels: + {{- include "wordpress.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/wordpress-raw/templates/tests/test-connection.yaml b/charts/wordpress-raw/templates/tests/test-connection.yaml new file mode 100644 index 0000000..95fb60f --- /dev/null +++ b/charts/wordpress-raw/templates/tests/test-connection.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Pod +metadata: + name: "{{ include "wordpress.fullname" . }}-test-connection" + labels: + {{- include "wordpress.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": test-success +spec: + containers: + - name: wget + image: busybox + command: ['wget'] + args: ['{{ include "wordpress.fullname" . }}:{{ .Values.service.port }}'] + restartPolicy: Never diff --git a/charts/wordpress-raw/values.yaml b/charts/wordpress-raw/values.yaml new file mode 100644 index 0000000..cd283c8 --- /dev/null +++ b/charts/wordpress-raw/values.yaml @@ -0,0 +1,296 @@ +## Default values for Wordpress deployment + +## Number of wordpress replicas +replicaCount: 1 + +## Netxcloud docker image +image: + registry: "docker.io" + repository: "wordpress" + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "" + +## Pull secrets and name override options +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +## Additional labels for Deployment or StatefulSet +customLabels: {} + +## Additional annotations for Deployment or StatefulSet +customAnnotations: {} + +## Pod deployment strategy +strategy: {} + +## Optional service account +serviceAccount: + # Specifies whether a service account should be created + create: false + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +## Additional pod annotations +podAnnotations: {} + +## Additional pod labels +podLabels: {} + +## Pod security options (default: www-data as fsGroup and user running as non-root) +podSecurityContext: + fsGroup: 33 + runAsUser: 33 + runAsNonRoot: true + +## Default security options to run Wordpress as read only container without privilege escalation +securityContext: + readOnlyRootFilesystem: true + allowPrivilegeEscalation: false + privileged: false + +service: + type: ClusterIP + port: 80 + ## The node port (only relevant for type LoadBalancer or NodePort) + nodePort: + ## The cluster ip address (only relevant for type LoadBalancer or NodePort) + clusterIP: + ## The loadbalancer ip address (only relevant for type LoadBalancer) + loadBalancerIP: + ## Annotations to add to the service + annotations: {} + ## Labels to add to the service + labels: {} + +## Ingress configuration +ingress: + ## Enable ingress endpoint + enabled: false + + ## Optional ingress class name + className: + + ## Maximal body size (default: 64m - increase if uploads to Wordpress failing) + maxBodySize: 64m + + ## Additional ingress annotations + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + + ## Additional ingress labels + labels: {} + + ## Hosts + hosts: + - host: + paths: + - path: / + pathType: ImplementationSpecific + + ## TLS settings for hosts + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +## Resource limits and requests +resources: {} + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +## Custom startup probe (overwrites default startup probe) +customStartupProbe: {} + +## Default startup probe +startupProbe: + enabled: true + initialDelaySeconds: 10 + timeoutSeconds: 5 + failureThreshold: 30 + successThreshold: 1 + periodSeconds: 10 + +## Custom liveness probe (overwrites default liveness probe) +customLivenessProbe: {} + +## Default liveness probe +livenessProbe: + enabled: true + initialDelaySeconds: 30 + timeoutSeconds: 5 + failureThreshold: 5 + successThreshold: 1 + periodSeconds: 10 + +## Custom readiness probe (overwrites default readiness probe) +customReadinessProbe: {} + +## Default readiness probe +readinessProbe: + enabled: true + initialDelaySeconds: 30 + timeoutSeconds: 5 + failureThreshold: 5 + successThreshold: 1 + periodSeconds: 10 + +## Extra init containers +extraInitContainers: [] + +## Extra containers for usage as sidecars +extraContainers: + +## Additional node selector +nodeSelector: {} + +## Tolerations for pod assignment +tolerations: [] + +## Affinity for pod assignment +affinity: {} + +## Topology spread constraints for pods +topologySpreadConstraints: {} + +## Maximum number of revisions maintained in revision history +revisionHistoryLimit: + +## Pod disruption budget +podDisruptionBudget: {} + ## Minimum number of pods that must be available after eviction + # minAvailable: + ## Maximum number of pods that can be unavailable after eviction + # maxUnavailable: + +## Internal container port (default: 8000) +containerPort: 8000 + +## Additional environment variables +env: [] + +## Additional arguments for the container entrypoint process +args: [] + +## External database settings (is used when mariadb.enabled is false) +externalDatabase: {} + ## Name of the database (default: wordpress) + # name: wordpress + + ## Database user + # user: + + ## Database password + # password: + + ## Database host + # host: + +## Wordpress specific settings +settings: + ## Database table name prefix + tablePrefix: + ## Maximum file upload size (default: 64M) + maxFileUploadSize: 64M + ## PHP memory limit (default: 128M) + memoryLimit: 128M + ## Extra values embedded inside wp-config.php + configExtra: + +## Additional PHP custom.ini +customPhpConfig: | + +## Overwrite default apache ports.conf +apachePortsConfig: | + +## Overwrite default apache 000-default.conf +apacheDefaultSiteConfig: | + +## A list of existing secrets that will be mounted into the container as environment variables +extraEnvSecrets: [] + +## A list of existing configmaps that will be mounted into the container as environment variables +extraEnvConfigs: [] + +## A list of additional existing secrets that will be mounted into the container +## The mounted files of the secrets can be used for advanced configuration - f.e. TLS +extraSecrets: [] + ## Name of the existing K8s secret +# - name: + ## Mount path where the secret should be mounted into the container (f.e. /mysecretfolder) +# mountPath: + +## Storage parameters +storage: + ## Set persistentVolumenClaimName to reference an existing PVC + persistentVolumeClaimName: + + ## Alternative set requestedSize to define a size for a dynmaically created PVC + requestedSize: + + ## the storage class name + className: + + ## Default access mode (ReadWriteOnce) + accessModes: + - ReadWriteOnce + + ## Keep a created Persistent volume claim when uninstalling the helm chart + keepPvc: false + + ## Additional storage annotations + annotations: {} + + ## Additional storage labels + labels: {} + +## MariaDB configuration +mariadb: + ## Enable MariaDB helm chart for deployment (default: false) + enabled: false + + ## Database configuration + settings: + ## The root user password + rootPassword: + + ## Optional user database which is created during first startup with user and password + userDatabase: {} + ## Name of the user database + # name: + ## Database user with full access rights + # user: + ## Password of the database user + # password: + + # Storage parameters + storage: + ## Set persistentVolumenClaimName to reference an existing PVC + persistentVolumeClaimName: + + ## Alternative set requestedSize to define a size for a dynmaically created PVC + requestedSize: + + ## the storage class name + className: + + ## Additional storage annotations + annotations: {} + + ## Additional storage labels + labels: {} + +## Network policies +networkPolicy: {} + ## Ingress and Egress policies + # ingress: {} + # egress: {} diff --git a/charts/wordpress-raw/wordpress-0.11.0.tgz b/charts/wordpress-raw/wordpress-0.11.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..e36e6703ba0cacc1fe6681b77490f02691658e10 GIT binary patch literal 16057 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
  • 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�GEMsskj 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 z zwzs#Q?d9x0ThCvt?LT)?mTCWaJZ2)w5ZW2hgEWce&`2exG4!-90FY_P8H>!-aT$F# zcx$diC3y|7P3Tn(`FELh$+{ly=o|y>3isW1$k`?Ji1$9rI@&4-j5X1AhC3*_9dSB2 z@O{+&t=&e~Xz+Z`BW?;HYl)f5^W=lBS#bvs9)s0ORPF`o^fbfD4t=-4Z3@?LQJ5MT zaibPs1#g8R<8I>8fI4UcWfjTnu5`))$#LKv_~978jVJnMCU*y;gx3WnP=-5YihCF0KVp(3NH?0_Y@CDcN~sWRkWTTHA&r3j zBydaYM~U-7b&s6<5mQb))ILCOWUW`gy0G#3*K%3D^dG3wdlFem5S zjSQEF7K_TBX0=rW3<#GZU%hWcyJBC`p=_E~5AL;7;MY=`*?)nsVU_H5elze4|G(|M z7ccVue>=~%*7o1KC`^Yn!j}Qs9R7Q^2?MIr%d-yM$r5imOjMr|?lEH_K{=ZN8tpI58Kq+I zxnK4zf%}@<`P>J&@J#h4o}04ED1(O`r^>|Wpz5l-t7Iv-PkL>z)U z9ui~X`)K5|fg*Y|7;OUCkLV?V7$w&4IPhAJP(ViNx_l$#WJo^|4_(n{jQ-wn(7V8& zA{IbPIVBVlj(i#rr{%ml`*;>HPFj!9A3W7MAi-M#It z?fm(F_I&5r`uyKT`Om+1yIlw|rbEW+8?bKoU#-?7^qsn&G&BGW88=m0EmM~YgagDv z5+D@;WE0|w#sQ6{U5{K6pM}IjXaD^=x%h+2Qo>O*#*u7)MLptA5e-l*2*RAjfrp|o zL063X9`a%WIIEpzDn`r2hPdYj=5E|q%-^T-{Luvtq@ge%)2t~vl zqao!J;j~&G-d##@g$FTFg=zL5NCsL^d$`~abp$Q4(6p1I-E*H#(L&9ZWvR`%;sGg#12M~`r zpmOPQwGw7*C@W2n$A|!TFFFbRDZ;@N;o*?_RDptVDOWKrh#c8zwH`e}=db_c)oH8M z@Aq962r|5&SKB03Q{28NzF!ioF#1Zz{DBT-99$14?oak%< zs4OHQ9#sn;CdgdUuL8tz5G508wP1^3J!rsKBqEMOfiU_|z>^V;#_<5AVxk77ncRC3 zC!{yQG{^@o?;y(`%)E$39tnLmmAivjAcy-YdBBs7n0eIGN!rE&;5;Vi!;i$Dr1j;7 zI%3>O4zlvo<4)!jr)L!l`#h(JF0l+}nnuRQ0SJOT?_hKoN`*;M4i#xg zPEoc|#{x{u5xP|NK4G0hgnhvhb>xTRGZ_8{@bAHH2XBsgr$;C6&W_LDnZGl~{a@%U zi^x9umBlC^#FOVR#vmsN)X((YhYjfGM(C^MNW2>o4$+z-hNdj$ z3b<;?hA=@FoP)zg zBt7*2PLMo^U9F$QH0!HC`Dnu(6ZawoCW`RDCmjc!C6m%~p#l*hRIo~zP0H+~RCD1o z?5PcP6H{Fnwcjza&@>+NS92mQ#d$fX2JM&Pja zKqIkfYk(seA{8!+ImmNZNCr2-Q;@EPv4j!qRB@jq6%h{lo=R520HubEPqYLUq&S(P zu*GrovH!q^L+VQ8u}Fi*+*nqEt}4WVp2u7v1rV2n5&R=Pj6F3@H-S^v5>z^lI+7nw znPM^T&(QH?5(A2(2#+itD#vha87zt;#wqqi4>%ay8Fjhps4LrABXwG>V-WjA#91)% zr-&1|mn85~@=G%#OQ>Lb`$%v}ISb6;m8UHbQYKJ)VKMYXB6i0R4Ka)66y#0<{y04LpUI zWQdYWD7>CZS@aV7)KhSf(6R)~cwpF~#0Fl>3xr3a*RdqjzJg|iNBxwX=2&%F=jH!6 zzdHZh*ISLlkTdL#LG_eUB32?jU<*Sm8cX&m+Y02<3xZ7aZlPgx98gJ@>7R1nhMb78 zVo`xh6u16h_IP>1zJeOCFhEj+=zy=v?vI4aX&5P6T=f(kbeOF!snUQL0z|wFm;)Ml zgELh#1L^}Gf(%KG(g(dc300&y_!}IWu9XLuITKpYOs1$Po0*N~X;vp87DAoulr>#a zTr$C=O=hN2pj1)|peLL=c1bu-7VQu4F`)tth>Jm(&CI~)94-r#dW?M(fz%=qPx*N$G68{7*busv zKTKf;JPrc2Vvrqtf<)|&br-UNB)57HMOO5p7`N607FVa$`ejT4jj=d0Q6-a047{RZ zEaw&yE;%W}sLcY>jp&555jLXkg~n6WlhI2xFtogj-7zJX%Bq4rPgPCeV3@BOUyi7_ ziZ)aM)3P8B_G&O$OZaR`89|KMRnmqZ)Kbm3Anp@0p3MFL7Lw zVo54A1#PvChp;gkEiLW|h((B(8q0udhYW->!_YPW6|t~8F#&NHM?M>kFgPRT!-%En0M_rw%rPtB<8;}t)edb!0HvLh`5n2XRsP9d|(r3OW zhF!Sw9!!n#&OrwOGI?Cmjfvi;IV0d`fijbxFLhp}5JUp-K_?s$&KVc#j$Yz{>=2~# zbWtY#%%(Dzf=U!~^daIb9{5Cz8H0I@Vktj^ZK}|=M%7Ot+#BLQdbwWne|N1&^(nNq z9(LgU9*am0KcOPI04U5x?L7EVwps@Y(G=$KIFKwSU;#Wqw?MwB#kGLAL+|~CZsp&%^3Ybv*tT~B_h|@s~N7Dh&0um;A;ihd5Nc=vu ztRA2Y?UoatJykSNd<%9|nMe$)8B(}TBJz;vqxY*eK`0igCX*d>Fiq^ieKo>KicH3- zyf5e02ga*OV`2tGEYgM3>(!~8C6t%>r;K9)}OuC`gpzq10yt61lv%|xE#L0wRf>?bZeil-ogn$0PSsa2oH?;oklgPMp zL|~ScqOCH48-u%XUO0Xw9CX5jfO)8U=Y5cK(FP8~^din95s@=WY|M!_gh*%J*+dZP z18o?Cuxtt-)IJBG|93W}gsTH`dkiGu#Dbhu?#PXjGwGvieS@ZMrkhHGwQcn6y zow##*B2BSph160N)K4}0xtV_t8>H-Xw$5QL95<8}p^S7mOz$#v&PGTwTz9H6FzHL) z@=jj~Wxt}ch-*)U5c7zFPLSwsW2ORCdz+c8MCOFi9R~7*aXwe z{z!~f=d#4@$b;&0&cK?9?#F>-_kBH+{9DX^QePi7`-ML!>Yyu2ebrc$(zMwdA|7;& zOOU>8av8YoaN>26nSB1M1SZx~svMr^ndsN7OPNI7OoTfoUhEStDNA;DfYxZTo>W5{ z>Rvk<j`F_|A&%TJ3YjNn?M@kgasQiGY4-n6EIxA z0!EgnCkG%fvY|F^v%&AgRTq|u@f95&H;CjjV5|e5RpTer$?j z9!U)e=o%dH$gFkGT^!UVx^8rT`vMY-osmVc|mAOmq)@ zgR#&vOG!z==`AlDG~1mIZQ&CVwl!$VW`g-hA0fFrBeC>pn3>Q(C4Yg*sIyZZ>rx6# zhw8>ss~i$bb!DU@v!RWnPa)wH{HXj=9#b)s!tQ{yU=DygpVY866y-`$*s;FVT6xx{ zoNTFshdMvXuZovgV6M~m8EZ3(I`%pLbnBZ9O5<&A(T4&kO`R{Yk}qDa3!d`n<(~yg zkB*3l^6WngN>#^jl`A|&VvKj5J>SRJaU2Jo=qC@#Zw#JgX{x*_^$S6w%@QxN2(OB% zqbNRE-%?P9$(49DR?0dkR0#&Z#&V7N$HTWQ0=MrVDoTPWDDy_pYjmbvW0mV`_bWGe z7DZ|6n{~j+ARhJeO${jN5J3gxvyre~MVRlQo7Oi8N;~v_6|Kyq2iWMVI8Htb zh;qcVULW=wi@~c`q`F|OJo~MsY=7BI71jYy0stHDu)eI=hp@;FI);D(9%N-O&K>&b zt7kcor@;9Fi@u#QlkH@Jo9E0cpbCN2z<9eSUZoM!ZZ&tbj(bq9QGYW1SPCi&lqQPv zOi;>-Un3Y%W2_AGhZ~h2@PJ&+b-M3pk#|#?fzo0eKMTT*4JfsdrmxxoFTcuioibR) ztJzL5BTT;zlm?5xD(q~Al?Dn*O7EMdKMPU-5V$;=gRh?>qm2?lU^7oVHtY7y7E}cFq*eWf zpv>e^NUv(tm7c^yn5%ggm}F2$(m>q~8r-uoTSV6!+yL@>>Jz0rUZXcG4kF2|J@rBy zv_yCi1+V-F_7EFtM@#FeE4q|BI*`>KQfUTCCFAPGLwRoejPFtQv& z(JOGeR(|M`La6hn8%)OM%G<`+E zr37=hXj3(lM}uEonGclK%T;wXXCA*M_mVkyZm2LR#!W!vx8@O`Bg(*>Qo$wt_|66OJHV&d2!BlF`XnqUD}5kA45 z{IBCU_xrS`pefvc8IYxZ33K#nh@Tzg$UL*rz6~rWkcOnvhUlP;Sdd}tD`u|*CM^x9 z01#gau;s?^49HRkiaC0%0h#P?W#QEfWIi1dck24&N5(Fi0q;67?bO00eRf5%Zx+pq zCB_jR!W-NO^C%8)1qAb!av3FyWi{z+s#vntPjm~Uo1h3%;Lrfx+^=dWS2i*r8#56d z_!JA$_ea|) zi4`!Xo7IB!eqY`-0GWzrb{26QkQfd$+LPB??Vgs#Qxkh~* z-|lCCjOE{IK*sIwCzwZc<_Wzq^Fq>!1Vus?EG#>kBrFlrzm3^SN~2rIe-zGotf=tpa30M7ygG zw`((a_ScN@hj}CmubEu42r>wmmjf4Y%+-Tg11u{6*#)V8*flO_6HPmWBrWz+uYl>#~rZlmaC9|KSR|Df}Zi$7UqhO9lN%y5R;FuCYOpd#T zV7o?d6RfI{F;)|54L}w#pYS>4Sm^aUZS(*^HtS$kK4q=z)xIvd_*Tq%=(Y~!f zgQ*%J)e2e7R{fwhIG7=)3}S{9o_5#tdZHUyQDIgXN}19C%PJqk*Y#R_8ow&%Zf0pl z%W{!xtoQO&z3Nx=CaMk6>0uuN@UFE>S?<>vAk&d`RQiSzj&P06NTfX5rXnH}G=e}p zI^^Ptzu>z@eHF8}`2Ma2WMV4ZsK$V%Kz2cRKztJ>QdmKYReLK-*(#MLZ#XzPHW(}69kXXmB5>ErTZzrA!ru)PO=xUW~)ZgCP z+MaQbscvzbGl8NdBlTj*$2nWM(t!L|f=rOtG>AXF3k&+EI+$li@EtK#0oi$j?s}a| zEDhB1N{}V7>Wb}={MkO2)mXQ3(%SqUwBI54|0$lkKx6rKZQdzA;X0G%f# zp}p-+?sn;mmYdMBkkd=*lTnca%mK2rle=8@O-cj*vPzIa*vu2Nr`#!hF><&(-b=`{l~E2w5BuPh5l5>!v!pKsvYrFg&svWWs5uuUW;*!MTlgm^Tb zY$6}?5!pna^nZ8MKRRh@JeuB*7S>`O?roHQv9pzCGy8TN2<$*z&T43xl~A|&M&v#Z}yC zX}~cvAk(QjUlAWq&xp$cuMGLFO=48!$%>M2$(kyP=Bh(cO8+}s1yQsTWFg@cj6oH^ zGQFNay@v%WT_nh!&2ca#qhN6~17_FgT-AGsFuO+mBE)JyHpJAAIXNG5BF4 zdsPobrsBf^8mQ%SV3~+rmk2QvWM``0Lj~CkEc59l35XDLu*`&GX4>B3GVZc8P?)kH zYs50^IOfVju>r@-f~*nCEajLh4=Y_7(6TJZ8nMiBj`=`fHa9J6#4@Wm=7Rv*HR|uq z1+qpgvx;Lr6p+orGET5Z=VO@($IQ09&4t`uX}~daAZx-h>p14hLs1^g8RS0)vL-CE zlw+F>@em!ZOP_<^zG*{IskI%dFy<4+3ZnIA#uHO;~0X$9yOtn}ua6aLk#d zQO~q!mjtje@l+spQmOx^l}PAbmnLp30J7J%NHyE8iVXKbEan6{tF;W z&g9C&toe1xFPKIpu4EOx7C<(LsUOiGIiOdVM#vo#_agB>TM;NW02%nXe(&QsLUI+o z7;zfWz{D@}X+Y3W_Pg{|-D+tRjV0pvD7bu&c~hX72nOXbZIz#aAdwx#>>i_4t~78j zwn29IreU0nngBK$C=e#t09FEYRZixdSeA+HUDs;?WUA%L!>i$g9Kr<^5eeL;m*uG? z!)jZ03UwG`^NIqa{)uT2y$5giLm$&g-$BPi1Xt9XkQSOu!f5)6ei^6HCJ%CKkeMh` zu#%cy4VK{`MYIZdl;T$c%==g7#4-^NPH;4yjb&%?z@r@AqfgE2U-e1?Ua~@%LA)Z) zvAHrY$eN|>FNwyIAee!iN#n1cAFfcD6J&m~cuCjjbsD@tBG}3M!&_UzU6&?dk}Qzn zW>LACV3{ikStd%?ij;Xl1}2?1%&T|MYXUOW6@tEQca2Lf;43Rt?q4{K$h*KL?SJ=c zXc_&p*+c0Dw2c0_nijKb)c^JeT6%CEZ4|{Z%G3p+2TejZ6GCX+~yLOU7D)p zYGuuJOl9-HzCTTp)F^4+*WT@xp01y0O6Zowhz^;z@g-wo=Sx!^Q-KV^I5&XXA|O+J zHw&))MN0#a(SSxtFycAFSK3gKeb^df6=3cgMwOK&F@LB>+~$TKR0cBL$Af@c6OgHJ z>WyOXCcWkX@l!k?JRlJfNcXp*fp`IAhkh&~!jDfb%m$$pn<&|sH|L6ABUK5Z7%p(os*Ea$ggl7b}tyXEEmK%_{#RFX3 zYXgua{h{NN+gjdjlsQ1=GwgkbeH^$m;Z_7$wlSi^EEk{x^%s;gGs@@$wQww(C==6{%Nn5}V)=A-}xmZ=q{T$}uaSu$E!j8NlEa2cuFY3gj}b z+*ojgFek`7w1g}{c^ottM+LHR?Jfb)yv!k&fx-jyzk!KS-D3iimAWJO6f!~3M!@(4 zw5V7}@R{6yeJ$$t)zj7cEXd9UvWDhG)$55$N{n!jxhc0TidSRmj?n~9(SW3hW$%A! z;*+64CWsJ}1qTg+8DFC_RXH2QxX3m)k&6Qfvi4gRkTzl*wGV;*9iOyscjXJ0Yt)yM zZ6cTDK&Gz0tH{5VRU!%bX0*y&M|ZQ(<&`FeY;WMWoFs`&8uh9;X3wJnI44FY%tNoJ z;IYb?`CaUd2&5}k%yWfeG&XoBEkQP+!NDb_zFdDZLpBZQB%Yuko(u@@g@n5#i13J1 z2HgeTI*CPuM5GgiV>6`AEGJQvT&g6zw+E8hi<{~A2_VCtehzSBph;2o(;^_#lr0YK zC$#k9X2+E!msHZ8AE}5KpT4FOI?ItI4>AcS(~Sm>NjX2kRGH8`q_fAL=?p_>_cX&$ zmEV6R8L;y4Uv4^J^so~GBUs=qBn5upX@R>lQUeQviZ@RVoOG2<51jnGiG+_Y$qM8J zPKphnoGCX2oOX9QWO2|aPLKjzLi!9*NWpiH{im9i8fKdU?hbM*r<8U@vIW;DsVU%Y zJHztIL9Hp^mXc?=0y?XiX}MPWvM_F)ZMjftbg&d~>zvEQ(&(tJGcOlQ%{6HTaEs?( z&d|1pl7YEakxc=2t67*U0DF%z)s>b;fV)vH=2Yx`K-rj4T|Q<@bGW^X%x9%wU4haF z<8CuAbBd7n)b?9Z8p(0X&Ca~4pvsn}fLlCAa|TZJS(+`8`yS`cH4AKdR2R+EoCDm< zT+J&2y_#&zmObt!`I=L}HO$z&8jx#*aW~4^oCDm9yv=n`yH{mVz%|d^Tnf0_?9D3y zyk_>erDbr=anu#eMQKVSuDaAb&JP53jR3dQY|ak{aI=rs6?+&cYwu{2e=?lcMeDxhRjz}-&9=T(4EMX3ogQwzASI`1=5fUC;= zTno6bI{PzfERL*mKo`oQfcvU5K_la|S)M_)36L-fOd+!6p+lP9_aMh_!X^i65ptZdN@0k?Yjq8s|hEu1sDA>dXo zYxGS4_myUjMmIjHUuphmq&0_%9MX;CxUVvcG}3Nf6`7>%2O_JVOS)t=NjB+0yEQ5rSX9M*ZIi=`1)U1ygrmYRH-6@Xjkn1)i5XSxD#>rB&7YO+mN0B)Uc z8cI#pxeCCovra>4^j>wHd%9Q}sa)#})Wy<>tFH4<7fT}=x6VdgEDO-Mbxvxe09Tb| zvkGwQ%+#nU#;x;H7fU0qy3SHvEH#;`D*^Y_=c-0cx#~J&b+If$n9&ItxYssYw`Jk8w*%8J*(eN+pe+Q;u6Fj!w&5fLo`JPD?Wvh;HAfh1yEk6m@bssG}EWw9UR^$v-FKKNvD~b=g!W2<7~`n2L_SsjFmHpexf-^ zL`dj38zPLdnJ+W6-JTP?ww* zLY6rbCd4m$?Wg#q3d}9w5V9-C8Xb5#Xt$Q$u$Fx9FXTIU~{A=B*6SGwGCjrylYKOCQ(pZ@ys?ZKO) z4E$!mEo6d9F|I!!+)T4Cx9BAlfZNHtv*Yu38ge}*x?)Uxzh4hGkB*3llBjx3;ij4y z!S)JIkr?BhXV3RBb{xk+CqBV~NS-Do9%`|vO=Vh-HkF{v%ySdjPlQKz4!06D!F;TP zTNwL(VkvJ9H`(j~ARoAQ7TlD#y?}tL+KI+v?gio9gp3L0kT1nr zfv`Y0K$vs9(m<;;_L`67a4QM&c<+KZ*33Ey<~XCyte}o^jum#t8E~__BOZDT$9yTb zSelPYr+B0N5N@K^=SO|O>P4+8Vd~6lo0voFUiH#saq38G2brd?ld_ux57ZF`f4Q!U z;dD-m*)iO+-G5}gC#_TZ)0DKUd z29y$Y1H8Pvt~px$G5}_DjoD-50Qf*u4!yV{6b5E?1{H z0O!r%xB3uVG5~8b`4wRGF!K17$BfCii^mBb!q_k)#p5#n+vaVA7#r;Y2a6%18Ht9yv~J` zEpua_el+@q1vFy3As0SW4?@o}ZPBSV8K^ACF2^AaMv3KGh0{MtTv^|Rgk#z4ewDc` z(m4QvV^xUVx(<|!I@Ho(Y*Mg*xhM`GkpsQQmix*ww|`&`fWNZ=#DA}kb8|i>;KOE~ zSwd`i!~*RY$wwr8G#xQ`wv5#~&EMHTwWNXNSnVtu42zeW0+0p~;g@&@0FQMogd-D5 zNgq@lUSvSj8D2fxKFEQyB3{-2P%T@FDV1`daj*o0(;^KXMucl{!oz&%Ngios`(2T8 zQw-z;jw20f90sq^sj8*IGQo8c4nuz`{~_=s^oc+NGGv^jyku3%+#aeq0IHu)Yr%M} zUq3YmBMnAG-0%BfQ*H{tF$)-fU7v5{8dtF3K-iY16D{K;(>vP0zF;P7q$qi?r@R}qMGgmE(054aBgDr zY9dLxr7WZpt!_hS)lAZ9oD%hHDe2;#MJ%0LjL88ob+51HB$>dG`W&m!Fe<(#M0gb} z4^$Iq&7;C)mxL1!4W>5U-ivb6Bdm_btTC)r18h73VK!GQHC1_OCdR;1_O~RuV*Elq zkz4RV`^_J(Cojb3cm{s+C*MgA3Y!8O6xDnn4d`u!q|1Uabz-Slt)}lK!-C_`kq$4O zb?QHtL{befVIJ{QnY$^F8xDIk;>6?_yhaD|lZq+D;1!ilNQQ$c;y6&@FX5q!WLMbt zktfCdK)qpeYKMh)MaO|PUNYAM&(qJ2sQQlJSQ{pg1$g;t)fuQ7_NX}OEf1@Ee0%l= zNAB1n?n&ywBq^5!vx2*dFpq|uO%Q{~cnO0QnPC;ltQ+=(d6|)~A!e?BgQ2ZqTM|9- zfL#)cil7M&4d`@YSe>O9sI7|g`C&k#08eOdBENcre{YPVC=~m>-iSuyc;L8f(ld3^ zBtE@}6VjVt8uW4_!YtSil`%+^JOiJ_}`{_2JeaDgw{VAf6rJ^L8Cr`3eE~d$T%8C37y?u9nw2$5a1jkfp$WeJQ9iMoLJPlRC?E+?My-4vTh#O@eDu4Bn?CMuezS%BEor$TO> zgU;=~MW%PVQ*8uQ)08J=6M4iZkqYKt2!|-p#>sopQG)V7nN!tT6>@Y{M~Ft7a&B_N zi%Ww%|6Lj&>`iDOw;xCJQi6l|Lh6V~tY@dyI`DzJ$_oB;6Jhl0!JF3zyslMvZ6FX- z+k%wiaH1SpBvniJp-NTYp{p^4Fp+S|4KabGEI=8$Lp`!H#S?#hxNm;A|An4DJ*VN* zrwS-?_Y5*=#TI?AKwi&(pwnvJ)3ZA2NckR}a~4Z}J7z4R!Kl^xo(5i#GvWb@BQ%yw zpCON6Ux8dZwG+-67l;!df*?oC!0m~!b^uPD<*H}6VJ?ZNtQw#j9Z}DD8 zBNLl`vX}8a;~Xas+CT|_Ql^rBhJ^c52mK8hyZQkz$2>XCkH9bVcc%<1PKCO@!0?`9=i%OEz!IKPD-p# zgl0Sg;wvmra3SiP!J_ty6vR}rD99Wnqf!R>aQg1u`Nxxkv$J2`oxb|_nzU5N4c8hZ z(?%dcA9Ha1nC1Wi!hzTz8+~6RwxSV$xsI|LoHMlj!r5}Rr0hbanEyNDXb?}rOl;yI zlZu2y>f|ZEG3M>JT3sE1Sic}vXD1jDPiY+eEwF~Fx3*BZ;;Ef}0we2!qN(cU9{Ut} z4upLb@Q7@pK^$2P z`v`kD)Z`QpPU40{o{l3IF!I>|`;t0_IHK_QZR)U)1Y%5wkpqo$FTqL{sk5UfyRsyP zOo^MaBHXrzEK*d%pP~UL_yVLQHx?0_&_A_#gR3Ca%ETj-$V3A*>r~!y(D6`_Kq``x zuxZPMhTmz~M#Dbj$!zrnxG+Nlo1&`(XumVVEZw*U& zbI@^wz!(pp%m`f?`?G3vKbeG{w;OYKv7`?=5)lqO%st_NrG}FUyCj}zB_M%WPBS<5 z%cuR#3Z?xt_KEzi2tv+^k*VRJ!!dC$lqo%x79%iK8FmzqD{`WJ&933>_p?G8wEMM%({ z(17u-9z}Fn(Di8$f9iE$6&Aae7;YxDz3ptJGkVMPDwMz>p#oVx2&Au!^ z>@Ez5t)&4%F0897bho#<+uPlUr9W(Uw`Ra%%h}#eXSFymwr2pt962-afa5?JkhZs+ z=UI5L;gGr%(pcXR9?vq+*m^F3A(x**Lt~Ph#WOfKFr8LwaY$@cLV^>ezY20GMc51p zNu)tAjC!6x5NTKL7s2ub3XmEY_mn+qAUUp21CsJ(PISm60TuyGnGDI%aH7B3b8$eMYe*@ zWz*6uZ<$f!(8CcqlX?spP5W61<}6aDavBn}VE_O?|Gy*!Kf~>xa0YgdpP`>89r@e4 z!SBS4pxLIfX3Jh;0UVJb7o3)2PPAD&I|a+wvWWzpP#?qbRCU#vlPfsY9A3%J$$B!= zIl(-F?dxx%fL)~{7cf5$2AvJCszP=cCrrl4ZOlV~u9bppKKNFHB7tyKm3kQ0J0U9f zxlLq2HP%rGQ~2aOZVK*qn`n#$8c1Ho321U&US(_U%C`w@NJ@b9Ei+z}wmX5gtK=qa zRZq7z;hg_ejPt|00KH|G1oFRa?{1=$a1@I!8+M~H>4uz1?CfkR2CTTX5!JM2!ikXRt+j$AiK|gvK}}E#mfvBP zhrq}clg8TQO#_$lkV#}w`b`qW!0>m;^_8-umbwdjpn7pxU`*1> zx8Fjj3wljN_(Y(O6D%UaKf-!G3LjsRk7$f9Ne)}JWnDMYq|CH3$L=F&OdPyLH|@EH zoDAtFgY=GuRB2 zQdS5r_A=`CX8N@%Sc|Ma3L1ZvJ z(I5gdArYvb`WQ?mAkJX)!KVX``BcrTVj2+(sVjQA>PLM=^hnm}K%i}TbV=Zmz@0ki z4dXf21bz1dBwzA?I09RvM&SWLLly@f`XKRtvCAp7qDT7AuKKg9C#!Rsf1M-QuF-Ubdm|BYbAqxcgBPM|hD)D#Ny|}{M6DVU~ zHD=sVj5!V>LOi&BHn$uRLw#Vi{mtag2LsTO%a38kLIm?vBz;0hshof#td0wqP!j{F z?!|#C4p{UK!s)Fs2-hA%f`L-6A46g^!0ttw_|IJDZ|d6$5y53&WFD#6)78!=a9eGz zt;dKs?YW6Hj@j|l-ru?dzU!m z6BTlY4}DB0HY)?hkzP6Iiy4H4fct(xCnfLcTQPWzC!|~f%j=h1a3xpd`o`)OZnt#3 znM-~7;pl&k&(4qE{_yeS{o(pjY-yKb8L(P+V)i@F1g)#kR~@&S8#ajo>D6oI4yAAu z62V^Iu_?8HaH$(fitaNePrR|}Go_EqQx6lQk} zhC1j7bDxq#X%VtxfZZfC}#vA=@qGaN#vnx^Q_HhN5@5-G?I; z+cshx(kEGqpwe&k9cIZ+;1O{$)@*|xaDyx8C@_vl$&F%)lloq+iDbU5CG%Zdehye7 zJR0hte9S=Iy^##ReJ3(}YkpaHJ0}b8)bUm=8CA=~+54cao!(5Lcv}m_JDmk4zmuE% z?u{nDlb!tT%(?IAx$kxo6nv&ou(1?}Vn7AuO2a(!d|ImohOQ^5_(WLO+QMo5ti_Ql z#xF1jak$_n13*jYPD0TmJ=ukY6Ah`XXmSw`B*8Kcjy3^dAqiZ}qi!mNxLCN@BQN1q zml7KuJwmUkO9DZpXdF&C9gQROe_R$${{!u8?d+lNIK!UHCQf4XL2dI}TS*46I`bPk z4qQiamLB84J0#1c9>tu(t-c=4wnZF-*c}rykxiuOBHD4b(1xtg)}Pv)|7gM1;VEpa z5)Y|R&XeSmOTx%dI-g=mxf9~3yKq{+>JF5T3vj3~aSYJ45RO_cAnE(P-qqEWgJFse zjlMfLJ3iZN{c?Q%ZZrB7Yo=)qGkj&so zs(LMQpqZp3}8nH{lAzX-^vKI$l3*x%!3`T|JIDcE0udDcULPX3j$eY zsSE-=Fx7zT>ilDDZEbBm-`j)#Zf$Ml|GT}lv-`L0z31E8FP`sh@9h3{}Ut$qq{u?K(DpY%(}LbR16d%Nv^b0v(HASj*?(k0)jgk$m@wZY&%SWNVAQ%G zQ+Nrn-|Fi5wz_Cc{E+Zg7e!S?97v>&g2L0dK zdHy_4|97``*Yy7`$|IC&7#TA32%Vk0`k$^A47G?NYP4qtEp$f%7gcF5Ls6qYt-`;ulY%6#E_qMm6uh0Kol+T}gPg@lvpa}tZ+WYIT zR!jDRF6m?+e2}E#FGY-(6A4^*O!iS)t#wMGm`fF3YS<`X9yw45HMN3#v_5}EG;sac zBdD!V(6R7Nwi1r)pp7;>>PD!2L8fig{{G#&Hfk$o)kYhT6Se)_!D(Cm@Bg+t9n}5n zFE#1UpS${<`>YXUlMsw5oOrLm6Zy;?6EF5@FgjNGU)0Y>>VngFF`E3<4scWRNI12L%B|MWRFz1VnPq zInMV0x}vM=dd|7$z3+FopJ&J6Kh;&;_3!#sb#?Uu`VH}GTf1{_-=EQVS&g!ZgAv<) zqdU3r>Z3~H43b+26cw9`9~EwL8JQvi3obhrZc0IUrd4`LILMJjx{}Hj0PEyy7vna@ z>wE&=-g6*dgPIP5BEylX0&$~mwvR;#c#!ZdJs8DhSC+N|OPnFP-Xo_=kI1-KRCOR* zbrpdARB1JNLh=PiQ79SDM`Fuzl=^#-8>t7;GYw_;BRyp1bi<2sk*4_@o7|Lj@x4^K zN>peEs)}5yF=Wvc2>pWZmVU5O_7AV8j!5}PZ=aZcb2#8-)qQDx`@L}mE6#pV;wknk z50PP2?O{!Khh`pG;&q6kt5~>Rm(S!9!_fBSZlnsy>?Lqq)lh8&V`Hk41f)a?g~+D4 zuVX4Ohy~Q!5_q<+#l9gltqLN$PPl#$P2Cut+-dUqlUM(YL&kg-Ymt4)qZLKEB!je@ zQ3mYS8Q%z4z^)ZfuSkfdQPgM)aYk6F9t?~I4y>)XhDSxeLFIt1`I!4=UqqC%*6-Lq zu;I(zh0ZVP?QL_@sPWLMQlGyq#{52pcf$V}sJz4lYJJ{v>vt*Q#NCah^ zi!h$%I$|(dRb7TWlk!I8b{AtCLVmzGxB1*ALP2SphUW~&Jfb}bvM{lLaIGG&+(Q^d zv6vw$)z~wbry8V7BREZMl}pYp*hHZF!(&h%G05GVWSkQD;NFLCdD}k!wy1DkU8vR6 z)emd?^wtY8hOK8F2n}#b-YZGKA!b7-y%$s(e$(kq)b>u+wodC>)+e?n8yAfsk`#~o zll=Ho?YoT3rq0Le<9amGkWZd3N5BU9`xkA>@2<*nk?|&`OJEbJ=wbF(50ZtWLMlsd z<>%;e-eyL>PD&uh@{A}7I#L&ZZtis`P)b;e%4;CRY`N=l#*4-o7Lxd{iWlrP~IiykwxfY=3F_LYynv9JV!iRc@EMy zr*FNDSzc|n@_3l^YUUCHNfLwb^Tn&{lat2xiCM!MLgt?2!tN9m?5v79JMHGspD|c$ zJ6ji@Mur6r-h|yLNS#=HZ)|9E zCFv5{y{zhKGyMV{lcY9mx>2^}g-A}b7$tEjzo2C4XZ{4ZIQ+7aIz^rpR}56SX<|0^ z?+Pxj`*cZ=GN?*1#Cc{sDN8fEi+JB6#R?gD*FH`$A^#NTs?EyzhjxTw+tedr!Je@t zsPh41W)!ojjeQoxZBO*2#wI%7MJlK~f9lAeciSV{m6W~EvYsLH$rgyGb|isV$ChNH z4Ankhdd%C2ztx<$9R9xlAfTIHRLdzR!a7z3@%n?7wvd*hcZ)L}7R4+rzC)scxxAE2 zuIi=;pM{5njBkBMQvnEX5`E#)ejO|{}D@GE~? zDWSY1q}@3dP5`t2t1Bhuk?GO}d)`@uwVBMA9iEH))%@$2z7JnyDf$F1lRJb94aD1)|!uRFI31zb1$krhvpu(d^wR7F;l}$h?hlP#7Yxz@XR_LQ^Y;~QtWhr^2%aL^OohO@jKJFeM5~Bp_5K?H5%d>K%DIO4rjb4#FlNO#~FwqS@U|bHI&y|QZXD2dErvRJk zvop+y+Dqs$HHFvtM4Bj4`>s(EWF@l3ac(JxRdYUMC&!Z~j%`z38=H=)=TFU~V&=aZ zarU84t$bR2?*2X5n6t`KcO}$$r+GW<1{EdlxVea_iRPLjM|`3gdhNZOgsx?dixg_- zD~Q5L0xc-!Me7y1m0Z%##`|F4L(Sj~^MHW1t@}v4P_YM>?@@{kj?#6za z50-^7g{tS3a)#BS=cG!-&PpN`$8+0I@J%)7a!$T|MAxxwFLFY|!k<+Pf1|>cpw( zVkq2{i|(8ss25?&FY$`}eNK8jQtB)plU|-v0&W>4-}Bywrftqjk(#)>pmNF!n?Xnh zG~Os~H(3nDuZAWD@|kJs=~-h-@&-kCKJ$B1v_MW>dqGkC-D0n%0GAV<*%Nm?j=>}o z|AD597&klL3`trlS7h*BcGU?QaBK?06YFRS2IFQZDXzy*F>t)XC7g|w_u%Z|nu(}t zEQ5Dg=B$?L=qrgbrIbFiRgvPRX3@;kNFjTmCcaE1-WgMR-6SG>j9BS|R8W?AsG~P| zT?kGDgH)RiKvBnpOnupV+VKXG)2zC$HX;{Q<*z_A#Y0U0} z=&S?1Tcc*lDQVr^j*l7g_!6WO7xc|3dt-UJ*Wv}nH31rr4TPrUtvg%x`wp2zcUB)t z@spl?N_FQgXM0d0nd4=);g)ghq)*wBUS8PBGcuhq3T=gi{H9=X79ps+00wABX4=04NcXCaJg6D%h3F)-H*QKF=C$>tDgmZX16Vj*F-58bQP>TY#Bc zBKt&DcgRhF1eL-sKG5z~`Cji6oRQ1Kbc^8&wDpvG^)I;j9*DSgHW0t_i7i#_zI)eA zr!!UIUOPe$EBb9u8YKmVD}S%IQR=4Wgi~nEWHdGDgFJp7CkJY&hdqZk)@yNA5g(pb z?bMW-#l>okpqKD^&w3n^#p|oirLCcN6+SW%-7*b$E7~g!A>UZJ5$9rT1S)R-^t1$) z^s2T{7Y&Bom(3Rf)D?21x?Ehhs%`_(^c+1XM2?H|TgSK#(Q$0=P@iQzCFTjQni;KUqJWF*Pd{ zWDsR8zGlLTVrdzy?i`|^1?$0B2hLm&e!ShzJ5Ie8>)x}W^}Z^P4e@q?O)z%W%ua+B|zQa^e!rDEFkuKUOgVCdLGFdgPzZIrl$JwR}X_o6&&S0X_>9b%p zPCz~2pp8~P{D{HFHsfi*YC4U0M80`&)`3Oc&|c<7IE`plWHNJTZl~Mq#fzOc!sOyR ze02>c-Q&n!2EYVwrz)%`FA(2#?JdV`}w~Bz1hdMu_)^=7hD^;0QuT#D4zXlIJvJ=2GHg(*DtFp|e7ZdPU6^v?$7(Mz^&Z zgM))8KJhIh7SglVP`auzJiDGBuAT4IE4&4`5dMNsW;x%`Gph$dSd5sS@(;xn<(L<7 zZ8yX_`h344vY0;TzJKr9a~o2e#*phcQRmh4k&%S)E0Ch(;In%UUg18GV^sI!-8ZzT z%8BJS=pL?NKO5@e0q*7=%6kd`BUksq}R4t}rn+p50Z{VbhHDY3%xY(iXwA zwG$!_^&Nrk*HFM6=OldsLu5vB<{q3+aBsI4rfD)CTeU=$OugO1_nMHKb|Y8rU}4MX z?J_-!tG>bR6PZ29{={gZmkW578g;Q6NZJC0<2WSvT}x0(j$xqr8lIu2&!aI7QVP80 zTC0~yg16N?H1ztJL&$Rpc1uM(DxU38XDI}52A0&=cR?hQN2YfS537l=RLXfjl}i@m z-p~KIXrC&$N6Cz=vB1VK@R`t-zE09jZFfWOrhfv~izTbOG7Opg67JR9k2JL;x zOuBA+flH|G?`6cL7SunbS__S9%Syr&C)!E9JA?*yv|4p2O!g4f5j}igEEes6sIIJu zZbv++F0HOb)I>tJR_mx+@1kBHn@oDUp?|}Rvm`bS{A8}{Q*Vwc8-aDrlqc}w-7&AJ zYCgnMpg=5(3u{Yv`?HijPcR*b+#!F|7I~A}lOSv|DM)gF?6T)*pq(;_H$xl|hw6s{ zUS?itH$bBz_|3HkMAUM3G}xiWuc2}l z;2bAB#l*|?FTl@B;F(+au}@x`Z7a!2&MAqhunfQH%Bqb`j3NbX7G(zYOR4iG^@~s& zn^zQ+c~m*~6POLN4`}ukbTLPkrR-dlv=2M0V>e^Z{aPSVVHB19iT4?X*UF9|MNM0a zf#FZWI*Ria`g+vxu%m4%#4)*={L2d{=`_ps1-ZZn;^7wzQ?+;l(`y$v2q+w6dDRkQ z@iv=93k|N(mSlDfZwMk|>U&$PpRZ3=8c}=*xkz!Na_YQMpYsw==phR?PLTfN4a#bY zXkSQ9*tBG@vx^~APAlOCgR@iEwC<&NXZd&Phf$^!Tc+X^^CPI19W#m9z4I-AXBVNt zpBU3Z!>b4}25nkVb%({?-x@o_SKe21$;PrJC0~dkhscdj(e@^;)3>tIzk8-W^|ATM zoSFeaI08SFlMrFvj9{s#SX)K(-X*l$K`=Kb?s<~Aqf=iFXQb^wfuhcxVV9=XD-OEJ zlbIgDq=j};=YldaPF>sx&=~=#DPp0xjA#hg>-MlK=PguY27a=@XWi{P_5W)f|xdI>E&t6y?@8=d~0P zo6$o**~DXCyYS({6Si92HHGIXE={Y0rUkJ^Q%SeTFgR+m?WV*kT<&|);O6Kt;6CYo z@apyLn>qCjaAyKzVth%gv_gt*mtBLfhoU3*wsa%8`XUPl`?3qnls19IDEWMB<>e1; zt#Fr318%#(<)o(Is~{tYTa=uu!RCGbWp@WqT@I2uUdlMZY%Jx?Pb-1w#@s;%fezhr z4|Rhqy!5$=p3iYmpXCNNcPOKoSG><}C_y9Jhr*acuM-iSf8E7`wJ_zSEQy|)IiF^g z_;jJ5W4ViCB1*D`?o8)QD{?SNvnNI)0$euf&;LAc3&G-$G&Lq-oj;5iR^0L4L12=- zXrseXy~JCNb=w<7TMwCyxKkeYQTSyU1zTYn@98?cfM`x@FJyaF$*B0ys9q$36tqqn z)|Um@^8wDqdJiTTrEIvwh1+zzkhm$IIuzf1mALAbH-W=tCshhuiCC>lxRtLZIIxRi z9j?rbMk!g(7KM@#%}Ixy{&{;kd$MGS z7UpBICJ<$`JrjykHIXD1Q~hi4t*%?IOBEcehZnh$D`RdALwJ|W`J6-s3Q$yhoa-9z zjJ#f(UASH!@5GtJ$ZIz=&}CM8U{&dI0pn&sX$Rix#QckyRtrNHUniOqDfGLrT?qD! zgN(-B->f)v=D6BkKeDs=@hWfa8nyYMpupNfVj_ej%{hm5S|GsJI7cu%hyurH{N|wv z+p2mj?xQr*1kszQLA&E5E9X1Uhy!?0#~ntgFO~4#+0VEgh>1ULQX0z5+^9~);bod5 z``kA^evmL6p-vZ@vEvD;>l|;Z8GsrGW zxO*kEdGKwCy^5Y?h8m&9ZWI++_js~B*2kv>Rnv595-dSN>7&CyqaB%+{+Kz#7UaQa zrT)VkHPlWP*Tu939)A)i5F5QE@1|JKkz154*KT&Ub6nCHPmOYoeS*}=n9_Qm?5>QF zFzxdti=FF$5Ja z!$zX&SFT)rSAN$^jIa{hXPV-)*td_`l zqH~`DVQITA?(=(guVi1*Kc&JgeSWQR>b&dCac}zfmT;PGTj%E7wlECq3j&;4H2oZb zANX|>w}j)9gs+L%Ra0e-DpmV@5JtPv`6RTW^46u;K?x^`@R}D*`_-E(F~YmZAyPvZ zn}t;ccBr@#3_^n{D5zO8&&eiAdzVZyj=M1PT`aL9P|3nr!9(1%-z>C(IH#JXK8tm_ zOf3n%jALHLBE`BAkSzLS;gM0+66Nw5u^KZ4{?>g--?LRfRrY2DECh{7_$mY43p< z3N%rW28*A}JLVdj-)6jweus)w6W(MqH9!j$?|mRXZ5=&Yl$9>{Pd}ETgkqtqzuMT0Sa;gd*C%fW`Egn&-y;mN?L3Igv zjO>+D50Ty{6qhR(Zh7{ONCOE=)78}ct(%$S8>mye#w-(ER~O5jiDwACnhb zeO#3;!_n+A9$nCTFnQV7qev=?Je^tU*Usos=aivoQ3U85V5B5Q^1MV5!5rk-=ne_1 zZY@2ANC2tHkm#tU&5-2f=jXGkjAv3EN#W@5H_5u`bQhRwMv-`v;uP@7b1Id))p2mO z4030w1y!#lnWC1)sqh!+>+#pbmT266Osn>0%+zd;MYTFKBE~sxdBQ_!CT~KZ!)9O+ zsfjdbQM(j1_i&Q{y1v?tf$xWeQtF|$YGf!AL^+FLE}5F#xbFIvCIUorF8EbGHx%mj zE&>Z(84LZTc>ISuDgIY?Y2_Wy5@o?L%hPffoc$;-2IsZ+NnK6d%!mpNA@2EfLtsX0 z$??sKX|(1uVM~CXA$Nt&97kh;gJ9Tsp^$OCEcZ~9_AS9t-50=hOLP3>$xGwu3fPSv zj~UHw$(|oyi`v=mJ-o5sdxMOU;YBn}aFAO@ErOs76T5YAwG*<@!{AVBJb_=HAI>~6 zVo!3hqC-V?s$bOg=@T9P2NK-u>3qE`3#Iz_rqjjF8m`7TL2ef7&}Td!y!){(<-U5{a@{^yM%T z9_5@Ry084W`O?<&Eu(JK)_V)X9(%97kzaAtJcK?CeaUb1UM6I0 zq=S~vTeDILExK|g-HjVx4q+}JugH);)lb{u3yB#X6%Dwpb%jb*$#50U|a!DM<-kPE$eT;Zh3GdZX-Z&Rt zV*}^##WDm}r)na*s^ZtUfi3G3bk`MTdgnci1)p)M=@0C#IQZocQVP13g`%^yynUGW zSfAcxf*PH+y6v?`2|jy|;?3}qHAc{bmh_f$ij5v|q{tI;dT>^BzNhJo1X4q219DF+ zpnV!`IspfF6F>45yAnX--%Tz%J>}K!!Plg!n{{WoyX{Gr9GCGLG4Rp3_~tUAZ$Nj? zb5LqWZRgtjcCPt{e0*c!2e_J{b_IFiC}eV7YfsYmxqEZMQ63h0;zW`#l#95@l@CX4e@|$>u=yTp=L>#&v9F7$<6Fx%Rk#>U4 zq%1~7kfgs_VxV#hkw}T+94TQ9(#%3&&!Wj-zpHu57=+f|k{kA5^yEl6ma_I*}n@p~njbzPczB(;6t#I(2i zB#t8AoJ!)HPlO}(yQKu^_e8v3@4hrdOWD$JjJoI%Cuu?ZJbPbv%G-L6kgA?OF+!eh zX=rF-Bu?+SvdyK1X&=L=tMW!qt11k4EHcf`E3l_rFJf`c@-fgDx4QjkX;VGs5H>|> z8-%ZvT@cf{M3-+_`ZQ8yGnVf{<9kkArE|F6_s+e!_GYqK4117QF>=hqQ|)Tm;v6G= z^De~*yeB#W_mDSHQV$@Yj3ux=EKd3IYJ?xLa?|abpAI&)Cgg<(G%VU~6tt(%VJUH3 z+OWpb?afHFk8;l@xdg>;dXuVJK6(qV9xd#P%8+*G|zR8_*82FU0BYco1ukJNlgPXAL^K*?311C;=Toa^7+_&&e20kffOT83 zwyz+aQhhKaHB%S8QtFMR44!Nc{nZ2odesXsneL{II0BL!cQ14vY0euB6CZ4vQ0b}7 zr!eRQ%;+<3W#*Ch-hIFJ@Wv{BRQ7xwg~@Hb>b;Lcq;aMGsSn?UT+G)m@2V#@){pMF zPRQyDKoS&ZyDMbig7d&qIX@>IY82V;p>v7+j;oF$<2$XPGmqjgfqixalrnuWR%_gx z_K9ai?6XTA_Dkg^KGTiUDmBr=8ep`~nkQSkCKztylg7yCuB3dYQvhrCZ|1f^}s;VCL^I0$THcZRz`^` zrniR>bhGc7+oU_!w)|j{J34o?Z{fo8?(?)olh5*0b0gdF{pll3`#!Km3xbhAwaaxc zyc6WFp95;OCk?N$N=Z{%iQkm!D`%0hD+FI$%OSY0C&}nZ&em{&<(_G@J5gs#H)LoS zePtMP657K|cFy6Ir!`RC3v8&Mas9Ss0ut}Z5&-s zM`u>GoH(ayUtu(KIdea~A6H|BVy;0blhyAuO)-bQl~g-c;&Nxyh(Tvrk2s)lW4m1> z0MU0Suk+qS%fNGIW_Os+|N z8WQ@B_r2O-X)9MUaxKiXxT@=FUPn@S>(0uSwWwc4btzDbc-nvQ`NjrpIhp=$2^t@* zo4B8fQ59y`oW|mfH!ifS%K=5${ja<_i$Z;+aH@-$J^lM6GKjfW)XK=~9u;gBHJD7e zuV`(ZVWiT;8uoS9fN{wUpj?|F#VMJ3aruo@0o{j&m*gSo@=W_`eKvQRGGWcCWIF~` zodpwstz=3f4ZR%=z5$tTuQn06QGMcMQi98zFE}gI->u`f76^d|^IOlb((o5_Q`lmx zL{*}^kJrA1R<30u)hLx(#Ps^T6uU-C@26Gkbo-QBN|vol&w z%w5DI5M<${tV8g)aLYlp@e#4fw1sY&z|_my_LN(ak<7*SJ=G>Y;4wdVXGKCLc0K=t z7V$X&slnUvSL?KLpPFcMZpb^YDV1tlovjv9PkD^TOG71j1zCF{?eRqi&iK->cQwHl z%DTk;JlP+(FA3Z+(SSZQe;hpyig3RX>SD5zv1l=$Qd6b?-1Z?0hI0tqTjaJ^p@Nq#PU|9uM6!|)4)Enw@WGat$0ahvT)wv?f0&$oaJ=eT zV!*B7beub+fiOpHE~`w&D0bSu3SKMb!?%vEaX$LZ_j`?9IhtuN#!ApXFCz#oS8`R4 zXK#I*kuc|0bJHnKPouEk{{tNEmwZi0t;aM>@n!1vLpyrS;Z~0~IW_s@A5!bf2@)CJ zT;pN{;^A>NeR!cu?c#E8S==||x=t!KmN0sKJ0DTkfM272WNe{ujtaY8@IqTdZ;xT# z&FDGCC0FF(a69Cy)>`cz-Xx8=j|0WR?AxF9oKua))e^6t?KM(0$Tu__fagEWcg-Y; zdcR#qS84%P*vRwp&Lq}*2kV_Tcpj=Pl{jAS z%l&S}Wt>1!r(h}6-g0sMwLscc+x7)y0iH)S(h4sp8*8IX&j>Wfw|iU2+39F4nsJoO zE@hb7C?hxcG`b_ZGwr8cb9bQR-+jj499LDkKe^)1tz3ufVcFnWwY;D4DQtV`UGB@- zgC!OtQo+}rmsa=OR)z(#`60FaPV46CtDUbrGE?&JUrW#_HtaEW6 zh-E(GH1ViVJeP0$rQntBsPo_klG5p%i#o4!qe|d|Wc-@bjX|0o9k|?vtPd-E!v%JUSd$HM}Jr_t@ z?ewzKF31OJ=_RYDs>#PvlxeGo1ASRf)wh6t3Dc4^9)&z4eNOx%-9=Rcr{efav)U!X z1zZHg1d?}at;p0DKD<})I7`h~TXlhrYlYLu7{Mg^mV)C`0BS&$ze7<1CO^{M<(hLb zCXL)3ddQ7B;jR9_tKEUryY5n`k3*Z|&V-TgHI9%BBrtO{$SDm8dGl=X4$3KNnn4ixnbt~1BTGs7aow20M=0+J9$ZM?5T)&(234O#Dosn)5+G%rNbjK z#wz^^wBgVii#sWwRt6ln^iWuepH2r#EuB43yW-ncpXU3zEPIc|>vhkCO@Q9x-UKC{ zD;F*ZMaS!pOdPU3Z4TMYV&xO-LIymoXSBa#S2cc4uCUqFJKfMD{}T!hZ(HN#&5Eqj zV!nCIgu)j$>Kl-^4UsQ*nATa%EAkizc^KilTBejRZ)P?LL+7o5zL{-4waUI`FYS~p zNvduUTZ-nN=^ngJ#m_>u1Fbf5*YAP%AB?3YlYE-l&cBOzVSkGPF*J3U9kmVkawtUxyUpa$KKs z?N?7KsYxoSnZ*$fnMRybnS)KaJYbwk6MrBK%Zyfg{#dZE-G|Hmt#iCY95>gBm6_q?{X?((sNjsr}vj4Ntq8 zr@WFedN22y$8h&k|vo0(W8paHlygARAHz^!I^@zNQC7CvYjgNA+#hWX6ZSq-F z3CMeU(toUrTJXK;WO0i5$F}(QpBV0C%3>DaMkHL4d25aO{#l1M%sR6u7zdK5K3Vx_ zUP;S4=Apm?5_z2s?b&QjYN|>Mw~VFn;urqVLQn3zY*!Qmtf1*kb49qE$}DrYUmh^m zTl4yiQjB$2R9kVSz&qh`CvZc!%fw`B&||$h?T5?$DGa$m^0!-WKYDjn+>%1e!Cc5@ zyV;ABE84b+*~0Gn63)ebE2kpcyNj<~@T5d0F;a&J&bv+Qb|j=#Hjz#HXpJQV*$_Ps0+wg_kHXyr_POk*3h?! zp&8xFZJ(uZSB~ld&}Q!CGib}`8_UtU1mChXilTzOI>UL=cdH1jq(y{F_^{dX@Pjj- zFtP=Sc+(~rkBQz`w*v=tdyfB}S24mCKbg#HVF%V~~MFCYbt5<$x<%g{= z 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

  • G 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
    qQhK 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