是否可以使用Azure API Management和Azure ACS(kubernetes)作为前端和后端?

时间:2017-03-19 13:48:04

标签: azure networking azure-api-management azure-container-service

我想在Azure上创建一个简单的架构。我的高级设计与下图非常相似(来源:https://www.import.io/post/using-amazon-lambda-and-api-gateway/

enter image description here

我确实希望通过Azure API Management访问内部服务。我在Microfos文档页面上看到的是,这个简单而安全的架构没有作为参考提及:

https://docs.microsoft.com/en-us/azure/container-service/container-service-kubernetes-walkthrough

enter image description here

我有以下问题:

  1. 如果至少有一个NIC使用同一网络,则无法将API管理分配给虚拟网络(为什么?)
  2. 即使使用对等虚拟网络,我也无法访问10.244.X.0 / 24网络(pods的网络),因为k8s虚拟网络只拥有10.240.0.0/16。如何访问群集ips(10.0.0.0/16)和pod ips(10.244.0.0/16)?

2 个答案:

答案 0 :(得分:1)

答案基本上是,尽管设置并不简单。

你需要:

  • API管理的一个额外VNet(编辑:额外的子网就足够了)
  • 一项服务(kubernetes术语)

步骤:

  1. 查看Kubernetes VNet和您创建的额外VNet(测试它)
  2. API管理 - >虚拟网络:更改为外部
  3. 选择虚拟网络一个额外的VNet(让我们称之为' apimgmntvnet ')和子网
  4. 保存它!喝啤酒因为我花了1小时!
  5. 同时在内部公开您的部署: kubectl expose deployment app --port=<serviceport> --name=app --target-port=<containerport> --type=NodePort NodePort 非常重要!LoadBalancer类型触发kubernetes动态配置Azure外部LB以进行Kubernetes安装)
  6. 检查节点IP:Kubernetes(kubectl proxy)BUI上的PORT enter image description here
  7. API管理 - &gt;发布商门户:将您的API修改为IP地址(AgentIP:30361)
  8. 理论上它应该有用。建议从 apimgmntvnet 中的VM开始,然后首先尝试从VM进行对等,然后将其删除(API Management不能成为至少存在一个NIC的VNet的一部分(?!))

答案 1 :(得分:1)

嗯,你不需要额外的VNET,只需要一个额外的子网。该子网可以位于您现有的VNET中。子网的大小可以是Azure支持的最小/29

API Management的Extra Subnet要求来自于它基于PAAS V1(Classic)技术构建的事实。虽然我们可以部署到资源管理器VNET(V2层),但会产生后果。 Azure中的Classic部署模型与资源管理器模型没有紧密耦合,因此如果您在V2中创建资源,V1就不会知道它并且会发生问题,例如API Management尝试使用已经分配的IP到NIC(建立在V2上)。

要了解有关Azure中Classic和Resource Manager模型差异的更多信息,请参阅博客difference between Classic and ResourceManager models