是否可以通过Kubernetes API服务器代理转发授权标头?

问题描述

我的Kubernetes集群内部的某个Pod上运行了一些端点,该端点受基本身份验证保护。通过API服务器访问此pod的正常方法是:

https://{{ apiServer }}:{{ apiServerPort }}/api/v1/namespaces/{{ namespaceName }}/pods/{{ podName }}:{{ podPort }}/proxy/somepath

这对于未使用Basic Auth进行安全保护的端点正常工作,但是当尝试访问安全端点时,每次都会收到403 Forbidden,因为我无法指定两个身份验证标头,并且已经需要向API进行身份验证服务器本身。 是否可以使用API​​服务器代理将那些基本身份验证凭据转发到Pod,或者我不走运?

解决方法

我能想到的可行解决方案是使用kubectl port-forward。因此,Kubernetes API服务器将在您的本地主机和群集上运行的资源之间建立单个http连接。这将保留您所有的客户请求。

kubectl port-forward TYPE/NAME [options] LOCAL_PORT:REMOTE_PORT

您可以将流量发送到特定的pod,使用随机的本地端口,甚至指定用于转发的本地IP地址。

您可以阅读有关端口转发here的更多信息,并在kuberentes官方文档中查看this的示例。

如果您需要其他选择,请检查telepresence

PS。我试图将附带的容器与kubectl代理一起使用,但不幸的是,该方法无法正常工作。