Run and configure:

$ docker-compose up -d
$ ./create_traefik_config.sh
$ ./create_services_config.sh

Api service:

$ curl -H "Host:api.localhost" -v http://127.0.0.1:80 2>&1 | grep "Set-Cookie\|Hostname"
< Set-Cookie: API_SERVICE=http://api2blue:80; Path=/
Hostname: 5d7bffa761c5
$ curl -H "Host:api.localhost" -v http://127.0.0.1:80 2>&1 | grep "Set-Cookie\|Hostname"
< Set-Cookie: API_SERVICE=http://api1blue:80; Path=/
Hostname: ff85f81fa286

Check stickness:

$ curl -H "Host:api.localhost" -v -b "API_SERVICE=http://api1blue:80" http://127.0.0.1:80 2>&1 | grep "Set-Cookie\|Hostname"
Hostname: ff85f81fa286
$ curl -H "Host:api.localhost" -v -b "API_SERVICE=http://api1blue:80" http://127.0.0.1:80 2>&1 | grep "Set-Cookie\|Hostname"
Hostname: ff85f81fa286

Switch to green:

$ ./green.sh
$ curl -H "Host:api.localhost" -v http://127.0.0.1:80 2>&1 | grep "Set-Cookie\|Hostname"
< Set-Cookie: API_SERVICE=http://api2green:80; Path=/
Hostname: dc237c7df8f9
$ curl -H "Host:api.localhost" -v http://127.0.0.1:80 2>&1 | grep "Set-Cookie\|Hostname"
< Set-Cookie: API_SERVICE=http://api1green:80; Path=/
Hostname: f92e48ecbfa0

Switch back to blue:

$ ./blue.sh
$ curl -H "Host:api.localhost" -v http://127.0.0.1:80 2>&1 | grep "Set-Cookie\|Hostname"
< Set-Cookie: API_SERVICE=http://api1blue:80; Path=/
Hostname: ff85f81fa286
$ curl -H "Host:api.localhost" -v http://127.0.0.1:80 2>&1 | grep "Set-Cookie\|Hostname"
< Set-Cookie: API_SERVICE=http://api2blue:80; Path=/
Hostname: 5d7bffa761c5

Auth service:

$ curl -H "Host:auth.localhost" -v http://127.0.0.1:80 2>&1 | grep "Set-Cookie\|Hostname"
< Set-Cookie: AUTH_SERVICE=http://auth1blue:80; Path=/
Hostname: 988d3bf91114
$ curl -H "Host:auth.localhost" -v http://127.0.0.1:80 2>&1 | grep "Set-Cookie\|Hostname"
< Set-Cookie: AUTH_SERVICE=http://auth2blue:80; Path=/
Hostname: 5c50fc3b8db7