EMCO Architecture & Design
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
Getting Started - EMCO Installation
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)