Minikube:kubectl 不使用提供的令牌权限
Minikube: kubectl doesn't use provided token permissions
使用minikube,当运行以下命令时:
kubectl -v=11 --kubeconfig /dev/null --insecure-skip-tls-verify -s http://localhost:8001 --token "invalid" -n namespace get pods
不想的时候有答案。而且我不知道它是如何被授权的。此外,如果我使用具有特定权限的有效令牌,则不会使用这些令牌。
没有回答我的问题,因为我指定使用 /dev/null 作为配置文件。
有什么想法吗?
我会尽量总结我在评论中提供的答案。
问题是:为什么 运行ning kubectl -s http://localhost:8001 --kubeconfig /dev/null --token <invalid_token>
(其中 :8001 是 kubectl 代理打开的端口)在我不应该被授权的情况下回复是因为我将所有可能的授权选项设置为空值或不正确的值吗?
答案是 kubectl proxy
打开一个端口并为您处理所有授权,因此您不必这样做。现在要访问 Kubernetes 的 REST api,您需要做的就是使用 curl localhost:8001/...
。没有令牌和证书。
因为您已经获得 kubectl proxy
的授权,使用 kubectl 并将其指向 localhost:8001 导致它不需要授权,您不需要任何令牌来访问 k8s。
作为替代方案,您可以检查当您 运行 时会发生什么,但不是通过 kubectl proxy
连接,而是直接使用 kubernetes 端口。
你提到你正在使用 minikube,所以默认情况下是端口 8443
$ kubectl --kubeconfig /dev/null -s https://$(minikube ip):8443 --token "invalid" --insecure-skip-tls-verify get pods
error: You must be logged in to the server (Unauthorized)
如您所见,它按预期工作。
使用minikube,当运行以下命令时:
kubectl -v=11 --kubeconfig /dev/null --insecure-skip-tls-verify -s http://localhost:8001 --token "invalid" -n namespace get pods
不想的时候有答案。而且我不知道它是如何被授权的。此外,如果我使用具有特定权限的有效令牌,则不会使用这些令牌。
有什么想法吗?
我会尽量总结我在评论中提供的答案。
问题是:为什么 运行ning kubectl -s http://localhost:8001 --kubeconfig /dev/null --token <invalid_token>
(其中 :8001 是 kubectl 代理打开的端口)在我不应该被授权的情况下回复是因为我将所有可能的授权选项设置为空值或不正确的值吗?
答案是 kubectl proxy
打开一个端口并为您处理所有授权,因此您不必这样做。现在要访问 Kubernetes 的 REST api,您需要做的就是使用 curl localhost:8001/...
。没有令牌和证书。
因为您已经获得 kubectl proxy
的授权,使用 kubectl 并将其指向 localhost:8001 导致它不需要授权,您不需要任何令牌来访问 k8s。
作为替代方案,您可以检查当您 运行 时会发生什么,但不是通过 kubectl proxy
连接,而是直接使用 kubernetes 端口。
你提到你正在使用 minikube,所以默认情况下是端口 8443
$ kubectl --kubeconfig /dev/null -s https://$(minikube ip):8443 --token "invalid" --insecure-skip-tls-verify get pods
error: You must be logged in to the server (Unauthorized)
如您所见,它按预期工作。