API 访问方式
Cloudpods 的API由各个后端服务分别提供,因此为了访问API,需要API的调用方必须能够直接访问各个服务。每个服务的APi可以通过两个URL地址访问。一个是EndpointType类型为internal的URL,该URL只能在Kubernetes集群内访问;另一个是EndpointType类型为public的URL,该URL为托管平台服务的宿主机的Node Port的访问URL。
调用API的服务有几种部署方案:
部署在Kubernetes集群内
这种情况,API调用方可以直接访问各个服务的service cluster IP,因此可以访问各个服务EndpointType为internal的地址。
和宿主机在同一内网安全域内
这种情况,API调用方可以直接访问宿主机的Node Port,因此可以访问各个服务EndpointType为public的地址。
和平台不在一个同一个网络安全域
这种情况,服务调用方不能直接访问集群的宿主机的Node Port,需要通过一个统一的API入口访问,这样便于做网络安全策略。
统一API入口
为此,API网关提供统一的API入口。各个后端服务API的入口URL统一由API网关转发,需要在访问路径上插入如下的路径:
/api/s/<service_type>
例如,访问region服务的网络(networks)列表服务的正常REST API如下,且需要直接访问region服务的internal或public的Endpoint。
GET /networks
统一通过API网关的REST API如下,其中 compute_v2 为region服务的服务类型。
GET /api/s/compute_v2/networks