Executive Summary - Increasingly, edge locations are becoming K8S based as K8S can support multiple deployment types (VNFs, CNFs, VMs and containers). This work enables ONAP to deploy workloads in K8S based sites.
Business Impact - This will enable operators to use both Openstack based sites as well K8s based sites to deploy workloads. It also enables usage of common compute resources for both network functions and applications, thereby utilizing compute infrastructure efficiently. Since K8S supported with the same API, superior workload mobility can be achieved.
Business Markets - Applicable across compute continuum : On-prem edges, network edges, edge clouds and public clouds.
Funding/Financial Impacts - Potential of significantly avoiding multiple service orchestrators, avoid multiple infrastructure managers, thereby savings on CAPEX.
Organization Mgmt, Sales Strategies - There is no additional organizational management or sales strategies for this use case outside of a service providers "normal" ONAP deployment and its attendant organizational resources from a service provider.
R4 has many feature planned and there may be few items that may spill over to R5.
Some of the features that are being done in R4 (for recollection)
- K8S based Cloud region support
- Deploy VMs and container based workloads.
- VM and container description in Helm
- Support for multiple resource types including Deployment, POD, Service, Config-map, CRDs, stateful set etc..
- Support for multiple profiles, where given resource bundle definition is used to deploy multiple times.
- Support for Day2 configuration of each individual profile/instance.
- Support for dynamic and multiple networks
- Ability to place the POD in multiple networks
- Initial support for OVN for data networks
- Provider network support (using OVN)
Some features that are postponed to R5 are:
- Dynamic route and provider network operator
- OVN operator
- ISTIO security
- Modularity stuff
- Logging (Each Micro-service is expected to log messages as expected by fluentd)
- Monitoring (Each Micro-service is expected to expose metrics as expected by Prometheus)
- Tracing (Ensure that all HTTP based applications use tracing libraries to enable distributed tracing)
- Visualization of resource bundle
- Use case that show cases the Day 2 configuration (Kafka or Collection package of Distributed Analytics as a service)
New requirements coming from various use cases
(Most of the requirements are coming from big data AI platform use case)
- A way to deploy apps/services that span across multiple clusters.
- Day2 configuration control of workloads at the app/service level as a transaction
- Dependency graph (DAG) of deploying workloads across multiple clusters
- Bulk deployment of apps/services in multiple clusters.
- Function chaining
- Multi-tenant management (such as namespaces, users etc...)
- Edge Daemonset via labeling (for scheduler to know what kinds of apps/services to be deployed without any user intervention)
- SRIOV-NIC Support
- Multi-Cluster support
- Distributed Cloud support
- Placement support (if there are multiple edge candidates) with HPA
- Service Coupling using ISTIO and WGRD
- CLI Support for all relevant APIs. (Applications, Resource-Bundle definitions, Profiles, Configuration templates, configs and meta-configs etc...)
- Continuous monitoring (using Kubernetes APIs) and updating the DB with latest status and resources allocated.
- CLI/GUI support on the status of resources (At app level, At resource bundle level and at each resource level)
- Integration with CDS
- Study: Security orchestration (Possibly in R7)
- Study : ETSI defined Container definition
ONAP Architecture impact
All the changes are expected to be done in Multi-Cloud project. We don't expect any changes to API exposed by Multi-Cloud to the SO. Also, there are no changes expected in SDC to Multi-Cloud interface. All the work that was done SDC and SO will be good enough in R6.
There are some suggestions from the community to make "K8S workload support" as first class citizen and that may require changes to SDC and SO. But that is not planned for R6.
Few conceptual differences:
- In R4/R5, each K8S cluster is expected to be registered as cloud-region in A&AI by the ONAP admin user. Now, it is expected that each 'distributed cloud' is registered as the cloud-region.
- In R4/R5, each RB only has one helm chart. In R6, it is going to be enhanced where one RB can have multiple helm charts. There would be one meta file in the RB to describe the helm charts. Since, the entire RB is represented as tar file, there are no code changes expected in SDC or SDC client in Multi-Cloud.
- In R4/R5, there is no concept of 'Deployment intent'. In R6, deployment intents are to be created by the user before instantiating the service/RB.
- In R4/R5, each profile has only one values.yaml file, but now each profile can have multiple values.yaml files as RB would have multiple helm charts (sub-apps).
All these conceptual differences are localized to Multi-Cloud project and no change is expected in any other project.
R4 Page Link: K8S based Cloud Region Support