首页 > 解决方案 > 从 kubernetes 访问外部自定义 IP 端口

问题描述

我有一个微服务架构,我的一项服务需要访问一些特定的 IP(3.*.*.*:63815)来连接 WebSocket。因此,从提供商方面,我将我的入口外部 IP 列入白名单。

但是当我尝试连接时,连接没有建立。

我是否需要更新任何防火墙规则或通过 Ingress 在内部添加自定义 IP/端口访问?

对此的任何帮助将不胜感激!

编辑:

  1. 我为此使用 GCP Cloud
  2. 我需要从 POD 连接外部 FIXapi 客户端

标签: kubernetesmicroservicesgoogle-kubernetes-enginekubernetes-ingress

解决方案


我需要同意用户@dishant makwana 的评论并给予更多可见性:

您很可能需要将运行 pod 的节点的 IP 地址列入白名单

假设您想将您的请求发送GKE Pod到位于您project/ organization/之外的服务GCP您应该允许来自您的GCP资源的“本地”位置的流量。

您正在创建的流量的源 IP 可以是:

  • GKE节点外部 IP 地址es - 如果集群未创建私有
  • Cloud NATIP 地址 - 如果您已Cloud NAT私有集群配置。

旁注!

如果您尚未为私有集群创建一个Cloud NAT将无法访问外部资源。


回答以下问题:

我是否需要更新任何防火墙规则或通过 Ingress 在内部添加自定义 IP/端口访问?

如果我们谈论GKE/GCP环境,那么,不。您不需要从GCP侧面修改任何防火墙规则(假设您没有以任何方式重新配置防火墙规则)。

IngressKubernetes/中的资源(不是规则)GKE用于将您自己的应用程序公开给外部访问(它用于入站流量,而不是出站流量)。

引用官方文档:

隐含规则

每个 VPC 网络都有两个隐含的防火墙规则。这些规则存在,但未显示在 Cloud Console 中:

隐含的允许出口规则allow动作为、目的地为0.0.0.0/0且优先级尽可能低的出口规则( 65535) 允许任何实例将流量发送到任何目的地,但被 Google Cloud阻止的流量除外。更高优先级的防火墙规则可能会限制出站访问。如果没有其他防火墙规则拒绝出站流量并且实例具有外部 IP 地址或使用 Cloud NAT 实例,则允许 Internet 访问。有关详细信息,请参阅Internet 访问要求

隐含的拒绝入口规则。一个入口规则,其动作是deny,源是0.0.0.0/0,并且优先级是最低的 ( 65535) 通过阻止传入的连接来保护所有实例。更高优先级的规则可能允许传入访问。默认网络包括一些覆盖此规则的附加规则,允许某些类型的传入连接。

-- Cloud.google.com:VPC:文档:防火墙:默认防火墙规则


其他资源:


推荐阅读