我正在编写一个应用程序来监控在Google容器引擎上运行的kubernetes集群。在我的应用程序部署的主机上,没有kubectl
和gcloud
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
我猜是因为我需要使用不同的承载令牌或其他一些身份验证方法。我想知道是否有人有快速的程序化单行程? (不依靠kubectl
或gcloud
)
参考
This answer确认是使用持票人令牌的方式,但没有给出指针或示例
This answer似乎也很有希望,但所提供的所有链接都被破坏了(并且api也被弃用)
This answer假定安装了kubectl
和gcloud
,这在我当前的用例中是不允许的。
答案 0 :(得分:1)
可以通过以下Message
命令通过REST API
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 Code和Refresh Token交换Access Token。
访问令牌(来自OAuth2游乐场)有效期为1小时。
刷新令牌是一种长期存在的凭据,用于从授权服务器获取新的访问令牌。
如果您尝试使用过期访问令牌对“资源所有者”(在本例中为Kubernetes)进行身份验证,则会响应HTTP 401错误。