2.2. 关于向集群外的流量公开服务
要启用来自 OpenShift 集群外部的流量访问网格中的服务,您必须通过将 Service 类型设置为 LoadBalancer 或使用 OpenShift Router 来公开网关代理。
使用 Kubernetes 负载均衡直接通过入站网关处理传入的流量,可减少与数据加密相关的延迟。通过在入站网关中管理加密,您可以避免在网格中通常会添加延迟的中间解密和重新加密步骤。这种方法允许只加密和解密一次网格流量,这通常效率更高。
OpenShift 路由器提供用于管理入口流量的标准方法,您可以使用路由器使用相同的方法管理所有集群入口流量的证书。但是,OpenShift 路由器在入站流量和网格应用之间引入了额外的跃点。通常,您可以通过在路由器中解密流量,然后在服务网格入口网关中重新加密它,从而带来延迟。
2.2.1. 使用 OpenShift 路由向集群外的流量公开网关 复制链接链接已复制到粘贴板!
您可以使用 OpenShift 路由向集群外的流量公开网关。当您需要向集群外的流量公开网关时,此方法提供了使用 Kubernetes 负载均衡器服务的替代方案。
先决条件
- 您已完成了这个过程,使用 Istio 网关和 VirtualService 资源公开服务。
流程
运行以下命令,确保
Servicetype 设置为ClusterIP:$ oc patch service <gateway_name> -n <gateway_namespace> -p '{"spec": {"type": "ClusterIP"}}'创建名为
httpbin-route.yaml的 YAML 文件,为httpbin服务定义Route。apiVersion: route.openshift.io/v1 kind: Route metadata: name: httpbin namespace: <gateway_namespace> spec: host: httpbin.example.com port: targetPort: http2 to: kind: Service name: <gateway_name> weight: 100 wildcardPolicy: None运行以下命令来应用 YAML 文件:
$ oc apply -f httpbin-route.yaml验证
httpbin服务是否可以通过入口路由器从集群外部访问。确保为集群在其中运行的环境正确设置了INGRESS_HOST变量。如果集群在 AWS 上运行,请运行以下命令设置
INGRESS_HOST变量:$ INGRESS_HOST=$(oc get service router-default -n openshift-ingress -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')如果集群在 GCP 或 Azure 上运行,请运行以下命令设置
INGRESS_HOST变量:$ INGRESS_HOST=$(oc get service router-default -n openshift-ingress -o jsonpath='{.status.loadBalancer.ingress[0].ip}')运行以下命令,使用入口路由器的主机向
httpbin服务发送curl请求:$ curl -s -I -H Host:httpbin.example.com http://$INGRESS_HOST/headers
-
验证响应是否具有
HTTP/1.1 200 OK状态,这表示请求是否成功。