在大规模分布式系统、微服务应用流量管理等场景下,特别是已采用或计划采用Istio作为服务网格框架的业务场景中,推荐您使用ASM网关实现Knative服务的流量分发和路由。ASM网关兼容社区Istio规范,控制面组件由ACK托管,简化了服务治理,包括服务调用之间的流量路由与拆分管理、服务间通信的认证安全以及网格的可观测性能力。
前提条件
已创建ASM实例,且ASM实例版本为1.21.6.84及以上,请参见创建ASM实例。
创建ASM实例时,在Kubernetes集群区域,将已创建的ACK托管集群或ACK Serverless集群添加到ASM实例中,并选中启用数据面集群KubeAPI访问Istio资源。
步骤一:部署Knative时选择ASM为服务网关
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在Knative页面的组件管理页签下,单击一键部署Knative,然后在服务网关处选择ASM,然后单击一键部署。
部署成功后,可在Knative中使用服务网格ASM。
步骤二:通过ASM入口网关访问部署的服务
本小节结合一个Knative Service示例演示如何通过ASM完成服务部署。
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在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"
在服务管理页面的访问网关列,获取helloworld-go服务的网关地址。
执行以下命令,访问helloworld-go服务。
curl -H "host: helloworld-go.default.example.com" http://39.XX.XX.XX # 网关的IP和域名请以您的实际数据为准。
预期输出:
Hello Knative!
预期输出表明,服务访问成功。
(可选)步骤三:查看服务监控数据
Knative提供开箱即用的可观测能力,在Knative页面,单击监控大盘页签,即可查看目标Knative服务的监控数据情况。如何开启Knative监控大盘,请参见查看Knative服务监控大盘。
相关文档
您可以为Knative服务启用自定义域名,请参见使用自定义域名。
您可以为Knative服务配置HTTPS证书访问,请参见配置HTTPS证书访问。
您可以在Knative中部署gRPC服务,提升网络效率,请参见在Knative中部署gRPC服务。
您可以配置探针(Probe),监测Knative服务的健康状态和可用性,请参见在Knative中配置端口探测。
如果您的ECI实例有连接公网的需求,您需要绑定EIP,请参见为ECI绑定EIP实现公网访问。