找不到任何问题。
我必须添加几个自定义http头来访问我的专用api服务器代理,但目前还没有线索。我错过什么了吗?
这是一个肮脏的硬编码破解,旨在向您展示如何获得您想要的结果——它不是一个经过充分审查的解决方案。这个方法将编译一个新版本的kubectl,它将添加您需要的头。也许它至少会给你一个跑步的想法。
我之所以想这么做,是因为我把我的k8s api端点放在了互联网上,并用Cloudflare Access保护了它。为了允许Cloudflare访问,让我通过钢墙,我需要传入两个标头,一个用于我的客户端id,另一个用于客户端机密。这最终像一个魅力一样发挥作用,这是有人可能想添加自定义标题的一种情况。
步骤:
- 我假设你已经安装并设置了Go,如果没有,现在就去做
- git克隆https://github.com/kubernetes/kubernetes.git(可能需要一段时间,它相当大(
- cd kubernetes/stasting/src/k8s.io/client-go/transport/
- 在您喜欢的代码编辑器中打开文件round_trippers.go
- 搜索
func (rt userAgentRoundTripper) RoundTrip(req http.Request) (*http.Response, error)
- 通过添加类似以下
req.Header.Set("Bob-Is", "cool")
的行来添加所需的页眉 - cd返回到根文件夹kubernetes/
- cd cmd/kubectl/
- 去构建自定义kubectl
- 现在用进行测试/自定义kubectl获取ns--v=9
- 在该输出中查找您添加到K8s-api的其余调用中的头,您应该在输出中看到
-H "Bob-Is: cool"
- 为了让这不是一个黑客,也许可以看看是否有办法添加一个你创建的kubectl插件,或者问k8s社区中的好心人如何让这个黑客方法更干净,或者添加客户头不是一个好主意。最坏的情况是,将您的自定义kubectl构建参数化,以引入您添加的新参数——自定义请求头,并使其更加干净