来自Google Cloud的Kubernetes客户端API函数(Firebase)令牌刷新

btxsgosb  于 2022-11-02  发布在  Kubernetes
关注(0)|答案(1)|浏览(135)

我想从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二进制文件?

m0rkklqb

m0rkklqb1#

我有一个类似的机制(使用云函数来验证Kubernetes引擎),尽管是用Go语言编写的。
这种方法使用Google的Kubernetes Engine API来获取集群的证书,并使用返回的值构造KUBECONFIG

gcloud container clusters get-credentials ...

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可以使用该对象在集群中对您进行身份验证。

相关问题