服务调用
名词定义
容器应用:由容器服务配置和数据卷配置组成的应用。
函数应用:由函数服务配置和数据卷配置组成的应用。
功能简介
"服务调用"是指在边缘节点上,可以通过约定的域名地址访问到运行在边缘计算平台上的其他服务。服务间的调用本质上基于 Kubernetes Pods 的网络模型和 Kubernetes Service 资源,更多信息请参阅 Kubernetes文档:使用 Service 连接到应用。
使用流程
服务调用分为两类,分别是调用"容器应用"的服务、调用"函数应用"的服务。
容器应用
- 创建容器应用
在应用列表页面点击"创建应用"进入应用创建页面。填写应用信息,然后选择"容器应用",并在服务配置信息界面填写需要暴露的"容器端口"。 配置了"容器端口"之后,边缘计算平台会为该服务在端侧创建一个 Kubernetes Service 资源,用于代理到该服务对应的 Pods 的网络流量。如何创建应用具体可以参考 应用部署。
比如,创建了一个服务,用于部署 nginx 程序,并配置了 80 容器端口:
部署到边缘计算节点上后,通过 kubectl 命令查看,可以观察到已经创建了一个 nginx 名称的 Kubernetes Service 资源。
其中,Kubernetes Service 名称与服务配置信息界面中的服务名称相同。
接下来我们在边缘节点上的 Kubernetes 集群中,通过 Kubernetes Service 去访问 nginx 应用。
- 服务调用
我们可以通过上一步中的 服务名:容器端口号 去访问具体的服务,比如对于上一步部署的 nginx 服务,可以使用 nginx:80 去访问 nginx 服务。例如对于 http 服务,可以按照如下格式请求:
http://[service]:[port]/
其中 service 表示应用中的服务名称,port 表示该服务配置中的容器端口。
此外,边缘计算平台也会有一些系统容器应用,部署在不同的 Kubernetes 命令空间中,目前可以访问的系统容器应用有 baetyl-broker、baetyl-function,可以按照如下格式请求:
[baetyl-broker|baetyl-function].baetyl-edge-system:[port]
其中 port 是系统容器应用的端口,支持配置;baetyl-edge-system 是系统容器应用所在的 Kubernetes 命令空间。
函数应用
对于函数应用的调用方式,与容器应用有所不同。端侧函数计算框架由前端代理和后端函数运行时(函数应用)两部分组成。baetyl-function 提供前端代理,是函数入口,通过暴露 HTTP 接口供其他服务调用,然后将请求透传给后端的函数运行时模块。
我们可以按照如下格式去请求某一个函数应用:
https://baetyl-function.baetyl-edge-system:50011/[function-service]/[function]
其中 50011 为 baetyl-function 提供服务的端口;function-service 是函数应用的服务的名称,function 表示函数入口,如果 funciton 字段不指定的话,后端函数运行时会默认选择自身函数列表中的第一个函数。