2.2. 关于向集群外的流量公开服务


要启用来自 OpenShift 集群外部的流量访问网格中的服务,您必须通过将 Service 类型设置为 LoadBalancer 或使用 OpenShift Router 来公开网关代理。

使用 Kubernetes 负载均衡直接通过入站网关处理传入的流量,可减少与数据加密相关的延迟。通过在入站网关中管理加密,您可以避免在网格中通常会添加延迟的中间解密和重新加密步骤。这种方法允许只加密和解密一次网格流量,这通常效率更高。

OpenShift 路由器提供用于管理入口流量的标准方法,您可以使用路由器使用相同的方法管理所有集群入口流量的证书。但是,OpenShift 路由器在入站流量和网格应用之间引入了额外的跃点。通常,您可以通过在路由器中解密流量,然后在服务网格入口网关中重新加密它,从而带来延迟。

2.2.1. 使用 OpenShift 路由向集群外的流量公开网关

您可以使用 OpenShift 路由向集群外的流量公开网关。当您需要向集群外的流量公开网关时,此方法提供了使用 Kubernetes 负载均衡器服务的替代方案。

先决条件

  • 您已完成了这个过程,使用 Istio 网关和 VirtualService 资源公开服务

流程

  1. 运行以下命令,确保 Service type 设置为 ClusterIP

    $ oc patch service  -n  -p '{"spec": {"type": "ClusterIP"}}'
  2. 创建名为 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
  3. 运行以下命令来应用 YAML 文件:

    $ oc apply -f httpbin-route.yaml
  4. 验证 httpbin 服务是否可以通过入口路由器从集群外部访问。确保为集群在其中运行的环境正确设置了 INGRESS_HOST 变量。

    1. 如果集群在 AWS 上运行,请运行以下命令设置 INGRESS_HOST 变量:

      $ INGRESS_HOST=$(oc get service router-default -n openshift-ingress -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
    2. 如果集群在 GCP 或 Azure 上运行,请运行以下命令设置 INGRESS_HOST 变量:

      $ INGRESS_HOST=$(oc get service router-default -n openshift-ingress -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    3. 运行以下命令,使用入口路由器的主机向 httpbin 服务发送 curl 请求:

      $ curl -s -I -H Host:httpbin.example.com http://$INGRESS_HOST/headers
  5. 验证响应是否具有 HTTP/1.1 200 OK 状态,这表示请求是否成功。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.