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,
Control Panel
Policy Management Service
Information Coordinator Service
Non RT RIC Gateway (reuse of existing kong proxy is also possible)
A1 Simulator (3 A1 interface versions - previously called Near-RT RIC A1 Interface)
A1 Controller (currently using SDNC from ONAP)
Dmaap Adapter Service
CAPIF core
RANPM
RAPP Manager
Service Manager
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.yamlThe 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.installRanpmInstallation
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.shCharts can be build using the below command,
./dep/smo-install/scripts/layer-1/1-build-all-charts.shOnce the pre-requisites are available, The below command can be used for the smo deployment.
./dep/smo-install/scripts/layer-2/2-install-oran.shUninstallation
There is a script that uninstalls the NONRTRIC components.
Undeploy Nonrtric
./dep/smo-install/scripts/uninstall-all.shExample 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