如何用kubectl create role创建不含.apps后缀的deployments资源Role
解决kubectl create role创建不带.apps后缀的deployments资源权限问题
要通过kubectl create role命令创建资源为deployments(不带.apps后缀,对应apiGroups: "")的Role,你需要显式指定API组为空字符串,命令如下:
kubectl create role <你的角色名> -n test --verb=get,list --resource=deployments --api-group=""
为什么需要这样做?
Kubernetes中deployments默认属于apps API组,kubectl会自动为这类资源补全.apps后缀。如果要强制将资源关联到核心API组(即apiGroups: ""),必须通过--api-group=""参数明确指定,否则kubectl会自动将deployments解析为deployments.apps。
注意事项
真实Kubernetes集群的核心API组(apiGroups: "")并不包含deployments资源,这类资源实际归属apps API组。你在LocalStack中能正常工作是因为LocalStack的模拟环境做了兼容处理,但真实集群中,指定核心组的deployments权限并不会生效,这可能还是会导致你的应用调用api.listNamespacedDeployment失败。
如果你的应用SDK调用的是标准的apps组API,正确的Role创建命令应该是:
kubectl create role <你的角色名> -n test --verb=get,list --resource=deployments --api-group=apps # 或者等价的写法 kubectl create role <你的角色名> -n test --verb=get,list --resource=deployments.apps
内容的提问来源于stack exchange,提问作者skyleguy
相关产品推荐
相关产品推荐

