2.8. OI 网络配置 GDC 连接

预计完成时间:6-8 小时

可操作组件的所有者:PNET

2.8.1. 概览

此流程步骤会预配配置文件,以允许 Operations Suite 基础架构 (OI) 和 GDC 网络建立连接。

这些步骤需要访问一些 GDC 文件,并且需要连接到 GDC 实例的根管理员集群,才能检索运行时网络信息。

2.8.2. 准备工作

在部署流程的此阶段,必须满足以下条件:

  1. 两个 OIR 交换机均已连接线缆、开启电源、升级到相应版本,并已应用基本配置和 ACL 配置。

  2. 两个 OIF 防火墙均已连接线缆、开机、升级到相应版本、启用 FIPS-CC 模式,并已应用基本配置。

  3. 为了完成整个 GDC 连接配置,GDC 实例必须已完成网络引导,并已从 kind 集群移至根管理员集群。

2.8.3. 准备工作

收集以下信息并设置环境变量,为后续步骤准备环境。

OI 可以通过两种方式连接:本地连接或远程连接。本地连接使用同一数据中心内机架之间的光纤连接将 OI 直接连接到 GDC。 远程连接使用长距离传输连接到其他位置。此规范可在 interconnect.yaml 文件中提供,该文件是预配 GDC 互联配置所必需的。 此文件包含配置 GDC 互连所需的所有信息。

2.8.3.1. 互连 YAML 规范

属性
说明
示例
zones
[ ] 地图
有关 OI 部署需要连接到的 GDC 单元的信息。

如需连接到 GDC 单元列表,请指定一个
列表,其中包含每个地区中每个 GDC 单元的信息。 zones可用区选项
示例:
zones:
- zoneName: kb
- uplinkSpeed: 10
localInstanceIDs: 2

remoteInstanceIDs:
- 1
- cellCfg: path/to/cellcfg

- zoneName: ah
- uplinkSpeed: 100
localInstanceIDs: 3

- cellCfg: path/to/cellcfg

2.8.3.2. 可用区选项

interconnect.yaml 文件中包含有关 GDC 单元格的信息:

属性
说明
使用情况
zoneName
字符串
OI 部署需要连接到的 GDC Cell 缩写。
zones:
- zoneName: kb
uplinkSpeed
uint32
(可选)提供连接的上行速度:(10100)。 值:10100
默认值:10

uplinkSpeed: 100
localInstance
int
ocit.yaml 文件中 OI 部署网站的 InstanceID
本地连接使用同一数据中心内机架之间的光纤连接,将 Operations Suite 基础设施核心机架 (OIR) 站点直接连接到 GDC。
zones:
- zoneName: kb
localInstanceIDs: 1
remoteInstance
[ ] int
来自 ocit.yaml 文件的 OI 部署站点的 InstanceID(s)
远程连接使用长途传输连接到其他位置。 可以提供 remoteInstance 值列表,以便生成所有 OIR 网站的配置,以连接到给定的 GDC 单元。
zones:
- zoneName: kb
remoteInstanceIDs:
- 1



zones:
- zoneName: kb
remoteInstanceIDs:
- 1

- 2

- 3



cellCfg
字符串
GDC 单元格配置路径,其中包含有关互连的所有信息。此文件将用于为 OIR 生成所有互连配置。\ 如果 interconnect.yaml 文件中未提供 `cellCfg`,则当 `zoneName` 与 GDC cell 缩写匹配时,occonfig 工具会使用 GDC cell 引导加载程序中的 Kubernetes API 来提取互连信息。
zones:
- cellCfg: /path/to/cellcfg

如果是本地连接,请按如下方式配置 interconnect.yaml 文件:

zones:
  - zoneName: ah
    uplinkSpeed: 100
    localInstanceID: 1
    cellCfg: /path/to/cellcfg

如果这是远程连接,请将 interconnect.yaml 文件配置为:

zones:
  - zoneName: ah
    uplinkSpeed: 100
      remoteInstanceIDs:
      - 2
    cellCfg: /path/to/cellcfg

对于多站点 OI 部署,请将 interconnect.yaml 文件指定为:

zones:
  - zoneName: ah
    uplinkSpeed: 100
    localInstanceID: 1
    remoteInstanceIDs:
      - 2
    cellCfg: /path/to/cellcfg

2.8.3.3. WAN 选项

下表包含 interconnect.yaml 文件中有关 L3-WAN 的信息。

如果您预配 L3-WAN 配置,请确保生成的基本配置已启用 L3-WAN 功能标志,并已声明 wan-transit ASN。

属性 类型 说明
wanName 字符串 连接到 OIC 的 L3-WAN 的名称。用于接口和 BGP 邻居关系的说明。
operationsCIDRs [ ] CIDR L3 WAN 预期且 OIC 允许的 CIDR 地址块集。这有助于在客户 NOC 和 OC-WORKSTATIONS 之间建立连接。
实例 需要连接到 L3-WAN 的每个实例的配置。
instanceID 整数 要为其生成配置以连接到所提供的 L3-WAN 的 OIC 实例的实例 ID。
bgp L3-WAN 的 BGP 配置。
asn 整数 用于设置 eBGP 连接的 L3-WAN PE 节点的 BGP ASN。
设备 每个 OCCORE 交换机的具体配置。
deviceName 字符串 设备名称,用于说明中。应等于从 ocit.yaml 文件 (ocit config generation) 生成的配置文件名称。
上行链路 连接到 L3-WAN PE 节点的端口的特定配置。
uplinkName 字符串 用于接口说明的接口名称。
bgpPassword 字符串 对等互连的 BGP 密码(明文)。
ip 字符串 连接到 L3-WAN 的 PE 节点的本地端口的 IPv4 地址。
网关 字符串 连接到 PE 节点的远程端口的 IPv4 地址,也用作 BGP 邻居地址。
子网 字符串 连接到 PE 节点的接口的子网定义。
端口 整数 用于连接到 PE 节点的 OCCORE 交换机上的物理端口号。
子接口 整数 在物理端口上使用的子接口 ID (dot1q 标记)(如果有)。

2.8.3.3.1. 配置示例

以下示例展示了一个 interconnect.yaml 文件,其中运营套件基础设施核心机架 (OIR) 与 L3-WAN 对等互联,在 occoresw01 上有两个上行链路,在 occoresw02 上有一个上行链路:

zones:
  - zoneName: kb
    uplinkSpeed: 10
    localInstanceID: 1
    cellCfg: /path/to/cellcfg
wan:
  - wanName:L3WANName
    operationsCIDRs:
      - ipFamily: IPv4
        ipv4: 172.22.48.0/24
      - ipFamily: IPv4
        ipv4: 172.22.49.0/24
      - ipFamily: IPv4
        ipv4: 172.22.50.0/24
      - ipFamily: IPv4
        ipv4: 172.22.51.0/24
    instances:
    - instanceID: 1
      bgp:
        asn: 65515
      devices:
        - deviceName: occoresw101
          uplinks:
          - uplinkName: AA
            bgpPassword: admin!123
            numberedIpGroup:
              ipFamily: IPv4
              ipv4:
                ip: 10.1.0.1
                subnet:
                  gateway: 10.1.0.0
                  subnet: 10.1.0.0/31
            port:
              port: 33
          - uplinkName: AB
            bgpPassword: admin!123
            numberedIpGroup:
              ipFamily: IPv4
              ipv4:
                ip: 10.1.0.3
                subnet:
                  gateway: 10.1.0.2
                  subnet: 10.1.0.2/31
            port:
              port: 34
              subinterface: 100
        - deviceName: occoresw102
          uplinks:
          - uplinkName: AC
            bgpPassword: admin!123
            numberedIpGroup:
              ipFamily: IPv4
              ipv4:
                ip: 10.2.0.3
                subnet:
                  gateway: 10.2.0.2
                  subnet: 10.2.0.2/31
            port:
              port: 35

2.8.4. 生成开关配置

这些步骤会生成补丁配置,以应用于网络设备,从而为 GDC 配置连接。

生成交换机配置:

occonfigtool generate cell config -c /path/to/interconnect.yaml -o path/to/ocit.yaml

这会为每个网站生成以下配置文件:

配置文件 设备 函数
occoresw101.incremental occoresw101 用于修补设备以连接到 GDC 实例的配置
occoresw101.acl occoresw101 用于修补 ACL 以通过 GDC 网络强制执行流量的配置。
occoresw102.incremental occoresw102 用于修补设备以连接到 GDC 实例的配置
occoresw102.acl occoresw102 用于修补 ACL 以通过 GDC 网络强制执行流量的配置。
ocsw101.incremental ocs1w01 用于修补设备以连接到 GDC 实例的配置
ocsw101.acl ocsw101 用于修补 ACL 以通过 GDC 网络强制执行流量的配置。
ocsw102.incremental ocsw102 用于修补设备以连接到 GDC 实例的配置
ocsw102.acl ocsw102 用于修补 ACL 以通过 GDC 网络强制执行流量的配置。

2.8.5. 生成防火墙政策

为了生成防火墙规则,occonfigtool 需要访问根管理员集群的 Kubernetes API。确保 KUBECONFIG 环境变量已设置为 root-admin-kubeconfig

export KUBECONFIG=/root/release/root-admin/root-admin-kubeconfig
export OCIT_CONFIG_FILE=/path/to/ocit.yaml
export OCIT_INTERCONNECT_CONFIG_FILE=/path/to/interconnect.yaml

运行以下命令以生成防火墙规则:

occonfigtool generate fwrules -c ${OCIT_INTERCONNECT_CONFIG_FILE:?} -o ${OCIT_CONFIG_FILE:?}
配置文件 设备 函数
firewall-rules.base occorefw01 用于修补设备以连接到 GDC 实例的配置

2.8.6. 应用配置

使用输出文件,按照与上一步中交换机防火墙相同的流程,将配置应用于相应的网络设备。

2.8.7. 更新 GDC RoutePolicy 资源

GDC 使用路由政策来强制执行允许将哪些网络通告到路由表。

将 OI 添加为外部网络时,我们需要更新 RoutePolicy 自定义资源以支持新网络。

这需要使用 kubectl 访问根管理员集群。确保已设置相应的 KUBECONFIG 变量:

export KUBECONFIG=/root/deploy/root-admin/root-admin-kubeconfig

如需确认,请执行以下操作:

kubectl get routepolicy -n gpc-system

您应该会看到以下输出或类似输出:

NAME                                     AGE
customerpeering-routepolicy              19d
datacenter-routepolicy                   19d
mgmtnetworkoperationcenter-routepolicy   19d
networkoperationcenter-routepolicy       19d

在这些步骤中,我们将检查 networkoperationcenter-routepolicymgmtnetworkoperationcenter-routepolicy

2.8.7.1. 修补数据网络路由政策

ocinfo.opscenter.local.txt 中检索以下子网(包括网络和前缀长度)。

  • OCCORE-SERVERS,在以下示例中用作 $OCCORE_SERVERS_NET
  • OC-WORKSTATIONS,在以下示例中用作 $OC_WORKSTATIONS_NET

使用以下值填充以下变量,以调整路由政策:

export OCCORE_SERVERS_NET=$OCCORE_SERVERS_NET
export OC_WORKSTATIONS_NET=$OC_WORKSTATIONS_NET

例如:

export OCCORE_SERVERS_NET=172.21.0.0/24
export OC_WORKSTATIONS_NET=172.21.32.0/24

设置环境变量后,运行以下 kubectl 命令以更新路由政策:

kubectl patch routepolicy/networkoperationcenter-routepolicy -n gpc-system \
  --type=json -p="[
    {
        'op': 'add',
        'path': '/spec/in/ipPrefixList/0',
        'value': {
            'action': 'Permit',
            'ipPrefix': '${OCCORE_SERVERS_NET:?}',
            'prefixLengthMatchers': [
                {
                    'operator': 'LE',
                    'prefixLength': 32
                }
            ]
        }
    }
]"

kubectl patch routepolicy/networkoperationcenter-routepolicy -n gpc-system \
  --type=json -p="[
    {
        'op': 'add',
        'path': '/spec/in/ipPrefixList/0',
        'value': {
            'action': 'Permit',
            'ipPrefix': '${OC_WORKSTATIONS_NET:?}',
            'prefixLengthMatchers': [
                {
                    'operator': 'LE',
                    'prefixLength': 32
                }
            ]
        }
    }
]"

输出示例:

routepolicy.system.private.gdc.goog/networkoperationcenter-routepolicy patched

2.8.7.2. 补丁管理网络路由政策

ocinfo.opscenter.local.txt 中检索以下子网(包括网络和前缀长度)。

  • OCCORE-JUMPHOSTS,在以下示例中用作 $OCCORE_JUMPHOSTS_NET
  • OCCORE-ILOS,在以下示例中用作 $OCCORE_ILOS_NET

使用以下值填充以下变量,以调整路由政策:

export OCCORE_JUMPHOSTS_NET=$OCCORE_JUMPHOSTS_NET
export OCCORE_ILOS_NET=$OCCORE_ILOS_NET

例如:

export OCCORE_JUMPHOSTS_NET=172.21.2.0/27
export OCCORE_ILOS_NET=172.21.2.32/27

设置环境变量后,运行以下 kubectl 命令以更新路由政策:

kubectl patch routepolicy/mgmtnetworkoperationcenter-routepolicy -n gpc-system \
  --type=json -p="[
    {
        'op': 'add',
        'path': '/spec/in/ipPrefixList/0',
        'value': {
            'action': 'Permit',
            'ipPrefix': '${OCCORE_JUMPHOSTS_NET:?}',
            'prefixLengthMatchers': [
                {
                    'operator': 'LE',
                    'prefixLength': 32
                }
            ]
        }
    }
]"

kubectl patch routepolicy/mgmtnetworkoperationcenter-routepolicy -n gpc-system \
  --type=json -p="[
    {
        'op': 'add',
        'path': '/spec/in/ipPrefixList/0',
        'value': {
            'action': 'Permit',
            'ipPrefix': '${OCCORE_ILOS_NET:?}',
            'prefixLengthMatchers': [
                {
                    'operator': 'LE',
                    'prefixLength': 32
                }
            ]
        }
    }
]"

输出示例:

routepolicy.system.private.gdc.goog/mgmtnetworkoperationcenter-routepolicy patched