首页 文章

如何创建新的客户端证书/令牌,以便以编程方式访问GKE上托管的Kubernetes API?

提问于
浏览
2

我正在运行一个托管在GKE上的Kubernetes集群,并且想编写一个与Kubernetes API对话的应用程序(用Go编写) . 我的理解是,我可以提供客户端证书,不记名令牌或HTTP基本身份验证,以便与apiserver进行身份验证 . 我已经找到了将这些中的任何一个注入Golang client library的正确位置 .

不幸的是,我遇到的示例倾向于引用存储在我的个人kubeconfig文件中的现有凭据 . 从安全角度来看,这似乎是不可取的,并且让我相信我应该创建一个新的客户端证书/令牌/用户名 - 密码对,以便支持轻松撤销/删除受感染的帐户 . 但是,在GKE中运行托管Kubernetes时,我无法在文档中找到实际描述如何解决此问题的位置 . (有this guide on creating new certificates解释说apiserver最终需要重新启动更新的参数,这在我的理解中无法在GKE中完成 . )

我的安全问题是否在一个(或可能是多个)应用程序中重复使用我的个人Kubernetes凭据是不合理的?如果没有,那么生成一组新凭证的正确方法是什么?

谢谢 .

1 回答

  • 1

    如果您的应用程序在群集内运行,则可以使用Kubernetes Service Accounts对API服务器进行身份验证 .

    如果这不在集群之外,事情就不那么容易了,我想你的担忧是合理的 . 目前,GKE不允许超出为您的个人kubeconfig文件生成的自定义身份 .

    您可以获取服务帐户的令牌(在pod中,从 /var/run/secrets/kubernetes.io/serviceaccount/token 读取),而不是使用您的凭据,而是使用它 . 这是一个严重的黑客攻击,而不是一个很好的通用解决方案,但使用您自己的个人凭据可能略胜一筹 .

相关问题