# Blue-Green Deployments
这是一个安全部署应用的方法,它通过提供两个版本的应用同时运行。为了部署一个新版本的应用,你需要将当前版本切换到新版本,然后关闭老版本。Blue-green deployment不会使应用停止服务,在必要的情况下允许你快速回滚应用到blue版本。
---设置“蓝色”环境,运行版本1的地址服务
1. 创建一个upstream
curl -X POST http://kong:8001/upstreams \
--data "name=address.v1.service"
2. 给upstream添加两个target
curl -X POST http://kong:8001/upstreams/address.v1.service/targets \
--data "target=192.168.34.15:80" \
--data "weight=100"
curl -X POST http://kong:8001/upstreams/address.v1.service/targets \
--data "target=192.168.34.16:80" \
--data "weight=50"
3. 创建一个把Blue上游作为目标的Service
curl -X POST http://kong:8001/services/ \
--data "name=address-service" \
--data "host=address.v1.service" \
--data "path=/address"
4. 最后,为Service添加Route
curl -X POST http://kong:8001/services/address-service/routes/ \
--data "hosts[]=address.mydomain.com"
将主机头设置为address.mydomain.com,就可以让那Kong代理这个请求转发到定义的两个目标;三分之二的请求将发送到http://192.168.34.15:80/address(权重=100),1/3将转到http://192.168.34.16:80/address(权重=50)。
# 设置“绿色”环境,运行版本2的地址服务
1.为地址服务v2,创建一个新的Green upstream
curl -X POST http://kong:8001/upstreams \
--data "name=address.v2.service"
2.给upstream添加两个目标
curl -X POST http://kong:8001/upstreams/address.v2.service/targets \
--data "target=192.168.34.17:80"
--data "weight=100"
curl -X POST http://kong:8001/upstreams/address.v2.service/targets \
--data "target=192.168.34.18:80" \
--data "weight=100"
3.将服务从Blue环境转换为Green环境, v1 -> v2
curl -X PATCH http://kong:8001/services/address-service \
--data "host=address.v2.service"
将主机头设置为address.mydomain.com,现在已经给Kong设置了一个新的目标;一半的请求将被发送到http://192.168.34.17:80/address(权重=100),另外1/2将转到http://192.168.34.18:80/address(权重=100)。
通常,通过Kong管理API的更改是动态的,并将立即生效。不需要重新加载或重启,在进度请求中不需要删除。
# 金丝雀版本
使用环型平衡器,目标权重可以精确地调整,允许一个平滑的、可控的金丝雀环境。
使用一个非常简单的2个目标示例:
1.第一个目标权重 1000
curl -X POST http://kong:8001/upstreams/address.v2.service/targets \
--data "target=192.168.34.17:80" \
--data "weight=1000"
2.第二个目标权重 0
curl -X POST http://kong:8001/upstreams/address.v2.service/targets \
--data "target=192.168.34.18:80" \
--data "weight=0"
通过重复请求,但是每次改变权重,流量将慢慢地路由到另一个目标。例如,将其设置为10%:
-第一个目标权重 900
curl -X POST http://kong:8001/upstreams/address.v2.service/targets \
--data "target=192.168.34.17:80" \
--data "weight=900"
-第二个目标权重 100
curl -X POST http://kong:8001/upstreams/address.v2.service/targets \
--data "target=192.168.34.18:80" \
--data "weight=100"
同样,通过Kong管理API的更改是动态的,并将立即生效。不需要重新加载或重启,在进度请求中不需要删除。