The Ambassador pattern to container services
- The Ambassador daemon
ambd
ambd --addr 0.0.0.0:29091 --advertise advertise-host-ip:29091 \
--prefix /debug/docker/ambassador/nodes \
--proxy '{"name": "mysql", "net": "tcp", "src": ":3306", "dst": ["mysql-master-ip:3306", "mysql-slave-ip:3306"]}' \
--proxy '{"name": "redis", "net": "tcp", "src": ":6379", "srv": "/srv/redis/debug"}' \
--proxycfg /proxy/debug/v1 \
etcd://etcd1-ip:2379,etcd2-ip:2379,etcd3-ip:2379
-
Runtime configuration client
ambctl
ambctl list
ambctl create --name mgo --src :3376 --dst mgos-ip-1:3376 --dst mgos-ip-2:3376
ambctl cancel --name mgo --name redis
ambctl info
ambctl config /proxy/debug/v2
-
Available as docker image jeffjen/ambd
How To Use the Ambassador Pattern to Dynamically Configure Services portrays what this strategy could do to enable service discovery, enhanced connectivity and routing pattern.
- It is a light weight proxy daemon.
- Configuration is intuitive and shell scriptable.
- Resiliant to network partition and automatic retry.
Together with docker packaging and network facility, we can deploy with confidence that code running the development environment will continue to work in production environment
See setting up a working deployment for a walkthrough over the system