如何使用 rest api 访问 kubernetes 中的命名空间?
how to access namespaces in kubernetes using rest api?
我无法使用 rest api 获取命名空间列表,rest 端点是 https://<localhost>:8001/api/v1/namespaces
我正在使用邮递员。我将重复这些步骤:
- 创建了一个用户并赋予了集群管理员权限:
kubectl create serviceaccount exampleuser
- 为具有集群角色 cluster-admin 的用户创建角色绑定:
kubectl create rolebinding <nameofrolebinding> --clusterrole cluster-admin
--serviceaccount default:exampleuser
- 检查角色绑定使用:
kubectl describe rolebinding <nameofrolebinding>
- 现在使用:
kubectl describe serviceaccount exampleuser
kubectl describe secret exampleuser-xxxx-xxxx
我将使用我在此处获得的令牌对邮递员进行身份验证。
GET https://<ipofserver>:port/api/v1/namespace
AUTH 使用不记名令牌。
列出集群中所有命名空间的预期结果。像
kubectl get namespaces
。但是得到如下警告。
{
"kind": "Status",
"apiVersion": "v1",
"metadata": {},
"status": "Failure",
"message": "namespaces is forbidden: User \"system:serviceaccount:default:exampleuser\" cannot list resource \"namespaces\" in API group \"\" at the cluster scope",
"reason": "Forbidden",
"details": {
"kind": "namespaces"
},
"code": 403
}
我已经为用户使用了 "cluster-admin" clusterrole,仍然出现与身份验证相关的错误。
请帮忙
您应该使用 clusterrolebinding
而不是 rolebinding
:
kubectl create clusterrolebinding <nameofrolebinding> --clusterrole cluster-admin --serviceaccount default:exampleuser
RoleBinding
表示对命名空间资源的权限,但namespace
不是namespaced
资源,您可以通过kubectl api-resouces
检查。
更多详情请见 rolebinding-and-clusterrolebinding:
Permissions can be granted within a namespace with a RoleBinding, or cluster-wide with a ClusterRoleBinding
所以问题不是使用 rolebinding ,我需要使用 clusterrolebinding 检查下面
kubectl create rolebinding nameofrolebinding --clusterrole cluster-admin --serviceaccount default:exampleuser
kubectl create clusterrolebinding nameofrolebinding --clusterrole cluster-admin --serviceaccount default:exampleuser
rolebinding 作用域最大为 namespace 并且
clusterrolebinding 范围是整个 cluster.
要使用 api/v1/namespaces,我们需要使用 clusterrolebinding
我无法使用 rest api 获取命名空间列表,rest 端点是 https://<localhost>:8001/api/v1/namespaces
我正在使用邮递员。我将重复这些步骤:
- 创建了一个用户并赋予了集群管理员权限:
kubectl create serviceaccount exampleuser
- 为具有集群角色 cluster-admin 的用户创建角色绑定:
kubectl create rolebinding <nameofrolebinding> --clusterrole cluster-admin
--serviceaccount default:exampleuser
- 检查角色绑定使用:
kubectl describe rolebinding <nameofrolebinding>
- 现在使用:
kubectl describe serviceaccount exampleuser
kubectl describe secret exampleuser-xxxx-xxxx
我将使用我在此处获得的令牌对邮递员进行身份验证。
GET https://<ipofserver>:port/api/v1/namespace
AUTH 使用不记名令牌。
列出集群中所有命名空间的预期结果。像
kubectl get namespaces
。但是得到如下警告。
{
"kind": "Status",
"apiVersion": "v1",
"metadata": {},
"status": "Failure",
"message": "namespaces is forbidden: User \"system:serviceaccount:default:exampleuser\" cannot list resource \"namespaces\" in API group \"\" at the cluster scope",
"reason": "Forbidden",
"details": {
"kind": "namespaces"
},
"code": 403
}
我已经为用户使用了 "cluster-admin" clusterrole,仍然出现与身份验证相关的错误。 请帮忙
您应该使用 clusterrolebinding
而不是 rolebinding
:
kubectl create clusterrolebinding <nameofrolebinding> --clusterrole cluster-admin --serviceaccount default:exampleuser
RoleBinding
表示对命名空间资源的权限,但namespace
不是namespaced
资源,您可以通过kubectl api-resouces
检查。
更多详情请见 rolebinding-and-clusterrolebinding:
Permissions can be granted within a namespace with a RoleBinding, or cluster-wide with a ClusterRoleBinding
所以问题不是使用 rolebinding ,我需要使用 clusterrolebinding 检查下面
kubectl create rolebinding nameofrolebinding --clusterrole cluster-admin --serviceaccount default:exampleuser
kubectl create clusterrolebinding nameofrolebinding --clusterrole cluster-admin --serviceaccount default:exampleuser
rolebinding 作用域最大为 namespace 并且 clusterrolebinding 范围是整个 cluster.
要使用 api/v1/namespaces,我们需要使用 clusterrolebinding