mirror of
https://github.com/bitnami/charts.git
synced 2026-08-10 14:15:55 +08:00
[bitnami/redis-cluster] Improve resiliency of the update script (#6225)
* [bitnami/redis-cluster] Improve resiliency of the update script * Remove unnecessary part
This commit is contained in:
@@ -23,5 +23,4 @@ name: redis-cluster
|
||||
sources:
|
||||
- https://github.com/bitnami/bitnami-docker-redis
|
||||
- http://redis.io/
|
||||
version: 6.0.0
|
||||
|
||||
version: 6.0.1
|
||||
|
||||
@@ -91,79 +91,58 @@ spec:
|
||||
if ! [[ -f /opt/bitnami/redis/etc/redis.conf ]]; then
|
||||
cp /opt/bitnami/redis/etc/redis-default.conf /opt/bitnami/redis/etc/redis.conf
|
||||
fi
|
||||
previousNodeIp=""
|
||||
firstNodeIp=$(wait_for_dns_lookup {{ template "common.names.fullname" . }}-0.{{ template "common.names.fullname" . }}-headless 120 5)
|
||||
firstNodeIP=$(wait_for_dns_lookup {{ template "common.names.fullname" . }}-0.{{ template "common.names.fullname" . }}-headless 120 5)
|
||||
{{- if .Values.cluster.externalAccess.enabled }}
|
||||
newNodeCounter=0
|
||||
for nodeIp in $(echo "{{ .Values.cluster.update.newExternalIPs }}" | cut -d [ -f2 | cut -d ] -f 1 ); do
|
||||
for nodeIP in $(echo "{{ .Values.cluster.update.newExternalIPs }}" | cut -d [ -f2 | cut -d ] -f 1 ); do
|
||||
{{- if .Values.tls.enabled }}
|
||||
while [[ $(redis-cli -h "$nodeIp" -p "$REDIS_TLS_PORT" --tls --cert ${REDIS_TLS_CERT_FILE} --key ${REDIS_TLS_KEY_FILE} --cacert ${REDIS_TLS_CA_FILE} ping) != 'PONG' ]]; do
|
||||
while [[ $(redis-cli -h "$nodeIP" -p "$REDIS_TLS_PORT" --tls --cert ${REDIS_TLS_CERT_FILE} --key ${REDIS_TLS_KEY_FILE} --cacert ${REDIS_TLS_CA_FILE} ping) != 'PONG' ]]; do
|
||||
{{- else }}
|
||||
while [[ $(redis-cli -h "$nodeIp" -p "$REDIS_PORT" ping) != 'PONG' ]]; do
|
||||
while [[ $(redis-cli -h "$nodeIP" -p "$REDIS_PORT" ping) != 'PONG' ]]; do
|
||||
{{- end }}
|
||||
echo "Node $nodeIp not ready, waiting for all the nodes to be ready..."
|
||||
echo "Node $nodeIP not ready, waiting for all the nodes to be ready..."
|
||||
sleep 5
|
||||
done
|
||||
slave=()
|
||||
if (( $REDIS_CLUSTER_REPLICAS >= 1 )) && (( newNodeCounter % (( $REDIS_CLUSTER_REPLICAS + 1 )) )); then
|
||||
slave+=("--cluster-slave")
|
||||
[ -z previousNodeIp ] && previousNodeIp=$firstNodeIp
|
||||
if [ -z "$REDISCLI_AUTH" ]; then
|
||||
masterID=$(redis-cli -c -h $previousNodeIp cluster myid)
|
||||
else
|
||||
masterID=$(redis-cli -c -h $previousNodeIp -a $REDISCLI_AUTH cluster myid)
|
||||
fi
|
||||
slave+=("--cluster-master-id $masterID")
|
||||
echo "Adding Node ${newNodeCounter} ip: ${nodeIp} as slave of ${masterID}"
|
||||
else
|
||||
previousNodeIp=$nodeIp
|
||||
echo "Adding Node ${newNodeCounter} ip: ${nodeIp} as master"
|
||||
fi
|
||||
{{- if .Values.tls.enabled }}
|
||||
while ! redis-cli --cluster --tls --cert ${REDIS_TLS_CERT_FILE} --key ${REDIS_TLS_KEY_FILE} --cacert ${REDIS_TLS_CA_FILE} add-node "${nodeIp}:${REDIS_TLS_PORT}" "{{ index .Values.cluster.externalAccess.service.loadBalancerIP 0 }}:${REDIS_TLS_PORT}" ${slave[@]}; do
|
||||
while ! redis-cli --cluster --tls --cert ${REDIS_TLS_CERT_FILE} --key ${REDIS_TLS_KEY_FILE} --cacert ${REDIS_TLS_CA_FILE} add-node "${nodeIP}:${REDIS_TLS_PORT}" "{{ index .Values.cluster.externalAccess.service.loadBalancerIP 0 }}:${REDIS_TLS_PORT}" ${slave[@]}; do
|
||||
{{- else }}
|
||||
while ! redis-cli --cluster add-node "${nodeIp}:${REDIS_PORT}" "{{ index .Values.cluster.externalAccess.service.loadBalancerIP 0 }}:${REDIS_PORT}" ${slave[@]}; do
|
||||
while ! redis-cli --cluster add-node "${nodeIP}:${REDIS_PORT}" "{{ index .Values.cluster.externalAccess.service.loadBalancerIP 0 }}:${REDIS_PORT}" ${slave[@]}; do
|
||||
{{- end }}
|
||||
echo "Add-node ${new_node_index} ${new_node_ip} failed, retrying"
|
||||
echo "Add-node ${newNodeIndex} ${newNodeIP} failed, retrying"
|
||||
sleep 5
|
||||
done
|
||||
((newNodeCounter += 1))
|
||||
done
|
||||
{{- else }}
|
||||
for node in $(seq $((1+{{ .Values.cluster.update.currentNumberOfNodes }})) {{ .Values.cluster.nodes }}); do
|
||||
new_node_index="$(($node - 1))"
|
||||
new_node_ip=$(wait_for_dns_lookup {{ template "common.names.fullname" . }}-"$new_node_index".{{ template "common.names.fullname" . }}-headless 120 5)
|
||||
newNodeIndex="$(($node - 1))"
|
||||
newNodeIP=$(wait_for_dns_lookup "{{ template "common.names.fullname" . }}-${newNodeIndex}.{{ template "common.names.fullname" . }}-headless" 120 5)
|
||||
{{- if .Values.tls.enabled }}
|
||||
while [[ $(redis-cli -h "$new_node_ip" -p "$REDIS_TLS_PORT" --tls --cert ${REDIS_TLS_CERT_FILE} --key ${REDIS_TLS_KEY_FILE} --cacert ${REDIS_TLS_CA_FILE} ping) != 'PONG' ]]; do
|
||||
while [[ $(redis-cli -h "$newNodeIP" -p "$REDIS_TLS_PORT" --tls --cert ${REDIS_TLS_CERT_FILE} --key ${REDIS_TLS_KEY_FILE} --cacert ${REDIS_TLS_CA_FILE} ping) != 'PONG' ]]; do
|
||||
{{- else }}
|
||||
while [[ $(redis-cli -h "$new_node_ip" -p "$REDIS_PORT" ping) != 'PONG' ]]; do
|
||||
while [[ $(redis-cli -h "$newNodeIP" -p "$REDIS_PORT" ping) != 'PONG' ]]; do
|
||||
{{- end }}
|
||||
echo "Node $new_node_ip not ready, waiting for all the nodes to be ready..."
|
||||
echo "Node $newNodeIP not ready, waiting for all the nodes to be ready..."
|
||||
newNodeIP=$(wait_for_dns_lookup "{{ template "common.names.fullname" . }}-${newNodeIndex}.{{ template "common.names.fullname" . }}-headless" 120 5)
|
||||
sleep 5
|
||||
done
|
||||
slave=()
|
||||
if (( $REDIS_CLUSTER_REPLICAS >= 1 )) && (( new_node_index % (( $REDIS_CLUSTER_REPLICAS + 1 )) )); then
|
||||
if (( $REDIS_CLUSTER_REPLICAS >= 1 )) && (( newNodeIndex % (( $REDIS_CLUSTER_REPLICAS + 1 )) )); then
|
||||
slave+=("--cluster-slave")
|
||||
[ -z previousNodeIp ] && previousNodeIp=$firstNodeIp
|
||||
if [ -z "$REDISCLI_AUTH" ]; then
|
||||
masterID=$(redis-cli -c -h $previousNodeIp cluster myid)
|
||||
else
|
||||
masterID=$(redis-cli -c -h $previousNodeIp -a $REDISCLI_AUTH cluster myid)
|
||||
fi
|
||||
slave+=("--cluster-master-id $masterID")
|
||||
echo "Adding Node $new_node_index ${new_node_ip} as slave of ${masterID}"
|
||||
else
|
||||
previousNodeIp=$new_node_ip
|
||||
echo "Adding Node $new_node_index ${new_node_ip} as master"
|
||||
fi
|
||||
{{- if .Values.tls.enabled }}
|
||||
while ! redis-cli --cluster add-node --tls --cert ${REDIS_TLS_CERT_FILE} --key ${REDIS_TLS_KEY_FILE} --cacert ${REDIS_TLS_CA_FILE} "${new_node_ip}:${REDIS_TLS_PORT}" "${firstNodeIp}:${REDIS_TLS_PORT}" ${slave[@]}; do
|
||||
while ! redis-cli --cluster add-node --tls --cert ${REDIS_TLS_CERT_FILE} --key ${REDIS_TLS_KEY_FILE} --cacert ${REDIS_TLS_CA_FILE} "${newNodeIP}:${REDIS_TLS_PORT}" "${firstNodeIP}:${REDIS_TLS_PORT}" ${slave[@]}; do
|
||||
{{- else }}
|
||||
while ! redis-cli --cluster add-node "${new_node_ip}:${REDIS_PORT}" "${firstNodeIp}:${REDIS_PORT}" ${slave[@]}; do
|
||||
while ! redis-cli --cluster add-node "${newNodeIP}:${REDIS_PORT}" "${firstNodeIP}:${REDIS_PORT}" ${slave[@]}; do
|
||||
{{- end }}
|
||||
echo "Add-node ${new_node_index} ${new_node_ip} failed, retrying"
|
||||
echo "Add-node ${newNodeIndex} ${newNodeIP} failed, retrying"
|
||||
sleep 5
|
||||
firstNodeIp=$(wait_for_dns_lookup {{ template "common.names.fullname" . }}-0.{{ template "common.names.fullname" . }}-headless 120 5)
|
||||
firstNodeIP=$(wait_for_dns_lookup "{{ template "common.names.fullname" . }}-0.{{ template "common.names.fullname" . }}-headless" 120 5)
|
||||
newNodeIP=$(wait_for_dns_lookup "{{ template "common.names.fullname" . }}-${newNodeIndex}.{{ template "common.names.fullname" . }}-headless" 120 5)
|
||||
done
|
||||
done
|
||||
{{- end }}
|
||||
|
||||
Reference in New Issue
Block a user