This is the continuation of the work that was started in R7 Guilin. (see here). In Guilin, the MVP implementation added proper multi-tenancy support for read and write operations on PNFs. In Honolulu, this support will be extented to all entity types in AAI, but because of limited bandwidth, other components (CDS, Policy, SDC) have been descoped and pushed to the I release.

Requirement:

SO:

A&AI:

SDC (out of scope for R8)

CDS (out of scope for R8)

Policy (out of scope for R8)

Abstract

In order to deal with E2E service orchestration across different network domains, there are ONAP components that need to be logically centralized, such as the Inventory or entry-point of service orchestration or use of common models for services and resources.

Examples of such scenarios : 

However, those different services are often authored, deployed and operated by different groups of people within service providers, which in turn brings other challenges :

For each of the ONAP components, these requirements translate in different implementation approaches :

Context

The NSO platform has both core components (i.e. AAI, SO, SDC, etc.) and end-user defined, deployed and managed components.

Candidate components for running into individual namespaces (where multi-tenancy is achieved by running several, independent instances)

In order to be efficient in building, testing and operating those components - the different teams need as much flexibility as possible within the platform, while also maintaining certain level of isolation (especially with regards to data).

Objective

For each of those the level of maturity varies. 

SDC 

For any artifacts developed & distributed through SDC there is already a partial implementation through user roles in the ONAP Portal framework - however it may not be extensive enough to meet the operational requirements we have.

The Portal framework has different role definition and membership for different users - however there may be a need for a group/tenant notion as well. This covers items in orange above (partially meeting the need w/ ONAP)

AAI

The AAI authentication framework (red) is not extensive enough to allow any fine grained control over which users can access which elements of the Inventory. Because of this, access to the AAI APIs must be restricted until proper AAA is in place.

DCAE

DCAE components (collectors & analytics) in green - deployed outside of the DCAE Controller framework (i.e. using Gitlab pipelines w/ Helm charts) can be controlled by the tenants, based on the roles they have in the tenant space on Kubernetes clusters and their group membership in Gitlab - so this is mostly covered already.

CDS 

CDS artifact authoring & distribution should be done through the integration with SDC (orange). For the execution of the blueprints (green), in order to provide access to the execution logs, and provide end-user teams with full control over the lifecycle of the executors - a model similar to the DCAE controllers & analytics applications is used - controlled through Kubernetes roles and Gitlab group membership for their authoring & deployment.

Detailed assessment / perceived impacts

CDS (or other controllers)

Who is responsible to do the routing (which instance of CDS would be used for a given service/resource) ? 

Possible patterns 

TBC : Impacts on SDNC, APP-C and VF-C ?

Policy

Policy is a framework - there are design & runtime components. It supports having multiple policy executors but all deployed in a single namespace only

How would we achieve having run-time components run into different namespaces ?

Current limitations : 

Other impacts : 

SDC


A&AI

An example for A&AI multi-tenancy is the use of owning-entity concept - which defines which group of people owns specific A&AI resources or services.

This concept exists today for service-instance object only, but should be extended - as an example - for PNFs :

In this example, you could have: 

This requires A&AI to have a minimal level of relationship information if we want to enforce any RBAC, to understand who should be allowed to change/update/delete the services instances or PNF objects.

This exists today for service-instance objects, but not PNFs.

Other scenarios in which those can be useful :

Multi-tenancy model

There are various aspects which need to be covered, and the current proposed model is as follow (to be refined) :