3

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

在此处输入图像描述

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

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

在此处输入图像描述

我有以下问题:

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

2 回答 2

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=NodePortNodePort很重要!LoadBalancer 类型触发 kubernetes 为 Kubernetes 安装动态配置 Azure 外部 LB)
  6. 检查 kubernetes ( kubectl proxy) BUI 上的节点 IP:PORT在此处输入图像描述
  7. API Management -> Publisher portal : 将你的 API 修改为 IP 地址 (AgentIP:30361)

理论上它应该工作。建议从apimgmntvnet中的 VM 开始,先尝试从 VM 对等,然后将其删除(API 管理不能是至少存在一个 NIC 的 VNet 的一部分 (?!) )。

于 2017-03-22T16:21:22.843 回答
1

好吧,您不需要额外的 VNET,而只需要额外的子网。该子网可能位于您现有的 VNET 中。子网大小可以是Azure 支持的最小/29 。

API 管理的额外子网要求来自这样一个事实,即它是基于 PAAS V1(经典)技术构建的。虽然我们可以部署到资源管理器 VNET(V2 层)中,但这样做会产生后果。Azure 中的经典部署模型与资源管理器模型没有紧密耦合,因此如果您在 V2 中创建资源,V1 不知道它,并且可能会出现问题,例如 API 管理尝试使用已分配的 IP到 NIC(基于 V2 构建)。

要了解有关 Azure 中 Classic 和 ResourceManager 模型差异的更多信息,请参阅Classic and ResourceManager 模型之间的博客差异

于 2017-03-22T16:44:56.367 回答