Skip to content

Commit 1131e4f

Browse files
committed
Redis commander: rolling config updates
Ensure smooth config updates. Bonus: set zero-downtime update_config policy. Related issue: #984
1 parent 611900c commit 1131e4f

File tree

4 files changed

+21
-9
lines changed

4 files changed

+21
-9
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
config.json
2+
docker-compose.yml

services/redis-commander/Makefile

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,33 +10,36 @@ REPO_BASE_DIR := $(shell git rev-parse --show-toplevel)
1010
include ${REPO_BASE_DIR}/scripts/common.Makefile
1111

1212
.PHONY: up ## Deploys redis stack
13-
up: .init .env ${TEMP_COMPOSE}
13+
up: .init ${TEMP_COMPOSE}
1414
@docker stack deploy --with-registry-auth --prune --compose-file ${TEMP_COMPOSE} ${STACK_NAME}
1515

1616
.PHONY: up-letsencrypt-http ## Deploys redis stack using let's encrypt http challenge
17-
up-letsencrypt-http: .init .env ${TEMP_COMPOSE}-letsencrypt-http
17+
up-letsencrypt-http: .init ${TEMP_COMPOSE}-letsencrypt-http
1818
@docker stack deploy --with-registry-auth --prune --compose-file ${TEMP_COMPOSE}-letsencrypt-http ${STACK_NAME}
1919

2020
.PHONY: up-letsencrypt-dns ## Deploys redis stack using let's encrypt dns challenge
21-
up-letsencrypt-dns: .init .env ${TEMP_COMPOSE}-letsencrypt-dns
21+
up-letsencrypt-dns: .init ${TEMP_COMPOSE}-letsencrypt-dns
2222
@docker stack deploy --with-registry-auth --prune --compose-file ${TEMP_COMPOSE}-letsencrypt-dns ${STACK_NAME}
2323

24-
.PHONY: up-dalco ## Deploys redis-commander stack for Dalco Cluster
24+
.PHONY: up-dalco prune-docker-stack-configs ## Deploys redis-commander stack for Dalco Cluster
2525
up-dalco: up
2626

27-
.PHONY: up-master ## Deploys redis-commander stack for Master Cluster
27+
.PHONY: up-master prune-docker-stack-configs ## Deploys redis-commander stack for Master Cluster
2828
up-master: up
2929

30-
.PHONY: up-public ## Deploys redis-commander stack for public access Cluster
30+
.PHONY: up-public prune-docker-stack-configs ## Deploys redis-commander stack for public access Cluster
3131
up-public: up
3232

33-
.PHONY: up-local ## Deploys redis-commander stack for local deployment
33+
.PHONY: up-local prune-docker-stack-configs ## Deploys redis-commander stack for local deployment
3434
up-local: up
3535

36-
.PHONY: up-aws ## Deploys redis-commander stack in aws
36+
.PHONY: up-aws prune-docker-stack-configs ## Deploys redis-commander stack in aws
3737
up-aws: up
3838

39-
docker-compose.yml: config.json
39+
docker-compose.yml: .env config.json
40+
@$(call jinja, docker-compose.yml.j2, .env, docker-compose.yml.unlinted) && \
41+
$(_yq) docker-compose.yml.unlinted > docker-compose.yml; \
42+
rm docker-compose.yml.unlinted >/dev/null 2>&1;
4043

4144
.PHONY: ${TEMP_COMPOSE}
4245
${TEMP_COMPOSE}: docker-compose.yml .env

services/redis-commander/docker-compose.yml renamed to services/redis-commander/docker-compose.yml.j2

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ services:
1414
environment:
1515
- URL_PREFIX=/redis
1616
deploy:
17+
update_config:
18+
order: start-first
19+
delay: 10s
20+
failure_action: rollback
21+
parallelism: 1
1722
placement:
1823
constraints:
1924
- node.labels.ops == true
@@ -37,6 +42,7 @@ services:
3742
configs:
3843
redis_commander_config:
3944
file: ./config.json
45+
name: ${STACK_NAME}_config_{{ "./config.json" | sha256file | substring(0,10) }}
4046

4147
networks:
4248
public:

services/redis-commander/template.env

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
STACK_NAME=${STACK_NAME}
2+
13
MONITORING_DOMAIN=${MONITORING_DOMAIN}
24
PREFIX_STACK_NAME=${PREFIX_STACK_NAME}
35
REDIS_HOST=${REDIS_HOST}

0 commit comments

Comments
 (0)