在Kubectl中使用GKE服务帐户凭据

时间:2018-11-06 21:16:32

标签: kubernetes kubectl google-kubernetes-engine

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

但是,我的CI系统没有安装gcloud,我也不想安装它。它仅包含kubectl。是否可以通过kubectl直接使用包含gcloud服务帐户(而非kubernetes服务帐户)的certificate.json文件?

1 个答案:

答案 0 :(得分:4)

跳过gcloud CLI的最简单方法是使用--token选项。通过创建服务帐户并将其与ClusterRole or Role绑定到ClusterRoleBinding or RoleBinding,可以使用RBAC获得令牌。

然后从命令行:

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

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

- 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

此外,请注意,这不会阻止您在ps -Af进程的生命周期内在盒子上运行kubectl并从那里抓取令牌(这是一个好主意,令牌)

编辑:

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