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



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

但是,由于我是 Kubernetes 的新手,我正在努力了解我应该采取哪些步骤来实现我的目标。

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

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

  1. 我在哪里放置带有授权配置的文件?
  2. 如何将上述参数提供给迷你库贝? (如果我运行minikube start --help它似乎不支持此标志。
  3. 如何为Minikube API服务器启用authentication.k8s.io/v1beta1(必填步骤)

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

1. 创建指向您的身份验证/身份验证服务的有效 yaml 或 json 配置文件。

2. 确保您的服务通过https协议运行 (minikube 和 kubernetes 都无法通过http工作)

虚拟但简单的方法是使用 Ngrok,它为您提供httpsuri 到在您的机器上运行的服务路由。

该命令将看起来像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 授权。

  1. 我在哪里放置带有授权配置的文件?

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

  1. 如何将上述参数提供给 minikube?(如果我运行minikube start --help,它似乎不支持这个标志。
minikube start 
--extra-config=apiserver.authentication-token-webhook-config-file=/path/on/host/to/authn.yaml

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

  1. 如何启用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"。

最新更新