kubernetes - Kubernetes 入口控制器暴露到特定端口
问题描述
我的机构有防火墙设置,屏蔽了大部分外部端口,目前我有内部Linux虚拟机,例如http://abc.xyz:5555(这个链接只能在内部网络访问),还有一个Netscaler由管理员设置,以便将内部链接转发到公开可用的链接:https ://def.edu 。
现在我有多个使用 5556,5557,5558 等端口的 Web 服务器。我想设置 Kubernetes 入口,所有流量首先进入入口控制器,入口将流量转发到我的多个 Web 服务。通常如下图所示。
我只有 5555 端口可用,但 Ingress 的所有教程似乎只支持 HTTP 80 和 HTTPS 443 端口。我的问题是,我可以将 Ingress 控制器主机设置为http://abc.xyz:5555吗?或者我应该采用其他方法,就像这样说:An Ingress does not expose arbitrary ports or protocols. Exposing services other than HTTP and HTTPS to the internet typically uses a service of type Service.Type=NodePort or Service.Type=LoadBalancer.
如果是这样,我应该使用什么术语/技术?
解决方案
我建议使用入口,因为每个负载均衡器都会分配一个自己的外部 IP。您可以指定自定义端口和协议(tcp、udp、http)。我使用 nginx,但文档似乎已过时(上周检查过)。所以我们目前正在使用Traefik。Web 仪表板对调试也有很大帮助。
我们是如何解决的:
使用自定义值通过 helm 安装 traefik,因此它会监听 80 和 443 之外的其他端口;在您的values.yaml中添加自定义入口点并使用以下命令安装 traefik:
helm install --values values.yaml stable/traefik
安装你的入口 http/tcp/udp 路由
转发您的 Web 仪表板并转到http://localhost:9000/dashboard
更详细的步骤请看官方文档:https ://docs.traefik.io/getting-started/install-traefik/#use-the-helm-chart
推荐阅读
- javascript - 如何将 MySQL 值存储在网页中以供以后使用
- .net-core - 将 appsetting.Development.json 用于 AWS Mock Lambda 测试工具
- css - 如何使线性 css 过渡到 SVG 路径?
- amazon-web-services - ECS - EC2 实例的用户数据
- react-native - React Native Redux App 中的条件渲染失败
- javascript - 如何在 php 中使用 Bootstrap Modal 显示通知
- apache-spark - Spark Hive SQL 返回空数据框
- r - 尝试运行 lapply() 时出现“[...] 中的错误:尝试在 vectorIndex 中选择多个元素”问题。任何人都可以和我一起调试这个吗?
- mysql - 一个复杂的 sql 查询是否会变得足够复杂,以至于执行多个查询会更有效率?
- c++ - 用 C++ 实现异步惰性生成器