使用kubectl的GKE服务帐户凭据



我正试图从CI系统中调用kubectl。我希望使用谷歌云服务帐户进行身份验证。我有一个秘密管理系统,它将秘密注入我的CI系统。

但是,我的CI系统没有安装gcloud,我不希望安装它。它只包含kubectl。有什么方法可以让我直接与kubectl一起使用包含gcloud服务帐户(而不是kubernetes服务帐户(的credentials.json文件吗?

跳过gcloud CLI的最简单方法可能是使用--token选项。您可以通过创建服务帐户并使用ClusterRoleBindingRoleBinding将其绑定到ClusterRoleRole来使用RBAC获取令牌。

然后从命令行:

$ kubectl --token <token-from-your-service-account> get pods

您的~/.kube/config:中仍然需要context

- context:
cluster: kubernetes
name: kubernetes-token

否则,您将不得不使用:

$ kubectl --insecure-skip-tls-verify --token <token-from-your-service-account> -s https://<address-of-your-kube-api-server>:6443 get pods

注意,如果你不想让令牌出现在日志上,你可以这样做:

$ kubectl --token $(cat /path/to/a/file/where/the/token/is/stored) get pods

此外,请注意,在kubectl进程的整个生命周期内,这并不能阻止有人在你的盒子上运行ps -Af并从那里获取令牌(轮换令牌是个好主意(

编辑:

您可以将--token-auth-file=/path/to/a/file/where/the/token/is/storedkubectl一起使用,以避免通过$(cat /path/to/a/file/where/the/token/is/stored)

相关内容

  • 没有找到相关文章

最新更新