用于从Azure AKS访问Azure Redis服务的网络设置

时间:2018-07-15 15:42:42

标签: azure kubernetes azure-aks

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

我目前正在将该应用程序移至Azure AKS,并打算从群集访问上述所有服务。这些服务将继续是外部的,并且不会驻留在群集内部。

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

我尝试了以下操作:

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

以上方法均无效。我有想念吗?还应该配置什么?

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

2 个答案:

答案 0 :(得分:1)

  

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

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

  

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

您可以尝试遵循以下文档:Use an internal load balancer with Azure Kubernetes Service (AKS)。最后,祝您好运!

答案 1 :(得分:0)

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

另一方面,由于连接字符串的敏感性,建议不要创建ConfigMap,而建议创建一个Secret并将其传递给Deployment以作为环境变量安装或导出。