From 52bcd4677d04ac5fdfd64815e6a25d329664393c Mon Sep 17 00:00:00 2001 From: Beltran Rueda Date: Mon, 9 Apr 2018 16:30:14 +0000 Subject: [PATCH] Move slaves to Statefulset --- .../templates/master-configmap.yaml | 2 +- .../templates/slave-configmap.yaml | 4 +- .../templates/slave-statefulset.xml | 153 ++++++++++++++++++ 3 files changed, 155 insertions(+), 4 deletions(-) create mode 100644 incubator/mariadb-cluster/templates/slave-statefulset.xml diff --git a/incubator/mariadb-cluster/templates/master-configmap.yaml b/incubator/mariadb-cluster/templates/master-configmap.yaml index 3795b3d4b..14b15cb61 100644 --- a/incubator/mariadb-cluster/templates/master-configmap.yaml +++ b/incubator/mariadb-cluster/templates/master-configmap.yaml @@ -1,3 +1,4 @@ +{{- if .Values.master.config }} apiVersion: v1 kind: ConfigMap metadata: @@ -9,6 +10,5 @@ metadata: heritage: "{{ .Release.Service }}" data: my.cnf: |- -{{- if .Values.master.config }} {{ .Values.master.config | indent 4 }} {{- end -}} diff --git a/incubator/mariadb-cluster/templates/slave-configmap.yaml b/incubator/mariadb-cluster/templates/slave-configmap.yaml index 508da7e38..703871b0b 100644 --- a/incubator/mariadb-cluster/templates/slave-configmap.yaml +++ b/incubator/mariadb-cluster/templates/slave-configmap.yaml @@ -1,4 +1,4 @@ -{{- if .Values.replication.enabled }} +{{- if and .Values.replication.enabled .Values.slave.config}} apiVersion: v1 kind: ConfigMap metadata: @@ -10,7 +10,5 @@ metadata: heritage: "{{ .Release.Service }}" data: my.cnf: |- -{{- if .Values.slave.config }} {{ .Values.slave.config | indent 4 }} {{- end -}} -{{- end -}} diff --git a/incubator/mariadb-cluster/templates/slave-statefulset.xml b/incubator/mariadb-cluster/templates/slave-statefulset.xml new file mode 100644 index 000000000..fd37d5e1e --- /dev/null +++ b/incubator/mariadb-cluster/templates/slave-statefulset.xml @@ -0,0 +1,153 @@ +{{- if .Values.replication.enabled }} +apiVersion: apps/v1beta1 +kind: StatefulSet +metadata: + name: {{ template "slave.fullname" . }} + labels: + app: "{{ template "name" . }}" + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + component: "slave" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +spec: + serviceName: "{{ template "slave.fullname" . }}" + replicas: {{ .Values.slave.replicas }} + updateStrategy: + type: RollingUpdate + template: + metadata: + labels: + app: "{{ template "name" . }}" + component: "slave" + release: "{{ .Release.Name }}" + spec: + securityContext: + runAsUser: 1001 + fsGroup: 1001 + {{- if eq .Values.slave.antiAffinity "hard" }} + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - topologyKey: "kubernetes.io/hostname" + labelSelector: + matchLabels: + app: "{{ template "name" . }}" + release: "{{ .Release.Name }}" + {{- else if eq .Values.slave.antiAffinity "soft" }} + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 1 + podAffinityTerm: + topologyKey: kubernetes.io/hostname + labelSelector: + matchLabels: + app: "{{ template "name" . }}" + release: "{{ .Release.Name }}" + {{- end }} + containers: + - name: "mariadb" + image: "{{ .Values.image }}" + imagePullPolicy: "{{ .Values.pullPolicy }}" + env: + - name: MARIADB_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "fullname" . }} + key: mariadb-root-password + {{- if .Values.db.user }} + - name: MARIADB_USER + value: "{{ .Values.db.user }}" + - name: MARIADB_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "fullname" . }} + key: mariadb-password + {{- end }} + - name: MARIADB_DATABASE + value: "{{ .Values.db.name }}" + - name: MARIADB_REPLICATION_MODE + value: "slave" + - name: MARIADB_MASTER_HOST + value: {{ template "master.fullname" . }} + - name: MARIADB_MASTER_PORT + value: "3306" + - name: MARIADB_MASTER_USER + value: "root" + - name: MARIADB_MASTER_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "fullname" . }} + key: mariadb-root-password + - name: MARIADB_REPLICATION_USER + value: "{{ .Values.replication.user }}" + - name: MARIADB_REPLICATION_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "fullname" . }} + key: mariadb-replication-password + ports: + - name: mysql + containerPort: 3306 + livenessProbe: + exec: + command: ["sh", "-c", "exec mysqladmin status -uroot -p$MARIADB_ROOT_PASSWORD"] + initialDelaySeconds: 120 + readinessProbe: + exec: + command: ["sh", "-c", "exec mysqladmin status -uroot -p$MARIADB_ROOT_PASSWORD"] + initialDelaySeconds: 15 + resources: +{{ toYaml .Values.slave.resources | indent 10 }} + volumeMounts: + - name: data + mountPath: /bitnami +{{- if .Values.slave.config }} + - name: config + mountPath: /opt/bitnami/mariadb/conf/my.cnf + subPath: my.cnf +{{- end }} +{{- if .Values.metrics.enabled }} + - name: metrics + image: "{{ .Values.metrics.image }}:{{ .Values.metrics.imageTag }}" + imagePullPolicy: {{ .Values.metrics.imagePullPolicy | quote }} + env: + - name: MARIADB_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: {{ template "fullname" . }} + key: mariadb-root-password + command: [ 'sh', '-c', 'DATA_SOURCE_NAME="root:$MARIADB_ROOT_PASSWORD@(localhost:3306)/" /bin/mysqld_exporter' ] + ports: + - name: metrics + containerPort: 9104 + livenessProbe: + httpGet: + path: /metrics + port: metrics + initialDelaySeconds: 15 + timeoutSeconds: 5 + readinessProbe: + httpGet: + path: /metrics + port: metrics + initialDelaySeconds: 5 + timeoutSeconds: 1 + resources: +{{ toYaml .Values.metrics.resources | indent 10 }} +{{- end }} +{{- if .Values.slave.persistence.enabled }} + volumeClaimTemplates: + - metadata: + name: data + spec: + accessModes: + {{- range .Values.slave.persistence.accessModes }} + - {{ . | quote }} + {{- end }} + resources: + requests: + storage: {{ .Values.slave.persistence.size | quote }} + storageClassName: "standard" +{{- end }} +{{- end }} \ No newline at end of file