Kubernetes 如何在使用kubectl工具时添加自定义http头

Kubernetes 如何在使用kubectl工具时添加自定义http头,kubernetes,http-headers,kubectl,Kubernetes,Http Headers,Kubectl,找不到任何问题 我必须添加几个自定义http头来访问我的专用api服务器代理,但目前没有可用的线索。我错过了什么吗?这是一个肮脏的硬编码黑客,告诉你如何得到你想要的结果。这不是一个经过充分审查的解决方案。此方法将编译kubectl的新版本,该版本将添加所需的头。也许它至少会给你一个跑步的想法 我之所以想这样做,是因为我把我的k8s api端点放在了互联网上,并用Cloudflare访问来保护它。为了允许Cloudflare访问让我通过这堵钢墙,我需要传入两个标题,一个是我的客户id,另一个是客户

找不到任何问题


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

这是一个肮脏的硬编码黑客,告诉你如何得到你想要的结果。这不是一个经过充分审查的解决方案。此方法将编译kubectl的新版本,该版本将添加所需的头。也许它至少会给你一个跑步的想法

我之所以想这样做,是因为我把我的k8s api端点放在了互联网上,并用Cloudflare访问来保护它。为了允许Cloudflare访问让我通过这堵钢墙,我需要传入两个标题,一个是我的客户id,另一个是客户机密。这就像一个魔咒,是一种可能有人想添加自定义标题的情况

步骤:

  • 我想你已经安装好了,如果不是现在就去安装
  • git克隆(可能需要一段时间,它相当大)
  • cd kubernetes/staging/src/k8s.io/client-go/transport/
  • 打开文件round_trippers.go进入您喜爱的代码编辑器
  • 搜索
    func(rt userAgentRoundTripper)往返(请求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的rest调用中的头,您应该在输出中看到
    -H“Bob Is:cool”
  • 为了使这不是一个黑客行为,也许可以看看是否有办法添加一个你创建的kubectl插件,或者询问k8s社区的善良的人们,你如何使这个黑客行为更干净,或者是否有理由添加客户标题不是一个好主意。最坏的情况是参数化自定义kubectl构建,以引入您添加的新参数——自定义请求头,并使其更干净

@NikitaZernov访问Kubernetes API服务器更为具体。问题是我们在多个VPC中有多个Kubernetes群集,我们只能通过一个中央代理服务器访问apiserver。我必须添加一些集群信息,以找到使用kubectl时需要的特定集群。整个事情可能没有任何意义,但我必须想尽一切办法来处理。你能补充更多的信息吗,因为你的解释太宽泛了?@ArtemGolenyaev当然。如上所述,我需要通过一个代理服务器访问多个集群的API服务器。因此,我必须添加一些HTTP头,如“clusterId:xxx”,以指示要访问哪个HTTP头。您很可能无法访问。您可以在代理配置中添加更多主机,如e.x.->apiserver cluster 1 IP、->apiserver cluster 2 IP等等。然后为每个集群创建kubeconfig。我就是这样做的。但在这种情况下,您需要在每个集群上重新生成apiserver ssl证书。如果您选择这种方式,我可以演示如何正确地重新生成证书。