在K8 RBAC环境中无法访问大使

时间:2020-09-12 18:07:12

标签: kubernetes kubernetes-ingress ambassador

在RBAC环境中部署了大使,并使用节点端口创建了服务

[root@-1 xxxxx]# kb get svc -n ambassador
NAME               TYPE        CLUSTER-IP     EXTERNAL-IP     PORT(S)                      AGE
ambassador         NodePort    172.18.0.216   12.197.35.74   80:31270/TCP,443:31729/TCP   17h

试图访问用户界面https://12.197.35.74/,但出现错误

{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {  },
  "status": "Failure",
  "message": "forbidden: User \"system:anonymous\" cannot get path \"/\"",
  "reason": "Forbidden",
  "details": {  },
  "code": 403
}

好像我缺少与RBAC有关的东西,任何帮助都值得赞赏

1 个答案:

答案 0 :(得分:0)

此错误表示您无权访问API服务器,因为它不知道您是谁。这样很好,否则任何人都可以操纵您的集群。

最新的kubernetes部署工具可在集群上启用RBAC。大使在访问system:anonymous时被降级为所有用户https://12.197.35.74/。该用户在kube-apiserver上几乎没有特权。

最重要的是,大使需要通过kube-apiserver进行身份验证-使用承载令牌或由k8s集群的CA密钥签名的客户端证书。

  1. 在k8s中为插件创建一个ServiceAccount
  2. 创建与ServiceAccount绑定的RBAC配置文件(即Role / RoleBinding或ClusterRole / ClusterRoleBinding)
  3. 将插件配置为在访问URL https://12.197.35.74/时使用ServiceAccount的令牌

Kubernetes API服务器是您的Kubernetes集群的大脑。您应该将访问权限限制为绝对最小,使用标准的网络和防火墙机制限制从群集外部到API服务器的访问,并使用Kubernetes网络策略限制从群集内部的访问。

看看:kube-apiserver-errorkubernetes-api-serverkube-apiserver-forbidden-messagessystemanonymous-cannot-get-path