文档

在Knative中使用ALB网关

更新时间:

ALB是专门面向HTTP、HTTPS和QUIC等应用层负载场景的负载均衡服务,具备超强弹性及大规模七层流量处理能力,支持Header和Cookie灰度发布。本文介绍如何在Knative中使用ALB网关。

前提条件

配置新建ALB网关

当前支持使用以下两种方式配置ALB网关。

方式一:部署Knative时选择ALB网关

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

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

  3. 组件管理页签,单击一键部署Knative

  4. 在部署Knative页面,选择ALB服务网关并选择至少两个虚拟交换机。关于创建虚拟交换机的具体操作,请参见创建交换机

  5. 配置完成后,单击一键部署

方式二:修改Knative配置文件配置新建ALB

对于已部署的Knative,您可以通过修改Knative配置文件来配置ALB网关。关于如何部署Knative,请参见部署Knative部署Knative

  1. 执行以下命令,编辑config-network.yaml文件。

    kubectl -n knative-serving edit configmap config-network
  2. 参照以下格式修改并保存config-network.yaml文件

    修改ingress.class: alb.ingress.networking.knative.dev并设置vswitch-ids后,保存并退出config-network文件即可配置ALB网关。关于ALB支持的地域和可用区,请参见ALB支持的地域与可用区

    apiVersion: v1
    data:
      ...
      ingress.class: alb.ingress.networking.knative.dev # 表示使用ALB作为Ingress控制器。
      vswitch-ids: vsw-uf6kbvc7mccqia2pi****,vsw-uf66scyuw2fncpn38**** # 此处的参数请替换为您已创建的两个不同可用区交换机ID,系统在创建ALB时自动绑定VSwitch。
      ...
    kind: ConfigMap
    metadata:
      name: config-network
      namespace: knative-serving
      ...

使用已有ALB网关

对于已部署的Knative,您可以通过修改Knative配置文件来配置ALB网关。关于如何部署Knative,请参见在ACK集群中部署Knative在ACK Serverless集群中部署Knative

  1. 执行以下命令,编辑config-network.yaml文件。

    kubectl -n knative-serving edit configmap config-network
  2. 参照以下格式修改并保存config-network.yaml文件

    在配置文件中修改ingress.class: alb.ingress.networking.knative.dev并设置albconfig为已有ALB。此时不需要配置vswitch-ids

    apiVersion: v1
    data:
      ...
      ingress.class: alb.ingress.networking.knative.dev # 表示使用ALB作为Ingress控制器。
      albconfig: alb-dev-albconfig # 用于指定已存在的ALB配置名称,若无需新建ALB而是使用现有ALB,则需填写此项。
      ...
    kind: ConfigMap
    metadata:
      name: config-network
      namespace: knative-serving
      ...

通过ALB网关访问部署的服务

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

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

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

    创建一个名为helloworld-go的服务。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: helloworld-go
    spec:
      template:
        spec:
          containers:
          - image: registry-vpc.cn-beijing.aliyuncs.com/knative-sample/helloworld-go:73fbdd56
            env:
            - name: TARGET
              value: "Knative"
  4. 服务管理页面的默认域名访问网关列,分别获取helloworld-go服务的域名和网关地址。

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

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

    预期输出:

    Hello Knative!

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

  • 本页导读 (1)