通过定义 Istio 资源,可以实现服务网格 ASM 的流量治理、鉴权以及安全保护等功能。本文介绍如何定义虚拟服务和 Istio 网关这两种 Istio 资源,以实现相应的流量路由策略。
前提条件 创建至少一个 ASM 实例,并添加至少一个 ACK 集群到该实例中。详情请参见创建 ASM 实例和添加集群到 ASM 实例。 部署应用到 ASM 实例的集群中,详情请参见部署应用到 ASM 实例。 定义虚拟服务 登录 ASM 控制台。 在左侧导航栏中,选择网格实例,在右侧打开的页面中,选择要配置的 ASM 实例。 在控制平面区域,单击虚拟服务页签,然后单击新建。 在新建页面,按以下步骤定义虚拟服务,然后单击确定。 选择相应的命名空间。 本文以选择default命名空间为例。 在文本框中,定义 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 网关 在控制平面区域,单击 Istio网关页签,然后单击新建。 在新建页面中,按以下步骤定义 Istio 网关,然后单击确定。 选择相应的命名空间。 本文以选择default命名空间为例。 在文本框中,定义 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 地址:
登录容器服务控制台,选择路由与负载均衡 > 服务。 在服务(Service)页面,在集群下拉列表中选择部署入口网关的集群,然后在命名空间下拉列表中选择 istio-system。 查看名为 istio-ingressgateway 服务所对应的外部端点信息,即是入口网关服务的 IP 地址。 说明 您也可以通过 kubectl 客户端查询入口网关服务的 IP 地址。关于如何连接集群,请参见通过kubectl连接Kubernetes集群。在对应部署入口网关的集群的环境下,执行以下命令查询: kubectl get service istio-ingressgateway -n istio-system -o jsonpath="{.status.loadBalancer.ingress[*].ip}" 在浏览器地址栏输入 http://{入口网关服务的IP地址}/productpage,可以看到 Bookinfo 应用的页面。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。