在Knative中使用ASM网关

在大规模分布式系统、微服务应用流量管理等场景下,特别是已采用或计划采用Istio作为服务网格框架的业务场景中,推荐您使用ASM网关实现Knative服务的流量分发和路由。ASM网关兼容社区Istio规范,控制面组件由ACK托管,简化了服务治理,包括服务调用之间的流量路由与拆分管理、服务间通信的认证安全以及网格的可观测性能力。

前提条件

已创建ASM实例,且ASM实例版本为1.21.6.84及以,请参见创建ASM实例

创建ASM实例时,在Kubernetes集群区域,将已创建的ACK托管集群ACK Serverless集群添加到ASM实例中,并选中启用数据面集群KubeAPI访问Istio资源

步骤一:部署Knative时选择ASM为服务网关

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择应用 > Knative

  3. Knative页面的组件管理页签下,单击一键部署Knative,然后在服务网关处选择ASM,然后单击一键部署

    部署成功后,可在Knative中使用服务网格ASM。

步骤二:通过ASM入口网关访问部署的服务

本小节结合一个Knative Service示例演示如何通过ASM完成服务部署。

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择应用 > Knative

  3. Knative页面的服务管理页签,选择命名空间default,单击使用模板创建,将以下YAML示例粘贴至模板,然后单击创建,创建一个名为helloworld-go的服务。

    重要

    请将下方代码中的{REGION-ID}替换为您集群的所在地域(例如cn-beijing),以确保可以正确访问和使用镜像。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: helloworld-go
    spec:
      template:
        spec:
          containers:
          - image: registry.{REGION-ID}.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 # 请将{REGION-ID}替换为您集群所在地域。
            env:
            - name: TARGET
              value: "Knative"
  4. 服务管理页面的访问网关列,获取helloworld-go服务的网关地址。

  5. 执行以下命令,访问helloworld-go服务。

    curl -H "host: helloworld-go.default.example.com" http://39.XX.XX.XX # 网关的IP和域名请以您的实际数据为准。

    预期输出:

    Hello Knative!

    预期输出表明,服务访问成功。

(可选)步骤三:查看服务监控数据

Knative提供开箱即用的可观测能力,在Knative页面,单击监控大盘页签,即可查看目标Knative服务的监控数据情况。如何开启Knative监控大盘,请参见查看Knative服务监控大盘

相关文档