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

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. R-App catalogue Service
  6. Enhanced R-App catalogue Service
  7. A1 Simulator (3 A1 interface versions - previously called Near-RT RIC A1 Interface)
  8. A1 Controller (currently using SDNC from ONAP)
  9. Helm Manager
  10. Dmaap Adapter Service
  11. Dmaap Mediator Service
  12. Use Case rApp O-DU Slice Assurance
  13. Use Case rAPP O-RU Closed loop recovery
  14. CAPIF core

In the IT/Dep repo, there are helm charts for each these components. In addition, there is a chart called nonrtric, which is a composition of the components above.

Prerequisites

  • kubernetes v1.19 +
  • Docker and docker-compose (latest)

Preparations

Download the the it/dep repository. At time of writing there is no branch for g-release so cloning can be made from master.  Pls check if the branch exist before cloning from master.

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

or of the branch is not yet created:

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

Configuration of components to install

It is possible to configure which of nonrtric components to install, including the controller and a1 simulators. This configuration is made in the override for the helm package. Edit the following file

Edit override file
<editor> dep/RECIPE_EXAMPLE/NONRTRIC/example_recipe.yaml 

The file shown below is a snippet from the override example_recipe.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.

There are many other parameters in the file that may require adaptation to fit a certain environment. For example hostname, namespace and port to message router etc. These integration details are not covered in this guide.  

Editor override file
nonrtric:
  installPms: true
  installA1controller: true
  installA1simulator: true
  installControlpanel: true
  installInformationservice: true
  installRappcatalogueservice: true
  installRappcatalogueEnhancedservice: true
  installNonrtricgateway: true
  installKong: false
  installDmaapadapterservice: true
  installDmaapmediatorservice: true
  installHelmmanager: true
  installOruclosedlooprecovery: true
  installOdusliceassurance: true
  installCapifcore: true
   volume1:
    # Set the size to 0 if you do not need the volume (if you are using Dynamic Volume Provisioning)
    size: 2Gi
    storageClassName: pms-storage
  volume2:
     # Set the size to 0 if you do not need the volume (if you are using Dynamic Volume Provisioning)
    size: 2Gi
    storageClassName: ics-storage
  volume3:
    size: 1Gi
    storageClassName: helmmanager-storage

...
...
...

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:

Deploy Nonrtric
sudo dep/bin/deploy-nonrtric -f dep/nonrtric/RECIPE_EXAMPLE/example_recipe.yaml

Result of the installation

The installation will create one helm release and all created kubernetes objects will be put in a namespace. This name is 'nonrtric' and cannot be changed.

Once the installation is done you can check the created kubernetes objects by using command kubectl.
Example : Deployed pods when all components are enabled:

Get Pods
>sudo kubectl get po -n nonrtric
NAME                                            READY   STATUS    RESTARTS      AGE
a1-sim-osc-0                                    1/1     Running   0             2m27s
a1-sim-osc-1                                    1/1     Running   0             117s
a1-sim-std-0                                    1/1     Running   0             2m27s
a1-sim-std-1                                    1/1     Running   0             117s
a1-sim-std2-0                                   1/1     Running   0             2m27s
a1-sim-std2-1                                   1/1     Running   0             117s
a1controller-558776cc7b-8rhdd                   1/1     Running   0             2m27s
capifcore-684b458c9b-w297x                      1/1     Running   0             2m27s
controlpanel-889b5dfbf-b8tgd                    1/1     Running   0             2m27s
db-75c5789d97-nvjtw                             1/1     Running   0             2m27s
dmaapadapterservice-0                           1/1     Running   0             2m27s
dmaapmediatorservice-0                          1/1     Running   0             2m27s
helmmanager-0                                   1/1     Running   0             2m27s
informationservice-0                            1/1     Running   0             2m27s
nonrtricgateway-7b7d485dd4-j8hnz                1/1     Running   0             2m27s
orufhrecovery-6d97d6ccf-ghknd                   1/1     Running   0             2m27s
policymanagementservice-0                       1/1     Running   0             2m27s
ransliceassurance-7d788d7556-95trk              1/1     Running   0             2m27s
rappcatalogueenhancedservice-764c47f7fb-s75hf   1/1     Running   0             2m27s
rappcatalogueservice-66c7bf7d98-2ldjc           1/1     Running   0             2m27s

Troubleshooting

  • After successful installation, control panel shows "No Type" as policy type as shown below.

  • If there is no policy type shown and UI looks like below, then the setup can be investigated with below steps (It could be due to synchronization delay as well, It gets fixed automatically after few minutes)

 

  • Verify the PMS logs to make sure that the connection between PMS and a1controller is successful. 
    • Command to check pms logs

      Kubernetes command to get PMS logs
      kubectl logs policymanagementservice-0 -n nonrtric
    • Command to enable debug logs in PMS (Command below should be executed inside k8s pods or the host address needs to be updated with the relevant port forwarding)

      Enabling debug logs in PMS
      curl --request POST \
      --url http://policymanagementservice:9080/actuator/loggers/org.onap.ccsdk.oran.a1policymanagementservice \
      --header 'Content-Type: application/json' \
      --data '{ "configuredLevel": "DEBUG" }'
  • Try removing the controller information in specific simulator configuration and verify the simulator are working without a1controller.

    application_configuration.json
    ...
     {
        "name":"ric1",
        "baseUrl":"https://a1-sim-osc-0.a1-sim:8185",
        "managedElementIds":[
           "kista_1",
           "kista_2"
          ]
     },
    ...
  • Curl can be used in control panel pod.

Un-installation

There is a script that uninstalls installs the NonRT RIC components. It is simply run like this:

Undeploy Nonrtric
sudo dep/bin/undeploy-nonrtric

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/

  • No labels