K8S based Cloud region support (Continue from R4)
BUSINESS DRIVER
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.
Technical Debt
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.
Networking:
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)
Functional requirements
SRIOV-NIC Support
Multi-Cluster support
Cluster-Labeling
Distributed Cloud support
Multi-tenancy
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)
Study: Security orchestration (Possibly in R7)
Study : ETSI defined Container definition
ONAP Architecture impact
None
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