首页 文章

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

提问于
浏览
3

我想在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

我有以下问题:

如果至少有一个NIC使用同一网络,则无法将

  • API Management分配给虚拟网络(为什么?)

  • 即使使用对等虚拟网络,我也无法访问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 回答

  • 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

  • 1

    答案基本上是 YES 虽然设置并不简单 .

    你需要:

    • API管理的一个额外VNet( EDIT :额外的子网就足够了)

    • 一项服务(kubernetes术语)

    脚步:

    • 查看Kubernetes VNet和您创建的额外VNet(测试它)

    • API Management -> Virtual network :更改为 External

    • 选择 Virtual Network 一个额外的VNet(让我们称之为'apimgmntvnet')和 Subnet

    • Save 它!喝啤酒因为我花了1小时!

    • 同时在内部公开您的部署: kubectl expose deployment app --port=<serviceport> --name=app --target-port=<containerport> --type=NodePortNodePort 很重要!LoadBalancer类型触发kubernetes为Kubernetes安装动态配置Azure External LB)

    • 检查节点IP:Kubernetes上的PORT( kubectl proxy )BUI
      enter image description here

    • API Management -> Publisher portal :将您的API修改为IP地址(AgentIP:30361)

    从理论上说它应该有效 . 建议从apimgmntvnet中的VM开始,首先尝试从VM进行对等,然后将其删除(API Management不能成为至少存在一个NIC的VNet的一部分(?!)) .

相关问题