Использовать HTTP-прокси для go-клиента Kubernetes - PullRequest
0 голосов
/ 07 сентября 2018

Я использую go-client для kubernetes для управления развертываниями в моем кластере GKE, но этот клиент должен работать за прокси-сервером и должен выполнять все свои интернет-запросы через него. Но я не могу найти способ настроить мой KubeClient для выполнения всех http-запросов через прокси.

Мой код не сильно отличается от примера здесь - https://github.com/kubernetes/client-go/blob/master/examples/out-of-cluster-client-configuration/main.go

1 Ответ

0 голосов
/ 17 июля 2019

Когда вы настраиваете нового клиента с помощью конфигурации (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 (rt http.RoundTripper) http.RoundTripper

WrapTransport будет вызываться для настраиваемого HTTPповедение после инициализации основного транспорта (транспорт, созданный из TLSClientConfig, Transport или http.DefaultTransport).Конфигурация может наложить другие RoundTrippers поверх возвращенного RoundTripper.


К сожалению, это не так просто сделать, и использование HTTP_PROXY и no_proxy часто проще.

...