Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用RESTAPI对运行在Google容器引擎上的Kubernetes集群进行身份验证?_Rest_Google Oauth_Kubernetes_Google Kubernetes Engine_Bearer Token - Fatal编程技术网

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

如何使用RESTAPI对运行在Google容器引擎上的Kubernetes集群进行身份验证?,rest,google-oauth,kubernetes,google-kubernetes-engine,bearer-token,Rest,Google Oauth,Kubernetes,Google Kubernetes Engine,Bearer Token,我正在编写一个应用程序来监视运行在Google容器引擎上的kubernetes集群。在部署我的应用程序的主机上,没有kubectl和gcloudCLI,也不允许安装它们。所以我试图通过RESTAPI来完成所有的事情 为了通过REST创建集群,我可以使用从中检索的承载令牌。比如: curl -i -X GET -H "Accept: application/json" -H "Content-Type: application/json" -H "Content-Length: 0" -H "Au

我正在编写一个应用程序来监视运行在Google容器引擎上的kubernetes集群。在部署我的应用程序的主机上,没有
kubectl
gcloud
CLI,也不允许安装它们。所以我试图通过RESTAPI来完成所有的事情

为了通过REST创建集群,我可以使用从中检索的承载令牌。比如:

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
我也能找到。所以我的问题是:我如何从我的GCE Kubernetes集群中检索,比如pod信息,只使用REST api和REST api?

我尝试了
kubectl-get-pods--v=8
,它使用
get-https://${Kubenetes\u-IP}/api/v1/namespace/default/pods
。但是,当我使用相同的api端点与我的GCE承载器进行卷曲时。它给我
未授权的
错误消息

# curl --insecure -H "Authorization: Bearer $MyBearerToken" https://${Kubenetes_IP}/api/v1/namespaces/default/pods
Unauthorized
我猜是因为我需要使用不同的承载令牌,或者其他身份验证方法。我想知道是否有人有一个快速编程的一行?(无需求助于
kubectl
gcloud


参考

确认有一种使用承载令牌的方法,但没有给出指针或示例

看起来也很有希望,但提供的所有链接都已断开(api也已弃用)


假设安装了
kubectl
gcloud
,这在我当前的用例中是不允许的。

令牌可以从

可以通过RESTAPI通过以下
curl
命令访问Kubernetes

# curl --insecure -H "Authorization: Bearer $MyBearerToken" https://${Kubenetes_IP}/api/v1/namespaces/default/pods
Kubernetes主IP可以通过
kubectl get pods--v=8来检索,也可以从GCE Web GUI的某个地方检索

可以找到完整的Kubernetes REST API


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

当您授权OAuth2游乐场给您令牌时,它会将a与a交换

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

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


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

我完全尝试了您所做的操作(从OAuth游乐场获取一个令牌,并使用它来卷曲我的GKE主机),结果成功了。有可能令牌过期了吗?@CJCullen我也可以卷曲GKE master(检索集群信息等),但无法卷曲kubernetes本身(检索pod信息、启动容器等)。对不起,我指的是“GKE master”是为kubernetes API服务的东西。我就是这样做的:
curl--unsecure-H“Authorization:Bearer$MyBearerToken”https://${Kubenetes_IP}/api/v1/namespaces/default/pods
,使用我从谷歌OAuth游乐场获得的云平台令牌,它对我有效。“Unauthorized”错误是Kubernetes的401,表明它不喜欢您发送的令牌。@CJCullen您是对的!它一定是不知怎么过期了。我在某个地方读到它说令牌永远不会过期,但我可能弄错了,或者他们指的是不同类型的令牌。