我想启用 kubernetes webhook 令牌身份验证。
我希望它完全按照官方文档中描述的方式工作 Webhook-token-authentication
但是,由于我是 Kubernetes 的新手,我正在努力了解我应该采取哪些步骤来实现我的目标。
前提条件:我正在使用 minikube 在本地测试它。
文档说我必须使用--authentication-token-webhook-config-file
但我不明白基本的东西,例如:
- 我在哪里放置带有授权配置的文件?
- 如何将上述参数提供给迷你库贝? (如果我运行
minikube start --help
它似乎不支持此标志。 - 如何为Minikube API服务器启用
authentication.k8s.io/v1beta1
(必填步骤)
我采取了几个步骤来解决这个问题
1. 创建指向您的身份验证/身份验证服务的有效 yaml 或 json 配置文件。
2. 确保您的服务通过https
协议运行
(minikube 和 kubernetes 都无法通过http
工作)
虚拟但简单的方法是使用 Ngrok,它为您提供
https
uri 到在您的机器上运行的服务路由。该命令将看起来像
ngrok protocol port
->ngrok http 4567
3.最后使用命令启动迷你库贝
迷你库贝开始 --额外配置的 API 服务器。Authentication.WebHook.ConfigFile=/Users/username/auth.yml --额外配置的 API 服务器。Authorization.Mode=Webhook --额外配置的 API 服务器。Authorization.WebhookConfigFile=/Users/username/authz.yml
注意:默认情况下,minikube 挂载您的Users
目录,因此您可以通过/Users/username/path-to-file.yml 访问配置文件
4.最后将测试用户添加到没有证书的kube配置文件中并尝试一下。
运行kubectl --context minikube-auth-test get pods
如果一切设置正确,您将收到对身份验证/身份验证服务的发布请求
请注意,身份验证("authN")是与授权("authZ")分开的步骤。您在此处将两者混为一谈,但您不一定必须这样做 - 即您可以使用 Webhook 身份验证服务器,然后通过将策略附加到身份验证步骤标识的用户来获得通常的 RBAC 授权。
- 我在哪里放置带有授权配置的文件?
这是一个有点棘手的步骤,我认为在minikube文档中没有很好的记录。您需要记住,minikube 为您启动的kube-apiserver
pod 在它自己的容器中运行,因此无法访问您在执行时看到的相同文件系统,例如minikube ssh
.您需要将authn.yaml
配置文件作为卷挂载 - 有关详细信息,请参阅 https://github.com/kubernetes/minikube/issues/2767#issuecomment-437299401。
- 如何将上述参数提供给 minikube?(如果我运行minikube start --help,它似乎不支持这个标志。
minikube start
--extra-config=apiserver.authentication-token-webhook-config-file=/path/on/host/to/authn.yaml
请记住,正如我上面提到的,/path/on/host
不是指您的主机(您的笔记本电脑、台式机、工作站),而是指 minikube 主机虚拟机。
- 如何启用
authentication.k8s.io/v1beta1
minikube start
--extra-config=apiserver.authentication-token-webhook-version=authentication.k8s.io/v1beta1
请参阅示例身份验证 webhook 存储库以获取步骤。 https://github.com/dinumathai/auth-webhook-sample#deploy-in-minikube
如果您在启动迷你库贝时遇到任何问题。对 api 服务器容器执行"minikube ssh"和"docker log"。