已绑定cluster-admin角色仍无法创建Istio VirtualService权限问题求助
排查解决步骤
- 首先修正你提供的ClusterRole YAML的语法错误,原配置中
verbs字段的数组未闭合,会导致权限规则不生效,修正后的示例如下:
修正后执行--- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: istio-editor-role labels: rbac.authorization.k8s.io/aggregate-to-edit: "true" rules: - apiGroups: ["config.istio.io", "networking.istio.io", "rbac.istio.io", "authentication.istio.io", "security.istio.io"] resources: ["virtualservices"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]kubectl apply -f <你的ClusterRole yaml文件路径>重新加载规则,可先删除旧绑定再重新执行绑定命令:kubectl delete clusterrolebinding istio-editor-binding kubectl create clusterrolebinding istio-editor-binding --clusterrole=istio-editor-role --user=vaish@admin - 直接验证权限是否生效,执行如下命令测试对应用户的权限:
如果返回kubectl auth can-i get virtualservices.networking.istio.io --as vaish@admin -n onboardingno说明权限绑定未生效,继续往下排查 - 检查ClusterRoleBinding配置是否正确,执行命令查看绑定详情:
确认kubectl get clusterrolebinding istio-editor-binding -o yamlsubjects字段下的user值和报错中的用户vaish@admin完全一致,无大小写、拼写、后缀差异 - 检查cluster-admin角色的绑定范围,如果你之前绑定的是命名空间级别的RoleBinding而非ClusterRoleBinding,那么仅对应命名空间有权限,执行命令查看cluster-admin的绑定:
确认是否存在对kubectl get clusterrolebinding | grep cluster-adminvaish@admin用户的全局绑定 - 确认Istio相关CRD已正确部署,执行命令查看virtualservices的CRD是否存在:
若无返回结果说明Istio安装不完整,需要重新安装Istio的CRD组件kubectl get crd virtualservices.networking.istio.io - 确认当前操作使用的kubeconfig上下文用户和报错用户一致,执行命令查看当前上下文用户:
避免出现本地配置用户和实际操作用户不一致的情况kubectl config view --minify -o jsonpath='{.contexts[*].context.user}' - 排查集群准入控制器拦截可能,若集群部署了OPA Gatekeeper、Kyverno等策略引擎,检查是否存在限制
vaish@admin用户在onboarding命名空间操作virtualservices的策略规则
内容的提问来源于stack exchange,提问作者Vaishnav
相关产品推荐
相关产品推荐

