kubernetes - 无法在 K8 RBAC 环境中访问大使
问题描述
在 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 相关的东西,任何帮助都非常感谢
解决方案
此错误表示您无权访问 API 服务器,因为它不知道您是谁。这很好,否则任何人都可以操纵您的集群。
最新的 kubernetes 部署工具在集群上启用了 RBAC。当大使system:anonymous
访问https://12.197.35.74/
. 该用户对 kube-apiserver 几乎没有任何权限。
底线是,大使需要使用 kube-apiserver 进行身份验证——使用不记名令牌或由 k8s 集群的 CA 密钥签名的客户端证书。
- 在 k8s 中为插件创建一个 ServiceAccount
- 创建绑定到 ServiceAccount 的 RBAC 配置文件(即 Role/RoleBinding 或 ClusterRole/ClusterRoleBinding)
- 将插件配置为在访问 URL 时使用 ServiceAccount 的令牌
https://12.197.35.74/
Kubernetes API 服务器是 Kubernetes 集群的大脑。您应该将对其的访问限制在绝对最低限度,使用标准网络和防火墙机制从集群外部限制对 API 服务器的访问,并使用 Kubernetes 网络策略从集群内部限制访问。
看一下:kube-apiserver-error, kubernetes-api-server,kube-apiserver-forbidden-messages, systemanonymous -cannot-get-path。
推荐阅读
- adobe-xd - Adobe XD Error 3635(can not creat new document)
- python - Python Regex : Get data after second underscore?
- java - 面对“com.mysql.cj.exceptions.WrongArgumentException:数据库 URL 格式错误,无法解析主要 URL 部分”。插入时出现java错误”
- android - 约束布局设置运行时约束Start_toEndOf
- windows - 使用 Robot Framework 扫描本地主机上的开放端口
- python - PyInstaller 致命错误:找不到“zmq.h”文件
- r - 使用 vcd 包的卡方检验
- java - 在单独的线程中创建文件
- typescript - 如何在 TypeScript 中编辑全局类型?
- angular - TypeScript 要求将类型添加到键值