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

时间:2017-09-10 16:32:41

标签: authentication kubernetes minikube

我想启用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(必需步骤)

2 个答案:

答案 0 :(得分:0)

我采取了一些措施来解决这个问题

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

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

  

虚拟但简单的方法是使用Ngrok,它为您提供https uri在您的计算机上运行的服务路径。

     

该命令看起来像ngrok protocol port - &gt; 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。最后将测试用户添加到没有证书的kube配置文件中并试用。
运行kubectl --context minikube-auth-test get pods
如果一切设置正确,您将获得对auth / authz服务的发布请求

答案 1 :(得分:0)

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

<块引用>
  1. 在哪里放置带有授权配置的文件?

这是一个有点棘手的步骤,我认为 minikube 文档中没有详细记录。您需要记住,minikube 为您启动的 kube-apiserver pod 在其自己的容器中运行,因此无法访问您在执行时看到的相同文件系统,例如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 主机 VM。

<块引用>
  1. 如何启用 authentication.k8s.io/v1beta1
minikube start \
  --extra-config=apiserver.authentication-token-webhook-version=authentication.k8s.io/v1beta1
相关问题