iT邦幫忙

2021 iThome 鐵人賽

DAY 29
0
自我挑戰組

從雲端開始的菜鳥任務系列 第 29

Day29 MANO開源專案使用之kube5gnfvo - 樣板介紹篇

相信在前兩天介紹的OSM部分,有觀看的大概了解了關於Network Slicing(NS)實例化所需的一個步驟了吧!我們來回顧一下吧。

建立VNF Package ->建立 NS Package ->實例化NS Package

那麼今天我要來介紹如何在kube5gnfvo中建立自己的NS,首先先講一點,由於kube5gnfvo屬於後端部分,因此本篇使用Postman做一個API測試,

樣板使用與說明

首先我們先建立自己的VNF,此次我使用ubuntu做一個VNF的範例,有興趣的可以去kube5gnfvo的example查看,裡面有寫好的template,可以直接使用。
首先,VNF的資料結構如下:

├── Definitions
│   └── ubuntu.yaml
├── Files
│   ├── Artifacts
│   └── ChangeLog.txt
├── TOSCA-Metadata
│   └── TOSCA.meta
└── ubuntu-test.mf

主要部分為Definitions和Files
Definitions放置主要的描述檔案
Files則放置一些配置資料的檔案內容

VNF

  • ubuntu.yaml
tosca_definitions_version: tosca_simple_yaml_1_0

topology_template:
  node_templates:
    VNF1:
      type: tosca.nodes.nfv.VNF
      properties:
        descriptor_id: 367f45fd-1dd2-11b2-8001-080027ubuntu
        descriptor_version: 1.0
        provider: imac
        product_name: ubuntu
        software_version: latest

    VDU1:
      type: tosca.nodes.nfv.Vdu.Compute
      properties:
        sw_image_data:
          name: ubuntu
          provider: free5gmano
          version: laster
          diskFormat: raw
      capabilities:
        virtual_compute:
          properties:
            virtual_memory:
              virtual_mem_size: 512Mi
            virtual_cpu:
              num_virtual_cpu: 250m
      artifacts:
        sw_image:
          type: tosca.artifacts.nfv.SwImage
          file: ubuntu:20.04
      attributes:
        namespace: default
        replicas: 1
        command: [sh, -c, sleep 360d]

    CP1:
      type: tosca.nodes.nfv.Cpd
      properties:
        layer_protocol: ipv4
      requirements:
        virtual_binding: VDU1
        virtual_link: VL1

    VL1:
      type: tosca.nodes.nfv.VnfVirtualLink
      properties:
        network_name: management
        vl_profile:
          virtual_link_protocol_data:
            l3_protocol_data:
              dhcp_enabled: False
    CP2:
      type: tosca.nodes.nfv.Cpd
      properties:
        type: ovs
        layer_protocol: ipv4
      requirements:
        virtual_binding: VDU1
        virtual_link: VL2

    VL2:
      type: tosca.nodes.nfv.VnfVirtualLink
      properties:
        network_name: ovs-net
        vl_profile:
          virtual_link_protocol_data:
            l3_protocol_data:
              cidr: 192.168.2.162/23

其中主要幾個欄位為VDU中的 artifacts 、attributes以及VNF的descriptor_id和CP、VL的內容

VDU

  • artifacts: 這裡去設定image使用的內容部分,當然還有其他的欄位或功能部分,可以查看example內的其他template做參考
  • attributes:一些額外的變數部分,我在此使用command而已,還有許多內容可以參考其他template
    VNF
    *descriptor_id:此欄位定義VNF的ID的部分,在NS描述中,會使用到此ID作為VNF綁定在NS上的一句
    CP、VL:主要為連線部分的設定,也就是拿來設定VNF本身的介面內容的部分,此區有使用兩個CP和VL,也就是會有本身的介面和一個第二介面,此處第二介面使用的是ovs

其他的內容主要都是給其他使用者使用的欄位,主要都不是給MANO做佈署服務的部分,所以就不一一做解釋了。剩下的其他資料結構,主要是用來查詢檔案的位置以及給使用者解釋使用的欄位,這部分相信看到這裡的應該都有了基礎知識,我也不一一贅述了。

NS

關於NS的資料結構的部分

├── Definitions
│   └── ns.yaml
├── Files
│   └── ChangeLog.txt
├── TOSCA-Metadata
│   └── TOSCA.meta
└── free5gc-ns.mf

ns.yaml

tosca_definitions_version: tosca_simple_yaml_1_2

topology_template:
  node_templates:
    NS1:
      type: tosca.nodes.nfv.NS
      properties:
        descriptor_id: df931963-ebce-40e4-b810-9fe5c3450b80
        designer: imac
        version: 1.0
        name: ubuntu-ns
        invariant_id: 1111-2222-aaaa-bbbb
        constituent_vnfd:
          - vnfd_id: 367f45fd-1dd2-11b2-8001-080027ubuntu

主要介紹 descriptor_id、constituent_vnfd這兩個變數部分

descriptor_id:此為NS的欄位部分,主要給實例化時做搜尋使用的部分。
constituent_vnfd:這邊可以放多個vnf的ID,也就是剛剛介紹VNF與NS做綁定的欄位部分。

多VNF的ns.yaml

tosca_definitions_version: tosca_simple_yaml_1_2

topology_template:
  node_templates:
    NS1:
      type: tosca.nodes.nfv.NS
      properties:
        descriptor_id: df931963-ebce-40e4-b810-9fe5c3450b80
        designer: imac
        version: 1.0
        name: ubuntu-ns
        invariant_id: 1111-2222-aaaa-bbbb
        constituent_vnfd:
          - vnfd_id: 367f45fd-1dd2-11b2-8001-080027ubuntu
          - vnfd_id: 367f45fd-1dd2-11b2-8001-080028ubuntu
          - vnfd_id: 367f45fd-1dd2-11b2-8001-080029ubuntu
          ...

NS的資料結構也主要是這部分,其他的也跟VNF的資料結構差不多,多是要來查詢資料的檔案位置以及讓使用者讀所使用的。
那麼今天主要介紹一下要如何修改template,只介紹主要會用到的欄位,其他的多是讓人看的,而不是用來佈署使用的。
那麼明天就是最後一天了,就讓我努力的水到最後吧!!


上一篇
Day 28 MANO開源專案使用之kube5gnfvo - 環境篇
下一篇
Day30 MANO開源專案使用之kube5gnfvo - 使用篇
系列文
從雲端開始的菜鳥任務30

尚未有邦友留言

立即登入留言