在AKS中安装Azure私有市场应用时遇CRD权限错误
问题解决步骤
错误原因分析
错误信息明确指出:system:serviceaccount:kube-system:ext-installer-ssdeploy1 没有集群范围的 customresourcedefinitions 资源列表权限。你的现有配置存在三个核心问题:
- CRD是集群级资源,不能用仅作用于单个命名空间的
Role,必须用ClusterRole - 你绑定的是
default命名空间的default服务账号,但实际需要授权的是kube-system命名空间的ext-installer-ssdeploy1账号 - RoleBinding中引用的角色名称与你创建的Role名称不匹配
正确配置方案
1. 创建ClusterRole(集群级权限)
创建crd-access-clusterrole.yaml文件,内容如下:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: crd-full-access rules: - apiGroups: ["apiextensions.k8s.io"] resources: ["customresourcedefinitions"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
执行命令应用:
kubectl apply -f crd-access-clusterrole.yaml
2. 创建ClusterRoleBinding(绑定服务账号到ClusterRole)
创建crd-access-clusterrolebinding.yaml文件,内容如下:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: ext-installer-crd-access subjects: - kind: ServiceAccount name: ext-installer-ssdeploy1 namespace: kube-system roleRef: kind: ClusterRole name: crd-full-access apiGroup: rbac.authorization.k8s.io
执行命令应用:
kubectl apply -f crd-access-clusterrolebinding.yaml
验证权限
执行以下命令检查服务账号是否已获得权限:
kubectl auth can-i list customresourcedefinitions.apiextensions.k8s.io --as=system:serviceaccount:kube-system:ext-installer-ssdeploy1
如果输出yes,说明权限配置成功,重新尝试安装Azure私有市场应用即可。
内容的提问来源于stack exchange,提问作者Weston Goodwin
相关产品推荐
相关产品推荐

