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
[ ] map
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 儲存格縮寫。
zones:
- zoneName: kb
uplinkSpeed
uint32
(選用) 提供連線的上傳速度:(10100)。 值:10100
預設值:10

uplinkSpeed: 100
localInstance
int
OI 部署網站的 InstanceID (來自 ocit.yaml 檔案)。
本機連線會使用相同資料中心機架間的光纖連線,將 Operations Suite 基礎架構核心機架 (OIR) 站點直接連線至 GDC。
zones:
- zoneName: kb
localInstanceIDs: 1
remoteInstance
[ ] int
OI 部署網站的 InstanceID(s),來自 ocit.yaml 檔案。
遠端連線會使用長途傳輸,連線至其他地點。 您可以提供 remoteInstance 值清單,以便為所有 OIR 網站產生設定,連線至指定的 GDC 儲存格。
zones:
- zoneName: kb
remoteInstanceIDs:
- 1



zones:
- zoneName: kb
remoteInstanceIDs:
- 1

- 2

- 3



cellCfg
字串
GDC 儲存格設定路徑,內含互連的所有資訊。這項資訊會用於產生 OIR 的所有互連設定。\ 如果 interconnect.yaml 檔案中未提供 `cellCfg`,且 `zoneName` 與 GDC 儲存格縮寫相符,occonfig 工具會使用 GDC 儲存格啟動程式中的 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 預期會使用的一組 CIDR 區塊,且 OIC 允許使用這些區塊。這有助於設定客戶 NOC 與 OC-WORKSTATIONS 之間的連線。
執行個體 需要連線至 L3-WAN 的每個執行個體設定。
instanceID 整數 要產生設定的 OIC 執行個體 ID,以便連線至提供的 L3-WAN。
bgp L3-WAN 的 BGP 設定。
asn 整數 L3-WAN PE 節點的 BGP ASN,用於設定 eBGP 連線。
裝置 每個 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 檔案,其中 Operations Suite Infrastructure Core Rack (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