"permanent" GKE kubectl 服务帐户身份验证



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

CI有单独的谷歌云服务帐户,我通过以下方式生成kubectl配置

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

gcloud container clusters get-credentials <cluster-name>

这将设置kubectl配置,但令牌将在几个小时后过期。

除了在构建和运行gcloud container clusters get-credentials期间为 CI 提供密钥文件之外,我有什么选择可以拥有"永久">kubectl配置?

您应该研究 RBAC(基于角色的访问控制(,与当前过期的证书相比,RBAC(基于角色的访问控制(将对角色进行身份验证,避免过期。

对于那些提出相同问题并投票的人。

这是我目前的解决方案:

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

这工作正常,但在 CI 中使用kubectl是一种反模式。我切换到基于容器注册表推送事件进行部署。这在具有龙骨通量等的 k8s 中相对容易做到。因此,CI 只需将 Docker 镜像推送到 repo,其工作就到此结束。其余的在 k8s 本身中处理,因此不需要kubectl,并且在 CI 作业中进行配置。

相关内容

最新更新