2 MYSQL_USER=$(kubectl exec -n $NAMESPACE_ENV \
3 {{ include "common.fullname" . }}-0 -- printenv MYSQL_USER)
5 MYSQL_PASSWORD=$(kubectl exec -n $NAMESPACE_ENV \
6 {{ include "common.fullname" . }}-0 -- printenv MYSQL_PASSWORD)
8 MYSQL_ROOT_PASSWORD=$(kubectl exec -n $NAMESPACE_ENV \
9 {{ include "common.fullname" . }}-0 -- printenv MYSQL_ROOT_PASSWORD)
11 kubectl create secret generic \
12 '{{ include "common.fullname" . }}'-temp-upgrade-root \
13 --from-literal=password=$MYSQL_ROOT_PASSWORD
15 kubectl create secret generic \
16 '{{ include "common.fullname" . }}'-temp-upgrade-usercred \
17 --from-literal=login=$MYSQL_USER --from-literal=password=$MYSQL_PASSWORD
19 kubectl create -f /upgrade/create-deployment.yml
21 TEMP_POD=$(kubectl get pod -n $NAMESPACE_ENV --selector \
22 app='{{ include "common.fullname" . }}' -o \
23 jsonpath='{.items[?(@.metadata.ownerReferences[].kind=="ReplicaSet")].metadata.name}')
25 CLUSTER_NO=$(kubectl exec -n $NAMESPACE_ENV $TEMP_POD -- \
26 mysql --skip-column-names -h{{ $.Values.service.name }} -u$MYSQL_USER \
27 -p$MYSQL_PASSWORD -e "SHOW GLOBAL STATUS LIKE 'wsrep_cluster_size';" | \
30 CLUSTER_STATE=$(kubectl exec -n $NAMESPACE_ENV $TEMP_POD -- \
31 mysql --skip-column-names -h{{ $.Values.service.name }} -u$MYSQL_USER \
32 -p$MYSQL_PASSWORD -e "SHOW GLOBAL STATUS LIKE 'wsrep_local_state_comment';" \
35 STS_REPLICA=$(kubectl get statefulsets -n $NAMESPACE_ENV \
36 {{ include "common.fullname" . }} -o jsonpath='{.status.replicas}')
38 DEPLOYMENT_REPLICA=$(kubectl get deployment -n $NAMESPACE_ENV \
39 {{ include "common.fullname" . }}-upgrade-deployment -o \
40 jsonpath='{.status.replicas}')
42 while [[ ! $CLUSTER_NO == $((STS_REPLICA+DEPLOYMENT_REPLICA)) ]] \
43 || [[ ! $CLUSTER_STATE == "Synced" ]]
45 echo "$CLUSTER_NO and $CLUSTER_STATE"
46 CLUSTER_NO=$(kubectl exec -n $NAMESPACE_ENV $TEMP_POD -- mysql \
47 --skip-column-names -h{{ $.Values.service.name }} -u$MYSQL_USER \
48 -p$MYSQL_PASSWORD -e "SHOW GLOBAL STATUS LIKE 'wsrep_cluster_size';" \
50 CLUSTER_STATE=$(kubectl exec -n $NAMESPACE_ENV $TEMP_POD -- mysql \
51 --skip-column-names -h{{ $.Values.service.name }} -u$MYSQL_USER \
52 -p$MYSQL_PASSWORD -e "SHOW GLOBAL STATUS LIKE 'wsrep_local_state_comment';" \
55 if [[ $CLUSTER_NO == $((STS_REPLICA+DEPLOYMENT_REPLICA)) ]] \
56 && [[ $CLUSTER_STATE == "Synced" ]]
58 echo "The cluster has $CLUSTER_NO members and $CLUSTER_STATE state."
63 MYSQL_STATUS=$(kubectl exec -n $NAMESPACE_ENV $TEMP_POD -- mysqladmin \
64 -uroot -p$MYSQL_ROOT_PASSWORD ping)
66 while [[ ! $MYSQL_STATUS == "mysqld is alive" ]]
68 echo "Mariadb deployment is not ready yet."
70 MYSQL_STATUS=$(kubectl exec -n $NAMESPACE_ENV $TEMP_POD -- mysqladmin \
71 -uroot -p$MYSQL_ROOT_PASSWORD ping)
72 if [[ $MYSQL_STATUS == "mysqld is alive" ]]
74 echo "Mariadb deployment is ready."
79 kubectl scale statefulsets {{ include "common.fullname" . }} --replicas=0
80 MY_REPLICA_NUMBER=$(kubectl get statefulsets -n $NAMESPACE_ENV \
81 {{ include "common.fullname" . }} -o jsonpath='{.status.replicas}')
82 echo "The the cluster has $MY_REPLICA_NUMBER replicas."
84 while [[ ! $MY_REPLICA_NUMBER == "0" ]]
86 echo "The cluster is not scaled to 0 yet. Please wait ..."
87 MY_REPLICA_NUMBER=$(kubectl get statefulsets -n $NAMESPACE_ENV \
88 {{ include "common.fullname" . }} -o jsonpath='{.status.replicas}')
89 echo "The current status of the cluster is $MY_REPLICA_NUMBER"
91 if [[ $MY_REPLICA_NUMBER == "0" ]]
97 for (( index=0; index<$STS_REPLICA; index+=1 ))
100 "{{ include "common.fullname" . }}-data-{{ include "common.fullname" . }}-$index"