我将应用程序从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 配置的其他选项是什么?
答案 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作业中是可配置的。