2

我们有一个在 Ubuntu VM 上运行的应用程序。此应用程序连接到 Azure Redis、Azure Postgres 和 Azure CosmosDB(mongoDB) 服务。

我目前正在将此应用程序移动到 Azure AKS,并打算从群集访问所有上述服务。服务将继续在外部,不会驻留在集群内。

我试图了解如何配置服务和 aks 的网络/防火墙,以便集群内的 pod 可以访问上述服务或任何 Azure 服务。

我尝试了以下方法:

  • 创建了一个包含所有服务的连接参数(公共 ip/地址、用户名/密码、端口等)的 configMap,并在部署资源中使用了这个 configMap。
  • 将所有服务的连接参数硬编码为容器映像中的环境变量
  • 在服务的防火墙/入站规则中,我添加了 AKS API ip,单个节点 ips

以上都没有奏效。我错过了什么吗?还应该配置什么?

我在 minikube 上本地测试了设置,所有服务都在我的本地机器上运行,并且运行良好。

4

2 回答 2

1

我目前正在将此应用程序移动到 Azure AKS,并打算从群集访问所有上述服务。

我假设您想让所有服务相互访问并且所有服务都在 AKS 集群中?如果是这样,我建议您在 AKS 群集中配置内部负载均衡器。

内部负载平衡使运行在与 Kubernetes 集群相同的虚拟网络中的应用程序可以访问 Kubernetes 服务。

您可以尝试遵循以下文档:将内部负载均衡器与 Azure Kubernetes 服务 (AKS) 结合使用。最后,祝你好运!

于 2018-07-16T01:54:54.937 回答
0

如本文所述,Azure 中的出站流量经过 SNAT 转换。如果您的 AKS 集群中已有服务,则来自集群中所有 pod 的出站连接将通过第一个 LoadBalancer 类型的服务 IP;我强烈建议您创建一个唯一目的是拥有一致的出站 IP。您还可以使用规范预先创建一个公共 IP 并按照本文所述使用它。LoadBalancerIP

附带说明一下,由于连接字符串的敏感性,而不是 ConfigMap,我建议您创建一个 Secret 并将其传递给您的 Deployment,以便安装或导出为环境变量。

于 2018-07-15T18:33:25.490 回答