使用emissary-apiext服务账户创建KubernetesEndpointResolver遇权限错误
解决KubernetesEndpointResolver权限禁止问题
错误原因
system:serviceaccount:newcluster:emissary-apiext 服务账号在 newcluster 命名空间下,缺少对 getambassador.io/v3alpha1 API组中 kubernetesendpointresolvers 资源的读取、创建、更新权限,导致kubectl apply操作失败。
解决方案
通过创建Role和RoleBinding,为emissary-apiext服务账号授予必要的资源操作权限:
1. 创建Role定义权限
创建一个Role,允许对kubernetesendpointresolvers资源执行完整的生命周期操作:
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: emissary-kubernetesendpointresolver-manager namespace: newcluster rules: - apiGroups: ["getambassador.io"] resources: ["kubernetesendpointresolvers"] verbs: ["get", "list", "create", "update", "patch", "delete"]
2. 创建RoleBinding绑定权限
将上述Role绑定到emissary-apiext服务账号:
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: emissary-kubernetesendpointresolver-binding namespace: newcluster subjects: - kind: ServiceAccount name: emissary-apiext namespace: newcluster roleRef: kind: Role name: emissary-kubernetesendpointresolver-manager apiGroup: rbac.authorization.k8s.io
3. 应用配置
将上述两个YAML文件保存后,执行命令应用到集群:
kubectl apply -f role.yaml -f rolebinding.yaml
应用完成后,重新触发Job执行即可完成KubernetesEndpointResolver资源的创建。
内容的提问来源于stack exchange,提问作者utkarsh saraf
相关产品推荐
相关产品推荐

