在白名单中开放所需的端口和IP地址

虚拟私有云

此白名单信息仅适用于 VPC 集群。 有关经典集群白名单的信息,请参阅《 在经典集群的白名单中开放必需的端口和 IP 地址 》。

在企业白名单中开放端口

如果企业网络策略通过代理或白名单阻止了您的本地系统访问公共端点,则必须允许从您的本地系统访问 ibmcloud, ibmcloud oc 以及 ibmcloud cr 命令oc 命令calicoctl 命令

在白名单环境下运行 ibmcloudibmcloud ocibmcloud cr 命令

如果企业网络策略通过代理或白名单阻止了您的本地系统访问公共端点,则要运行 ibmcloudibmcloud ocibmcloud cr 命令,您必须允许 TCP 访问 IBM Cloud、Red Hat OpenShift on IBM Cloud 和 IBM Cloud Container Registry。

  1. 请在您的白名单中允许访问 cloud.ibm.com 的 443 端口。

  2. 通过此 API 端点登录到 IBM Cloud 来验证连接。

    ibmcloud login -a https://cloud.ibm.com/
    
  3. 请在您的白名单中允许访问 containers.cloud.ibm.com 的 443 端口。

  4. 验证连接。 如果正确配置了访问权,那么将在输出中显示类似于以下内容的消息。

    curl https://containers.cloud.ibm.com/global/v1/versions
    

    示例输出

    {"kubernetes":[{"major":1,"minor":19,"patch":16,"default":false,"end_of_service":""},{"major":1,"minor":20,"patch":13,"default":false,"end_of_service":""},{"major":1,"minor":21,"patch":7,"default":true,"end_of_service":""},{"major":1,"minor":22,"patch":4,"default":false,"end_of_service":""}],"openshift":[{"major":3,"minor":11,"patch":542,"default":false,"end_of_service":"2022-06-06T12:00:00+0000"},{"major":4,"minor":6,"patch":47,"default":false,"end_of_service":""},{"major":4,"minor":7,"patch":37,"default":false,"end_of_service":""},{"major":4,"minor":8,"patch":21,"default":true,"end_of_service":""}]}
    
  5. 允许访问您计划在允许列表中的端口 443 上使用的 IBM Cloud Container Registry 区域。 全局注册表存储 IBM 提供的公共映像,区域注册表存储您自己的专用或公共映像。 如果您的白名单是基于 IP 地址的,您可以通过查看 此表格,了解在允许访问 IBM Cloud Container Registry 区域服务端点时,哪些 IP 地址已被放行。

  6. 验证连接。 下面是美国东部和美国南部区域注册表的示例。 如果正确配置了访问权,那么会在输出中返回当日的消息。 请注意,如果没有消息,那么将返回 204

    curl -i https://us.icr.io/api/v1/messages
    

从允许列表后面运行 oc 命令

如果企业网络策略通过代理或白名单阻止了您的本地系统访问公共端点,那么要运行 oc 命令,您必须允许该集群访问 TCP。

创建集群时,服务端点 URL 中的端口号会在 30000-32767 范围内随机分配。 您可以选择为可能创建的任何集群开放 30000-32767 端口范围,也可以选择允许对某个特定的现有集群进行访问。

开始之前,允许访问以运行 ibmcloud oc 命令

要允许访问特定集群:

  1. 登录到 IBM Cloud CLI。 根据提示,输入您的 IBM Cloud 凭证。 如果您有联合帐户,请包括 --sso 选项。

    ibmcloud login [--sso]
    
  2. 如果集群位于非 default 资源组中,请将该资源组设定为目标。 要查看每个集群所属的资源组,请运行 ibmcloud oc cluster ls:对于该资源组,您必须至少具有查看者角色

    ibmcloud target -g RESOURCE_GROUP_NAME
    
  3. 获取集群的名称。

    ibmcloud oc cluster ls
    
  4. 检索集群的服务端点 URL。

    • 如果仅填充了专用服务端点 URL,请获取此 URL。 授权集群用户可以通过专用网络上的此端点来访问主节点。
    • 如果同时填充了公共服务端点 URL专用服务端点 URL,请获取这两个 URL。 授权集群用户可以通过公用网络上的公共端点或专用网络上的专用端点来访问主节点。
    ibmcloud oc cluster get --cluster CLUSTER_NAME_OR_ID
    

    示例输出

    ...
    Public Service Endpoint URL:    https://c3.<region>.containers.cloud.ibm.com:30426
    Private Service Endpoint URL:   https://c3-private.<region>.containers.cloud.ibm.com:31140
    ...
    
  5. 允许访问在上一步中获得的服务端点 URL 和端口。 如果您的白名单是基于 IP 的,您可以通过查看 此表格,了解在允许访问服务端点 URL 时,哪些 IP 地址已被放行。

  6. 验证连接。

    • 如果已启用公有云服务端点:
        curl --insecure <public_service_endpoint_URL>/version
        ```
        示例命令
        ```sh {: pre}
        curl --insecure https://c3.<region>.containers.cloud.ibm.com:31142/version
        ```
        示例输出
        ```json {: screen}
        {
            "major": "1",
            "minor": "7+",
            "gitVersion": "v1.7.4-2+eb9172c211dc41",
            "gitCommit": "eb9172c211dc4108341c0fd5340ee5200f0ec534",
            "gitTreeState": "clean",
            "buildDate": "2017-11-16T08:13:08Z",
            "goVersion": "go1.8.3",
            "compiler": "gc",
            "platform": "linux/amd64"
        }
        ```
    * 如果仅启用了私有云服务端点,您必须位于 IBM Cloud 私有网络内,或通过VPN连接连接到该私有网络,才能验证与主服务器的连接。 **注**:您必须[通过专用负载均衡器公开主节点端点](/docs/openshift?topic=openshift-access_cluster#access_private_se),以便用户可以通过 VPN 或 IBM Cloud&reg; Direct Link 连接访问主节点。
    ```sh {: pre}
        curl --insecure <private_service_endpoint_URL>/version
        ```
        示例命令
        ```sh {: pre}
        curl --insecure https://c3-private.<region>.containers.cloud.ibm.com:31142/version
        ```
        示例输出
        ```json {: screen}
        {
            "major": "1",
            "minor": "7+",
            "gitVersion": "v1.7.4-2+eb9172c211dc41",
            "gitCommit": "eb9172c211dc4108341c0fd5340ee5200f0ec534",
            "gitTreeState": "clean",
            "buildDate": "2017-11-16T08:13:08Z",
            "goVersion": "go1.8.3",
            "compiler": "gc",
            "platform": "linux/amd64"
        }
        ```
    
  7. 可选:对您需要显示的每个集群重复上述步骤。

从允许列表后面运行 calicoctl 命令

如果企业网络策略通过代理或白名单阻止了您的本地系统访问公共端点,那么要运行 calicoctl 命令,您必须允许 TCP 访问,以便执行 Calico 命令。

开始之前,允许访问以运行 ibmcloud 命令oc 命令

  1. 从用于允许 oc 命令的主节点 URL 中检索 IP 地址。

  2. 获取 etcd 的端口。

    oc get cm -n kube-system cluster-info -o yaml | grep etcd_host
    
  3. 允许通过主 URL IP 地址和 etcd 端口访问 Calico 策略。

允许在允许列表中访问 Red Hat OpenShift 映像注册表

如果 为内部映像注册表设置了安全外部路由,或 访问 VPC 集群中备份内部映像注册表的 IBM Cloud Object Storage bucket,则必须在企业允许列表中允许访问内部注册表和 IBM Cloud Object Storage 端点。

  1. 如果为内部 Red Hat OpenShift 映像注册表创建外部路由,请允许访问 *.containers.appdomain.cloud 域,以便可以从企业网络访问 image-registry-openshift-image-registry.<cluster_name>-<ID_string>.<region>.containers.appdomain.cloud 路由。

  2. VPC 集群: 如果必须访问用于备份内部 Red Hat OpenShift 映像注册表的 IBM Cloud Object Storage 存储区,或者如果必须从公司网络访问 IBM Cloud Object Storage,请允许访问 *.cloud-object-storage.appdomain.cloud 域。

在其他服务的允许列表或本地允许列表中允许来自集群的流量

允许工作程序节点与受允许列表保护的服务进行通信。

例如,您可能具有在 IBM Cloud内部或外部运行的服务,或者具有受允许列表保护的在本地运行的服务。 您希望允许从集群传入到这些服务的网络流量。 在服务的允许列表中,必须在集群的 VPC 子网上添加公共网关的外部 IP 地址。

如果要允许从受允许列表保护的服务输出到集群,那么必须在服务的允许列表中添加工作程序节点的专用 IP 地址或集群的 VPC 子网 CIDR。 请注意,由于 VPC 集群中的工作程序节点仅具有专用 IP 地址,因此与 VPC 集群工作程序节点的连接只能源自连接到 IBM Cloud 专用网络的系统。

准备工作

  1. 访问 Red Hat OpenShift 集群
  2. 安装 infrastructure-service 命令行插件。 执行 VPC 基础设施命令的前缀是 ibmcloud is
    ibmcloud plugin install infrastructure-service
    

允许从集群到其他服务的入口

要允许从集群进入其他服务,请修改该服务的允许列表或本地允许列表。

  1. 获取在其中创建集群的 工作程序区域VPC

    ibmcloud oc cluster get -c <cluster>
    

    示例输出

    ...
    Worker Zones:                   us-south-1, us-south-2, us-south-3
    Ingress Subdomain:              vpc-prod.us-south.containers.appdomain.cloud
    Ingress Secret:                 vpc-prod
    Creator:                        -
    Public Service Endpoint URL:    https://c2.us-south.containers.cloud.ibm.com:20267
    Private Service Endpoint URL:   https://c2.private.us-south.containers.cloud.ibm.com:20267
    Pull Secrets:                   enabled in the default namespace
    VPCs:                           ff537d43-a5a4-4b65-9627-17eddfa5237b
    ...
    
  2. 对于找到的工作程序区域和 VPC,请确保 在每个工作程序区域中的 VPC 子网上启用了公共网关

  3. 列出子网的公共网关。 在输出中,对于集群所在的专区和 VPC,请记下子网的网关 浮动 IP 地址。

    ibmcloud is public-gateways
    

    示例输出

    ID                                     Name                                       Status      Floating IP      VPC              Zone
    5d308ea5-9f32-43b3-aaae-194d5723a3e5   pgw-b9d45630-c053-11e9-b2f8-79328ce05e7e   available   169.XX.XXX.XX    test-vpc         us-south-1
    f8b95e43-a408-4dc8-a489-ed649fc4cfec   pgw-18a3ebb0-b539-11e9-9838-f3f4efa02374   available   169.XX.XXX.XX    prod             us-south-1
    2ba9a280-fffa-4b0c-bdca-7970f09f9b8a   pgw-73b62bc0-b53a-11e9-9838-f3f4efa02374   available   169.XX.XXX.XX    prod             us-south-2
    057ddef6-631f-4b22-89eb-1e99982a54fa   pgw-64c5cae0-0be2-11ea-8f26-e1565e79a36c   available   52.XX.XXX.XXX    prod             us-south-3
    
  4. 将公共网关 IP 地址添加到服务的允许列表或入站流量的本地允许列表。

  5. 对要允许流量进出的每个集群重复这些步骤。

允许从另一个服务输出到集群

要允许从其他服务输出到集群,请修改该服务的允许列表或本地允许列表。

  1. 获取工作程序节点子网或工作程序节点 IP 地址。
    • 工作节点子网 CIDR 范围:如果您预计会频繁更改集群中的工作节点数量(例如,启用了 集群自动扩展 功能),则可能不需要为每个新增的工作节点更新白名单。 相反,您可以添加该集群所使用的 VPC 子网。 请注意,该 VPC 子网可能会被其他集群中的工作节点共享。
      1. 获取在其中创建集群的 工作程序区域VPC
        ibmcloud oc cluster get -c <cluster>
        
        示例输出
        ...
        Worker Zones:                   us-south-1, us-south-2, us-south-3
        Ingress Subdomain:              vpc-prod.us-south.containers.appdomain.cloud
        Ingress Secret:                 vpc-prod
        Creator:                        -
        Public Service Endpoint URL:    https://c2.us-south.containers.cloud.ibm.com:20267
        Private Service Endpoint URL:   https://c2.private.us-south.containers.cloud.ibm.com:20267
        Pull Secrets:                   enabled in the default namespace
        VPCs:                           ff537d43-a5a4-4b65-9627-17eddfa5237b
        ...
        
      2. 对于集群所在的专区和 VPC 中的子网,请记下 子网 CIDR
        ibmcloud is subnets
        
        示例输出
        ID                                     Name             Status      Subnet CIDR        Addresses   ACL                                                          Public Gateway                             VPC              Zone
        5f5787a4-f560-471b-b6ce-20067ac93439   vpc-prod-dal1    available   10.240.0.0/24      183/256     allow-all-network-acl-ff537d43-a5a4-4b65-9627-17eddfa5237b   -                                          prod             us-south-1
        e3c19786-1c54-4248-86ca-e60aab74ed62   vpc-prod-dal2    available   10.240.64.0/24     183/256     allow-all-network-acl-ff537d43-a5a4-4b65-9627-17eddfa5237b   -                                          prod             us-south-2
        2930a068-51cc-4eca-807b-3f296d0891b4   vpc-prod-dal3    available   10.240.128.0/24    249/256     allow-all-network-acl-ff537d43-a5a4-4b65-9627-17eddfa5237b   -                                          prod             us-south-3
        
    • 单个工作节点的 IP 地址:如果您只有少量工作节点,且这些节点仅运行一个应用程序且无需进行扩展,或者您只想添加一个工作节点,请列出集群中的所有工作节点,并记录其主 IP 地址。 仅添加了这些工作节点。 如果您从集群中删除工作节点或向集群添加工作节点,则必须相应地更新白名单。
        ibmcloud oc worker ls --cluster <cluster_name_or_ID>
        ```
    
  2. 将子网 CIDR 或个别工作程序节点 IP 地址添加到服务的允许列表或出站流量的本地允许列表。
  3. 对要允许流量进出的每个集群重复这些步骤。

在 VPC 安全组或 VPC ACL 中打开端口

如果您设置 VPC 安全组VPC 访问控制列表(ACL) 来保护集群网络,请确保创建规则以允许必要的流量与其他 IBM Cloud 服务进行通信。

在公共允许列表中打开所需的端口

可选:允许传入网络流量用于入口子域监控

如果要使用 Ingress 域健康监控 来监控服务端点的健康状况,必须允许监控服务的入站访问。

默认情况下,监控健康请求通过 HTTPS 发送到端口 443,因此必须允许将来自以下 IP 范围的流量发送到端口 443。 如果健康监控器配置为使用 HTTP,则 allowlist 流量必须指向 80 端口。 此外,如果您使用自定义 TCP 端口,请确保允许输入流量到该端口。

更多信息,请参阅 IBM NS1 Connect 有关监控的文档

IBM NS1 Connect 监控 IP 范围
  • 163.114.225.0/24
  • 163.114.230.0/24
  • 163.114.231.0/24

更新 Kubernetes Service 网络区域的 IAM 允许列表

默认情况下,所有 IP 地址都可用于登录 IBM Cloud 控制台并执行管理群集的操作,如创建、更新、删除或查看凭据。 在 IBM Cloud Identity and Access Management (IAM)控制台中,您 可以通过指定允许访问的IP地址来创建白名单,其余所有IP地址均被限制访问。

如果选择设置 IAM 允许列表,则必须包含一个包含 Kubernetes Service 的网络区域。 否则,您现有的集群将无法正常运行。 这是因为 Kubernetes Service 控制平面需要能够联系 IAM,以部署和管理群集所需的 IBM 服务。 在设置 IBM 允许列表之前,请仔细阅读以下说明。

在允许列表中,您还必须在 Red Hat OpenShift on IBM Cloud 控制平面中为群集所在区域配置网络区域,以便 Red Hat OpenShift on IBM Cloud 可以创建或访问 Ingress ALB 或 Red Hat OpenShift Web 控制台等组件,这需要所有控制平面 IP 地址。

开始之前,请注意:以下步骤要求您修改该用户的 IAM 白名单,该用户的凭据将用于授予集群所在区域和资源组的基础设施权限。 如果您是凭证的所有者,您可以修改您自己的 IAM 白名单设置。 如果您并非凭证所有者,但被分配了 用户管理服务的 “编辑者”或 “管理员” IBM Cloud IAM 平台访问角色,则可以更新凭证所有者的网络。

  1. 登录 IBM Cloud 控制台

  2. 创建网络区域,其中包括所有区域或仅有群集的区域的 Kubernetes Service IP。

    1. 在群集所在的账户中,从菜单栏中单击管理 > 基于上下文的限制

    2. 单击网络区 > 创建

    3. 名称中,为网络区域输入一个描述性名称,如 us-south-kubernetes-service-network-zone

    4. 不要在“允许的 IP 地址”和“**允许的 VPC **”部分输入任何值。

    5. 在“引用服务”部分,选择 Kubernetes Service 并单击 +

    6. 对于“位置”,您可以将该字段留空,以便使用所有位置(适用于其他区域的群集),也可以指定一个区域。

    7. 单击“下一步”,然后检查所选内容。

    8. 单击创建

    9. 对其他区重复此操作。

  3. 将网络区域名称添加到 IAM 允许列表中。

    1. 在菜单栏中,单击管理 > 访问权 (IAM),然后选择设置

    2. 限制 IP 地址访问下,选择启用并提供上一步中的网络区域名称。

    3. 单击应用