Bridge to Kubernetes连接K8s内部HTTPS服务遇404问题求助
解决Bridge to Kubernetes桥接HTTPS服务的404问题
问题原因
你遇到的404是因为HTTPS服务依赖请求的Host头/SNI识别流量。本地直接访问127.0.0.1:55054时,请求的Host是127.0.0.1:55054,而集群内的服务只认my-super-internal-website.com这个域名,导致NGINX无法匹配到正确的路由规则。
用Bridge to Kubernetes解决的方法
方法1:curl请求时指定域名映射
直接用--resolve参数强制curl把目标域名映射到本地监听端口,同时保留正确的Host和SNI:
curl https://my-super-internal-website.com/health --resolve my-super-internal-website.com:55054:127.0.0.1
方法2:配置本地hosts映射
修改本地hosts文件(Windows:C:\Windows\System32\drivers\etc\hosts;Linux/macOS:/etc/hosts),添加一行:
127.0.0.1 my-super-internal-website.com
之后直接用域名加端口访问:
curl https://my-super-internal-website.com:55054/health
替代工具方案
如果Bridge to Kubernetes的配置太繁琐,也可以用以下工具:
kubectl port-forward:直接转发集群服务端口到本地
先找到目标服务的名称,执行端口转发:kubectl port-forward service/<你的服务名称> 55054:443之后同样用上面的curl方法(指定Host或hosts映射)访问即可。
Telepresence:更易用的本地集群代理
安装后执行连接命令:telepresence connect本地直接执行
curl https://my-super-internal-website.com/health就能访问集群内的服务,它会自动处理DNS解析、流量转发和SNI/Host头匹配,无需手动配置端口或hosts。
内容的提问来源于stack exchange,提问作者Losbaltica
相关产品推荐
相关产品推荐

