“永久” GKE kubectl服务帐户身份验证

时间:2018-07-03 17:43:39

标签: kubernetes google-cloud-platform continuous-integration google-kubernetes-engine

我将应用程序从CI部署到在 Google云上运行的 Kubernetes 。 CI使用 kubectl 配置,该配置包含身份验证信息(直接在CVS中或在构建过程中从env vars模板化)

CI有单独的 Google Cloud 服务帐户,我通过

生成 kubectl 配置

L

gcloud auth activate-service-account --key-file=key-file.json

这会设置 kubectl 配置,但令牌会在几个小时后失效。

除了在构建和运行gcloud container clusters get-credentials <cluster-name>期间为CI提供密钥文件以外,具有“永久” kubectl 配置的其他选项是什么?

2 个答案:

答案 0 :(得分:0)

您应该查看RBAC(基于角色的访问控制),该证书将对角色进行身份验证,从而避免过期(与提到的当前过期的证书相反)。

答案 1 :(得分:0)

对于那些问同样的问题并赞成的人。

这是我目前的解决方案:

一段时间以来,我将key-file.json作为身份令牌,将其放入CI配置中,并在安装了gcloud CLI的容器中使用它。我使用密钥文件/令牌登录到GCP,并进行gcloud generate kubectl的配置-与GCP容器注册表登录相同的方法。

这很好用,但是在CI中使用kubectl是一种反模式。我切换到根据容器注册表推送事件进行部署。使用keel flux等在k8s中相对容易做到这一点。因此CI只需将Docker映像推送到存储库中,其工作就此结束。其余的工作在k8s内完成,因此不需要kubectl,它在CI作业中是可配置的。