使用Knative on ASM部署Serverless应用

更新时间: 2023-10-16 09:46:20

阿里云服务网格ASM集成容器服务ACK、ACK Serverless上Knative的Serving能力,支持结合ACK或ACK Serverless部署管理Serverless应用服务。本文介绍如何使用Knative on ASM创建Knative服务。

前提条件

  • 已创建v1.16及以上版本的ASM实例,并已将一个ACK或ACK Serverless集群添加到该实例中。具体操作,请参见创建ASM实例添加集群到ASM实例

    重要
    • 创建ASM实例时,请确保在资源配置区域,启用数据面集群KubeAPI访问Istio资源已勾选(默认勾选),即已启用数据面KubeAPI访问Istio资源。

    • 目标ACK或ACK Serverless集群已开启公网API Server,以便快速接入。

    • ASM实例和ACK或ACK Serverless集群需处于同一VPC、同一地域并使用同一交换机。

  • 已为集群添加入口网关。本实例使用ASM入口网关作为集群网关。具体操作,请参见创建入口网关

    说明

    ASM网关支持为Knative提供Knative Revisions流量分发,支持gRPC服务、超时和重试、TLS证书和外部认证授权等功能。详细信息,请参见ASM网关概述

步骤一:开启Knative on ASM功能

ASM实例版本为1.18.2.104以下

  1. 在ACK或ACK Serverless集群中部署Knative Serving组件,服务网关选择Kourier

    • 关于如何在ACK上安装Knative,请参见部署Knative

    • 关于如何在ACK Serverless上安装Knative,请参见开启Knative

      重要

      在组件成功安装后,请单击组件管理页签,在add-on 组件区域的列表卸载Kourier组件。

  2. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

  3. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择生态集成中心 > Knative on ASM

  4. Knative on ASM页面,单击启用Knative on ASM

ASM实例版本为1.18.2.104及以上

  1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

  2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择生态集成中心 > Knative on ASM

  3. Knative on ASM页面,单击启用Knative on ASM

  4. 在ACK或ACK Serverless集群中部署Knative,服务网关选择ASM

    • 关于如何在ACK上安装Knative,请参见部署Knative

    • 关于如何在ACK Serverless上安装Knative,请参见开启Knative

步骤二:部署Knative服务

Knative on ASM支持通过ACK控制台和YAML配置文件两种方式部署Knative服务。您可以按需选择。

通过ACK控制台部署

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

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

  3. 服务管理页签右上角,单击创建服务,配置相关信息,然后单击创建

    配置项

    说明

    命名空间

    选择该服务所属的命名空间。

    服务名称

    自定义该服务的名称。

    镜像名称

    单击选择镜像,在弹出的对话框中选择所需的镜像并单击确定。同时支持填写私有Registry。填写的格式为domainname/namespace/imagename:tag。本示例为registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go

    镜像版本

    单击选择镜像版本。本示例为73fbdd56

    访问协议

    支持HTTPgRPC两种访问协议。

    容器端口

    设置暴露的容器访问端口,端口号必须介于1~65535。

    展开查看高级设置

    配置项

    说明

    仅内部访问

    选中仅内部访问后,不支持通过公网访问该服务。

    请求最大并发数

    容器允许的最大请求并发数。默认0,表示不限制并发数。

    最小缩容实例数

    在无访问请求的情况下,最小缩容的运行实例数。设置为0时,表示没有访问请求时,实例数缩容至0。

    最大扩容实例数

    允许扩容出来的最多实例个数。

    资源限制

    可指定该应用所能使用的资源上限,防止占用过多资源,资源类型包括CPU、内存和GPU。

    生命周期

    包含命令(Command)和参数(Args),配置说明如下。

    • 均不配置时,将使用镜像默认的命令和参数。

    • 仅配置参数时,将使用镜像默认的命令及新配置的参数。

    • 均配置时,将覆盖镜像默认的配置。

    环境变量

    支持通过键值对的形式配置环境变量。

    数据卷

    支持增加本地存储和云存储声明(PVC)。

    • 本地存储:支持临时目录(emptyDir)、主机目录(hostPath)、配置项(ConfigMap)和保密字典(Secret),将对应的挂载源挂载到容器路径中。更多信息,请参见Volumes

    • 云存储声明(PVC):支持云存储。

通过YAML配置文件部署

  1. 将以下内容保存为hello.yaml。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: helloworld-go
      annotations:
        knative.k8s.alibabacloud/tls: "false"
    spec:
      template:
        spec:
          containers:
            - image: registry.cn-hangzhou.aliyuncs.com/acs/helloworld-go:160e4dc8
              ports:
                - containerPort: 8080
              env:
                - name: TARGET
                  value: "Knative"
  2. 使用kubectl连接到ACK集群,执行以下命令创建Knative Service,并等待Knative Service创建成功。

    kubectl apply -f hello.yaml
  3. 执行以下命令,查看Knative服务列表。

    kubectl get ksvc

    预期输出:

    NAME            URL                                        LATESTCREATED         LATESTREADY           READY   REASON
    helloworld-go   http://helloworld-go.default.example.com   helloworld-go-00001   helloworld-go-00001   True

步骤三:获取访问网关地址

通过ACK控制台获取

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

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

  3. 单击服务管理页签,然后在服务列表中单击目标服务名称,进入Knative服务详情页面。在基本信息区域,查看并获取访问网关默认域名

通过ASM控制台获取

  1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

  2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择ASM网关 > 入口网关

  3. 入口网关页面的服务地址区域,查看并获取访问网关地址。

步骤四:访问服务

Knative服务创建完成后,通过绑定Host域名与访问网关,可以直接访问服务地址。

  1. 步骤三:获取访问网关地址中获取的访问网关地址与需要访问的域名进行Host绑定,在Hosts文件中添加绑定信息。

    绑定示例代码如下。

    说明

    请将xx.xx.xxx.xx替换为您实际的访问网关地址。

    xx.xx.xxx.xx helloworld-go.default.example.com
  2. Host绑定完成后,通过域名直接访问服务。

    • 命令行访问

      curl http://helloworld-go.default.example.com
      
      # 预期输出
      Hello Knative!
    • 链接访问

      在浏览器中直接访问http://helloworld-go.default.example.com

      预期输出:HelloKnative

相关操作

阿里云首页 服务网格 ASM 相关技术圈