我一般用于从客户端使用kubernetes集群进行身份验证 - 我发现我有两个选择:
因此很容易从clusterA访问clusterA,但不能从clusterA访问clusterB。
我有什么选择?似乎我无法通过GOOGLE_APPLICATION_CREDENTIALS
并希望client-go能够自行处理。
所以我的想法:
gcloud container clusters get-credentials clusterA
和gcloud container clusters get-credentials clusterB
BuildConfigFromFlags
在客户端中使用该kube配置文件
这是正确的方法,还是有更简单的方法?我看到令牌有一个到期日期?
更新
似乎我也可以使用CLOUDSDK_CONTAINER_USE_CLIENT_CERTIFICATE=True gcloud beta container clusters get-credentials clusterB --zone
。哪个会为我可以使用的kube conf添加证书。但是AFAIK那些证书不能被撤销
答案 0 :(得分:6)
client-go需要了解:
(如果你正在使用GKE,你可以在$HOME/.kube/config
中看到这些信息,填充gcloud container clusters get-credentials
命令。
我建议您:
一旦你可以在client-go中创建一个*rest.Config
对象,client-go将使用在kubeconfig文件中指定的auth插件(或者你构造的内存中的等价物)。在gcp
auth插件中,它知道如何检索令牌。
然后,Create a Cloud IAM Service Account并赋予它“Container Developer”角色。下载密钥。
现在,您有两种选择:
gcloud auth activate-service-account --key-file=key.json
KUBECONFIG=a.yaml gcloud container clusters get-credentials clusterA
KUBECONFIG=b.yaml gcloud container clusters get-credentials clusterB
然后创建2个不同的*rest.Client
个对象,一个来自a.yaml
,另一个来自您程序中的b.yaml
。
现在,您的程序将依赖gcloud
二进制文件来在每次令牌到期时(每1小时)检索一次令牌。
*rest.Config
个对象。乙希望这有帮助。
P.S。不要忘记你的Go计划中的import _ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
。这会加载gcp auth插件!