今天要做kube5gnfvo使用,這個project的功用就是為了可以使用VM或著container做5g元件的佈署,會透過API方式去進行操作,因此會使用postman做打API的動作。
以下皆為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元件,只需打一次,也無須輸入(與註冊元件相同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
連接部分的只需在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(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