与内部 Kubernetes 服务进行预部署开发通信

Pre-deploy development communication with an Internal Kubernetes service

我正在研究迁移到 Kubernetes(来自 AWS ECS)。但是一直没有解决依赖内部服务的本地开发问题

让我详细说明:

在开发和测试微服务时,在将它们部署为 Kubernetes 服务之前,我希望能够与其他内部 Kubernetes 服务通信。由于有超过 20 个微服务,我有一个 Kubernetes 集群 运行ning 最新的开发版本。我不能 运行 MiniKube。

示例:

我正在开发需要访问电子邮件服务的用户服务。邮件服务已经在 Kubernetes 上,是一个内部服务。

因此,在部署用户服务之前,我希望能够与 dev/testing 的内部电子邮件服务通信。我无法使用 K8S nice 服务发现环境变量。

由于我们目前已经有一个 VPN 最多可以将 DEV env 限制为 testers/development,我可以使用这个 VPN 来提供对 Kubernetes 服务 IP 地址的访问吗?我确实在与 VPN 所在的同一 VPC 上安装了 Kubernetes DEV-env。

如果您将内部服务部署为 NodePort 类型,那么您可以通过该节点端口通过 VPN 访问它们。 NodePorts 可以动态分配,或者您可以将它们自定义为 'static' 您预先知道的位置。

在本地机器上开发应用程序时,您可以通过该 NodePort 访问依赖服务。

作为替代方案,您可以使用 kubectl (https://kubernetes.io/docs/user-guide/connecting-to-applications-port-forward/) 中的 port-forwarding 将 pod 转发到您的本地计算机。 (注意:这只处理到 pod 的流量而不是服务)。

Telepresence (http://telepresence.io) 专为这种情况而设计,但它假定开发人员具有对 staging/dev 集群的 kubectl 访问权限。