今天我來講如何使用osm在kubernetes建立VNF。如果有想要在詳細的了解OSM的話可以於他們官方文件做查詢。
name、user、password、type都可以自己設定,而url的localhost後帶入的值則是與type一樣
osm vim-create --name demo --user u --password p --tenant p --account_type dummy --auth_url http://localhost/dummy
或是使用UI加入
將本身的kubernetes加入進來(如若想加入其他叢集則改變config內容為其他叢集的kubernetes)
osm k8scluster-add cluster --creds .kube/config --vim demo --k8s-nets '{k8s_net1: null}' --version "v1.15.9" --description="Isolated K8s cluster in demo"
或是用UI做新增
沒錯,在OSM使用kubernetes建立VNF的部分,他將會交由helm幫他做一個處理,因此若要使用自己的VNF的話,則需要將自己的helm repo加入到OSM中使用。
repo name的部分要記住之後做上傳樣板時會使用到
#osm repo-add --type helm-chart --description "<隨意內容>" <repo name> <repo url>
osm repo-add --type helm-chart --description "Bitnami repo" bitnami https://charts.bitnami.com/bitnami
或是使用UI做新增
osm repo-list
# osm repo-show <repo name>
osm repo-show bitnami
當你完成了建立叢集,那麼我們就來啟動kubernetes的VNF吧,在OSM中這被稱為KNF。
首先我的資料結構如下:
.
├── demo-knf
│ └── demo_vnfd.yaml
├── demo-knf.tar.gz
├── demo-ns
│ ├── demo_nsd.yaml
│ └── params
│ └── params.yaml
└── demo-ns.tar.gz
描述KNF相關的描述檔案:
demo_vnfd.yaml
vnfd:
description: KNF with single KDU using a helm-chart for demo
df:
- id: default-df
ext-cpd:
- id: mgmt-ext
k8s-cluster-net: mgmtnet
id: demo_knf
k8s-cluster:
nets:
- id: mgmtnet
kdu:
- name: job
helm-chart: cetic/job
mgmt-cp: mgmt-ext
product-name: demo_knf
provider: imac
version: '0.1.0'
描述Network Slicing(NS)相關的描述檔案:
demo_nsd.yaml
nsd:
nsd:
- description: NS consisting of a single KNF user plane connected to mgmt network
designer: imac
df:
- id: default-df
vnf-profile:
- id: demonsd
virtual-link-connectivity:
- constituent-cpd-id:
- constituent-base-element-id: demonsd
constituent-cpd-id: mgmt-ext
virtual-link-profile-id: mgmtnet
vnfd-id: demo_knf
id: demo_ns
name: demo_ns
version: '1.0'
virtual-link-desc:
- id: mgmtnet
mgmt-network: 'true'
vnfd-id:
- demo_knf
params.yaml
vld:
- name: mgmtnet
vim-network-name: internal
additionalParamsForVnf:
- member-vnf-index: demonsd
additionalParamsForKdu:
- kdu_name: job
additionalParams:
# replicaCount: 2
# service.loadBalancerIP: '172.21.251.X' # MetalLB IP Address
# service.type: NodePort
service:
type: NodePort
# loadBalancerIP: '172.21.251.X' # MetalLB IP Address
adminPassword: osm4u
configPassword: osm4u
env:
LDAP_ORGANISATION: "Example Inc."
LDAP_DOMAIN: "example.org"
LDAP_BACKEND: "hdb"
LDAP_TLS: "true"
LDAP_TLS_ENFORCE: "false"
LDAP_REMOVE_CONFIG_AFTER_SETUP: "true"
最後將兩個資料夾做壓縮動作,可以看我的資料結構的部分。
上傳VNF和NS可以使用UI或是command上傳
osm nfpkg-create demo-knf.tar.gz
osm nfpkg-create demo-ns.tar.gz
首先先到UI上觀看實例化的成果
在來我們到叢集上觀看pod的資訊
kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
c9502841-6515-4d17-9a76-48e14307999a cetic-job-0009045695-job-glclr 0/1 Completed 0 18s
我們可以看到我們的NS有成功地被佈署上去了,那麼這次的OSM教學就到今天了。