灰度发布(又名金丝雀发布)是一种降低新版本发布风险的技术。通过将一小部分用户流量导向新版本,您可以监控其性能和稳定性,并在影响所有用户之前发现并解决潜在问题。App Engine 提供了强大的流量切分功能,让灰度发布变得简单易行。
首先,您需要将新版本的应用程序部署到 App Engine。使用 gcloud app deploy 命令:
gcloud app deploy app.yaml --version v2
将 app.yaml 替换为您的应用配置文件路径,将 v2 替换为新版本的名称。 确保新版本已成功部署!✅
接下来,使用 gcloud app services update 命令来配置流量切分。 您可以使用百分比来指定分配给新版本的流量比例。
gcloud app services update default --split-by random --traffic-split 0.1=v2
这个命令将把 10% 的流量导向版本 v2,其余 90% 的流量保持导向默认版本。
default: 指定要更新的服务名称。通常是 default。--split-by random: 使用随机分配策略。 另一种选择是 --split-by cookie 或 --split-by ip,但随机分配最常用于灰度发布。--traffic-split 0.1=v2: 指定将 10% 的流量路由到版本 v2。
您可以使用 --traffic-split 参数多次指定流量分配,以便将流量分配给多个版本。例如:
gcloud app services update default --split-by random --traffic-split 0.05=v2 --traffic-split 0.95=v1
这个命令会将5%的流量导向v2,95%的流量导向v1
在流量切分生效后,密切监控新版本的性能和错误率。使用 Google Cloud Monitoring 或 App Engine 的内置日志和指标工具来跟踪关键指标。 确保一切正常!👀
如果新版本运行稳定,您可以逐步增加分配给它的流量。 每次增加流量后,都要持续监控一段时间,以确保没有出现问题。
gcloud app services update default --split-by random --traffic-split 0.2=v2
这个命令将把 20% 的流量导向版本 v2。 一步一步来,不要操之过急!🐌
当您确信新版本已经足够稳定时,您可以将其设置为接收 100% 的流量。
gcloud app services update default --split-by random --traffic-split 1=v2
或者,您可以直接将新版本设置为默认版本:
gcloud app services update default --traffic-split 1=v2 --version v2
现在,所有用户都将访问新版本!🥳
一旦新版本完全上线,您可以删除旧版本,以节省资源并简化管理。
gcloud app versions delete v1
确保您不再需要旧版本中的任何数据或配置。 删除之前请三思!🤔
希望这篇指南能帮助您在 Google Cloud App Engine 上成功进行灰度发布! Good luck! 👍