0

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

[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

试图访问 UI 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 相关的东西,任何帮助都非常感谢

4

1 回答 1

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 时使用 ServiceAccount 的令牌https://12.197.35.74/

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

看一下:kube-apiserver-errorkubernetes-api-serverkube-apiserver-forbidden-messages, systemanonymous -cannot-get-path

于 2020-09-14T10:59:34.767 回答