【发布时间】:2016-02-29 18:57:04
【问题描述】:
背景
我们正在使用 Jenkins 将新版本的 Kubernetes (k8s) 复制控制器部署到我们的测试或生产集群。 test 和 prod (k8s) 集群位于不同的(谷歌云平台)项目下。我们在 Jenkins 上为我们的 gcloud SDK 配置了两个配置文件,一个用于测试(test-profile),一个用于生产(prod-profile)。我们在 Jenkins 中定义了一个托管脚本,为我们的复制控制器执行滚动更新。问题是我找不到控制kubectl rolling-update 命令定位到哪个项目的方法(您可以指定哪个集群,但不能指定哪个项目)。所以现在我们对测试服务器进行滚动更新的脚本看起来像这样:
gcloud config configurations activate test-profile && kubectl rolling-update ...
虽然这可行,但如果两个作业同时针对不同的环境运行,则可能会非常危险。假设工作 1 以测试环境为目标,而工作 2 以产品为目标。如果在作业 1 执行其rolling-update 命令之前作业 2 将活动配置文件切换到“prod-profile”,作业 1 将定位到错误的项目,在更糟糕的情况下更新错误的复制控制器(如果集群具有相同的名称)。
问题
有没有办法指定 kubectl 命令所针对的项目(例如在滚动更新期间)可以安全地并发运行?
【问题讨论】:
标签: google-cloud-platform kubernetes google-kubernetes-engine