如何使用REST API对在Google容器引擎上运行的Kubernetes集群进行身份验证?

时间:2016-09-28 23:40:28

标签: rest google-oauth kubernetes google-kubernetes-engine bearer-token

我正在编写一个应用程序来监控在Google容器引擎上运行的kubernetes集群。在我的应用程序部署的主机上,没有kubectlgcloud CLI,也不允许安装它们。所以我试图通过REST API做一切。

要通过REST创建群集,我可以将GCE Rest API与从Google OAuth Playground检索到的承载令牌一起使用。类似的东西:

curl -i -X GET -H "Accept: application/json" -H "Content-Type: application/json" -H "Content-Length: 0" -H "Authorization: Bearer $MyBearerToken  https://container.googleapis.com/v1/projects/$PROJECT_ID/zones/$ZONE/serverconfig

我也可以找到Kubernetes REST API reference here。所以我的问题是:如何使用REST api和REST api从我的GCE Kubernetes集群中检索pod信息呢?

我尝试使用kubectl get pods --v=8,并使用GET https://${Kubenetes_IP}/api/v1/namespaces/default/pods。但是当我使用相同的api端点来卷曲我的GCE持有者时。它给了我Unzuthorized错误消息。

# curl --insecure -H "Authorization: Bearer $MyBearerToken" https://${Kubenetes_IP}/api/v1/namespaces/default/pods
Unauthorized

我猜是因为我需要使用不同的承载令牌或其他一些身份验证方法。我想知道是否有人有快速的程序化单行程? (不依靠kubectlgcloud

参考

This answer确认使用持票人令牌的方式,但没有给出指针或示例

This answer似乎也很有希望,但所提供的所有链接都被破坏了(并且api也被弃用)

This answer假定安装了kubectlgcloud,这在我当前的用例中是不允许的。

2 个答案:

答案 0 :(得分:1)

可以从Google OAuth Playground

中检索令牌

可以通过以下Message命令通过REST API

访问Kubernetes
curl

可以使用# curl --insecure -H "Authorization: Bearer $MyBearerToken" https://${Kubenetes_IP}/api/v1/namespaces/default/pods 检索Kubernetes主IP,也可以从GCE Web GUI中检索它。

可以找到完整的Kubernetes REST API here

确保令牌尚未过期,我认为现在默认的TTL是1小时。

答案 1 :(得分:0)

当您授权OAuth2游乐场为您提供令牌时,它会为Authorization CodeRefresh Token交换Access Token

访问令牌(来自OAuth2游乐场)有效期为1小时。

刷新令牌是一种长期存在的凭据,用于从授权服务器获取新的访问令牌。

如果您尝试使用过期访问令牌对“资源所有者”(在本例中为Kubernetes)进行身份验证,则会响应HTTP 401错误。