【问题标题】:Use HTTP proxy for Kubernetes go-client为 Kubernetes go-client 使用 HTTP 代理
【发布时间】:2019-02-12 13:53:40
【问题描述】:

我正在使用 go-client for kubernetes 来控制我的 GKE 集群上的部署,但是该客户端将在代理后面运行,并且需要通过它发出所有与 Internet 绑定的请求。但我似乎找不到一种方法来配置我的 KubeClient 以通过代理发出所有 http 请求。

我的代码与这里的示例没有太大区别 - https://github.com/kubernetes/client-go/blob/master/examples/out-of-cluster-client-configuration/main.go

【问题讨论】:

  • 你试过设置http_proxy environment variable吗?
  • @Peter 是的,但这是一种解决方法,我对此并不满意。我的很多依赖项都在这个 Intranet 中,我不想通过这个代理路由我的所有容器流量,从而产生不必要的负载。我与 GCP 的沟通只是一个部署请求和一个删除部署请求。

标签: go kubernetes kubernetes-go-client


【解决方案1】:

当您使用配置 (kubernetes.NewForConfig(config)) 设置新客户端时,您可以自定义传输:

proxyURL := url.URL{Host: proxy}
transport := http.Transport{Proxy: http.ProxyURL(&proxyURL), ....}
config.Transport = config.Transport

或者你可以使用 config.WrapTransport:

  • 传输 http.RoundTripper

传输可用于自定义 HTTP 行为。该属性可能不 使用 TLS 客户端证书选项指定。使用 WrapTransport 适用于大多数客户端级别的操作。

  • WrapTransport func(rt http.RoundTripper) http.RoundTripper

WrapTransport 将在底层之后为自定义 HTTP 行为调用 传输已初始化(从 TLSClientConfig 创建的传输, 传输,或 http.DefaultTransport)。该配置可能会分层其他 RoundTrippers 在返回的 RoundTripper 之上。


遗憾的是,让它工作并不简单,使用HTTP_PROXYno_proxy 通常更容易。

【讨论】:

    【解决方案2】:

    有三个选项可以“告诉” Go 客户端使用代理:

    一个。设置 HTTP_PROXY 环境变量:

    $ export HTTP_PROXY="http://ProxyIP:ProxyPort"
    

    HTTP_PROXY 环境变量将用作 HTTP 请求和 HTTPS 请求的代理 URL,除非被 HTTPS_PROXY 或 NO_PROXY 覆盖

    b.在 Go 中创建一个必须使用代理的 HTTP 客户端:

    proxy, _ := url.Parse("http://ProxyIP:ProxyPort")
    httpClient := &http.Client{Transport: &http.Transport{Proxy: http.ProxyURL(proxy)}}
    

    c。更改 Go “net/http” 包使用的默认传输。这会影响整个程序(包括默认的 HTTP 客户端)

    proxy, _ := url.Parse("http://ProxyIP:ProxyPort")
    http.DefaultTransport := &http.Client{Transport: &http.Transport{Proxy: http.ProxyURL(proxy)}}
    

    详情请看我的博文:https://medium.com/@tufin/how-to-use-a-proxy-with-go-http-client-cfc485e9f342

    【讨论】:

      猜你喜欢
      • 2020-09-30
      • 2021-03-29
      • 2018-11-03
      • 2020-07-01
      • 2018-04-11
      • 1970-01-01
      • 2018-10-30
      • 1970-01-01
      相关资源
      最近更新 更多