通过定义 Istio 资源,可以实现服务网格 ASM 的流量治理、鉴权以及安全保护等功能。本文介绍如何定义虚拟服务和 Istio 网关这两种 Istio 资源,以实现相应的流量路由策略。

前提条件

定义虚拟服务

  1. 登录 ASM 控制台
  2. 在左侧导航栏中,选择网格实例,在右侧打开的页面中,选择要配置的 ASM 实例。
  3. 控制平面区域,单击虚拟服务页签,然后单击新建
  4. 新建页面,按以下步骤定义虚拟服务,然后单击确定
    1. 选择相应的命名空间。
      本文以选择default命名空间为例。
    2. 在文本框中,定义 Istio 虚拟服务。可参考以下 YAML 定义,详情请参见 Istio 官方示例
      apiVersion: networking.istio.io/v1alpha3
      kind: VirtualService
      metadata:
        name: bookinfo
      spec:
        hosts:
        - "*"
        gateways:
        - bookinfo-gateway
        http:
        - match:
          - uri:
              exact: /productpage
          - uri:
              prefix: /static
          - uri:
              exact: /login
          - uri:
              exact: /logout
          - uri:
              prefix: /api/v1/products
          route:
          - destination:
              host: productpage
              port:
                number: 9080
    虚拟服务页签可以看到新建的 bookinfo 服务。

定义 Istio 网关

  1. 控制平面区域,单击 Istio网关页签,然后单击新建
  2. 新建页面中,按以下步骤定义 Istio 网关,然后单击确定
    1. 选择相应的命名空间。
      本文以选择default命名空间为例。
    2. 在文本框中,定义 Istio 网关。可参考以下 YAML 定义,详情请参见Istio 官方示例
      apiVersion: networking.istio.io/v1alpha3
      kind: Gateway
      metadata:
        name: bookinfo-gateway
      spec:
        selector:
          istio: ingressgateway # use istio default controller
        servers:
        - port:
            number: 80
            name: http
            protocol: HTTP
          hosts:
          - "*"
    Istio网关页签可以看到新建的 bookinfo-gateway 网关。

执行结果

在浏览器地址栏输入 http://{入口网关服务的IP地址}/productpage,可以看到 Bookinfo 应用的页面。按照以下步骤查看入口网关服务的 IP 地址:

  1. 登录容器服务控制台,选择路由与负载均衡 > 服务
  2. 服务(Service)页面,在集群下拉列表中选择部署入口网关的集群,然后在命名空间下拉列表中选择 istio-system
  3. 查看名为 istio-ingressgateway 服务所对应的外部端点信息,即是入口网关服务的 IP 地址。
    说明 您也可以通过 kubectl 客户端查询入口网关服务的 IP 地址。关于如何连接集群,请参见通过kubectl连接Kubernetes集群。在对应部署入口网关的集群的环境下,执行以下命令查询:
    kubectl get service istio-ingressgateway -n istio-system -o jsonpath="{.status.loadBalancer.ingress[*].ip}"
  4. 在浏览器地址栏输入 http://{入口网关服务的IP地址}/productpage,可以看到 Bookinfo 应用的页面。
    说明 在配置目标规则前,在 Reviews 微服务的 3 个版本之间默认的流量路由策略是轮询。因此刷新页面可以看到 3 种不同的显示内容:
    • v1 版本不会调用 Ratings 服务。
    • v2 版本会调用 Ratings 服务,并使用 1 到 5 个黑色星形图标来显示评分信息。
    • v3 版本会调用 Ratings 服务,并使用 1 到 5 个红色星形图标来显示评分信息。