在Knative中使用ASM网关

您如果希望通过ACK Knative实现高效的服务管理和安全的网络通信,推荐您使用阿里云服务网格(ASM)作为服务网关。ASM是一款全托管式服务网格平台,兼容社区Istio开源服务网格。将ASM用作Knative的网络层实现可以简化服务的治理,包括服务调用之间的流量路由与拆分管理、服务间通信的认证安全以及网格可观测性能力。

前提条件

  • 已创建ACK托管集群ACK Serverless集群。具体操作,请参见创建ACK托管集群创建ACK Serverless集群

  • 已创建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页面,单击监控大盘页签,即可查看helloworld-go服务的监控数据情况。如何开启Knative监控大盘,请参见通过阿里云Prometheus监控查看Knative大盘