如何将IBM FS Cloud容器应用公开至公网

本文详细介绍了在IBM Cloud金融云环境中安全公开容器化应用的解决方案,涵盖私有路径服务、虚拟私有端点及负载均衡器堆叠架构,确保合规性与网络隔离。

如何将IBM FS Cloud容器应用公开至公网

您是否希望在符合IBM Cloud金融云合规要求的前提下,将容器化应用公开至互联网?本指南将逐步演示如何通过IBM Cloud金融云框架安全地公开应用,重点介绍利用IBM Cloud私有路径服务(Private Path Service)通过安全的VPC间连接将外部流量路由至私有集群。

挑战

组织需根据安全策略控制系统内外的信息流。为降低配置错误风险并限制互联网暴露,IBM Cloud金融云框架建议将工作负载和面向互联网的组件分离到不同的VPC中:工作负载VPC和边缘VPC。更多结构细节可参考IBM Cloud金融云文档。

本文提出了一种不使用传输网关(Transit Gateway)而堆叠公有和私有负载均衡器的方法,利用具有稳定IP的VPE(虚拟私有端点)和私有路径简化设置。该解决方案适用于内部工作负载和第三方SaaS,并提供对流量流的细粒度控制,同时支持中央网络安全团队与单个应用团队之间的职责分离。

解决方案架构拓扑

以下图表展示了架构的关键构建块:

关键组件包括:

  • Cloud Internet Services
  • 公有应用负载均衡器(ALB)
  • 私有路径网络负载均衡器(PPNLB)的虚拟私有端点(VPE)
  • 私有路径网络负载均衡器(PPNLB)
  • OpenShift集群
  • Ingress资源
  • 部署PODs

默认情况下,在集群中创建负载均衡器(LB)服务时,会在集群外部的VPC内自动配置一个VPC应用负载均衡器(ALB)。该ALB通过在工作节点上打开的私有NodePort将流量路由到您的应用。

为增强安全性,IBM Cloud金融云建议使用私有集群,这意味着ALB也应是私有的。直接在工作负载VPC中创建公有负载均衡器可能绕过职责分离和互联网访问验证等关键控制,从而削弱安全态势。为保持强边界,金融云建议使用专用的“边缘VPC”来托管处理和过滤互联网流量的网络组件。

VPE与私有路径有助于公有和私有负载均衡器的堆叠。

在集群中部署服务

首先,在集群中部署您的应用。遵循OpenShift应用部署说明部署服务。在本示例中,部署的服务名为echo-server

为应用创建服务

以下YAML文件示例为之前步骤中创建的echo-server应用创建名为echoserverservice的集群服务:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
apiVersion: v1
kind: Service
metadata:
  name: echoserverservice
spec:
  selector:
    app: echo-server
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 8080

配置Ingress资源

为应用创建或修改Ingress资源。以下示例为服务echoserverservice创建Ingress,该名称必须与集群中部署的服务名称匹配。host值应为映射到边缘VPC中公有负载均衡器的公共域名。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: echoserveringressresource
spec:
  rules:
  - host: paris-ppnlb.ibm.eychenne.us
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: echoserverservice
            port:
              number: 8080

创建私有路径负载均衡器

使用OpenShift LoadBalancer服务类型及private-path注解创建私有路径网络负载均衡器(PPNLB)。继续以echo-server为例,以下是负载均衡器服务的YAML定义:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
apiVersion: v1
kind: Service
metadata:
  name: echo-vpc-nlb-eu-de-1
  namespace: openshift-ingress
  annotations:
    service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name: "my-load-balancer"
    service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "private-path" # 必需
    service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: "private" # 必需
    service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets: "02b7-e4cb464c-b3a8-4f95-bb50-5e41c8f8a21a"
spec:
  type: LoadBalancer
  selector:
    ingresscontroller.operator.openshift.io/deployment-ingresscontroller: default
  ports:
   - name: http
     protocol: TCP
     port: 80
   - name: https
     protocol: TCP
     port: 443
  externalTrafficPolicy: Local # 指定Local或Cluster

确保在LoadBalancer服务定义中包含private-path和子网ID注解。注意,Ingress资源监听HTTP端口80和HTTPS端口443。

如果私有路径网络负载均衡器(PPNLB)的池显示不健康,请仔细检查LoadBalancer服务使用的命名空间并验证集群安全组设置。

创建私有路径服务

私有路径网络负载均衡器(PPNLB)就绪后,下一步是通过私有路径服务公开它。

遵循IBM Cloud文档创建私有路径服务,并确保选择之前创建的PPNLB(本示例中为my_load_balancer)。

此步骤完成了工作负载VPC中的配置。设置完成后,私有路径服务使您的后端服务(本例中为echo-server)可通过私有IBM Cloud网络从同一区域的任何VPC访问。

要从另一个VPC(如边缘VPC)使用此服务,您需要创建虚拟私有端点(VPE),我们将在下一步中介绍。

创建虚拟私有端点

VPE允许您从同一区域的VPC私有访问私有路径服务。创建VPE的VPC可以与私有路径服务所在的账户不同。

本示例中,访问服务的VPC称为边缘VPC。

设置VPE步骤:

  1. 遵循IBM的文档创建虚拟私有端点。
  2. 确保使用之前创建的私有路径服务的CRN。
  3. 如果私有路径服务设置为“审查所有请求”,您需要在建立私有连接之前批准连接请求。

创建公有ALB

IBM Cloud支持具有SSL卸载功能的面向公有和私有的应用负载均衡器(ALB)。这些ALB支持第7层(HTTP/HTTPS)和第4层(TCP)负载均衡。

要创建公有ALB,请遵循IBM Cloud文档。确保指定ALB为面向公有的。

此设置的关键部分是将虚拟私有端点(VPE)添加为ALB后端池的成员。

将VPE添加到后端池

附加VPE到池时:

  1. 选择“其他设备”选项。
  2. 手动输入VPE的IP地址和端口。
  3. 如果VPE有三个保留IP,请输入所有三个IP/端口组合作为单独的池成员。

以下示例显示了配置池时如何输入IP和端口值:

确保为ALB创建前端监听器(通常为HTTP端口80或HTTPS端口443),并将之前创建的后端池设置为默认池。

完成!您的设置现已完成。

您的应用现在可以通过公有和私有负载均衡器堆栈安全访问。

作为可选步骤,您可以在DNS中添加CNAME记录,将自定义域名映射到ALB的完全限定域名(FQDN)。

关键词: 前向保密, IBM Cloud, 虚拟私有云

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计