3

我正在尝试根据CircleCI 网站上的教程设置从 CircleCI 到我的 Google Container Engine 实例的持续部署。

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

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

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

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

4

1 回答 1

4

在您的 Container Engine 集群中运行的 apiserver 不使用 Google 的 OAuth;它改为使用集群身份验证。如果你跑

$ gcloud alpha container clusters describe <cluster-name>

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

要测试,运行

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

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

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

$ gcloud alpha container get-credentials --cluster=<cluster-name>

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

于 2015-06-17T21:43:28.363 回答