将特定请求从 Kubernetes 集群转发到代理机器以访问支持互联网的服务

问题描述 投票:0回答:1

我们有一个微服务应用程序,它使用付费软件来做一些特定的操作。本软件使用在线许可验证才能正常运行。

由于客户 Kubernetes 集群在 VPC 中,无法访问互联网,如果不将其转发到可以访问许可证服务器域的代理机器,则无法进行此在线许可证验证。

许可证服务器位于特定域,因此此流量必须路由微服务的容器一个代理机器

只有这台代理机器可以访问互联网并且应该将此流量转发到软件供应商的许可证服务器。

在 VM 世界中,可以这样做:

sysctl net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -p tcp --dport port -j DNAT --to-destination ip:port
iptables -t nat -A POSTROUTING -j MASQUERADE

但是在 Kubernetes 集群中推荐的方法是什么。

这是所有服务之间所需通信的简单图表:

kubernetes reverse-proxy kube-proxy
1个回答
0
投票

如果外部供应商的 url 没有硬编码,您可以在 kubernetes 中使用

ExternalName
服务。 因此您可以将 CNAME 分配给外部 ip 地址,并在您的应用程序中使用 CNAME 作为外部供应商的 url:

kind: Service
apiVersion: v1
metadata:
  name: myvendor
spec:
  type: ExternalName
  externalName: x.x.x.x <-- IP Address

然后在您的应用程序中使用

myvendor
作为 url。 它将由内部 kubernetes dns 服务器处理。

© www.soinside.com 2019 - 2024. All rights reserved.