在大规模Web应用、需要精细化流量分发、需要自动弹性伸缩等对HTTP/HTTPS请求有复杂路由需求的应用中,推荐您基于ALB网关实现Knative服务的流量分发和路由。ALB是专门面向HTTP、HTTPS和QUIC等应用层负载场景的负载均衡服务,具备超强弹性及大规模七层流量处理能力。ALB网关是一款全托管免运维的网关,提供自动弹性能力,支持多种服务灰度策略。
前提条件
已在集群中部署Knative,请参见部署Knative。
步骤一:部署ALB网关
在Knative中部署ALB网关时,您可以使用Knative自动创建的ALB实例,也可以指定您已有的ALB实例。
部署ALB网关时自动创建ALB
您可以在部署Knative的过程中配置ALB网关。如果您已经部署了Knative,也可以通过修改Knative配置文件来配置ALB网关。
部署Knative时配置ALB网关
修改Knative配置文件部署ALB网关
对于已部署的Knative,您可以通过修改Knative配置文件来配置ALB网关。关于如何部署Knative,请参见在ACK集群中部署Knative、在ACK Serverless集群中部署Knative。
执行以下命令,编辑config-network.yaml文件。
kubectl -n knative-serving edit configmap config-network
参照以下格式修改并保存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部署ALB网关
您可以通过修改Knative配置文件来使用已有的ALB实例配置ALB网关。
执行以下命令,编辑config-network.yaml文件。
kubectl -n knative-serving edit configmap config-network
参照以下格式修改并保存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网关访问部署的服务
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在Knative页面的服务管理页签,选择命名空间为default,单击使用模板创建,将以下YAML示例粘贴至模板,然后单击创建。
下面示例YAML创建了一个名为
helloworld-go
的Knative服务。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"
在服务管理页面的默认域名和访问网关列,分别获取
helloworld-go
服务的域名和网关地址。执行以下命令,访问
helloworld-go
服务。curl -H "host: helloworld-go.default.example.com" http://alb-******.cn-beijing.alb.aliyuncs.com # 替换为实际的网关IP和域名。
预期输出:
Hello Knative!
(可选)步骤三:查看服务监控数据
Knative提供开箱即用的可观测能力,在Knative页面,单击监控大盘页签,即可查看目标Knative服务的监控数据情况。如何开启Knative监控大盘,请参见查看Knative服务监控大盘。
相关文档
您可以为Knative服务启用自定义域名,请参见使用自定义域名。
您可以为Knative服务配置HTTPS证书访问,请参见配置HTTPS证书访问。
您可以在Knative中部署gRPC服务,提升网络效率,请参见在Knative中部署gRPC服务。
您可以配置探针(Probe),监测Knative服务的健康状态和可用性,请参见在Knative中配置端口探测。
如果您的ECI实例有连接公网的需求,您需要绑定EIP,请参见为ECI绑定EIP实现公网访问。