我有一个带有主节点和工作节点的Kubernetes Cluster设置。 Kubectl cluster-info显示kubernetes-master和kube-dns成功运行。
我正在尝试访问下面的URL,由于它是我组织的内部内容,因此下面的URL对外部世界不可见。
https://10.118.3.22:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
但是访问它时却出现错误-
{
"kind": "Status",
"apiVersion": "v1",
"metadata": {
},
"status": "Failure",
"message": "services \"kube-dns:dns\" is forbidden: User \"system:anonymous\" cannot get resource \"services/proxy\" in API group \"\" in the namespace \"kube-system\"",
"reason": "Forbidden",
"details": {
"name": "kube-dns:dns",
"kind": "services"
},
"code": 403
}
请让我知道如何向匿名用户授予完全访问权限。我读了https://kubernetes.io/docs/reference/access-authn-authz/rbac/中提到的RBAC 但是无法弄清楚我到底需要做什么。谢谢
答案 0 :(得分:1)
您可以向匿名用户授予admin特权,但我强烈建议不要这样做。这样,群集外的任何人都可以使用url访问服务。
即使在您决定将所有访问权限授予匿名用户之后,您也可以按照以下方式进行操作:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: anonymous-role
rules:
- apiGroups: [""]
resources: ["services/proxy"]
verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: anonymous-binding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: anonymous-role
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: system:anonymous
这将为匿名用户提供代理服务,而不是所有资源。如果您需要所有资源,则需要以匿名角色提供resources: ["*"]
。
希望这会有所帮助