IBM Cloud Docs
在 Satellite 位置和集群中定制网络设置

在 Satellite 位置和集群中定制网络设置

Satellite Red Hat CoreOS

您可以使用若干功能来定制 Satellite 网络设置,以更好地隔离和分段在您所在位置运行的服务和工作负载。 查看以下章节了解更多信息。

这些自定义功能仅适用于 "Red Hat"CoreOS-enabled位置。

根据要应用的网络定制,在创建位置时,创建集群时或设置位置和集群后,可能需要在 CLI 中指定某些选项。 以下标记指示何时应用定制。

  • 在创建位置期间: 必须在创建位置期间从 CLI 应用这些定制。
  • 在集群创建期间: 可以在集群创建期间从 CLI 应用这些定制。
  • 在创建位置和集群之后: 可以在创建位置和集群之后应用这些定制。

创建位置时定义定制子网

在创建位置期间

在 CLI 中创建位置时,可以定义以下参数以定制位置中的联网。 有关更多信息,请参阅 ibmcloud sat location create 命令参考。

您可以指定 --pod-subnet 选项以指定定制子网 CIDR 来为 pod 提供专用 IP 地址。 只有同时使用 "--coreos-enabled 标志启用Red Hat CoreOS时,才能使用该选项。 子网必须至少为 "/23 或更大。 默认值为 "172.16.0.0/16

您还可以指定 --service-subnet 选项,以指定用于为服务提供专用 IP 地址的定制子网 CIDR。 只有同时使用 "--coreos-enabled 标志启用Red Hat CoreOS时,才能使用该选项。 子网必须至少为 "/24 或更大。 默认值为 "172.20.0.0/16

创建位置时定义 pod 网络接口

在创建位置期间

在 CLI 中创建位置时,可以定义 --pod-network-interface 以设置 pod 网络接口。 可用的方法为 can-reachinterface

  • 要提供直接 URL 或 IP 地址,请指定 can-reach=<url>can-reach=<ip_address>。 如果网络接口可以访问提供的 URL 或 IP 地址,那么将使用此选项。 例如,使用 can-reach=www.exampleurl.com 来指定 URL,使用 can-reach=172.19.0.0 来指定 IP 地址。
  • 要选择具有 Regex 字符串的接口,请指定 interface=<regex_string>; 例如,interface=eth.*

有关更多信息,请参阅 ibmcloud sat location create 命令参考。

创建集群时定义 pod 网络接口

在集群创建期间

在 CLI 中创建集群时,可以定义 --pod-network-interface 以设置 pod 网络接口。 可用的方法为 can-reachinterface

  • 要提供直接 URL 或 IP 地址,请指定 can-reach=<url>can-reach=<ip_address>。 如果网络接口可以访问提供的 URL 或 IP 地址,那么将使用此选项。 例如,使用 can-reach=www.exampleurl.com 来指定 URL,使用 can-reach=172.19.0.0 来指定 IP 地址。
  • 要选择具有 Regex 字符串的接口,请指定 interface=<regex_string>; 例如,interface=eth.*

有关更多信息,请参阅 ibmcloud oc cluster create satellite 命令参考。

限制对 Satellite 集群的访问

在创建位置和集群之后

创建位置和集群后,可以使用 ibmcloud ks cluster master satellite-service-endpoint allowlist add 命令将子网添加到 Satellite 集群的服务端点允许列表。 允许通过Satellite服务端点向群集主控发送来自子网的授权请求。 必须 启用 允许列表才能应用限制。

使用 Calico 主机端点创建网络策略

在创建位置和集群之后

如果在 V 4.12 和更高版本上创建 Satellite 集群,那么会针对每个工作程序节点的网络接口将 Calico Hostendpoint 实例部署到该集群。

您可以使用这些 Hostendpoint 实例在添加到每个 Hostendpoint 实例的 “ibm-cloud.kubernetes.io/interface-name: <network_interface_name>” 标签的帮助下定义全局网络策略。

除此标签外,还会为其他定制选项添加所有工作程序节点的标签。

这些 Hostendpoints 具有 “projectcalico-default-allow" 概要文件,这意味着当您更新到 4.12时,这些 Hostendpoints 可能会更改先前期望的行为。

在更新到 4.12之前,请确保所有先前期望的网络规则,策略 Hostendpoints 在更新之后也同样工作。

有关更多信息,请参阅 Calico 文档

限制 NodePort 服务访问权

在创建位置和集群之后

缺省情况下,可以在集群可用的所有网络接口上访问 NodePort 服务,例如 0.0.0.0

但是,在多个网络可供主机使用的 Satellite 位置中,您可以限制服务的可用网络接口。

要限制范围,请在集群级别限制 NodePort 服务的侦听地址。 此限制允许集群管理员通过使用 IP 子网作为允许的侦听地址范围来限制对特定网络接口的访问。 完成以下步骤以重新配置 kube-proxy 组件,从而限制 NodePort 服务的侦听地址范围。

错误配置 node-port-addresses 可能会使您的服务与有效源隔离。 确保规划服务所需的所有必需子网。IBM Cloud 不需要访问任何子网来管理集群。

  1. 访问 Red Hat OpenShift 集群

  2. 准备要允许访问 NodePort 服务的计划源子网 CIDR 列表。

  3. 运行以下命令以获取 network.operator.openshift.io 配置并保存副本,以防需要还原更改。

    kubectl get network.operator.openshift.io cluster -o yaml
    
  4. 编辑 network.operator.openshift.io 配置并在 spec 部分下设置子网列表,并包含 NodePort 服务所需的子网。

    spec:
      kubeProxyConfig:
        proxyArguments:
          node-port-addresses:
          - 192.0.2.0/24
          - 198.51.100.0/24
    
  5. 保存更改并将其应用于集群。

    oc apply -f updated-network-config.yaml
    
  6. 对于集群版本 4.10.x 和更低版本,请将集群网络操作员的管理状态设置为 Unmanaged

     oc patch network.operator.openshift.io cluster --type=merge --patch  '{"spec": {"managementState": "Unmanaged"}}'
    
  7. 重新启动 "kube-proxy DaemonSet以应用更改。 该操作不会造成干扰。

    oc rollout restart ds -n openshift-kube-proxy openshift-kube-proxy
    
  8. 等待所有 kube-proxy Pod 重新启动。 运行以下命令检查状态。

    oc get po -n openshift-kube-proxy --selector app=kube-proxy
    
  9. 对于 4.10.x 及更低版本的集群版本,将集群网络操作员的管理状态重置为 Managed。 请注意,此操作可能会重新启动代理 pod。

     oc patch network.operator.openshift.io cluster --type=merge --patch  '{"spec": {"managementState": "Managed"}}'
    

重新启动所有 pod 后,将使用受限子网配置集群。 您可以重复这些步骤以根据需要更新或除去子网列表。

您可以通过按服务使用 NetworkPolicies 来进一步限制流量。