我想启用kubernetes webhook令牌身份验证 我希望它能够像官方文档中描述的那样完全正常工作 webhook-token-authentication
然而,因为我是kubernetes的新手,所以我很难理解我应该采取什么步骤来实现我的目标。
前提条件:我正在使用minikube在本地测试它。
文档说我必须使用--authentication-token-webhook-config-file
,但我不理解基本的东西,例如:
minikube start --help
,它似乎不支持此标志。)authentication.k8s.io/v1beta1
(必需步骤)答案 0 :(得分:0)
我采取了一些措施来解决这个问题
<强> 1。创建指向您的auth / authz服务的有效yaml或json配置文件。
<强> 2。确保您的服务通过https
协议运行
(minikube和kubernetes都无法通过http
)
虚拟但简单的方法是使用Ngrok,它为您提供
https
uri在您的计算机上运行的服务路径。该命令看起来像
ngrok protocol port
- &gt;ngrok http 4567
第3。最后使用命令
启动minikubeminikube开始 --extra-config apiserver.Authentication.WebHook.ConfigFile = / Users / username / auth.yml --extra-config apiserver.Authorization.Mode = Webhook --extra-config apiserver.Authorization.WebhookConfigFile = / Users / username / authz.yml
注意:默认情况下,minikube会挂载您的Users
目录,因此您可以通过/Users/username/path-to-file.yml
<强> 4。最后将测试用户添加到没有证书的kube配置文件中并试用。
运行kubectl --context minikube-auth-test get pods
如果一切设置正确,您将获得对auth / authz服务的发布请求
答案 1 :(得分:0)
请注意,身份验证(“authN”)是与授权(“authZ”)不同的步骤。您在这里将两者混为一谈,但您不一定必须这样做 - 即您可以使用 webhook 身份验证服务器,然后通过将策略附加到由您的身份验证步骤标识的用户进行通常的 RBAC 授权。
<块引用>这是一个有点棘手的步骤,我认为 minikube 文档中没有详细记录。您需要记住,minikube 为您启动的 kube-apiserver
pod 在其自己的容器中运行,因此无法访问您在执行时看到的相同文件系统,例如minikube ssh
。您需要将 authn.yaml
配置文件安装为一个卷 - 有关更多信息,请参阅 https://github.com/kubernetes/minikube/issues/2767#issuecomment-437299401。
minikube start \
--extra-config=apiserver.authentication-token-webhook-config-file=/path/on/host/to/authn.yaml
请记住,正如我上面提到的,/path/on/host
不是指的是您的主机(您的笔记本电脑、台式机、工作站),而是指 minikube 主机 VM。
authentication.k8s.io/v1beta1
minikube start \
--extra-config=apiserver.authentication-token-webhook-version=authentication.k8s.io/v1beta1