iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 16
0
自我挑戰組

Cloud/SDN/SFC...菜鳥的學習筆記系列 第 16

Day16 開源專案-kube5gnfvo使用

今天要做kube5gnfvo使用,這個project的功用就是為了可以使用VM或著container做5g元件的佈署,會透過API方式去進行操作,因此會使用postman做打API的動作。

測試開始

使用API建立pod

以下皆為postman的網址,若成功狀態碼皆為202(PUT回傳都不會有內容)

註冊元件

#如果使用GET則會變成查詢全部元件,Post則是新增元件(空的))
10.0.0.68:30888/vnfpkgm/v1/vnf_packages/

取得vnf的原件(v2需要10個),記得要將id也就是圖片上反白的部分記起來,因此會有10組id。

(Put)
http://10.0.0.68:30888/vnfpkgm/v1/vnf_packages/90d102e0-6d90-44bb-aebf-c0785936dccc/package_content/

90d102e0-6d90-44bb-aebf-c0785936dccc為剛剛創建取得到的VNF元件的id (所以最好打一次POST然後在對應PUT一次,比較不會亂)
Headers和Body內都要有值(檔案部分先將其他元件做成ZIP,如果是vm則去vm的資料夾將要使用vm開的原件壓縮)


使用free5gcv2資料夾內的為使用Container

使用free5gcv2-kubevirt資料夾內的為使用VM

註冊ns

註冊空的NS元件,只需打一次,也無須輸入(與註冊元件相同GET為查全部)

(POST)
10.0.0.68:30888/nsd/v1/ns_descriptors/

將NS放入空的NS元件(36548cd8-81ca-4994-8b94-8acd4b789857為上圖的id部分),輸入Headers與放入VNF元件的方式相同,檔案只需放入ns的zip

(PUT)
10.0.0.68:30888/nsd/v1/ns_descriptors/36548cd8-81ca-4994-8b94-8acd4b789857/nsd_content/

ns注意事項
如若使用VM的部分,ns內的vnfd_id將要用VM開的元件的ID改為VM元件的ID
例如:我的UPF為VM開,元件註冊UPF部分為VM的UPF,ns的vnfd_id的UPF的ID要改成VM的UPF的ID

連接ns和元件

連接部分的只需在Body放入json就行

(POST)
10.0.0.68:30888/nslcm/v1/ns_instances/

JSON內容(只須改nsdId)

{
    "nsdId": "2116fd24-83f2-416b-bf3c-ca1964793aqq",
    "nsName": "String",
    "nsDescription": "String"
}

nsId為ns取得

結果:

使用API建立pod

呼叫建立API(9b08c2cf-4ff4-437f-80a9-ea801ae1eb15為使用連接時取得到的id,就是第一層的id)

10.0.0.68:30888/nslcm/v1/ns_instances/9b08c2cf-4ff4-437f-80a9-ea801ae1eb15/instantiate/

JSON內容(vnfInstanceData內為要建立幾個元件POD就要放幾種,分別為剛剛連接時取得的第二層的各個id)

#注意要將每個元件的vnfInstanceId都改為連接的,要注意上面那張圖。
{
    "vnfInstanceData":[
        {
            "vnfInstanceId": "473309df-6cca-4167-9c53-1144bda51617",
            "vnfProflieId": "String"
        },
        {
            "vnfInstanceId": "602e3676-5a80-41c7-931b-f166e784fa37",
            "vnfProflieId": "String"
        },
        {
            "vnfInstanceId": "6e78186b-b96d-413f-a05a-a13f0f9a2f0f",
            "vnfProflieId": "String"
        },
        {
            "vnfInstanceId": "8500f664-bab1-43d8-9e3a-7459a4af154c",
            "vnfProflieId": "String"
        },
        {
            "vnfInstanceId": "8ee8b7f7-bc1b-4655-bec3-5f2c60f5ebbf",
            "vnfProflieId": "String"
        },
        {
            "vnfInstanceId": "99cea6af-fd5e-402d-8b7a-4646540fa240",
            "vnfProflieId": "String"
        },
        {
            "vnfInstanceId": "a68f611d-bb66-452a-bff9-95daed4e6e9f",
            "vnfProflieId": "String"
        },
        {
            "vnfInstanceId": "ae49fc6f-80cb-48a7-bf9b-f4f4c0b96790",
            "vnfProflieId": "String"
        },
        {
            "vnfInstanceId": "c002e647-4c07-44df-b835-600a05df3722",
            "vnfProflieId": "String"
        },
        {
            "vnfInstanceId": "d7e4fbed-d965-486c-b5ba-18ce2b098ea5",
            "vnfProflieId": "String"
        }
    ]
}

查看元件是有跑成功

kubectl get pod

會看到元件的pod Running起來代表建立成功(記得最低要有5cores,不然會有資源不夠問題)virt前綴為VM建立的元件。

 kubectl get vmi


要看到有VM再跑

到這裡表示元件都建立成功了,如果對如何去做建立的,可以看example外的檔案,這專案為使用Django製作API,因此後面的時間會有python跟django的學習紀錄,當然不管這些功能,Django也很值得去學習。

到這裡就是一段落了,之後的比較偏向程式學習方向,如果有興趣的可以繼續追蹤OVO/
github


上一篇
Day15 開源專案-kube5gnfvo安裝
下一篇
Day17 python基礎(一)-安裝、簡易運算
系列文
Cloud/SDN/SFC...菜鳥的學習筆記30

尚未有邦友留言

立即登入留言