我正在努力了解ingress控制器在kubernetes中是如何工作的。
我已经在裸机k8s集群上部署了nginx ingress控制器(参考kind-ingress文档(localhost现在指向nginx默认页面。
我已经部署了一个应用程序,该应用程序的入口资源的主机为"foolocalhost"。我现在可以在foo.localhost上访问我的应用程序了。
我想知道nginx是如何在不修改/etc/hosts文件的情况下做到这一点的。
我还想通过相同/不同的网络从不同的机器访问我的应用程序。
我已将ngrok用于此
ngrok http foo.localhost
但它指向nginx默认页面,而不是我的应用
如果我不想使用端口转发或kube代理,我如何使用ngrok访问它。
在您的机器上,localhost
和foo.localhost
都解析到同一地址127.0.0.1。这已经存在了,它不是nginx或k8s所做的。这就是为什么你不能从另一台机器访问它的原因,因为这个名称也解析为该机器的localhost,而不是运行你的k8s入口的那个。当您使用ngrok公开它时,它会使用不同的名称公开它。当您尝试使用该名称访问ingress时,请求包含一个带有ngrok URL的Host
标头,该标头与foo.localhost
不同,因此ingress认为该请求针对不同的域。
尝试使用ngrok url在ingress中公开本地主机。