This wiki describes how to deploy the NONRTRIC components within Kubernetes cluster.
NONRTRIC Architechture
NONRTRIC composes of four major components,
- Control Panel
- Policy Management Service
- A1 Controller
- NearRT RIC Simulator
Introduction to Helm Chart
In Nonrtric we use Helm chart as a packaging manager for kubernetes. Helm chart helps developer to package, configure & deploy the application and services into kubernetes environment.
For more information you could refer to below links,
https://helm.sh/docs/intro/quickstart/
Helm Chart in NONRTRIC
In Release B, the helm chart's are written in IT/Dep repo.
The following picture shows the hierarchy of the nonrtric within IT/Dep repo.
Each components in nonrtric repo are independent chart with common dependency of nonrtric-common. The nonrtric chart acts a parent chart where other charts like a1controller, a1simulator, controlpanel & policymanagemenservice are added as dependencies in it.
The nonrtric-common contains the common template shared across all the nonrtric componenets. The nonrtric-common chart is added as a dependency into all the components (a1controller, a1simulator, controlpanel, policymanagemenservice & nonrtric)
Each component can be built & packaged independently of others and the required version can be deployed by adding the same into requirements.yaml file in nonrtric
dependencies: - name: a1controller version: ~1.0.0 repository: "@local" - name: a1simulator version: ~1.0.1 repository: "@local" - name: controlpanel version: ~1.0.0 repository: "@local" - name: policymanagementservice version: ~1.0.0 repository: "@local" - name: nonrtric-common version: ^1.0.0 repository: "@local"
The values.yaml file contains the default value of the individual components and it can be overridden with the override yaml file. The default values.yaml,
imagePullPolicy: IfNotPresent image: registry: 'nexus3.o-ran-sc.org:10002/o-ran-sc' name: nonrtric-a1-controller tag: 1.7.4 replicaCount: 1 service: internalPort: 8181 externalPort: 8282
Packaging & Repo update
All the logic behind the helm packaging & repo update are kept under deploy-nonrtric.sh file. This script crawls through the nonrtric directory and packages all the dependencies charts & copy it to the helm local repo.
# Package nonrtric-common and serve it using Helm local repo HELM_HOME=$(helm home) COMMON_CHART_VERSION=$(cat $ROOT_DIR/../ric-common/Common-Template/helm/nonrtric-common/Chart.yaml | grep version | awk '{print $2}') helm package -d /tmp $ROOT_DIR/../ric-common/Common-Template/helm/nonrtric-common cp /tmp/nonrtric-common-$COMMON_CHART_VERSION.tgz $HELM_HOME/repository/local/