Background
The Edge Multi Cloud Orchestrator (EMCO) - also previously known as ONAP4K8S version 2 - is an application orchestrator designed to deploy geo-distributed appliations across multiple edge/cloust kubernetes clusters.
See the following articles for background on the requirements and architectural principles:
- Geo-Distributed Application/Network-Service Requirements: https://www.linkedin.com/pulse/geo-distributed-application-orchestration-across-k8s-addepalli
- Guidelines we followed: https://www.linkedin.com/pulse/central-orchestrator-onap4k8s-generic-design-srinivasa-addepalli
- Architecture of ONAP4K8s(EMCO): https://www.linkedin.com/pulse/onap4k8s-architecture-srinivasa-addepalli
- How does it compare to other Industry solutions: https://www.linkedin.com/pulse/multi-cluster-application-orchestration-industry-value-addepalli
Architecture Overview
The following diagram depicts a high level overview of the EMCO architecture.
- Cluster Registration Controller registers clusters by cluster owners
- Network Configuration Management handles creation/management of virtual and provider networks
- Distributed Application Scheduler provides simplified, and extensible placement
- Hardware Platform Aware Controller enables scheduling with auto-discovery of platform features/ capabilities
- Distributed Cloud Manager presents a single logical cloud from multiple edges
- Secure Mesh Controller auto-configures both service mesh (ISTIO) and security policy (NAT, firewall)
- Secure WAN Controller automates secure overlays across edge groups
- Resource Syncronizer manages instantiation of resources to clusters
- Monitoring covers distributed application
The following diagram illustrates additional details of the EMCO architecture.
The following sections will describe specific components in greater detail.
Distributed Application Scheduler
Resource Synchronizer
Cluster Registration Controller
Network Configuration Management
Distributed Cloud Management
Status Monitoring
Placement Controllers
Action Controllers
Installation
TBD
The EMCO microservices can be installed into a Kubernetes cluster.
See here for the helm chart: https://github.com/onap/multicloud-k8s/tree/master/deployments/helm/onap4k8s
To install with kubectl, see here: https://github.com/onap/multicloud-k8s/tree/master/deployments/kubernetes
The clusters to which EMCO deploys resources can be any Kubernetes cluster. However, because EMCO provides built in OVN4K8S networking support, clusters with OVN4K*S installed is required if that networking option is needed.
The KUD project provides one method for installing a cluster that has these required features: https://github.com/onap/multicloud-k8s/tree/master/kud
Also, for status monitoring, EMCO utilizes the monitor microservice and associated CRD.
Current files needed to setup and install are here: https://github.com/onap/multicloud-k8s/tree/master/src/monitor/deploy (see the monitor-deploy.sh file)
Operation
API
View the API documentation with the swagger editor: https://editor.swagger.io/?url=https://raw.githubusercontent.com/onap/multicloud-k8s/master/docs/emco_apis.yaml