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

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

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

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

谢谢。


大话西游666
浏览 220回答 1
1回答

隔江千里

如果您的应用程序在集群内运行,您可以使用Kubernetes 服务帐户向 API 服务器进行身份验证。如果这是在集群之外,事情就没有那么容易了,我想你的担忧是有道理的。目前,除了为您的个人 kubeconfig 文件生成的身份之外,GKE 不允许使用其他自定义身份。您可以不使用您的凭据,而是获取服务帐户的令牌(在 pod 内,从 读取/var/run/secrets/kubernetes.io/serviceaccount/token),然后使用它。这是一个粗暴的黑客,而不是一个很好的通用解决方案,但它可能比使用您自己的个人凭据稍微好一点。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go