Azure Api管理和kubernetes

时间:2018-06-19 18:44:28

标签: api asp.net-core kubernetes azure-api-management

我在kubernetes中有一个休息的api,暴露为NodePort,但是当我尝试在api管理中添加api时,使用下一个网址http://10.35.748.671:31285/swagger/v1/swagger.json破坏了OpenApiSpecification,这显示了一个错误:

无法下载指定的文件。请确保该URL有效并且该文件可公开访问。

这是我的服务说明

kubectl描述svc kservice

Name:                     kservice

Namespace:                default

Labels:                   app=apis

Annotations:              <none>

Selector:                 app=apikb

Type:                     NodePort

IP:                       10.0.0.123

Port:                     <unset>  80/TCP

TargetPort:               80/TCP

**NodePort:                 <unset>  31285/TCP**

Endpoints:                10.35.748.671:80,10.35.748.697:80

Session Affinity:         None

External Traffic Policy:  Cluster

Events:                   <none>

¿如何将api管理与Kubertes中的服务连接?

3 个答案:

答案 0 :(得分:0)

该地址似乎是内部地址。如果托管开放API规范文件的URL不公开,则无法通过Azure Portal导入API。如果是这样的话-将swagger.json下载到您的计算机上,并通过上传该文件导入此API。

答案 1 :(得分:0)

API管理是外观/网关。首先检查一下,您可以直接访问API端点吗?如果否,则需要先解决此问题。

API文档所需的Swagger文件,我假设您必须已创建。如果否,是否从端点创建并访问该文件?

另一个建议,您需要使用静态IP,否则,每当您的VM重新启动时,您的IP都会更改,您的API会抛出502错误。

答案 2 :(得分:-1)

由于以下原因,我们无法从API管理访问Kubernetes服务:

  1. 两者都必须在同一子网中。
  2. 我们必须将kubernetes版本升级到1.10.3,才能看到使用NodePort部署的服务。