配置 minikube / kubernetes webhook 身份验证/授权

configure minikube / kubernetes webhook authentication / authorization

我想启用 kubernetes webhook 令牌身份验证。
我希望它能完全按照官方文档中描述的方式工作 webhook-token-authentication

然而,由于我是 kubernetes 的新手,所以我很难理解我应该采取哪些步骤来实现我的目标。

前提条件:我正在使用minikube在本地进行测试。

文档说我必须使用 --authentication-token-webhook-config-file 但我不明白基本的东西,例如:

  1. 我在哪里放置带有授权配置的文件?
  2. 如何将以上参数提供给minikube? (如果我 运行 minikube start --help 它似乎不支持这个标志。)
  3. 如何为 minikube apiserver 启用 authentication.k8s.io/v1beta1(必需步骤)

我采取了几个步骤来解决这个问题

1.创建指向您的 auth/authz 服务的有效 yaml 或 json 配置文件。

2。确保您的服务 运行ning 通过 https 协议 (minikube 和 kubernetes 都无法通过 http

Dummy but simple way is to use Ngrok which gives you https uri which route to service running on your machine.

the command will look like ngrok protocol port -> ngrok http 4567

3。最后使用 command

启动 minikube

minikube start --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
如果一切设置正确,您将收到 post 对 auth/authz 服务的请求

请注意,身份验证(“authN”)是独立于授权(“authZ”)的步骤。您在这里将两者混为一谈,但您不一定必须这样做 - 即您可以使用 webhook 身份验证服务器,然后通过将策略附加到您的身份验证步骤标识的用户来进行通常的 RBAC 授权。

  1. where do i place file with authorization config ?

这是一个有点棘手的步骤,我认为 minikube 文档中没有详细记录。您需要记住,minikube 为您启动的 kube-apiserver pod 在其自己的容器中运行,因此无法访问您在执行操作时看到的相同文件系统。 minikube ssh。您需要将 authn.yaml 配置文件作为一个卷安装 - 有关更多信息,请参阅 https://github.com/kubernetes/minikube/issues/2767#issuecomment-437299401

  1. how to supply above parameter to minikube? (If i run minikube start --help it doesn't seem support this flag.)
minikube start \
  --extra-config=apiserver.authentication-token-webhook-config-file=/path/on/host/to/authn.yaml

请记住,正如我上面提到的,/path/on/host 不是 指的是您的主机(您的笔记本电脑、台式机、工作站),而是指 minikube 主机 VM。

  1. how do i enable authentication.k8s.io/v1beta1
minikube start \
  --extra-config=apiserver.authentication-token-webhook-version=authentication.k8s.io/v1beta1

请参考示例 auth webhook 存储库以获取步骤。 https://github.com/dinumathai/auth-webhook-sample#deploy-in-minikube

如果您在启动 minikube 时遇到任何问题。执行 api 服务器容器的“minikube ssh”和“docker 日志”。