选择应用曝光服务
通过使用 Red Hat OpenShift 入口控制器或 IBM Cloud® Kubernetes Service NodePort, 或网络负载平衡器,可安全地将应用程序暴露于外部流量。
了解用于公开应用程序的选项
要安全地向外部流量公开应用程序,您可以使用以下服务中的选择。
- Red Hat OpenShift 入口控制器
-
通过使用 Red Hat OpenShift Ingress 控制器设置路由,公开集群中的多个应用程序。 入口控制器使用入口子域作为安全且唯一的公共或私有入口点,用于路由传入请求。 可以使用一个子域,将集群中的多个应用程序公开为服务。 Ingress 控制器解决方案使用三个组件。
- 用于管理集群中 Ingress 控制器的 Ingress 操作程序。
- Ingress 控制器是基于 HAProxy的 Kubernetes 服务,通过对应用程序实施路由规则来管理集群中应用程序的所有入局流量。 此控制器由 Ingress 操作程序管理。 入口控制器监听传入的 HTTP 或 HTTPS 服务请求,然后根据入口资源中定义的规则,仅将请求转发给该应用程序的Pod,并由入口控制器执行。
- 路由资源定义了如何路由和均衡应用程序传入请求的规则。
-
A Route 以
<service_name>-<project>.<cluster_name>-<random_hash>-0000.<region>.containers.appdomain.cloud
格式将服务暴露为主机名。 您的集群中默认部署了一个入口控制器,外部客户端可以使用路由。 Ingress控制器使用服务选择器来查找服务以及支持该服务的端点。 您可以配置服务选择器,以通过一个路径将流量定向到多个服务。 您还可以使用入口控制器为您的主机名分配的 TLS 证书创建非安全或安全路线。 请注意,Ingress控制器仅支持 HTTP 和 HTTPS 协议。 - NodePort
-
使用 NodePort 服务来公开应用程序时,将为该服务分配 30000-32767 范围内的 NodePort 以及内部集群 IP 地址。 要从集群外部访问该服务,请使用任何工作节点的公共或专用 IP 地址,以及格式为
<IP_address>:<nodeport>
的 NodePort。 但是,工作程序节点的公共和专用 IP 地址不是永久固定的。 除去或重新创建工作程序节点时,将为该工作程序节点分配新的公共 IP 地址和新的专用 IP 地址。 NodePort 非常适合用于测试公共或专用访问权,或者仅在短时间内提供访问权。 - LoadBalancer
-
根据集群的基础架构提供者,LoadBalancer 服务类型的实现方式有所不同。
- 经典集群: 网络负载均衡器(NLB)。 每个标准集群供应有四个可移植的公共 IP 地址和四个可移植的专用 IP 地址,这些 IP 地址可以用于为应用程序创建第 4 层 TCP/UDP 网络负载均衡器 (NLB)。 您可以通过公开应用程序需要的任何端口来定制 NLB。 分配给NLB的公共和私有IP地址是永久性的,当集群中重新创建工作节点时,这些地址不会改变。 如果创建了公共 NLB,那么可以为应用程序创建子域,用于通过 DNS 条目注册公共 NLB IP 地址。 还可以对每个子域的 NLB IP 启用运行状况检查监视器。
- VPC 集群: Load Balancer for VPC。 为集群中的应用程序创建 Kubernetes LoadBalancer 服务时,将在集群外部的 VPC 中自动创建第 7 层 VPC 负载均衡器。 VPC 负载均衡器是多专区负载均衡器,通过在工作程序节点上自动打开的专用 NodePort 来路由应用程序的请求。 缺省情况下,还会使用可用于访问应用程序的主机名创建负载均衡器,但您还可以为创建 DNS 条目的应用程序创建子域。
- Ingress
-
您可以使用 Ingress 通过 Red Hat OpenShift Ingress 控制器向外部流量公开应用程序。 Red Hat OpenShift Controller Manager 会将 Ingress 资源转换为 Route 资源,而 Red Hat OpenShift Ingress 控制器会处理这些 Routes。
在不同负载均衡解决方案之间进行选择
现在您已经了解了在 Red Hat OpenShift 集群中展示应用程序 的选项,请选择最适合您工作量的解决方案。
下表比较了每种应用程序公开方法的特点。
特征 | NodePort | LoadBalancer(经典 - NLB) | LoadBalancer(VPC 负载均衡器) | Ingress 控制器 |
---|---|---|---|---|
稳定的外部 IP | 是 | 是 | ||
外部主机名 | 是 | 是 | 是 | |
SSL 终止 | 是* | 是* | 是 | |
HTTP(S) 负载均衡 | 是 | |||
定制路由规则 | 是 | |||
每个路径或服务多个应用程序 | 是 | |||
一致的混合多云部署 | 是 |
*
SSL 终止通过 ibmcloud oc nlb-dns
命令提供。 在经典集群中,仅公共 NLB 支持这些命令。
规划公共外部负载均衡
以公共方式向因特网公开集群中的应用程序。
在 经典 集群中,工作程序节点连接到公用 VLAN。 公用 VLAN 用于确定分配给每个工作程序节点的公共 IP 地址,这将为每个工作程序节点提供一个公用网络接口。 公用联网服务通过向应用程序提供公共 IP 地址和(可选)公共 URL 来连接到此公用网络接口。
在 VPC 集群中,工作程序节点仅连接到专用 VPC 子网。 但是,创建公用联网服务时,会自动创建 VPC 负载均衡器。 VPC 负载均衡器可以通过向应用程序提供公共 URL,将公共请求路由到应用程序。 应用程序以公共方式公开时,具有公共 URL 的任何人都可以向应用程序发送请求。
应用程序以公共方式公开时,具有公共服务 IP 地址或为应用程序设置的 URL 的任何人都可以向应用程序发送请求。 因此,请尽可能少公开应用程序。 仅当应用程序准备好接受来自外部 Web 客户机或用户的流量时,才向公众公开应用程序。
工作程序节点的公用网络接口通过集群创建期间在每个工作程序节点上配置的预定义 Calico 网络策略设置进行保护。 缺省情况下,所有工作程序节点都允许所有出站网络流量。 入站网络流量被阻止(少数端口除外)。 这些端口已打开,以便 IBM 可以监视网络流量,并自动为 Kubernetes 主节点安装安全性更新,同时还可以建立与公用联网服务的连接。 有关这些策略的更多信息(包括如何修改这些策略),请参阅网络策略。
经典集群的公共应用程序联网
要在经典集群中将应用程序公开发布到互联网上,请选择使用路由、NodePorts, NLB或设置入口的应用程序公开方法。 下表描述了每种可能的方法,以及可能要使用该方法的原因和设置该方法的方式。 有关列出的联网服务的基本信息,请参阅 了解 Kubernetes 服务类型。
您不能对一个应用程序使用多种曝光方法。
名称 | 负载均衡方法 | 用例 | 实施 |
---|---|---|---|
路由 | 使用子域公开应用程序并使用定制路由规则的 HTTP(S) 负载均衡 |
为多个应用程序实现定制路由规则和 SSL 终止。 选择这种方法可以保持 Red Hat OpenShift 的本地化;例如,您可以使用 Red Hat OpenShift Web控制台来创建和管理路线。
|
|
NodePort | 工作程序节点上用于在工作程序公共 IP 地址上公开应用程序的端口 | 测试对一个应用程序的公共访问权,或者仅在短时间内提供访问权。 | 创建公共 NodePort 服务。 |
NLB V1.0(+ 子域) | 基本负载均衡,通过IP地址或子域公开应用程序。 | 使用支持 SSL 终止的 IP 地址或子域快速向公众公开一个应用程序。 | 单 或 多专区 集群中的 创建公用网络负载均衡器 (NLB) 1.0。 (可选)注册子域和运行状况检查。 |
NLB V2.0(+ 子域) | DSR负载均衡,通过IP地址或子域公开应用程序。 |
通过支持SSL终止的IP地址或子域,向公众公开一个可能获得高流量的应用程序。 |
|
Ingress 控制器 | 使用子域公开应用程序并使用定制路由规则的 HTTP(S) 负载均衡 | 为多个应用程序实现定制路由规则和 SSL 终止。 | 为缺省公共 Ingress 控制器创建 Ingress 资源。 |
VPC 集群的公共应用程序联网
要在VPC集群中将应用程序公开发布到互联网,请选择使用路由、VPC负载均衡器或设置入口的应用程序公开方法。 下表描述了每种可能的方法,以及可能要使用该方法的原因和设置该方法的方式。 有关列出的联网服务的基本信息,请参阅 了解 Kubernetes 服务类型。
您不能对一个应用程序使用多种曝光方法。
名称 | 负载均衡方法 | 用例 | 实施 |
---|---|---|---|
路由 | 使用子域公开应用程序并使用定制路由规则的 HTTP(S) 负载均衡 | 为多个应用程序实现定制路由规则和 SSL 终止。 选择此方法可保留 Red Hat OpenShift 的本地化;例如,您可以使用 Red Hat OpenShift Web控制台创建和管理路线。 | 通过在具有公共云服务端点的集群中使用缺省公共 Ingress 控制器来 创建路由,或者通过在仅具有私有云服务端点的集群中使用定制公共 Ingress 控制器来 创建路由。 |
VPC 负载均衡器 | 基本负载均衡,以主机名公开应用程序。 | 使用 VPC 负载均衡器分配的主机名快速向公众公开一个应用程序。 | 在集群中 创建公共 LoadBalancer 服务。 您的VPC中会自动创建一个多区域VPC负载均衡器,为您的应用程序的 LoadBalancer 服务分配一个主机名。 |
Ingress | HTTP (S) 负载均衡,通过子域公开应用程序并使用自定义路由规则。 | 为多个应用程序实现定制路由规则和 SSL 终止。 | 为具有公共云服务端点的集群中的缺省公共 Ingress 控制器创建 Ingress 资源,或者 为仅具有私有云服务端点的集群中的定制公共 Ingress 控制器创建 Ingress 资源。 |
规划专用外部负载均衡
以专用方式向仅专用网络公开集群中的应用程序。
在 IBM Cloud Kubernetes Service 的 Kubernetes 集群中部署应用程序后,您可能希望使应用程序仅可供位于集群所有专用网络上的用户和服务访问。 专用负载均衡非常适用于使应用程序可供集群外部的请求使用,而无需向一般公众公开应用程序。 还可以使用专用负载均衡来测试访问,请求路由以及对应用程序进行其他配置后,再使用公用网络服务向公众公开应用程序。
例如,假设为应用程序创建了专用负载均衡器。 可通过以下对象访问此专用负载均衡器:
- 该同一集群中的任何 pod。
- 同一 IBM Cloud 帐户中任何集群中的任何 pod。
- 通过 VPN 连接来连接到负载均衡器 IP 所在子网的任何系统(如果您不在 IBM Cloud 帐户中,但仍在公司防火墙后)。
- 通过 VPN 连接来连接到负载均衡器 IP 所在子网的任何系统(如果您位于其他 IBM Cloud 帐户中)。
- 在经典集群中,如果您启用了 VRF或VLAN跨越,则任何系统都可以连接到同一 IBM Cloud 账户中的任何专用VLAN。
- 在 VPC 集群中:
- 同一 VPC 中的任何系统(如果允许 VPC 子网之间的流量)。
- 有权访问集群所在 VPC 的任何系统(如果允许 VPC 子网之间的流量)。
经典集群的专用应用程序联网
当您的工作节点同时连接到公共和专用虚拟局域网时,您可以通过创建专用路由、NodePorts, NLB或设置入口,使您的应用程序仅可从专用网络访问。 然后,可以创建 Calico 策略以阻止流至服务的公共流量。
工作程序节点的公用网络接口通过集群创建期间在每个工作程序节点上配置的预定义 Calico 网络策略设置进行保护。 缺省情况下,所有工作程序节点都允许所有出站网络流量。 入站网络流量被阻止(少数端口除外)。 这些端口已打开,以便 IBM 可以监视网络流量,并自动为 Kubernetes 主节点安装安全性更新,同时还可以建立与 NodePort、LoadBalancer 和 Ingress 服务的连接。
由于缺省 Calico 网络策略允许流至这些服务的入站公共流量,因此您可以创建 Calico 策略,以改为阻止流至这些服务的所有公共流量。 例如,NodePort 服务通过工作程序节点的专用和公共 IP 地址,在工作程序节点上打开一个端口。 具有可移植专用 IP 地址的 NLB 服务会在每个工作程序节点上打开一个公共 NodePort。 必须创建 Calico DNAT 前网络策略来阻止公共 NodePort。
查看用于专用应用程序联网的以下方法:
名称 | 负载均衡方法 | 用例 | 实施 |
---|---|---|---|
路由 | 使用子域公开应用程序并使用定制路由规则的 HTTP(S) 负载均衡 | 为多个应用程序实现定制路由规则和 SSL 终止。 选择此方法可保留 Red Hat OpenShift 的本地化;例如,您可以使用 Red Hat OpenShift Web控制台创建和管理路线。 | 1。 创建 ClusterIP 服务 以将内部 IP 地址分配给应用程序。2。 创建由专用负载均衡器公开的 Ingress 控制器 。 3。 设置 Red Hat OpenShift 路由。 4。 使用 可选配置定制路由规则。 |
NodePort | 工作程序节点上用于在工作程序专用 IP 地址上公共应用程序的端口 | 测试对一个应用程序的专用访问权,或者仅在短时间内提供访问权。 | 1。 创建 NodePort 服务。 2。 NodePort 服务通过工作程序节点的专用和公共 IP 地址在工作程序节点上打开端口。 必须使用 Calico DNAT 前网络策略来阻止流至公共 NodePort 的流量。 |
NLB 1.0 | 使用专用 IP 地址公开应用程序的基本负载均衡 | 使用专用 IP 地址快速向专用网络公开一个应用程序。 | 1。 创建专用 NLB 服务。 一个带有可移动专用IP地址的NLB在每个工作节点上仍然有一个公共节点端口开放。 2. 请创建 Calico DNAT 前网络策略来阻止流至公共 NodePort 的流量。 |
NLB V2.0 | 使用专用 IP 地址公开应用程序的 DSR 负载均衡 | 公开一个应用程序,该应用程序可能使用 IP 地址接收流至专用网络的高流量。 | 1。 完成 先决条件。 2。 在 单个 或 多专区 集群中创建专用 NLB 2.0。 一个带有可移动专用IP地址的NLB在每个工作节点上仍然有一个公共节点端口开放。 3. 请创建 Calico DNAT 前网络策略来阻止流至公共 NodePort 的流量。 |
Ingress | 使用子域公开应用程序并使用定制路由规则的 HTTP(S) 负载均衡 | 为多个应用程序实现定制路由规则和 SSL 终止。 | 请参阅 使用 Ingress 公开应用程序 |
VPC 集群的专用应用程序联网
要使应用程序仅在 VPC 集群中的专用网络上可用,请根据集群的服务端点设置选择负载均衡部署模式: 公共和私有云服务端点或仅私有云服务端点。 对于每个服务端点设置,下表描述了每种可能的应用程序公开方法,可能使用该方法的原因以及如何对其进行设置。
名称 | 负载均衡方法 | 用例 | 实施 |
---|---|---|---|
路由 | 使用子域公开应用程序并使用定制路由规则的 HTTP(S) 负载均衡 | 为多个应用程序实现定制路由规则和 SSL 终止。 选择此方法可保留 Red Hat OpenShift 的本地化;例如,您可以使用 Red Hat OpenShift Web控制台创建和管理路线。 | 在仅具有私有云服务端点的集群中使用缺省私有 Ingress 控制器来创建 Ingress 控制器,或者 在具有公共云服务端点的集群中使用定制私有 Ingress 控制器来创建路径。 |
NodePort | 工作程序节点上用于在工作程序专用 IP 地址上公共应用程序的端口 | 测试对一个应用程序的专用访问权,或者仅在短时间内提供访问权。 | 创建专用 NodePort 服务。 |
VPC 负载均衡器 | 使用专用主机名公开应用程序的基本负载均衡 | 使用 VPC 负载均衡器分配的专用主机名快速向专用网络公开一个应用程序。 | 在集群中创建专用 LoadBalancer 服务。 这将在 VPC 中自动创建多分区 VPC 负载均衡器,用于将主机名分配给应用程序的 LoadBalancer 服务。 |
Ingress | 使用子域公开应用程序并使用定制路由规则的 HTTP(S) 负载均衡 | 为多个应用程序实现定制路由规则和 SSL 终止。 | 为仅具有私有云服务端点的集群中的缺省专用 Ingress 控制器创建 Ingress 资源,或者 为具有公共云服务端点的集群中的定制专用 Ingress 控制器创建 Ingress 资源。 |