首页 > 解决方案 > 尝试读取入口列表正文时,Kubernetes 客户端给出了 Forebidden 错误

问题描述

我正在尝试使用 Kubernetes 客户端动态更新/删除 K8S 入口规则。下面的代码有助于根据名称获取入口对象,然后使用 Ingress Spec 更新入口规则。

var listIngress = client.ListNamespacedIngressWithHttpMessagesAsync("MyIngress");
var objIngress = listIngress.Result.Body.Items.FirstOrDefault(x => x.Metadata.Name == "MyIngress");
var patchSpec = objIngress.Spec;

一个集群角色是用下面给出的资源动词定义的,并分配给所需的用户。

--verb create,update,patch,delete,get,list,watch,deletecollection --resource services,deployments,ingresses,ingressclasses,endpoints,pods

这适用于早期版本的 kubernetes,但对于最新版本 1.22.0,在尝试获取 listIngress.Result.Body.Items 时会出现以下错误。但是没有任何其他资源报告错误,但只有 Ingress。

 {
        "statusCode": 500,
        "error": "One or more errors occurred. (Operation returned an invalid status code 'Forbidden')"
} 

请帮助我理解和解决这个问题。

标签: kuberneteskubernetes-ingresspermission-denied

解决方案


推荐阅读