1 回答
TA贡献1818条经验 获得超11个赞
好坏?主观的-因此对SO来说是题外话。假设问题是如何使连续部署可靠:)
好吧,问题在于您正在使用应用程序版本作为CI环境,这意味着您无法避免由于特定版本不良而造成的损坏。您只能希望通过重新部署版本(中断结束时)来尽快恢复-这可以自动进行。
您不应让生产站点直接在CI production管道覆盖的版本上运行,否则会因部署不当而冒着站点中断的风险。相反,你可以使用一个新的/唯一版本的CI的每个执行production管线并且只有完成之后成功你最终使用流量如下所述切换网站流量到它的版本(也可以在CI管线内使用,如果使用不同的应用程序,而不是CI 版本的应用程序版本)
从部署程序开始:
默认情况下,deploy命令每次使用时都会自动生成一个新的版本ID,并将所有流量路由到该新版本。
要覆盖此行为,可以使用version标志指定版本ID:
gcloud app deploy --version myID
您也可以使用--no-promote标志指定不立即将所有流量发送到新版本:
gcloud app deploy --no-promote
因此,请确保不要部署一个版本,并且不要在同一步骤中将该版本设置为默认的流量目标(如果从客户端驱动,则可能不是原子的)。特别是对于生产应用程序。代替:
部署新版本(gcloud app deploy --no-promote --version ...)
启动新版本(gcloud app versions ...)并检查其是否有效
如果工作正常,则将实际流量切换到(gcloud app services set-traffic ...)
这样,唯一关键的操作是流量切换,(有希望)这是成功的原子操作,或者它已完全退回到GAE端(如果不是,则是GAE错误)。如果此步骤失败,则该应用仍应继续使用旧版本。
当然,这假设网络问题仅在您和GAE之间,如果它们也影响GAE的内部运营,那么所有的赌注都没有了(但是我相信应该及时解决)。
- 1 回答
- 0 关注
- 711 浏览
添加回答
举报