Minikube部署的Ingress主机名如何实现端口转发供桌面浏览器访问?
问题1:kubectl port-forward是否支持Ingress资源
kubectl port-forward 目前仅支持绑定到Pod、Service、Deployment、ReplicaSet这类实际运行负载的资源,确实不支持直接对Ingress资源执行端口转发。Ingress本身只是Kubernetes的路由规则配置资源,不是实际运行的网络转发进程,没有对应的监听端口可以直接绑定,所以会触发你遇到的未实现Ingress选择器逻辑的报错。
问题2:从桌面浏览器访问带TLS的Ingress的解决方案
Ingress的路由规则最终是由集群中运行的Ingress控制器(比如你用的Nginx Ingress Controller)实际执行转发的,你只要绑定到Ingress控制器的相关资源即可,操作步骤如下:
- 先确认集群中Ingress控制器的Service信息,Minikube默认安装的Nginx Ingress Controller一般在
ingress-nginx命名空间下:
kubectl get svc -n ingress-nginx
- 执行端口转发,把VM的8080、8443端口分别映射到Ingress控制器的80、443端口,绑定0.0.0.0允许桌面侧访问:
kubectl port-forward --address 0.0.0.0 svc/ingress-nginx-controller -n ingress-nginx 8080:80 8443:443
- 在你桌面电脑的hosts文件中添加域名映射:
<你的云计算VM公网IP> backend.minikube.local
- 把你生成的自签名证书
tls.crt导入到桌面浏览器的受信任根证书列表中,避免浏览器报安全风险提示 - 直接在桌面浏览器访问
https://backend.minikube.local:8443即可正常访问Nginx页面
如果不想长期保持port-forward进程常驻,也可以直接把Ingress控制器的Service改成NodePort或者LoadBalancer类型,直接通过VM IP+NodePort访问,后续hosts、证书配置和上述步骤一致。
内容的提问来源于stack exchange,提问作者Vinu Pillai
相关产品推荐
相关产品推荐

