【发布时间】:2019-07-11 22:24:39
【问题描述】:
我使用 haproxy 作为堡垒服务器/集群网关,因为我的网络中只有一些节点可以直接访问外部网络。我的内部节点是 kubernetes 集群的一部分,需要能够从集群外部的私有注册表中提取图像,这需要证书身份。
k8s 集群内部节点 -> 边缘节点上的 haproxy -> docker 注册表
我正在尝试在我的 haproxy.cfg 中配置我的后端以路由到 docker 注册表,并使用边缘节点的证书身份更新请求。 (内部节点没有 docker 注册表可接受的证书,并且我未被允许在内部节点上托管外部节点的证书。)我现在拥有的内容如下所示......
frontend ft_ssl
bind <boxIP>:443
mode http
default_backend bk_global_import_registry_certs
backend bk_global_import_registry_certs
mode http
balance roundrobin
server registry_alias-0 <registryIP>:443 ssl ca-file fullyqualified/ca.crt crt fullyqualified/file.pem check
server registry_alias-1 <registryIP2>:443 ssl ca-file fullyqualified/ca.crt crt fullyqualified/file.pem check
我目前在 /etc/systemd/system/docker.service.d/http-proxy.conf 中有 HTTPS_PROXY setting 并且收到 400 Bad Request。下面的已清理日志消息,仅更改为删除 IP 或拼写错误。
InternalIP:randomPort [09/Jul/2019:13:28:08.659] ft_ssl bk_global_import_registry_certs 0/0/10/5/15 400 350 - - ---- 1/1/0/0/0 0/0 {} "CONNECT externalFQDN:443 HTTP/1.1"
对于那些通过 kubernetes 或 docker 标签查看此问题的人,我也考虑过设置 pull-through cache,但我意识到这仅适用于 Docker 的公共注册表 - 请参阅 open Docker GitHub issue 1431 以供其他人试图找到解决问题的方法那也是。
【问题讨论】:
标签: docker kubernetes haproxy