在端口 80 上公开 Istio 网关
expose Istio-gateway on port 80
我是 运行 具有 1 个主节点和 3 个工作节点的裸机 Kubernetes 集群。我在内部部署了一堆服务,使用 Istio 作为 Ingress-gateway。
一切正常,因为我可以使用入口网关 NodePort 从外部访问我的服务。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-ingressgateway LoadBalancer 10.106.9.2 <pending> 15021:32402/TCP,80:31106/TCP,443:31791/TCP 2d23h
istiod ClusterIP 10.107.220.130 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 2d23h
在我们的示例中,端口 31106
。
问题是,我不希望我的客户在端口 31106 上访问我的服务。这对用户不友好。那么有没有办法把80端口暴露在外面呢?
换句话说,不用输入 http://example.com:31106/ , I want them to be able to type http://example.com/
任何解决方案都可以提供帮助。
If the EXTERNAL-IP
value is set, your environment has an external load balancer that you can use for the ingress gateway. If the EXTERNAL-IP
value is <none>
(or perpetually <pending>
), your environment does not provide an external load balancer for the ingress gateway. In this case, you can access the gateway using the service’s node port.
这与David Maze在评论中写的一致:
A LoadBalancer-type service would create that load balancer, but only if Kubernetes knows how; maybe look up metallb
for an implementation of that. The NodePort
port number will be stable unless the service gets deleted and recreated, which in this case would mean wholesale uninstalling and reinstalling Istio.
在您的情况下,您需要使用 NodePort
访问网关。然后就可以配置istio了。一切都在 this doc 中逐步描述。您需要选择NodePort
对应的指令,然后根据集群提供商设置入口IP。您还可以在文档中找到示例 yaml 文件。
我是 运行 具有 1 个主节点和 3 个工作节点的裸机 Kubernetes 集群。我在内部部署了一堆服务,使用 Istio 作为 Ingress-gateway。
一切正常,因为我可以使用入口网关 NodePort 从外部访问我的服务。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-ingressgateway LoadBalancer 10.106.9.2 <pending> 15021:32402/TCP,80:31106/TCP,443:31791/TCP 2d23h
istiod ClusterIP 10.107.220.130 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 2d23h
在我们的示例中,端口 31106
。
问题是,我不希望我的客户在端口 31106 上访问我的服务。这对用户不友好。那么有没有办法把80端口暴露在外面呢?
换句话说,不用输入 http://example.com:31106/ , I want them to be able to type http://example.com/
任何解决方案都可以提供帮助。
If the
EXTERNAL-IP
value is set, your environment has an external load balancer that you can use for the ingress gateway. If theEXTERNAL-IP
value is<none>
(or perpetually<pending>
), your environment does not provide an external load balancer for the ingress gateway. In this case, you can access the gateway using the service’s node port.
这与David Maze在评论中写的一致:
A LoadBalancer-type service would create that load balancer, but only if Kubernetes knows how; maybe look up
metallb
for an implementation of that. TheNodePort
port number will be stable unless the service gets deleted and recreated, which in this case would mean wholesale uninstalling and reinstalling Istio.
在您的情况下,您需要使用 NodePort
访问网关。然后就可以配置istio了。一切都在 this doc 中逐步描述。您需要选择NodePort
对应的指令,然后根据集群提供商设置入口IP。您还可以在文档中找到示例 yaml 文件。