我想从Google云功能(Firebase)启动GKE集群上的Kubernetes作业
我使用的是Kubernetes节点客户端https://github.com/kubernetes-client/javascript
我已经使用'kubectl config view --flatten -o json'创建了一个Kubernetes配置文件
然后装上了
const k8s = require('@kubernetes/client-node');
const kc = new k8s.KubeConfig();
kc.loadFromString(config)
这在本地工作得很好,但问题是当在云函数上运行时,令牌不能被刷新,所以调用会在一段时间后失败。
我的配置k8s配置文件包含
"user": {
"auth-provider": {
"name": "gcp",
"config": {
"access-token": "redacted-secret-token",
"cmd-args": "config config-helper --format=json",
"cmd-path": "/usr/lib/google-cloud-sdk/bin/gcloud",
"expiry": "2022-10-20T16:25:25Z",
"expiry-key": "{.credential.token_expiry}",
"token-key": "{.credential.access_token}"
}
}
我猜命令路径指向gcloud sdk,它用于在当前令牌过期时获取新令牌。
是否有更好的方法来进行身份验证或从云函数访问gcloud二进制文件?
1条答案
按热度按时间m0rkklqb1#
我有一个类似的机制(使用云函数来验证Kubernetes引擎),尽管是用Go语言编写的。
这种方法使用Google的Kubernetes Engine API来获取集群的证书,并使用返回的值构造
KUBECONFIG
。APIs Explorer有一个上面方法的Node.js示例。该示例使用Google's API Client Library for Node.JS for Kubernetes Engine,另请参见here。
还有一个Google Cloud Client Library for Node.js for Kubernetes Engine,其中包括
getCluster
(我假设),这是等价的。令人困惑的是,还有getServerConfig
,从阅读API文档中不清楚这些方法之间的区别。这里有一个指向gist的链接,其中包含我的Go代码。它构造了一个Kubernetes
Config
对象,然后Kubernetes API可以使用该对象在集群中对您进行身份验证。