[MARIADB] Update mariadb-operator and templates to 0.27.0
[oom.git] / kubernetes / common / common / templates / _mariadb.tpl
index c90b86c..41259b3 100644 (file)
 */}}
 {{- define "common.mariadbService" -}}
   {{- if .Values.global.mariadbGalera.localCluster -}}
-  {{-   if .Values.global.mariadbGalera.useOperator }}
+  {{-   if and .Values.global.mariadbGalera.useOperator  (index .Values "mariadb-galera" "mariadbOperator" "galera" "enabled") }}
     {{- printf "%s-primary" (index .Values "mariadb-galera" "nameOverride") -}}
   {{-   else }}
     {{- index .Values "mariadb-galera" "nameOverride" -}}
   {{-   end }}
   {{- else -}}
   {{-   if .Values.global.mariadbGalera.useOperator }}
-    {{- printf "%s-primary" (.Values.global.mariadbGalera.service) -}}
+    {{- printf "%s-primary" (.Values.global.mariadbGalera.service) }}
   {{-   else }}
     {{- .Values.global.mariadbGalera.service -}}
   {{-   end }}
 {{- end -}}
 
 {{/*
-  Create MariDB Database via mariadb-operator
+  Create MariaDB Database via mariadb-operator
 */}}
 {{- define "common.mariadbOpDatabase" -}}
 {{- $dot := default . .dot -}}
 {{- $dbname := (required "'dbame' param, is required." .dbname) -}}
 {{- $dbinst := (required "'dbinst' param, is required." .dbinst) -}}
 ---
-apiVersion: mariadb.mmontes.io/v1alpha1
+apiVersion: k8s.mariadb.com/v1alpha1
 kind: Database
 metadata:
-  name: {{ $dbname }}
+  name: {{ $dbinst }}-{{ $dbname }}
 spec:
+  name: {{ $dbname }}
   mariaDbRef:
     name: {{ $dbinst }}
   characterSet: utf8
@@ -146,15 +147,15 @@ spec:
 {{- $dbinst := (required "'dbinst' param, is required." .dbinst) -}}
 {{- $dbsecret := (required "'dbsecret' param, is required." .dbsecret) -}}
 ---
-apiVersion: mariadb.mmontes.io/v1alpha1
+apiVersion: k8s.mariadb.com/v1alpha1
 kind: User
 metadata:
-  name: {{ $dbuser }}
+  name: {{ $dbinst }}-{{ $dbuser }}
 spec:
-  # If you want the user to be created with a different name than the resource name
-  # name: user-custom
+  name: {{ $dbuser }}
   mariaDbRef:
     name: {{ $dbinst }}
+    waitForIt: true
   passwordSecretKeyRef:
     name: {{ $dbsecret }}
     key: password
@@ -172,13 +173,14 @@ spec:
 {{- $dbname := (required "'dbame' param, is required." .dbname) -}}
 {{- $dbinst := (required "'dbinst' param, is required." .dbinst) -}}
 ---
-apiVersion: mariadb.mmontes.io/v1alpha1
+apiVersion: k8s.mariadb.com/v1alpha1
 kind: Grant
 metadata:
   name: {{ $dbuser }}-{{ $dbname }}-{{ $dbinst }}
 spec:
   mariaDbRef:
     name: {{ $dbinst }}
+    waitForIt: true
   privileges:
     - "ALL"
   database: {{ $dbname }}
@@ -194,33 +196,50 @@ spec:
 {{- define "common.mariadbOpBackup" -}}
 {{- $dot := default . .dot -}}
 {{- $dbinst := include "common.name" $dot -}}
+{{- $name := default $dbinst $dot.Values.backup.nameOverride -}}
+---
+apiVersion: k8s.mariadb.com/v1alpha1
 kind: Backup
 metadata:
-  name: backup-scheduled
+  name: {{ $name }}
 spec:
+  inheritMetadata:
+    labels:
+      sidecar.istio.io/inject: 'false'
+  backoffLimit: 5
+  logLevel: info
   mariaDbRef:
     name: {{ $dbinst }}
+    waitForIt: true
   schedule:
-    cron: "*/1 * * * *"
+    cron: {{ $dot.Values.backup.cron }}
     suspend: false
-  maxRetentionDays: 30
+  maxRetention: {{ $dot.Values.backup.maxRetention }}
   storage:
+    {{- if eq $dot.Values.backup.storageType "PVC" }}
     persistentVolumeClaim:
       resources:
         requests:
-          storage: 100Mi
-      {{- if .Values.mariadbOperator.storageClassName }}
-      storageClassName: {{ .Values.mariadbOperator.storageClassName }}
+          storage: {{ $dot.Values.backup.persistence.size }}
+      {{- if $dot.Values.mariadbOperator.storageClassName }}
+      storageClassName: {{ $dot.Values.mariadbOperator.storageClassName }}
       {{- end }}
       accessModes:
-        - ReadWriteOnce
+        - {{ $dot.Values.backup.persistence.accessMode }}
+    {{- end }}
+    {{- if eq $dot.Values.backup.storageType "S3" }}
+    s3: {{- include "common.tplValue" ( dict "value" .Values.backup.s3 "context" $) | nindent 6 }}
+    {{- end }}
+    {{- if eq $dot.Values.backup.storageType "volume" }}
+    volume: {{- include "common.tplValue" ( dict "value" .Values.backup.volume "context" $) | nindent 6 }}
+    {{- end }}
   resources:
     requests:
-      cpu: 100m
-      memory: 128Mi
+      cpu: "100m"
+      memory: "100Mi"
     limits:
-      cpu: 300m
-      memory: 512Mi
+      cpu: "300m"
+      memory: "500Mi"
 {{- end -}}
 
 {{/*
@@ -233,7 +252,7 @@ spec:
 {{- $dbrootsecret := tpl (default (include "common.mariadb.secret.rootPassSecretName" (dict "dot" $dot "chartName" "")) $dot.Values.rootUser.externalSecret) $dot -}}
 {{- $dbusersecret := tpl (default (include "common.mariadb.secret.userCredentialsSecretName" (dict "dot" $dot "chartName" "")) $dot.Values.db.externalSecret) $dot -}}
 ---
-apiVersion: mariadb.mmontes.io/v1alpha1
+apiVersion: k8s.mariadb.com/v1alpha1
 kind: MariaDB
 metadata:
   name: {{ $dbinst }}
@@ -247,6 +266,9 @@ spec:
     annotations: {{ toYaml .Values.podAnnotations | nindent 6 }}
     {{- end }}
     labels:
+      # temporarily test mariaDB without sidecar (fix initial Job, Backup and Metrics)
+      # will be obsolete with "native-sidecars" feature in K8S and Istio
+      sidecar.istio.io/inject: "false"
       app: {{ $dbinst }}
       version: {{ .Values.mariadbOperator.appVersion }}
   rootPasswordSecretKeyRef:
@@ -254,8 +276,7 @@ spec:
     key: password
   image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.mariadbOperator.image }}:{{ $dot.Values.mariadbOperator.appVersion }}
   imagePullPolicy: IfNotPresent
-  imagePullSecrets:
-    - name: {{ include "common.namespace" . }}-docker-registry-key
+  {{- include "common.imagePullSecrets" . | nindent 2 }}
   port: 3306
   replicas: {{ $dot.Values.replicaCount }}
   {{- if $dot.Values.mariadbOperator.galera.enabled }}
@@ -271,21 +292,30 @@ spec:
         enabled: true
         authDelegatorRoleName: {{ $dbinst }}-auth
       gracefulShutdownTimeout: 5s
+    primary:
+      automaticFailover: true
+      podIndex: 0
     recovery:
       enabled: true
-      clusterHealthyTimeout: 5m
-      clusterBootstrapTimeout: 10m
-      podRecoveryTimeout: 5m
-      podSyncTimeout: 10m
+      clusterHealthyTimeout: 30s
+      clusterBootstrapTimeout: 10m0s
+      minClusterSize: 50%
+      podRecoveryTimeout: 3m0s
+      podSyncTimeout: 3m0s
     initContainer:
       image: {{ include "repositoryGenerator.githubContainerRegistry" . }}/{{ $dot.Values.mariadbOperator.galera.initImage }}:{{ $dot.Values.mariadbOperator.galera.initVersion }}
       imagePullPolicy: IfNotPresent
-    volumeClaimTemplate:
-      resources:
-        requests:
-          storage: 50Mi
-      accessModes:
-        - ReadWriteOnce
+    config:
+      reuseStorageVolume: false
+      volumeClaimTemplate:
+        {{- if .Values.mariadbOperator.persistence.storageClassName }}
+        storageClassName: {{ .Values.mariadbOperator.persistence.storageClassName }}
+        {{- end }}
+        resources:
+          requests:
+            storage: 50Mi
+        accessModes:
+          - ReadWriteOnce
   {{- end }}
   livenessProbe:
     exec:
@@ -305,45 +335,32 @@ spec:
     initialDelaySeconds: 20
     periodSeconds: 10
     timeoutSeconds: 5
+  {{- if default false $dot.Values.global.metrics.enabled }}
+  metrics:
+    enabled: true
+  {{- end }}
   affinity:
     podAntiAffinity:
       requiredDuringSchedulingIgnoredDuringExecution:
         - topologyKey: kubernetes.io/hostname
   tolerations:
-    - key: mariadb.mmontes.io/ha
+    - key: k8s.mariadb.com/ha
       operator: Exists
       effect: NoSchedule
   podDisruptionBudget:
     maxUnavailable: 50%
   updateStrategy:
     type: RollingUpdate
-  #myCnf: |
-  #  [mysqld]
-  #  bind-address=0.0.0.0
-  #  default_storage_engine=InnoDB
-  #  binlog_format=row
-  #  innodb_autoinc_lock_mode=2
-  #  max_allowed_packet=256M
-  #  lower_case_table_names = 1
-
-  #  ## Character set
-  #  collation_server=utf8_unicode_ci
-  #  init_connect='SET NAMES utf8'
-  #  character_set_server=utf8
 
   myCnfConfigMapKeyRef:
     key: my.cnf
     name: {{ printf "%s-configuration" (include "common.fullname" $dot) }}
   resources: {{ include "common.resources" . | nindent 4 }}
-  volumeClaimTemplate:
-    {{- if $dot.Values.mariadbOperator.storageClassName }}
-    storageClassName: {{ $dot.Values.mariadbOperator.storageClassName }}
+  storage:
+    {{- if $dot.Values.mariadbOperator.persistence.storageClassName }}
+    storageClassName: {{ $dot.Values.mariadbOperator.persistence.storageClassName }}
     {{- end }}
-    resources:
-      requests:
-        storage: {{ $dot.Values.mariadbOperator.persistence.size | quote }}
-    accessModes:
-      - ReadWriteOnce
+    size: {{ $dot.Values.mariadbOperator.persistence.size | quote }}
 {{-  if $dot.Values.db.user }}
 {{ include "common.mariadbOpUser" (dict "dot" . "dbuser" $dot.Values.db.user "dbinst" $dbinst "dbsecret" $dbusersecret) }}
 {{-  end }}