设置持续部署到 Google Compute Engine 运行 Kubernetes

Setting up continuous deployment to Google Compute Engine running Kubernetes

我正在尝试根据 CircleCI 网站上的 tutorial 设置从 CircleCI 到我的 Google 容器引擎实例的持续部署。

但是,我目前正在摸索如何设置身份验证以便执行滚动更新:

KUBE_CMD=${KUBERNETES_ROOT:-~/kubernetes}/cluster/kubectl.sh
$KUBE_CMD rolling-update my-controller \
   -f my-controller.yml --server="https://xxx.xxx.xxx.xxx"

Google 似乎只支持 OAuth,我找不到任何关于设置非交互式身份验证的文档。将基本身份验证参数传递给 kubectl 似乎不起作用。

关于这方面的任何建议或我可以在哪里查看?

您容器引擎集群中的 apiserver 运行ning 不使用 Google 的 OAuth;它改为使用集群身份验证。如果你运行

$ gcloud alpha container clusters describe <cluster-name>

然后您将获得一个用户名和密码,可用作访问集群的 apiserver 的 http 基本身份验证凭据(您也可以使用不记名令牌或 TLS 客户端证书访问服务器,但基本身份验证最容易开始)。

要测试,运行

$ curl --insecure --user <username>:<password> https://<endpoint>

您应该会看到一个成功的响应。

既然您了解了集群的 apiserver 如何对客户端进行身份验证,您需要在 CircleCI 机器上配置 kubectl 以提供正确的身份验证。最简单的方法是使用 gcloud 通过 运行ning

生成一个 "kubeconfig" 文件
$ gcloud alpha container get-credentials --cluster=<cluster-name>

这将在本地生成文件。然后您可以将文件复制到 CircleCI 框中。 kubectl 默认在 ~/.kube/config 查找文件(您可以使用环境变量或使用命令行标志 --kubeconfig 指定不同的位置)。