Release L - Run in Kubernetes

Release L - Run in Kubernetes

 

This wiki describes how to deploy the NONRTRIC components within Kubernetes cluster.

NONRTRIC components are included as part of 'smo-install' in the it/dep repository.

NONRTRIC Architecture

NONRTRIC comprises several components,

  1. Control Panel

  2. Policy Management Service

  3. Information Coordinator Service

  4. Non RT RIC Gateway (reuse of existing kong proxy is also possible)

  5. A1 Simulator (3 A1 interface versions - previously called Near-RT RIC A1 Interface)

  6. A1 Controller (currently using SDNC from ONAP)

  7. Dmaap Adapter Service

  8. CAPIF core

  9. RANPM

  10. RAPP Manager

  11. Service Manager

  12. DME Participant

Prerequisites

  • Helm 3.12.0 or later

  • Kubernetes 1.26 or later

  • Helm deploy/undeploy plugin

  • Helm cm-push plugin

  • yq

  • jq

Introduction to Helm Charts

In NONRTRIC we use Helm chart as a packaging manager for kubernetes. Helm charts helps developer to package, configure & deploy the application and services into kubernetes environments.

Before proceeding you will need to be familiar with helm, kubernetes and basic bash scripting. For an introduction to helm see: https://helm.sh/docs/intro/quickstart/

Preparations

Download the the it/dep repository.

Clone repo
git clone "https://gerrit.o-ran-sc.org/r/it/dep"

However, for some use cases below you will also need to clone some additional linked repositories (git submodules). 
To download these, replace the command above to include the '–recursive' parameter/switch:

Clone repo & submodules
#Submodule 'ranpm' (https://gerrit.o-ran-sc.org/r/nonrtric/plt/ranpm) registered for path 'ranpm' #Submodule 'ric-dep' (https://gerrit.o-ran-sc.org/r/ric-plt/ric-dep) registered for path 'ric-dep' #Submodule 'smo-install/multicloud-k8s' (https://github.com/onap/multicloud-k8s.git) registered for path 'smo-install/multicloud-k8s' #Submodule 'smo-install/onap_oom' (https://gerrit.onap.org/r/oom) registered for path 'smo-install/onap_oom' git clone --recursive "https://gerrit.o-ran-sc.org/r/it/dep"

Note: This places all artifacts in a directory 'dep', which is the base directory for all operations that follow.
Note: Git Branches are currently not used in the it/dep repository. The latest version (master branch) is used here, but if changes are made then the instruction below may become outdated. The instructions below are accurate at time of writing, during the L-Release time-frame.  Earlier versions of the it/dep repo may be used by examining the Git log for the repo.

Configuration of components to install

Details instructions on the installation and configuration is available as part of gerrit.o-ran-sc Code Review - it/dep.git/blob - smo-install/README.md

It is possible to configure which of nonrtric components to install, including the platform functions, simulators and graphical control panels. This configuration is made in the override for the helm package.
Edit the file dep/smo-install/helm-override/default/oran-override.yaml 

Edit override file
<editor> ./dep/smo-install/helm-override/default/oran-override.yaml

The file shown below is a snippet from the override file: oran-override.yaml.

All parameters beginning with 'install' can be configured 'true' for enabling installation and 'false' for disabling installation.

For the parameters installNonrtricgateway and installKong, only one can be enabled.

nonrtric: installPms: true installA1controller: false installA1simulator: true installControlpanel: true installInformationservice: true installNonrtricgateway: true installKong: true installTopology: true installDmaapadapterservice: true installDmeparticipant: true installrAppmanager: true installCapifcore: true installServicemanager: true installRanpm: true # override default mount path root directory # referenced by persistent volumes and log files persistence: mountPath: /dockerdata-nfs volume1: # Set the size to 0 if you do not need the volume (if you are using Dynamic Volume Provisioning) size: 2Gi storageClassName: &smo-sc smo-storage volume2: # Set the size to 0 if you do not need the volume (if you are using Dynamic Volume Provisioning) size: 2Gi storageClassName: *smo-sc # List of secrets to be copied from ONAP namespace to NONRTRIC # Based on the dependsOn value, the secrets will be copied to the SMO namespace secrets: - name: dmeparticipant-ku dependsOn: nonrtric.installDmeparticipant ... ... ... ######### SMO ######### smo: installTeiv: true # List of secrets to be copied from ONAP namespace to SMO # Based on the dependsOn value, the secrets will be copied to the SMO namespace secrets: - name: topology-exposure-ku dependsOn: smo.installTeiv - name: topology-ingestion-ku dependsOn: smo.installTeiv - name: ncmp-to-teiv-adapter-ku dependsOn: smo.installTeiv - name: redpanda-console-ku dependsOn: nonrtric.installRanpm

Installation

There is a script that packs and installs the components by using the helm command.  The installation uses a values override file like the one shown above. This example can be run like this:

Use the below command to setup chartmuseum and helm

./dep/smo-install/scripts/layer-0/0-setup-charts-museum.sh ./dep/smo-install/scripts/layer-0/0-setup-helm3.sh

Charts can be build using the below command,

./dep/smo-install/scripts/layer-1/1-build-all-charts.sh

Once the pre-requisites are available, The below command can be used for the smo deployment.

./dep/smo-install/scripts/layer-2/2-install-oran.sh

Uninstallation

There is a script that uninstalls the NONRTRIC components.

Undeploy Nonrtric
./dep/smo-install/scripts/uninstall-all.sh

Example of installation

NONRTRIC Components

> kubectl get po -n nonrtric NAME READY STATUS RESTARTS AGE a1-sim-osc-0-7c694467bf-mxghr 1/1 Running 0 43h a1-sim-osc-1-649cfb5b64-jpwtd 1/1 Running 0 43h a1-sim-std-0-5b7cc6dd76-cj5d9 1/1 Running 0 43h a1-sim-std-1-674d55f49f-nzrxz 1/1 Running 0 43h a1-sim-std2-0-5578fcf6d9-4brv9 1/1 Running 0 43h a1-sim-std2-1-5d5b758df6-9k6k5 1/1 Running 0 43h capifcore-ccbfbff56-s7hjs 1/1 Running 0 43h controlpanel-56cf48cb74-jcxrl 1/1 Running 0 43h dmaapadapterservice-0 1/1 Running 0 43h dmeparticipant-6556fc85d9-bltph 1/1 Running 0 43h informationservice-0 1/1 Running 0 43h nonrtricgateway-86d47b667c-fwb86 1/1 Running 0 43h oran-nonrtric-kong-7cdb469668-q4z5b 2/2 Running 3 (119m ago) 43h oran-nonrtric-kong-init-migrations-qtsb2 0/1 Completed 0 43h oran-nonrtric-postgresql-0 1/1 Running 0 43h policymanagementservice-0 1/1 Running 0 43h rappmanager-0 1/1 Running 0 43h servicemanager-5cb998844-dlrwp 1/1 Running 0 43h topology-78975dc7c7-hnt6l 1/1 Running 0 43h > kubectl get po -n smo bundle-server-68b6b4fd44-8zcr8 1/1 Running 0 43h dfc-0 2/2 Running 0 43h ics-init-nqcrd 0/1 Completed 0 43h influxdb2-0 1/1 Running 0 43h influxdb2-init-hm5rj 0/1 Completed 0 43h kafka-client 1/1 Running 0 43h kafka-producer-pm-json2influx-0 1/1 Running 0 43h kafka-producer-pm-json2kafka-0 1/1 Running 0 43h kafka-producer-pm-xml2json-0 1/1 Running 0 43h keycloak-7db5c4dc7b-zgz6p 1/1 Running 0 43h keycloak-init-z82rk 0/1 Completed 0 43h keycloak-proxy-6c654c4bdc-cm5lv 1/1 Running 0 43h minio-0 1/1 Running 0 43h minio-client 1/1 Running 0 43h ncmp-to-teiv-adapter-6f659cf9-59dd6 1/1 Running 0 43h opa-545ccb9958-2ptq7 1/1 Running 0 43h oran-smo-postgresql-0 1/1 Running 0 43h pm-producer-json2kafka-0 2/2 Running 0 43h pmlog-0 2/2 Running 0 43h policy-kafkauser-patch-l2hjm 0/1 Completed 0 43h redpanda-console-7ccc45cccd-7fjh9 1/1 Running 1 (43h ago) 43h strimzi-patch-nvwx6 0/1 Completed 0 43h topology-exposure-858d9c6f57-9m2kd 1/1 Running 0 43h topology-ingestion-6f8cf86c5-rs8n5 1/1 Running 0 43h vescollector-patch-dc2xt 0/1 Completed 0 43h