通过管理 Istio 资源定义,可以实现 ASM 服务网格的流量治理、鉴权以及安全保护等能力。本文介绍如何定义虚拟服务和目标规则这两种 Istio 资源。

前提条件

  • 已创建至少一个 ASM 实例,并已添加至少一个 ACK 集群到该实例中。
  • 已部署应用到 ASM 实例的集群中。

定义虚拟服务

  1. 控制平面区域,选择虚拟服务页签,然后单击新建
  2. 新建页面,定义虚拟服务,单击确定
    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
  3. 虚拟服务页面可以看到新建的 bookinfo 服务。虚拟服务

定义 Istio 网关

  1. 控制平面区域,选择Istio网关页签,然后单击新建
  2. 新建页面中,定义虚拟服务,单击确定
    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:
          - "*"
  3. Istio网关页面可以看到新建的 bookinfo-gateway 网关。Istio网关

执行结果

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

  1. 登录容器服务控制台,选择路由与负载均衡 > 服务
  2. 服务(Service)页面,在集群命名空间下拉列表中分别选择部署入口网关的集群和 istio-system。
  3. 查看名为 istio-ingressgateway 服务所对应的外部端点信息,即是入口网关服务的 IP 地址。
说明 您也可以通过 kubectl 客户端查询入口网关服务的 IP 地址。在对应部署入口网关的集群的环境下,执行以下命令查询:
kubectl get service istio-ingressgateway -n istio-system -o jsonpath="{.status.loadBalancer.ingress[*].ip}"
由于 Reviews 微服务有 3 个版本,因此刷新页面可以看到 3 种不同的显示内容:
  • v1 版本不会调用 Ratings 服务。
  • v2 版本会调用 Ratings 服务,并使用 1 到 5 个黑色星形图标来显示评分信息。
  • v3 版本会调用 Ratings 服务,并使用 1 到 5 个红色星形图标来显示评分信息。