【问题标题】:configure minikube / kubernetes webhook authentication / authorization配置 minikube/kubernetes webhook 认证/授权
【发布时间】:2018-02-18 22:40:57
【问题描述】:
我想启用 kubernetes webhook 令牌身份验证。
我希望让它完全按照官方文档中描述的方式工作
webhook-token-authentication
但是,由于我是 Kubernetes 的新手,所以我很难理解我应该采取哪些步骤来实现我的目标。
前提条件:我在本地使用minikube进行测试。
文档说我必须使用--authentication-token-webhook-config-file,但我不懂基本的东西,例如:
- 我在哪里放置授权配置文件?
- 如何将上述参数提供给 minikube?
(如果我运行
minikube start --help,它似乎不支持这个标志。)
- 如何为 minikube apiserver 启用
authentication.k8s.io/v1beta1(必填步骤)
【问题讨论】:
标签:
authentication
kubernetes
minikube
【解决方案1】:
我采取了一些措施来解决这个问题
1.创建指向您的 auth/authz 服务的有效 yaml 或 json 配置文件。
2。确保您的服务通过https 协议运行
(minikube 和 kubernetes 都不能通过 http 工作)
虚拟但简单的方法是使用Ngrok,它为您提供https uri,哪个路由到您机器上运行的服务。
命令看起来像ngrok protocol port -> ngrok http 4567
3.最后使用命令启动 minikube
minikube 启动
--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.最后在没有证书的情况下将 test-user 添加到您的 kube 配置文件中并尝试一下。
运行kubectl --context minikube-auth-test get pods
如果一切设置正确,您将收到对您的 auth/authz 服务的发布请求
【解决方案2】:
请注意,身份验证(“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 主机 VM。
- 如何启用
authentication.k8s.io/v1beta1
minikube start \
--extra-config=apiserver.authentication-token-webhook-version=authentication.k8s.io/v1beta1