Kubernetes "internal only" 入口控制器?
Kubernetes "internal only" ingress controller?
我对 k8s 还很陌生,我正在尝试 assemble 一个内部 api 基础设施——这意味着它只能在 k8s 中使用。例如,我希望能够按照入口控制器的方式映射 api 端点。
- 命名空间“X”中的服务“A”映射到 internal://sales
- 命名空间“Y”中的服务“B”映射到内部://sales/reports
有没有办法在不使用入口控制器或使用未暴露在外部的入口控制器的情况下做到这一点?
与部署到集群的其他 workloads/services 相比,ingress-controller 并不是真正的特殊工作负载。将外部流量映射到集群是因为入口控制器的 Service
使用 type: LoadBalancer
暴露给外部(在大多数情况下),这会触发云基础设施提供 public IP 和映射到集群虚拟机(在服务公开端口上)的云负载平衡器。
没有人阻止您不将该服务类型设置为LoadBalancer
有效地使您的ingress-controller内部。如果您想使用自定义域名,那将需要一些 DNS CNAME 记录指向您的 cluster-local 服务名称 ingress-controller,但这绝对是可能的。
请确保您选择的 ingress-controller 是如何部署的。有些人出于性能原因使用 DaemonSet
s 和 HostPort
s,这意味着您需要格外小心您的防火墙设置。
不过,您应该考虑是否真的想在这里使用 ingress-controller 以及 运行 内部的真实服务,您已经拥有可以使用的稳定 DNS 名称。使用 ingress-controller 会引入额外的数据包跃点,因为请求首先进入入口控制器实例(可能是 运行 在不同的节点上),然后转发到真正的目标工作负载。
如果您有一组固定的工作负载,您还可以使用 nginx 部署来处理 proxying/rewriting 的 url 和路径。检查 the nginx docs 以获取一些示例配置。从网络的角度来看,这与 ingress-controller 设置并没有什么不同,并且还引入了额外的跃点。
我对 k8s 还很陌生,我正在尝试 assemble 一个内部 api 基础设施——这意味着它只能在 k8s 中使用。例如,我希望能够按照入口控制器的方式映射 api 端点。
- 命名空间“X”中的服务“A”映射到 internal://sales
- 命名空间“Y”中的服务“B”映射到内部://sales/reports
有没有办法在不使用入口控制器或使用未暴露在外部的入口控制器的情况下做到这一点?
与部署到集群的其他 workloads/services 相比,ingress-controller 并不是真正的特殊工作负载。将外部流量映射到集群是因为入口控制器的 Service
使用 type: LoadBalancer
暴露给外部(在大多数情况下),这会触发云基础设施提供 public IP 和映射到集群虚拟机(在服务公开端口上)的云负载平衡器。
没有人阻止您不将该服务类型设置为LoadBalancer
有效地使您的ingress-controller内部。如果您想使用自定义域名,那将需要一些 DNS CNAME 记录指向您的 cluster-local 服务名称 ingress-controller,但这绝对是可能的。
请确保您选择的 ingress-controller 是如何部署的。有些人出于性能原因使用 DaemonSet
s 和 HostPort
s,这意味着您需要格外小心您的防火墙设置。
不过,您应该考虑是否真的想在这里使用 ingress-controller 以及 运行 内部的真实服务,您已经拥有可以使用的稳定 DNS 名称。使用 ingress-controller 会引入额外的数据包跃点,因为请求首先进入入口控制器实例(可能是 运行 在不同的节点上),然后转发到真正的目标工作负载。
如果您有一组固定的工作负载,您还可以使用 nginx 部署来处理 proxying/rewriting 的 url 和路径。检查 the nginx docs 以获取一些示例配置。从网络的角度来看,这与 ingress-controller 设置并没有什么不同,并且还引入了额外的跃点。