使用Kubectl工具时如何添加自定义HTTP标头

时间:2018-11-26 12:23:09

标签: kubernetes http-headers kubectl

找不到任何问题。

我必须添加几个自定义的HTTP标头来访问我的专用api服务器代理,但是目前没有任何线索。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

这是一个肮脏的硬编码黑客,向您展示如何寻找结果,而不是经过全面审查的解决方案。此方法将编译kubectl的新版本,该版本将添加所需的标头。也许至少会给您一个运行的想法。

之所以要这样做,是因为我将k8s api端点放在了互联网上,并通过Cloudflare Access对其进行了保护。为了允许Cloudflare访问,我需要通过两个标头,一个是我的客户ID,另一个是客户机密。最终,它像一种魅力一样工作了,这是有人可能要添加自定义标题的一种情况。

步骤:

  • 我假设您已经安装并设置了Go,否则请立即安装。
  • git clone https://github.com/kubernetes/kubernetes.git(可能需要一段时间,它会很大)
  • cd kubernetes / staging / 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
  • 现在使用./custom-kubectl get ns --v = 9
  • 进行测试
  • 在输出中查找添加到对K8s api的其余调用中的标头,您应该在输出中看到-H "Bob-Is: cool"
  • 要使其成为一个hack,可能要看看是否有办法为您添加一个创建的kubectl插件,或者询问k8s社区中的同类人如何使此hacky方法更简洁一些,或者是否存在添加客户标题的原因不是一个好主意。最糟糕的情况是对您的自定义kubectl构建进行参数化,以引入您添加的新参数--custom-request-headers,并使它更简洁。