iT邦幫忙

2021 iThome 鐵人賽

DAY 27
0
自我挑戰組

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

Day27 MANO開源專案使用之OSM-建立篇

今天我來講如何使用osm在kubernetes建立VNF。如果有想要在詳細的了解OSM的話可以於他們官方文件做查詢。

加入叢集

建立VIM account

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加入

加入VIM

將本身的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做新增

建立repo

沒錯,在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上傳

command

osm nfpkg-create demo-knf.tar.gz
osm nfpkg-create demo-ns.tar.gz

UI


實例化NS


實例化後的結果

首先先到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教學就到今天了。


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

尚未有邦友留言

立即登入留言