Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The rApp Manager is a lifecycle management service for rApps. It gets the rApp as an ASD formatted package and lifecycle manages it based on it instance configuration. It uses ONAP ACM for lifecycle management operations and it integrates with other components for managing the rApp.

The ASD package contains the details required to create and integrate the required services/components.  Each Each ASD package contains only one rApp and One and one rApp can have any number of rApp instances.

Source code repository : https://gerrit.o-ran-sc.org/r/gitweb?p=nonrtric%2Fplt%2Frappmanager.git;a=summary

Architecture


rApp Data Model


Image Added


Integrations

The rApp Manager is integrated with the below following components to support lifecycle managing the rApp.

...

Automation Composition Management (ACM) is a framework that supports Life Cycle Management of Automation Compositions. It supports deployment, monitoring, update and removal of Automation Compositions en-bloc, allowing users to manage their features, services, and capabilities as single logical units. More details about ACM can be found here.

ACM-R supports any has the ability to support an unlimited number of participants and all the participants can be configured through the configuration in the rApp package.

...

  • A1PMS Participant - It interacts with A1PMS of NONRTRIC. It is capable of lifecycle managing A1PMS service.
  • Kserve Participant - It interacts with Kserve. It is capable of lifecycle managing Kserve inference service.
  • Kubernetes Participant - It interacts with Helm/Kubernetes. It is capable of lifecycle managing Helm charts. It expects the helm charts to be available in the mentioned repository as it doesn't handle the helm chart creation in the chart repository.
  • DME Participant -  It interacts with DME(ICS) of NONRTRIC. It is capable of lifecycle managing DME entities.

ACM composition and instance details can be provided as part of the rApp package and the package structure can be found here.

DME

The DME(Information Coordination Service (ICS)) is a generic service that maintains data subscriptions. Its main purpose is to decouple data consumers and data producers in a multi vendor environment. A data consumer does not need to know anything about the producers of the data. More details about DME can be found here.

It integrates is integrated with rApp manager to enable the rApp to produce/consume specific type of data(Information Type in DME terms).

Information type, and Data producer/consumer information can be provided as part of rApp package and the package structure can be found here.

SME

The SME( CAPIF ) stands for Common API framework and it was developed by 3GPP to enable a unified Northbound API framework across 3GPP network functions, and to ensure that there is a single and harmonized approach for API development. More details about DME SME can be found here.

It integrates is integrated with rApp manager to enable the rApp to expose/access/discover endpoints.

Service exposure/access related configurations can be provided as part of rApp package and the package structure can be found here.


State Transitions

rApp States

The rApp lifecycle contains 4 states. The state and transitions are as follows,



  1. COMMISSIONED
    rApp willget becreated in this state right after creation and
    once the
    DEPRIMING is completed
  2. PRIMING
    This is a transition state. rApp will be in this
    state once the PRIMING requested for rApp
  3. PRIMED
    rApp will be in this state once the PRIMING is
    completed. In this state rApp instances can be
    created
  4. DEPRIMING
    This is a transition state. rApp will be
    in this state once the DEPRIMING requested for rApp

...

Create rApp Instance

  1. API user request to create rApp Instance with the resource details from rApp package
  2. API user get the rApp instance creation response

Deploy rApp Instance

  1. API user request to deploy rApp instance
  2. rApp Manager fetches the rApp package from file system and fetches the 
    resources mentioned in the rApp instance.
  3. rApp Manager request ACM-R with the necessary details from rApp package to 
    Instantiate ACM instance
  4. rApp Manager gets instantiate ACM instance response
  5. rApp Manager request ACM-R to deploy ACM instance
  6. ACM-R deploys the A1PMS instance if it is configured in the ACM instance
  7. ACM-R gets the A1PMS deployment status
  8. ACM-R deploys the Kserve instance if it is configured in the ACM instance
  9. ACM-R gets the Kserve deployment status
  10. ACM-R deploys the Kubernetes instance if it is configured in the ACM instance
  11. ACM-R gets the Kubernetes deployment status
  12. ACM-R deploys the DME instance if it is configured in the ACM instance
  13. ACM-R gets the DME deployment status
  14. rApp Manager gets ACM deployment status
  15. rApp Manager request SME to create the entities in rApp instance
  16. SME creates the entities provided by rApp Manager
  17. rApp manager get the response of SME entities creation
  18. API user provided with the status of rApp instance deployment. rApp Manager combines 
    the status of ACM deployment and SME deployment to provide the rApp instance status.

Undeploy rApp Instance

  1. API user request to undeploy rApp instance
  2. rApp Manager fetches the rApp and rApp instance details
  3. rApp Manager request ACM-R to undeploy the ACM instance
  4. ACM-R undeploy the A1PMS instance if it is already deployed
  5. ACM-R gets the A1PMS undeploy status
  6. ACM-R undeploy the Kserve instance if it is already deployed
  7. ACM-R gets the Kserve undeploy status
  8. ACM-R undeploy the Kubernetes instance if it is already deployed
  9. ACM-R gets the Kubernetes undeploy status
  10. ACM-R undeploy the DME instance if it is already deployed
  11. ACM-R gets the DME undeploy status
  12. rApp Manager get ACM undeploy status
  13. rApp Manager request ACM-R to delete the ACM instance
  14. rApp Manager get response of ACM instance deletion
  15. rApp Manager request SME to delete SME entities
  16. SME deletes the entities created as part of rApp
  17. rApp Manager get the response of SME entities deletion
  18. API user get the status of undeploy rApp instance

Delete rApp Instance

  1. API user request rApp Manager to delete rApp Instance
  2. API user gets delete rApp instance response


Image Modified



Sample rApp package structure

...

Warning

This packaging structure is a prototype and subject to change

...


The sample rApp package structure shown below and the location of relevant files for each integration is provided.


ACM (Files/Acm)

  • Definition - Files/Acm/Definition (Only one file)
  • Instances - Files/Acm/instances

DME (Files/Dme)

  • Consumer Information Types - Files/Dme/consumerinfotypes
  • Producer information Types -  Files/Dme/producerinfotypes
  • Information Consumers - Files/Dme/infoconsumers
  • Information Producers - Files/Dme/infoproducers

SME (Files/Sme)

  • Providers Functions - Files/Sme/providers
  • Service Api -  Files/Sme/serviceapis
  • Invokers - Files/Sme/invokers

Image Modified

Image Removed



Image Added



CSAR File Generation

CSAR file generator is available in the rAppmanager repository here (i-release)

"rappmanager/csar-generator/resources" folder contains the resources to build the rApp package.

The contents of the "resources" directory can be modified as required and the package can be generated as shown below,

Code Block
languagebash
titleLinux: Generate rApp package
> ./generate.sh


Code Block
languagepowershell
titleWindows: Generate rApp package
> ./generate.bat

This will generate a package named "rapp.csar". It can be renamed as required.

This generated package can be used with rApp Manager to create rApp.

Deployment Instructions

The scripts for the deployments of rApp Manager and its dependent components are available here (i-release).

Tip

These scripts are specifically designed for a fresh environment. Some tweaks may be required to run these in an environment where there are some existing installations

Pre-requisites

  • Kubernetes Cluster (V1.24.6)
  • GIT

Environment setup

The installation scripts shown here installs all the required components.

ACM components should be configured with couple of other components for the participants to work.

In case some of the installation is already setup or not set by the installation scripts, the below environment variables can be used to set the configurations ACM through installation scripts.


Tip

Ignore the below variables if the entire environment is being setup by the following installation scripts


Variable NameDescriptionDefault Value
A1PMS_HOST
Address of the A1PMS. 
It will be accessed from A1PMS participant.
http://policymanagementservice.nonrtric:9080
CHART_REPO_HOST
Address of the chart repository. 
It will be used by Kubernetes participant.
http://IP_ADDRESS:8879/charts
IP_ADDRESS: IP of the host in which 
the installation scripts are running.

Installation

All components can be installed using the command below,

Code Block
languagebash
>./install-all.sh


Individual components can be installed using the commands below,

To install the tools required for other installer scripts.

Code Block
languagebash
>./install-base.sh

To install the ACM, and it's related components.

Code Block
languagebash
>./install-acm.sh

To install the Kserve, and it's related components.

Code Block
languagebash
>./install-kserve.sh

To installs the NONRTRIC components.

Code Block
languagebash
>./install-nonrtric.sh


Installed Components

The below components should be up and running for the rApp Manager integrations to work properly.

Istio components

Image Added


Cert Manager components

Image Added


Kserve components

Kserve ComponentsImage Added


ACM Components

Image Added


NONRTRIC Components

Image Added

Troubleshooting

  1. If Kserve installation failed or end up in the below state after "install-all.sh", Try run "patch-kserve.sh" script after "install-all.sh"

    Image Added

    Image Added


Uninstallation

To uninstall all the components

Code Block
languagebash
>./uninstall-all.sh