如何使用 REST API 在 Google Container Engine 上针对 Kubernetes 集群 运行 进行身份验证?
How to authenticate against Kubernetes clusters running on Google Container Engine using REST API?
我正在编写一个应用程序来监控 Google 容器引擎上的 kubernetes 集群 运行。在部署我的应用程序的主机上,没有 kubectl
和 gcloud
CLI,也不允许安装它们。所以我试图通过 REST API.
来做所有事情
为了通过 REST 创建集群,我可以使用 GCE Rest API with bearer token retrieved from 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
)
参考
确认 是 一种使用不记名令牌的方式,但没有给出指示或示例
似乎也很有希望,但所有提供的 link 都已损坏(并且 api 也已弃用)
This answer 假定安装了 kubectl
和 gcloud
,这在我当前的用例中是不允许的。
中检索令牌
可以通过以下 curl
命令通过 REST API
访问 Kubernetes
# curl --insecure -H "Authorization: Bearer $MyBearerToken" https://${Kubenetes_IP}/api/v1/namespaces/default/pods
可以使用 kubectl get pods --v=8
检索 Kubernetes Master IP,也可以从 GCE Web GUI 的某个地方检索它。
可以找到完整的 Kubernetes REST API here
确保令牌尚未过期,我想现在默认的 TTL 是 1 小时。
当您授权 OAuth2 playground 给您一个令牌时,它会交换一个 Authorization Code for a Refresh Token and an Access Token。
访问令牌(来自 OAuth2 游乐场)的有效期为 1 小时。
刷新令牌是一个长期存在的凭据,用于从授权服务器获取新的访问令牌。
如果您尝试使用过期的访问令牌向“资源所有者”(在本例中为 Kubernetes)进行身份验证,它将以 HTTP 401 错误响应。
我正在编写一个应用程序来监控 Google 容器引擎上的 kubernetes 集群 运行。在部署我的应用程序的主机上,没有 kubectl
和 gcloud
CLI,也不允许安装它们。所以我试图通过 REST API.
为了通过 REST 创建集群,我可以使用 GCE Rest API with bearer token retrieved from 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 假定安装了 kubectl
和 gcloud
,这在我当前的用例中是不允许的。
可以通过以下 curl
命令通过 REST API
# curl --insecure -H "Authorization: Bearer $MyBearerToken" https://${Kubenetes_IP}/api/v1/namespaces/default/pods
可以使用 kubectl get pods --v=8
检索 Kubernetes Master IP,也可以从 GCE Web GUI 的某个地方检索它。
可以找到完整的 Kubernetes REST API here
确保令牌尚未过期,我想现在默认的 TTL 是 1 小时。
当您授权 OAuth2 playground 给您一个令牌时,它会交换一个 Authorization Code for a Refresh Token and an Access Token。
访问令牌(来自 OAuth2 游乐场)的有效期为 1 小时。
刷新令牌是一个长期存在的凭据,用于从授权服务器获取新的访问令牌。
如果您尝试使用过期的访问令牌向“资源所有者”(在本例中为 Kubernetes)进行身份验证,它将以 HTTP 401 错误响应。