管理已命名的集合

本指南說明如何對 Cloud Router BGP 路由政策的具名集執行下列更新:

  • 列出已命名的集合
  • 移除已命名的集合
  • 更新已命名集合
  • 新增具名集合元素
  • 移除已命名集合元素

列出路由器上的具名集合

使用 list-named-sets 指令,查看單一路由器上定義的具名集合名稱和類型。

gcloud compute routers list-named-sets ROUTER_NAME

ROUTER_NAME 替換為 Cloud Router 名稱。

移除已命名的集合

如果路由器上的任何 BGP 路徑政策參照了具名集合,您就無法移除該集合。

gcloud compute routers remove-named-set ROUTER_NAME
    --set-name=SET_NAME

更改下列內容:

  • ROUTER_NAME:Cloud Router 的名稱
  • SET_NAME:要移除的具名集合名稱

更新路由器上的具名集合

更新現有名稱集時,建議使用 download-named-set 指令,從路由器下載 YAML 或 JSON 格式的名稱集。在本機編輯 YAML 或 JSON 檔案,然後使用 upload-named-set 指令將更新後的檔案上傳至路由器。upload-named-set 指令會覆寫現有的具名集合。

從路由器下載的檔案包含 fingerprint 欄位,Cloud Router 會使用這個欄位比對現有的具名集,避免更新衝突。

  1. 如要下載具名集合,請執行 download-named-set 指令:

    gcloud compute routers download-named-set ROUTER_NAME
        --set-name=SET_NAME
        --file-name=FILE_NAME
        --file-format=FORMAT
    

    更改下列內容:

    • ROUTER_NAME 替換為 Cloud Router 的名稱。
    • SET_NAME 替換為集合名稱。
    • FILE_NAME,包括路徑和副檔名。
    • FORMAT,格式為 JSON 或 YAML。
  2. 使用 JSON 或 YAML 格式,在慣用的文字編輯器中修改下載的具名集。

    下列範例使用兩個 YAML 檔案,更新名為 allowed-prefixesallowed-communities 的具名集合。

    allowed-prefixes.yaml:

    # Prefix set
    resource:
      elements:
      - expression: "'192.168.1.0/24'"
      - expression: "'fd00::/8'"
      - expression: "prefix('10.0.0.0/20').orLonger()"
      name: allowed-prefixes
      type: NAMED_SET_TYPE_PREFIX
    

    allowed-communities.yaml:

    # Community set
    resource:
      elements:
      - expression: "'64500:100'"
      - expression: "'64500:300'"
      name: allowed-communities
      type: NAMED_SET_TYPE_COMMUNITY
    
  3. 如要上傳具名集合,請執行 upload-named-set 指令:

    gcloud compute routers upload-named-set ROUTER_NAME
        --set-name=SET
        --file-name=NAME
        --file-format=FORMAT
    

    更改下列內容:

    • ROUTER_NAME 替換為 Cloud Router 的名稱。
    • SET 替換為集合名稱。
    • NAME,並將其替換為您編輯的 YAML 或 JSON 檔案位置和檔案名稱。
    • FORMAT,格式為 JSON 或 YAML。

新增具名集合元素

執行下列指令:

gcloud compute routers add-named-set-element ROUTER_NAME
    --set-name=SET_NAME
    --new-set-element=CEL_EXPRESSION

更改下列內容:

  • ROUTER_NAME:Cloud Router 的名稱
  • SET_NAME:要更新的具名集名稱
  • CEL_EXPRESSION:要新增至集合的元素,以一般運算語言 (CEL) 表示

移除已命名的集合元素

執行下列指令:

gcloud compute routers remove-named-set-element ROUTER_NAME
    --set-name=SET_NAME
    --set-element=CEL_EXPRESSION

更改下列內容:

  • ROUTER_NAME:Cloud Router 的名稱
  • SET_NAME:要更新的具名集名稱
  • CEL_EXPRESSION:要從集合中移除的元素,以一般運算語言 (CEL) 表示

後續步驟