From 9f9e3e781abdda62a01591b08fb4384fe19f4b38 Mon Sep 17 00:00:00 2001 From: Amr Mokhtar Date: Fri, 9 Oct 2020 12:58:34 +0100 Subject: [PATCH 001/148] Remove device plugins enablement from media analytics flavor --- doc/flavors.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/flavors.md b/doc/flavors.md index 110790cb..6a1367ee 100644 --- a/doc/flavors.md +++ b/doc/flavors.md @@ -96,8 +96,6 @@ Steps to install this flavor are as follows: This deployment flavor enables the following ingredients: * Node Feature Discovery -* VPU & GPU device plugins -* HDDL daemonset * The default Kubernetes CNI: `kube-ovn` * Video analytics services * Telemetry From d286b78d1ae826b199f955fd05c1b7672297e221 Mon Sep 17 00:00:00 2001 From: i-kwilk <50014376+i-kwilk@users.noreply.github.com> Date: Mon, 19 Oct 2020 10:19:41 +0200 Subject: [PATCH 002/148] Rename cluster component names to align with k8s terminology (#347) * Rename cluster component names to align with k8s terminology Co-authored-by: Karina Murawko-Wisniewska <48431435+i-karina@users.noreply.github.com> --- _data/navbars/applications-onboarding.yml | 2 +- .../network-edge-applications-onboarding.md | 10 +++++----- doc/applications-onboard/openness-edgedns.md | 14 +++++--------- .../openness-interface-service.md | 17 ++++++++--------- .../openness-network-edge-vm-support.md | 8 ++++---- doc/applications-onboard/using-openness-cnca.md | 6 +++--- doc/architecture.md | 14 +++++++------- .../openness-bios.md | 4 ++-- .../openness-fpga.md | 2 +- .../openness-telemetry.md | 2 +- .../openness-topology-manager.md | 2 +- .../openness-vcac-a.md | 8 ++++---- .../network-edge/controller-edge-node-setup.md | 4 ++-- openness_releasenotes.md | 6 +++--- 14 files changed, 47 insertions(+), 52 deletions(-) diff --git a/_data/navbars/applications-onboarding.yml b/_data/navbars/applications-onboarding.yml index 08bf0a05..85e0e9c2 100644 --- a/_data/navbars/applications-onboarding.yml +++ b/_data/navbars/applications-onboarding.yml @@ -23,7 +23,7 @@ section: - title: Interface Service path: /doc/applications-onboard/openness-interface-service meta_title: OpenNESS Applications Onboard - OpenNESS Interface Service - meta_description: OpenNESS Interface service is an application running in Kubernetes pod on every worker node of OpenNESS Kubernetes cluster and provides OVS bridge, enabling external traffic scenarios. + meta_description: OpenNESS Interface service is an application running in Kubernetes pod on every node of OpenNESS Kubernetes cluster and provides OVS bridge, enabling external traffic scenarios. - title: VM support in OpenNESS for Network Edge path: /doc/applications-onboard/openness-network-edge-vm-support diff --git a/doc/applications-onboard/network-edge-applications-onboarding.md b/doc/applications-onboard/network-edge-applications-onboarding.md index eb909b41..c4016282 100644 --- a/doc/applications-onboard/network-edge-applications-onboarding.md +++ b/doc/applications-onboard/network-edge-applications-onboarding.md @@ -469,7 +469,7 @@ kubectl interfaceservice get ## Building Smart City ingredients - 1. Clone the Smart City Reference Pipeline source code from [GitHub](https://github.com/OpenVisualCloud/Smart-City-Sample.git) to the following: 1) Camera simulator machines, 2) OpenNESS Controller machine, and 3) Smart City cloud master machine. + 1. Clone the Smart City Reference Pipeline source code from [GitHub](https://github.com/OpenVisualCloud/Smart-City-Sample.git) to the following: 1) Camera simulator machines, 2) OpenNESS Controller machine, and 3) Smart City cloud control plane machine. 2. Build the Smart City application on all of the machines as explained in [Smart City deployment on OpenNESS](https://github.com/OpenVisualCloud/Smart-City-Sample/tree/openness-k8s/deployment/openness). At least 2 offices (edge nodes) must be installed on OpenNESS. @@ -502,7 +502,7 @@ kubectl interfaceservice get make start_openness_camera ``` - 3. On the Smart City cloud master machine, run the Smart City cloud containers: + 3. On the Smart City cloud control-plane machine, run the Smart City cloud containers: ```shell make start_openness_cloud ``` @@ -517,16 +517,16 @@ kubectl interfaceservice get 4. On the OpenNESS Controller machine, build and run the Smart City cloud containers: ```shell export CAMERA_HOSTS=192.168.1.10,192.168.2.10 - export CLOUD_HOST= + export CLOUD_HOST= make make update make start_openness_office ``` - > **NOTE**: `` is where the Smart City cloud master machine can be reached on the management/cloud network. + > **NOTE**: `` is where the Smart City cloud control plane machine can be reached on the management/cloud network. - 5. From the web browser, launch the Smart City web UI at the URL `https:///` + 5. From the web browser, launch the Smart City web UI at the URL `https:///` ## Inter application communication The IAC is available via the default overlay network used by Kubernetes - Kube-OVN. diff --git a/doc/applications-onboard/openness-edgedns.md b/doc/applications-onboard/openness-edgedns.md index 9fb44ff0..84312063 100644 --- a/doc/applications-onboard/openness-edgedns.md +++ b/doc/applications-onboard/openness-edgedns.md @@ -8,8 +8,6 @@ Copyright (c) 2019 Intel Corporation - [Usage](#usage) - [Network edge usage](#network-edge-usage) - - ## Overview The edge platform must provide access to DNS. The edge platform receives the application DNS rules from the controller. This is specified in the ETSI Multi-access Edge Computing (MEC). From a 5G edge deployment perspective, the Primary DNS (priDns) and Secondary DNS (secDns) needs to be configured which is going to be consumed by the SMF. @@ -22,7 +20,7 @@ _Figure - DNS support on OpenNESS overview_ >**NOTE**: Secondary DNS service is out of the scope of OpenNESS and is only used for DNS forwarding. -EdgeDNS is a functionality to provide the Domain Name System (DNS) Server with a possibility to be controlled by its CLI. EdgeDNS Server listens for requests from a client's CLI. After receiving a CLI request, a function handling the request adds or removes the RULE inside of the EdgeDNS database. EdgeDNS supports only type A records for Set/Delete Fully Qualified Domain Names (FQDN) and the current forwarder is set to 8.8.8.8 (set in docker-compose.yml and openness.yaml). Network Edge mode provides EdgeDNS as a service, which is an application running in a K8s pod on each worker node of the OpenNESS K8s cluster. It allows users to add and remove DNS entries of the worker host directly from K8s control plane node using kubectl plugin. +EdgeDNS is a functionality to provide the Domain Name System (DNS) Server with a possibility to be controlled by its CLI. EdgeDNS Server listens for requests from a client's CLI. After receiving a CLI request, a function handling the request adds or removes the RULE inside of the EdgeDNS database. EdgeDNS supports only type A records for Set/Delete Fully Qualified Domain Names (FQDN) and the current forwarder is set to 8.8.8.8 (set in docker-compose.yml and openness.yaml). Network Edge mode provides EdgeDNS as a service, which is an application running in a K8s pod on each node of the OpenNESS K8s cluster. It allows users to add and remove DNS entries of the node directly from K8s control plane using kubectl plugin. ## Usage @@ -55,17 +53,15 @@ In Network Edge, the EdgeDNS CLI is used as a Kubernetes\* plugin. The following `kubectl edgedns del ` to delete DNS entry of node ``` ->**NOTE**: `node_hostname` must be a valid worker node name; it can be found using `kubectl get nodes` +>**NOTE**: `node_hostname` must be a valid node name; it can be found using `kubectl get nodes` >**NOTE**: `JSON filename` is a path to the file containing record_type, fqdn, and addresses in case of setting operation. JSON file without record_type also is valid, and as default value "A" is set. - - -To set the DNS entry on the worker1 host from the `set.json` file, users must provide the following command: +To set the DNS entry on the node from the `set.json` file, users must provide the following command: -`kubectl edgedns set worker set.json` +`kubectl edgedns set node1 set.json` The following command removes this entry: -`kubectl edgedns del worker del.json` +`kubectl edgedns del node1 del.json` diff --git a/doc/applications-onboard/openness-interface-service.md b/doc/applications-onboard/openness-interface-service.md index 36845ce6..4ed28b9c 100644 --- a/doc/applications-onboard/openness-interface-service.md +++ b/doc/applications-onboard/openness-interface-service.md @@ -17,10 +17,9 @@ Copyright (c) 2019-2020 Intel Corporation - [Attaching DPDK interfaces](#attaching-dpdk-interfaces) - [Detaching interfaces](#detaching-interfaces) - ## Overview -Interface service is an application running in the Kubernetes\* pod on each worker node of the OpenNESS Kubernetes cluster. It allows users to attach additional network interfaces of the worker host to the provided OVS bridge, enabling external traffic scenarios for applications deployed in the Kubernetes\* pods. Services on each worker can be controlled from the control plane node using kubectl plugin. +Interface service is an application running in the Kubernetes\* pod on each node of the OpenNESS Kubernetes cluster. It allows users to attach additional network interfaces of the node to the provided OVS bridge, enabling external traffic scenarios for applications deployed in the Kubernetes\* pods. Services on each node can be controlled from the control plane using kubectl plugin. Interface service can attach both kernel and user space (DPDK) network interfaces to the appropriate OVS bridges. @@ -60,7 +59,7 @@ Update the physical Ethernet interface with an IP from the `192.168.1.0/24` subn * Use `kubectl interfaceservice attach ` to attach interfaces to the OVS bridge `` using a specified `driver`. * Use `kubectl interfaceservice detach ` to detach interfaces from `OVS br_local` bridge. ->**NOTE**: `node_hostname` must be a valid worker node name and can be found using `kubectl get nodes`. +>**NOTE**: `node_hostname` must be a valid node name and can be found using `kubectl get nodes`. >**NOTE**: Invalid/non-existent PCI addresses passed to attach/detach requests will be ignored @@ -129,7 +128,7 @@ kubeovn_dpdk_hugepages: "2Gi" # This is overall amount of hugepags available to ### Getting information about node interfaces ```shell -[root@master1 ~] kubectl interfaceservice get worker1 +[root@controlplane1 ~] kubectl interfaceservice get node1 Kernel interfaces: 0000:02:00.0 | 00:1e:67:d2:f2:06 | detached @@ -148,7 +147,7 @@ DPDK interfaces: ### Attaching kernel interfaces ```shell -[root@master1 ~] kubectl interfaceservice attach worker1 0000:07:00.2,0000:99:00.9,0000:07:00.3,00:123:123 br-local kernel +[root@controlplane1 ~] kubectl interfaceservice attach node1 0000:07:00.2,0000:99:00.9,0000:07:00.3,00:123:123 br-local kernel Invalid PCI address: 00:123:123. Skipping... Interface: 0000:99:00.9 not found. Skipping... Interface: 0000:07:00.2 successfully attached @@ -158,26 +157,26 @@ Interface: 0000:07:00.3 successfully attached Attaching to kernel-spaced bridges can be shortened to: ```shell -kubectl interfaceservice attach worker1 0000:07:00.2 +kubectl interfaceservice attach node1 0000:07:00.2 ``` or: ```shell -kubectl interfaceservice attach worker1 0000:07:00.2 bridge-name +kubectl interfaceservice attach node1 0000:07:00.2 bridge-name ``` ### Attaching DPDK interfaces >**NOTE**: The device to be attached to DPDK bridge should initially use kernel-space driver and should be not be attached to any bridges. ```shell -[root@master1 ~] kubectl interfaceservice attach worker1 0000:07:00.2,0000:07:00.3 br-userspace dpdk +[root@controlplane1 ~] kubectl interfaceservice attach node1 0000:07:00.2,0000:07:00.3 br-userspace dpdk Interface: 0000:07:00.2 successfully attached Interface: 0000:07:00.3 successfully attached ``` ### Detaching interfaces ```shell -[root@master1 ~] kubectl interfaceservice detach worker1 0000:07:00.2,0000:07:00.3 +[root@controlplane1 ~] kubectl interfaceservice detach node1 0000:07:00.2,0000:07:00.3 Interface: 0000:07:00.2 successfully detached Interface: 0000:07:00.3 successfully detached ``` diff --git a/doc/applications-onboard/openness-network-edge-vm-support.md b/doc/applications-onboard/openness-network-edge-vm-support.md index ce18c16a..779f8a1b 100644 --- a/doc/applications-onboard/openness-network-edge-vm-support.md +++ b/doc/applications-onboard/openness-network-edge-vm-support.md @@ -166,7 +166,7 @@ To deploy a sample stateful VM with persistent storage and additionally use a Ge 1. Create a persistent volume for the VM: - - Edit the sample yaml with the hostname of the worker node: + - Edit the sample yaml with the hostname of the node: ```yaml # /opt/edgenode/edgecontroller/kubevirt/examples/persistentLocalVolume.yaml # For both kv-pv0 and kv-pv1, enter the correct hostname: @@ -264,7 +264,7 @@ To deploy a sample stateful VM with persistent storage and additionally use a Ge To deploy a VM requesting SRIOV VF of NIC: 1. Bind the SRIOV interface to the VFIO driver on Edge Node: ```shell - [root@worker ~]# /opt/dpdk-18.11.6/usertools/dpdk-devbind.py --bind=vfio-pci + [root@node ~]# /opt/dpdk-18.11.6/usertools/dpdk-devbind.py --bind=vfio-pci ``` 2. Delete/Restart SRIOV device plugin on the node: ```shell @@ -272,7 +272,7 @@ To deploy a VM requesting SRIOV VF of NIC: ``` 3. Check that the SRIOV VF for VM is available as an allocatable resource for DP (wait a few seconds after restart): ``` - [root@controller ~]# kubectl get node -o json | jq '.status.allocatable' + [root@controller ~]# kubectl get node -o json | jq '.status.allocatable' { "cpu": "79", "devices.kubevirt.io/kvm": "110", @@ -348,7 +348,7 @@ Complete the following steps to create a snapshot: 1. Log into the Edge Node 2. Go to the virtual disk directory for the previously created VM: ```shell - [root@worker ~]# cd /var/vd/vol0/ && ls + [root@node ~]# cd /var/vd/vol0/ && ls ``` 3. Create a qcow2 snapshot image out of the virtual disk present in the directory (`disk.img`): ```shell diff --git a/doc/applications-onboard/using-openness-cnca.md b/doc/applications-onboard/using-openness-cnca.md index 4335da62..ce3063e2 100644 --- a/doc/applications-onboard/using-openness-cnca.md +++ b/doc/applications-onboard/using-openness-cnca.md @@ -40,7 +40,7 @@ Available management with `kube-cnca` against LTE CUPS OAM agent are: 2. Deletion of LTE CUPS userplanes 3. Updating (patching) LTE CUPS userplanes -The `kube-cnca` plugin is installed automatically on the control plane node during the installation phase of the [OpenNESS Experience Kit](https://github.com/otcshare/specs/blob/master/doc/getting-started/openness-experience-kits.md). +The `kube-cnca` plugin is installed automatically on the control plane during the installation phase of the [OpenNESS Experience Kit](https://github.com/otcshare/specs/blob/master/doc/getting-started/openness-experience-kits.md). In the following sections, a detailed explanation with examples is provided about the CNCA management. Creation of the LTE CUPS userplane is performed based on the configuration provided by the given YAML file. The YAML configuration should follow the provided sample YAML in [Sample YAML LTE CUPS userplane configuration](#sample-yaml-lte-cups-userplane-configuration) section. Use the `apply` command to post a userplane creation request onto Application Function (AF): @@ -111,7 +111,7 @@ OpenNESS provides ansible scripts for setting up NGC components for two scenario This role brings up the 5g OpenNESS setup in the loopback mode for testing and demonstrating its usability. This scenario is currently the default 5G OpenNESS scenario. The ansible scripts that are part of "ngc_test" role build, configure and start AF, NEF and OAM in the Network Edge. Within this role, AF, NEF and OAM are set up on the controller node. Description of the configuration and setup of the NGC components provided in the next sections of this document refers to ngc_test role. The NGC componetns set up within ngc_test role can be fully integrated and tested with provided Kubectl plugin or CNCA UI. 2. Role "ngc" - This role brings up 5g OpenNESS components - AF and NEF - to present the real deployment scenario, where the components can be further integrated with the real 5G core network. The ansible scripts that are part of this role build, configure and start AF and NEF components on separate nodes in Network Edg. The ansible scripts place AF again on the controller node, whereas NEF is placed on a worker node. Similar functionality will be added for OAM component in the future release. Currently, integration with CNCA UI and Kubectl is not complete due to missing OAM component - the services can not be created and accessed. In CNCA UI the "services" web page does not show any content. The user should proceed to "subscriptions" web page to view and modify subscriptions. + This role brings up 5g OpenNESS components - AF and NEF - to present the real deployment scenario, where the components can be further integrated with the real 5G core network. The ansible scripts that are part of this role build, configure and start AF and NEF components on separate nodes in Network Edg. The ansible scripts place AF again on the controller node, whereas NEF is placed on a node. Similar functionality will be added for OAM component in the future release. Currently, integration with CNCA UI and Kubectl is not complete due to missing OAM component - the services can not be created and accessed. In CNCA UI the "services" web page does not show any content. The user should proceed to "subscriptions" web page to view and modify subscriptions. ## Network Edge mode @@ -165,7 +165,7 @@ OpenNESS provides ansible scripts for setting up NGC components for two scenario For Network Edge mode, the CNCA provides a kubectl plugin to configure the 5G Core network. Kubernetes adopted plugin concepts to extend its functionality. The `kube-cnca` plugin executes CNCA related functions within the Kubernetes ecosystem. The plugin performs remote callouts against NGC OAM and AF microservice on the controller itself. -The `kube-cnca` plugin is installed automatically on the control plane node during the installation phase of the [OpenNESS Experience Kit](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md) +The `kube-cnca` plugin is installed automatically on the control plane during the installation phase of the [OpenNESS Experience Kit](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md) #### Edge Node services operations with 5G Core (through OAM interface) diff --git a/doc/architecture.md b/doc/architecture.md index 5a1d2531..3b74421f 100644 --- a/doc/architecture.md +++ b/doc/architecture.md @@ -10,7 +10,7 @@ Copyright (c) 2019-2020 Intel Corporation - [Architecture Overview](#architecture-overview) - [Logical](#logical) - [Architecture](#architecture) - - [OpenNESS Kubernetes Control Plane Node](#openness-kubernetes-control-plane-node) + - [OpenNESS Kubernetes Control Plane](#openness-kubernetes-control-plane) - [OpenNESS Edge Node](#openness-edge-node) - [Microservices, Kubernetes Extensions, and Enhancements](#microservices-kubernetes-extensions-and-enhancements) - [Platform Pods - Enhanced Platform Awareness](#platform-pods---enhanced-platform-awareness) @@ -69,11 +69,11 @@ Most of these deployments are fully virtualized and moving towards cloud-native Before reviewing the detailed architecture overview of OpenNESS, take a look at the logical overview of how OpenNESS microservices are laid out. ### Logical -The OpenNESS solution is built on top of Kubernetes, which is a production-grade container orchestration environment. A typical OpenNESS-based deployment consists of an **OpenNESS Kubernetes Control Plane Node** and an **OpenNESS Edge Node**. +The OpenNESS solution is built on top of Kubernetes, which is a production-grade container orchestration environment. A typical OpenNESS-based deployment consists of an **OpenNESS Kubernetes Control Plane** and an **OpenNESS Edge Node**. ![](arch-images/openness_overview.png) -**OpenNESS Kubernetes Control Plane Node**: This node consists of microservices and Kubernetes extensions, enhancements, and optimizations that provide the functionality to configure one or more OpenNESS Edge Nodes and the application services that run on those nodes (Application Pod Placement, Configuration of Core Network, etc). +**OpenNESS Kubernetes Control Plane**: This node consists of microservices and Kubernetes extensions, enhancements, and optimizations that provide the functionality to configure one or more OpenNESS Edge Nodes and the application services that run on those nodes (Application Pod Placement, Configuration of Core Network, etc). **OpenNESS Edge Node**: This node consists of microservices and Kubernetes extensions, enhancements, and optimizations that are needed for edge application and network function deployments. It also consists of APIs that are often used for the discovery of application services. @@ -82,8 +82,8 @@ Another key ingredient is the 4G/5G core network functions that enable a private ### Architecture ![](arch-images/openness-arc.png) -#### OpenNESS Kubernetes Control Plane Node -The OpenNESS Kubernetes Control Plane Node consists of Vanilla Kubernetes Control Plane Node components along with OpenNESS microservices that interact with the Kubernetes Control Plane Node using Kubernetes defined APIs. +#### OpenNESS Kubernetes Control Plane +The OpenNESS Kubernetes Control Plane consists of Vanilla Kubernetes Control Plane components along with OpenNESS microservices that interact with the Kubernetes Control Plane using Kubernetes defined APIs. The following are the high-level features of the OpenNESS Kubernetes Control Plane microservice: - Configuration of the hardware platform that hosts applications and network functions @@ -98,7 +98,7 @@ The OpenNESS Edge Node consists of Vanilla Kubernetes Node components along with The following are the high-level features of the OpenNESS Kubernetes node microservice: - Container runtime (Docker\*) and virtualization infrastructure (libvirt\*, Open vSwitch (OVS)\*, etc.) support -- Platform pods consisting of services that enable the configuration of a node for a particular deployment, device plugins enabling hardware resource allocation to an application pod, and detection of interfaces and reporting to the Control Plane node. +- Platform pods consisting of services that enable the configuration of a node for a particular deployment, device plugins enabling hardware resource allocation to an application pod, and detection of interfaces and reporting to the Control Plane. - System pods consisting of services that enable reporting the hardware and software features of each node to the Control Plane, resource isolation service for pods, and providing a DNS service to the cluster - Telemetry consisting of services that enable hardware, operating system, infrastructure, and application-level telemetry for the edge node - Support for real-time kernel for low latency applications and network functions like 4G and 5G base station and non-real-time kernel @@ -145,7 +145,7 @@ OpenNESS supports the following EPA microservices, which typically span across t - Kubevirt: Provides support for running legacy applications in VM mode and the allocation of SR-IOV ethernet interfaces to VMs. ### System Pods -- Edge Interface Service: This service is an application that runs in a Kubernetes pod on each node of the OpenNESS Kubernetes cluster. It allows attachment of additional network interfaces of the node host to provide an OVS bridge, enabling external traffic scenarios for applications deployed in Kubernetes pods. Services on each node can be controlled from the Control Plane node using a kubectl plugin. +- Edge Interface Service: This service is an application that runs in a Kubernetes pod on each node of the OpenNESS Kubernetes cluster. It allows attachment of additional network interfaces of the node host to provide an OVS bridge, enabling external traffic scenarios for applications deployed in Kubernetes pods. Services on each node can be controlled from the Control Plane using a kubectl plugin. This interface service can attach both kernel and userspace (DPDK) network interfaces to OVS bridges of a suitable type. - BIOS/Firmware Configuration Service : Uses Intel's System Configuration Utility (syscfg) tool to build a pod that is scheduled by K8s as a job that configures both BIOS and FW with the given specification. - DNS Service: Supports DNS resolution and forwarding services for the application deployed on edge computing. The DNS server is implemented based on the DNS library in Go. DNS service supports resolving DNS requests from user equipment (UE) and applications on the edge cloud. diff --git a/doc/enhanced-platform-awareness/openness-bios.md b/doc/enhanced-platform-awareness/openness-bios.md index 1eb1fbad..6a3aa890 100644 --- a/doc/enhanced-platform-awareness/openness-bios.md +++ b/doc/enhanced-platform-awareness/openness-bios.md @@ -26,7 +26,7 @@ OpenNESS provides a reference implementation demonstrating how to configure low- >**NOTE**: The Intel® System Configuration Utility is not intended for and should not be used on any non-Intel server products. -The OpenNESS Network Edge implementation goes a step further and provides an automated process using Kubernetes\* to save and restore BIOS and firmware settings. To do this, the Intel® System Configuration Utility is packaged as a pod and deployed as a Kubernetes job that uses ConfigMap. This ConfigMap provides a mount point that has the BIOS and firmware profile that needs to be used for the worker node. A platform reboot is required for the BIOS and firmware configuration to be applied. To enable this, the BIOS and firmware job is deployed as a privileged pod. +The OpenNESS Network Edge implementation goes a step further and provides an automated process using Kubernetes\* to save and restore BIOS and firmware settings. To do this, the Intel® System Configuration Utility is packaged as a pod and deployed as a Kubernetes job that uses ConfigMap. This ConfigMap provides a mount point that has the BIOS and firmware profile that needs to be used for the node. A platform reboot is required for the BIOS and firmware configuration to be applied. To enable this, the BIOS and firmware job is deployed as a privileged pod. ![BIOS and Firmware configuration on OpenNESS](biosfw-images/openness_biosfw.png) @@ -61,4 +61,4 @@ To enable BIOSFW, perform the following steps: * Use `kubectl biosfw direct /d BIOSSETTINGS "Quiet Boot"` to run `syscfg /d BIOSSETTINGS "Quiet Boot"` on `` node. ## Reference -- [Intel Save and Restore System Configuration Utility (SYSCFG)](https://downloadcenter.intel.com/download/28713/Save-and-Restore-System-Configuration-Utility-SYSCFG-) \ No newline at end of file +- [Intel Save and Restore System Configuration Utility (SYSCFG)](https://downloadcenter.intel.com/download/28713/Save-and-Restore-System-Configuration-Utility-SYSCFG-) diff --git a/doc/enhanced-platform-awareness/openness-fpga.md b/doc/enhanced-platform-awareness/openness-fpga.md index 4fda3540..f06f790c 100644 --- a/doc/enhanced-platform-awareness/openness-fpga.md +++ b/doc/enhanced-platform-awareness/openness-fpga.md @@ -322,7 +322,7 @@ kubectl exec -it test -- printenv | grep FEC To check the number of devices currently allocated to pods, run (and search for 'Allocated Resources'): ``` -kubectl describe node +kubectl describe node ``` ### Verifying Application POD access and usage of FPGA on OpenNESS Network Edge diff --git a/doc/enhanced-platform-awareness/openness-telemetry.md b/doc/enhanced-platform-awareness/openness-telemetry.md index a6263113..52819159 100644 --- a/doc/enhanced-platform-awareness/openness-telemetry.md +++ b/doc/enhanced-platform-awareness/openness-telemetry.md @@ -89,7 +89,7 @@ In OpenNESS, Prometheus is deployed as a K8s Deployment with a single pod/replic ### Grafana -Grafana is an open-source visualization and analytics software. It takes the data provided from external sources and displays relevant data to the user via dashboards. It enables the user to create customized dashboards based on the information the user wants to monitor and allows for the provision of additional data sources. In OpenNESS, the Grafana pod is deployed on the control plane node as a K8s `Deployment` type and is by default provisioned with data from Prometheus. It is enabled by default in OEK and can be enabled/disabled by changing the `telemetry_grafana_enable` flag. The password to gain access to the dashboard can be altered with the `telemetry_grafana_pass` flag. +Grafana is an open-source visualization and analytics software. It takes the data provided from external sources and displays relevant data to the user via dashboards. It enables the user to create customized dashboards based on the information the user wants to monitor and allows for the provision of additional data sources. In OpenNESS, the Grafana pod is deployed on a control plane as a K8s `Deployment` type and is by default provisioned with data from Prometheus. It is enabled by default in OEK and can be enabled/disabled by changing the `telemetry_grafana_enable` flag. The password to gain access to the dashboard can be altered with the `telemetry_grafana_pass` flag. #### Usage diff --git a/doc/enhanced-platform-awareness/openness-topology-manager.md b/doc/enhanced-platform-awareness/openness-topology-manager.md index f8e570ec..af50b1e1 100644 --- a/doc/enhanced-platform-awareness/openness-topology-manager.md +++ b/doc/enhanced-platform-awareness/openness-topology-manager.md @@ -35,7 +35,7 @@ Topology Manager is a Kubelet component that aims to co-ordinate the set of comp Topology Manager is enabled by default with a `best-effort` policy. You can change the settings before OpenNESS installation by editing the `group_vars/all/10-default.yml` file: ```yaml -### Kubernetes Topology Manager configuration (for worker) +### Kubernetes Topology Manager configuration (for a node) # CPU settings cpu: # CPU policy - possible values: none (disabled), static (default) diff --git a/doc/enhanced-platform-awareness/openness-vcac-a.md b/doc/enhanced-platform-awareness/openness-vcac-a.md index d7aae793..189eaa81 100644 --- a/doc/enhanced-platform-awareness/openness-vcac-a.md +++ b/doc/enhanced-platform-awareness/openness-vcac-a.md @@ -30,9 +30,9 @@ The VCAC-A installation involves a [two-stage build](https://github.com/OpenVisu 1. VCA host kernel build and configuration: this stage patches the CentOS\* 7.6 kernel and builds the necessary modules and dependencies. 2. VCAC-A system image (VCAD) generation: this stage builds an Ubuntu\*-based (VCAD) image that is loaded on the VCAC-A card. -The OEK automates the overall build and installation process of the VCAC-A card by joining it as a standalone logical worker node to the OpenNESS cluster. When successful, the OpenNESS controller is capable of selectively scheduling workloads on the "VCA node" for proximity to the hardware acceleration. +The OEK automates the overall build and installation process of the VCAC-A card by joining it as a standalone logical node to the OpenNESS cluster. When successful, the OpenNESS controller is capable of selectively scheduling workloads on the "VCA node" for proximity to the hardware acceleration. -When onboarding applications such as [Open Visual Cloud Smart City Sample](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app) with the existence of VCAC-A, the OpenNESS controller schedules all the application pods onto the edge worker node except the *video analytics* processing that is scheduled on the VCA node as shown in the figure below. +When onboarding applications such as [Open Visual Cloud Smart City Sample](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app) with the existence of VCAC-A, the OpenNESS controller schedules all the application pods onto the edge node except the *video analytics* processing that is scheduled on the VCA node as shown in the figure below. ![Smart City Setup](vcaca-images/smart-city-app-vcac-a.png) @@ -55,11 +55,11 @@ affinity: ``` ### VCA Pools -Another construct used when deploying OpenNESS is the `VCA pool`, which is a similar concept to the *Node pools* that are supported by [Azure\* Kubernetes\* Service](https://docs.microsoft.com/en-us/azure/aks/use-multiple-node-pools) and [Google\* Kubernetes Engine](https://cloud.google.com/kubernetes-engine/docs/concepts/node-pools). The VCA pool is a unique label assigned to the group of VCA nodes that are plugged into one edge worker node. This enables the scheduler to execute related workloads within the same VCA pool (i.e., within the same edge node physical space). The VCA pool is assigned the label `vcac-pool=`, which reflects the hostname of the VCA host that all the VCAC-A cards are connected to. +Another construct used when deploying OpenNESS is the `VCA pool`, which is a similar concept to the *Node pools* that are supported by [Azure\* Kubernetes\* Service](https://docs.microsoft.com/en-us/azure/aks/use-multiple-node-pools) and [Google\* Kubernetes Engine](https://cloud.google.com/kubernetes-engine/docs/concepts/node-pools). The VCA pool is a unique label assigned to the group of VCA nodes that are plugged into one node. This enables the scheduler to execute related workloads within the same VCA pool (i.e., within the same edge node physical space). The VCA pool is assigned the label `vcac-pool=`, which reflects the hostname of the VCA host that all the VCAC-A cards are connected to. Also, the VCA nodes follow a special naming convention. They are assigned the name of their host nodes appended with *vca* keyword and a number (`-vcaX`). The number is an incremental index to differentiate between multiple VCAC-A cards that are installed. -In the example below, this is a cluster composed of 1 master `silpixa00399671`, 1 VCA host `silpixa00400194`, and 3 VCAC-A cards: `silpixa00400194-vca1`, `silpixa00400194-vca2`, and `silpixa00400194-vca3`. The 3 VCAC-A cards are connected to the node `silpixa00400194`. +In the example below, this is a cluster composed of 1 control plane `silpixa00399671`, 1 VCA host `silpixa00400194`, and 3 VCAC-A cards: `silpixa00400194-vca1`, `silpixa00400194-vca2`, and `silpixa00400194-vca3`. The 3 VCAC-A cards are connected to the node `silpixa00400194`. ```shell $ kubectl get nodes NAME STATUS ROLES AGE VERSION diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index 64b6dfb6..d054f426 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -139,11 +139,11 @@ To deploy Network Edge in a single-node cluster scenario, follow the steps below ## Docker registry -Docker registry is a storage and distribution system for Docker Images. On the OpenNESS environment, Docker registry service is deployed as a pod on Control plane Node. Docker registry authentication enabled with self-signed certificates as well as all node and control plane nodes will have access to the Docker registry. +Docker registry is a storage and distribution system for Docker Images. On the OpenNESS environment, Docker registry service is deployed as a pod on Control plane Node. Docker registry authentication enabled with self-signed certificates as well as all nodes and control plane will have access to the Docker registry. ### Deploy Docker registry -Ansible "docker_registry" roles created on openness-experience-kits. For deploying a Docker registry on Kubernetes, control plane node roles are enabled on the openness-experience-kits "network_edge.yml" file. +Ansible "docker_registry" roles created on openness-experience-kits. For deploying a Docker registry on Kubernetes, control plane roles are enabled on the openness-experience-kits "network_edge.yml" file. ```ini role: docker_registry/controlplane diff --git a/openness_releasenotes.md b/openness_releasenotes.md index b1c521f3..a2015322 100644 --- a/openness_releasenotes.md +++ b/openness_releasenotes.md @@ -271,13 +271,13 @@ This document provides high level system features, issues and limitations inform - **OpenNESS 20.03** - On-Premises edge installation takes more than 1.5hrs because of docker image build for OVS-DPDK - Network edge installation takes more than 1.5hrs because of docker image build for OVS-DPDK - - OpenNESS controller allows management NICs to be in the pool of configuration which might allow configuration by mistake there by disconnecting the node from master + - OpenNESS controller allows management NICs to be in the pool of configuration which might allow configuration by mistake there by disconnecting the node from control plane - When using the SRIOV EPA feature added in 20.03 with OVNCNI, the container cannot access the CNI port. This is due to the SRIOV port being set by changing the network used by the container from default to a custom network, This overwrites the OVNCNI network setting configured prior to this to enable the container to work with OVNCNI. Another issue with the SRIOV, is that this also overwrites the network configuration with the EAA and edgedns, agents, which prevents the SRIOV enabled container from communicating with the agents. - Cannot remove Edge Node from Controller when its offline and traffic policy is configured or app is deployed. - **OpenNESS 20.06** - On-Premises edge installation takes 1.5hrs because of docker image build for OVS-DPDK - Network edge installation takes 1.5hrs because of docker image build for OVS-DPDK - - OpenNESS controller allows management NICs to be in the pool of configuration which might allow configuration by mistake there by disconnecting the node from master + - OpenNESS controller allows management NICs to be in the pool of configuration which might allow configuration by mistake there by disconnecting the node from control plane - When using the SRIOV EPA feature added in 20.03 with OVNCNI, the container cannot access the CNI port. This is due to the SRIOV port being set by changing the network used by the container from default to a custom network, This overwrites the OVNCNI network setting configured prior to this to enable the container to work with OVNCNI. Another issue with the SRIOV, is that this also overwrites the network configuration with the EAA and edgedns, agents, which prevents the SRIOV enabled container from communicating with the agents. - Cannot remove Edge Node from Controller when its offline and traffic policy is configured or app is deployed. - Legacy OnPremises - Traffic rule creation: cannot parse filled and cleared field @@ -349,4 +349,4 @@ OpenNESS Edge Node has been tested using the following hardware specification: > OpenNESS was tested on CentOS Linux release 7.6.1810 (Core) : Note: OpenNESS is tested with CentOS 7.6 Pre-empt RT kernel to ensure VNFs and Applications can co-exist. There is not a requirement from OpenNESS software to run on a Pre-empt RT kernel. # Package Versions -Package: telemetry, cadvisor 0.36.0, grafana 7.0.3, prometheus 2.16.0, prometheus: node exporter 1.0.0-rc.0, tas 0., golang 1.14.9 docker 19.03.12, kubernetes 1.18.4, dpdk 18.11.6, ovs 2.12.0, ovn 2.12.0, helm 3.0, kubeovn 1.0.1, flannel 0.12.0, calico 3.14.0 , multus 3.6, sriov cni 2.3, nfd 0.6.0, cmk v1.4.1 TAS we build from specific commit “a13708825e854da919c6fdf05d50753113d04831” \ No newline at end of file +Package: telemetry, cadvisor 0.36.0, grafana 7.0.3, prometheus 2.16.0, prometheus: node exporter 1.0.0-rc.0, tas 0., golang 1.14.9 docker 19.03.12, kubernetes 1.18.4, dpdk 18.11.6, ovs 2.12.0, ovn 2.12.0, helm 3.0, kubeovn 1.0.1, flannel 0.12.0, calico 3.14.0 , multus 3.6, sriov cni 2.3, nfd 0.6.0, cmk v1.4.1 TAS we build from specific commit “a13708825e854da919c6fdf05d50753113d04831” From e696c0c4f9074a3416bb816bf90238acfb6b5867 Mon Sep 17 00:00:00 2001 From: Karina Murawko-Wisniewska <48431435+i-karina@users.noreply.github.com> Date: Tue, 27 Oct 2020 10:58:45 +0100 Subject: [PATCH 003/148] Centos version upgrade to 7.8 (#349) --- .../openness-network-edge-vm-support.md | 8 ++++---- doc/cloud-adapters/openness_baiducloud.md | 2 +- .../openness-vcac-a.md | 4 ++-- .../controller-edge-node-setup.md | 2 +- .../openness-experience-kits.md | 20 +++++++++---------- doc/ran/openness_xran.md | 2 +- openness_releasenotes.md | 2 +- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/doc/applications-onboard/openness-network-edge-vm-support.md b/doc/applications-onboard/openness-network-edge-vm-support.md index 779f8a1b..5c158408 100644 --- a/doc/applications-onboard/openness-network-edge-vm-support.md +++ b/doc/applications-onboard/openness-network-edge-vm-support.md @@ -188,7 +188,7 @@ To deploy a sample stateful VM with persistent storage and additionally use a Ge ``` 2. Download the Generic Cloud qcow image for CentOS 7: ```shell - [root@controller ~]# wget https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-1907.qcow2 + [root@controller ~]# wget https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-2003.qcow2 ``` 3. Get the address of the CDI upload proxy: ```shell @@ -197,7 +197,7 @@ To deploy a sample stateful VM with persistent storage and additionally use a Ge 4. Create and upload the image to PVC via CDI: >**NOTE**: There is currently a limitation when using the CDI together with CMK (Intel's CPU Manager for Kubernetes). The CDI upload pod will fail to deploy on the node due to K8s node taint provided by CMK. For a workaround, see the [limitations section](#cdi-image-upload-fails-when-cmk-is-enabled). ```shell - [root@controller ~]# kubectl virt image-upload dv centos-dv --image-path=/root/kubevirt/CentOS-7-x86_64-GenericCloud-1907.qcow2 --insecure --size=15Gi --storage-class=local-storage --uploadproxy-url=https://:443 + [root@controller ~]# kubectl virt image-upload dv centos-dv --image-path=/root/kubevirt/CentOS-7-x86_64-GenericCloud-2003.qcow2 --insecure --size=15Gi --storage-class=local-storage --uploadproxy-url=https://:443 DataVolume default/centos-dv created Waiting for PVC centos-dv upload pod to be ready... @@ -208,7 +208,7 @@ To deploy a sample stateful VM with persistent storage and additionally use a Ge Uploading data completed successfully, waiting for processing to complete, you can hit ctrl-c without interrupting the progress Processing completed successfully - Uploading /root/kubevirt/CentOS-7-x86_64-GenericCloud-1907.qcow2 completed successfully + Uploading /root/kubevirt/CentOS-7-x86_64-GenericCloud-2003.qcow2 completed successfully ``` 5. Check that PV, DV, and PVC are correctly created: ```shell @@ -382,7 +382,7 @@ The following script is an example of how to perform the above steps: ```shell #!/bin/bash -kubectl virt image-upload dv centos-dv --image-path=/root/CentOS-7-x86_64-GenericCloud-1907.qcow2 --insecure --size=15Gi --storage-class=local-storage --uploadproxy-url=https://:443 & +kubectl virt image-upload dv centos-dv --image-path=/root/CentOS-7-x86_64-GenericCloud-2003.qcow2 --insecure --size=15Gi --storage-class=local-storage --uploadproxy-url=https://:443 & sleep 5 diff --git a/doc/cloud-adapters/openness_baiducloud.md b/doc/cloud-adapters/openness_baiducloud.md index d59a856b..0f9601c7 100644 --- a/doc/cloud-adapters/openness_baiducloud.md +++ b/doc/cloud-adapters/openness_baiducloud.md @@ -322,7 +322,7 @@ The scripts can be found in the release package with the subfolder name `setup_b └── measure_rtt_openedge.py ``` -Before running the scripts, install python3.6 and paho mqtt on a CentOS\* Linux\* machine, where the recommended version is CentOS Linux release 7.6.1810 (Core). +Before running the scripts, install python3.6 and paho mqtt on a CentOS\* Linux\* machine, where the recommended version is CentOS Linux release 7.8.2003 (Core). The following are recommended install commands: ```docker diff --git a/doc/enhanced-platform-awareness/openness-vcac-a.md b/doc/enhanced-platform-awareness/openness-vcac-a.md index 189eaa81..127337ee 100644 --- a/doc/enhanced-platform-awareness/openness-vcac-a.md +++ b/doc/enhanced-platform-awareness/openness-vcac-a.md @@ -27,7 +27,7 @@ Equipped with a CPU, the VCAC-A card is installed with a standalone operating sy > * The full acronym *VCAC-A* is loosely used when talking about the PCIe card. The VCAC-A installation involves a [two-stage build](https://github.com/OpenVisualCloud/VCAC-SW-Analytics/): -1. VCA host kernel build and configuration: this stage patches the CentOS\* 7.6 kernel and builds the necessary modules and dependencies. +1. VCA host kernel build and configuration: this stage patches the CentOS\* 7.8 kernel and builds the necessary modules and dependencies. 2. VCAC-A system image (VCAD) generation: this stage builds an Ubuntu\*-based (VCAD) image that is loaded on the VCAC-A card. The OEK automates the overall build and installation process of the VCAC-A card by joining it as a standalone logical node to the OpenNESS cluster. When successful, the OpenNESS controller is capable of selectively scheduling workloads on the "VCA node" for proximity to the hardware acceleration. @@ -170,7 +170,7 @@ The pre-defined OpenNESS flavor *media-analytics-vca* is provided to provision a The VCAC-A installation in OEK performs the following tasks: - Pull the release package from [Open Visual Cloud VCAC-A card media analytics software](https://github.com/OpenVisualCloud/VCAC-SW-Analytics) and the required dependencies -- Apply CentOS 7.6 kernel patches and build kernel RPM +- Apply CentOS 7.8 kernel patches and build kernel RPM - Apply module patches and build driver RPM - Build daemon utilities RPM - Install docker-ce and kubernetes on the VCA host diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index d054f426..731ffac6 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -49,7 +49,7 @@ The following set of actions must be completed to set up the Open Network Edge S To use the playbooks, several preconditions must be fulfilled. These preconditions are described in the [Q&A](#qa) section below. The preconditions are: -- CentOS\* 7.6.1810 must be installed on hosts where the product is deployed. It is highly recommended to install the operating system using a minimal ISO image on nodes that will take part in deployment (obtained from inventory file). Also, do not make customizations after a fresh manual install because it might interfere with Ansible scripts and give unpredictable results during deployment. +- CentOS\* 7.8.2003 must be installed on hosts where the product is deployed. It is highly recommended to install the operating system using a minimal ISO image on nodes that will take part in deployment (obtained from inventory file). Also, do not make customizations after a fresh manual install because it might interfere with Ansible scripts and give unpredictable results during deployment. - Hosts for the Edge Controller (Kubernetes control plane) and Edge Nodes (Kubernetes nodes) must have proper and unique hostnames (i.e., not `localhost`). This hostname must be specified in `/etc/hosts` (refer to [Setup static hostname](#setup-static-hostname)). diff --git a/doc/getting-started/openness-experience-kits.md b/doc/getting-started/openness-experience-kits.md index 5516ad43..12b843ec 100644 --- a/doc/getting-started/openness-experience-kits.md +++ b/doc/getting-started/openness-experience-kits.md @@ -35,7 +35,7 @@ OEKs allow a user to customize kernel, grub parameters, and tuned profiles by le OEKs contain a `host_vars/` directory that can be used to place a YAML file (`nodes-inventory-name.yml`, e.g., `node01.yml`). The file would contain variables that would override roles' default values. -> **NOTE**: Despite the ability to customize parameters (kernel), it is required to have a clean CentOS\* 7.6.1810 operating system installed on hosts (from a minimal ISO image) that will be later deployed from Ansible scripts. This OS shall not have any user customizations. +> **NOTE**: Despite the ability to customize parameters (kernel), it is required to have a clean CentOS\* 7.8.2003 operating system installed on hosts (from a minimal ISO image) that will be later deployed from Ansible scripts. This OS shall not have any user customizations. To override the default value, place the variable's name and new value in the host's vars file. For example, the contents of `host_vars/node01.yml` that would result in skipping kernel customization on that node: @@ -74,11 +74,11 @@ Here are several default values: # --- machine_setup/custom_kernel kernel_skip: false # use this variable to disable custom kernel installation for host -kernel_repo_url: http://linuxsoft.cern.ch/cern/centos/7/rt/CentOS-RT.repo -kernel_repo_key: http://linuxsoft.cern.ch/cern/centos/7/os/x86_64/RPM-GPG-KEY-cern +kernel_repo_url: http://linuxsoft.cern.ch/cern/centos/7.8.2003/rt/CentOS-RT.repo +kernel_repo_key: http://linuxsoft.cern.ch/cern/centos/7.8.2003/os/x86_64/RPM-GPG-KEY-cern kernel_package: kernel-rt-kvm kernel_devel_package: kernel-rt-devel -kernel_version: 3.10.0-957.21.3.rt56.935.el7.x86_64 +kernel_version: 3.10.0-1127.19.1.rt56.1116.el7.x86_64 kernel_dependencies_urls: [] kernel_dependencies_packages: [] @@ -95,8 +95,8 @@ additional_grub_params: "" # --- machine_setup/configure_tuned tuned_skip: false # use this variable to skip tuned profile configuration for host tuned_packages: -- http://linuxsoft.cern.ch/scientific/7x/x86_64/os/Packages/tuned-2.11.0-8.el7.noarch.rpm -- http://linuxsoft.cern.ch/scientific/7x/x86_64/os/Packages/tuned-profiles-realtime-2.11.0-8.el7.noarch.rpm + - tuned-2.11.0-8.el7 + - http://linuxsoft.cern.ch/scientific/7.8/x86_64/os/Packages/tuned-profiles-realtime-2.11.0-8.el7.noarch.rpm tuned_profile: realtime tuned_vars: | isolated_cores=2-3 @@ -104,16 +104,16 @@ tuned_vars: | nohz_full=2-3 ``` -### Use newer realtime kernel (3.10.0-1062) -By default, `kernel-rt-kvm-3.10.0-957.21.3.rt56.935.el7.x86_64` from `http://linuxsoft.cern.ch/cern/centos/$releasever/rt/$basearch/` repository is installed. +### Use different realtime kernel (3.10.0-1062) +By default, `kernel-rt-kvm-3.10.0-1127.19.1.rt56.1116.el7.x86_64` from buil-in repository is installed. To use another version (e.g., `kernel-rt-kvm-3.10.0-1062.9.1.rt56.1033.el7.x86_64`), create a `host_var` file for the host with content: ```yaml kernel_version: 3.10.0-1062.9.1.rt56.1033.el7.x86_64 ``` -### Use newer non-rt kernel (3.10.0-1062) -The OEK installs a real-time kernel by default from a specific repository. However, the non-rt kernel is present in the official CentOS repository. Therefore, to use a newer non-rt kernel, the following overrides must be applied: +### Use different non-rt kernel (3.10.0-1062) +The OEK installs a real-time kernel by default. However, the non-rt kernel is present in the official CentOS repository. Therefore, to use a different non-rt kernel, the following overrides must be applied: ```yaml kernel_repo_url: "" # package is in default repository, no need to add new repository kernel_package: kernel # instead of kernel-rt-kvm diff --git a/doc/ran/openness_xran.md b/doc/ran/openness_xran.md index afe04fa0..dcb3d1b2 100644 --- a/doc/ran/openness_xran.md +++ b/doc/ran/openness_xran.md @@ -550,7 +550,7 @@ Check the `/proc/cmd` output. It should look similar to: ```shell #cat /proc/cmdline - BOOT_IMAGE=/vmlinuz-3.10.0-957.10.1.rt56.921.el7.x86_64 root=/dev/mapper/centosroot ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap intel_iommu=on iommu=pt usbcore.autosuspend=-1 selinux=0 enforcing=0 nmi_watchdog=0 softlockup_panic=0 audit=0 intel_pstate=disable cgroup_memory=1 cgroup_enable=memory mce=off idle=poll hugepagesz=1G hugepages=16 hugepagesz=2M hugepages=0 default_hugepagesz=1G isolcpus=1-19,21-39 rcu_nocbs=1-19,21-39 kthread_cpus=0,20 irqaffinity=0,20 nohz_full=1-19,21-39 + BOOT_IMAGE=/vmlinuz-3.10.0-1127.19.1.rt56.1116.el7.x86_64 root=/dev/mapper/centosroot ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap intel_iommu=on iommu=pt usbcore.autosuspend=-1 selinux=0 enforcing=0 nmi_watchdog=0 softlockup_panic=0 audit=0 intel_pstate=disable cgroup_memory=1 cgroup_enable=memory mce=off idle=poll hugepagesz=1G hugepages=16 hugepagesz=2M hugepages=0 default_hugepagesz=1G isolcpus=1-19,21-39 rcu_nocbs=1-19,21-39 kthread_cpus=0,20 irqaffinity=0,20 nohz_full=1-19,21-39 ``` ### Configure Interfaces diff --git a/openness_releasenotes.md b/openness_releasenotes.md index a2015322..9310a9f3 100644 --- a/openness_releasenotes.md +++ b/openness_releasenotes.md @@ -346,7 +346,7 @@ OpenNESS Edge Node has been tested using the following hardware specification: | PAC-N3000 | [Intel® FPGA Programmable Acceleration Card (Intel® FPGA PAC) N3000 ](https://www.intel.com/content/www/us/en/programmable/products/boards_and_kits/dev-kits/altera/intel-fpga-pac-n3000/overview.html) | # Supported Operating Systems -> OpenNESS was tested on CentOS Linux release 7.6.1810 (Core) : Note: OpenNESS is tested with CentOS 7.6 Pre-empt RT kernel to ensure VNFs and Applications can co-exist. There is not a requirement from OpenNESS software to run on a Pre-empt RT kernel. +> OpenNESS was tested on CentOS Linux release 7.8.2003 (Core) : Note: OpenNESS is tested with CentOS 7.8 Pre-empt RT kernel to ensure VNFs and Applications can co-exist. There is not a requirement from OpenNESS software to run on a Pre-empt RT kernel. # Package Versions Package: telemetry, cadvisor 0.36.0, grafana 7.0.3, prometheus 2.16.0, prometheus: node exporter 1.0.0-rc.0, tas 0., golang 1.14.9 docker 19.03.12, kubernetes 1.18.4, dpdk 18.11.6, ovs 2.12.0, ovn 2.12.0, helm 3.0, kubeovn 1.0.1, flannel 0.12.0, calico 3.14.0 , multus 3.6, sriov cni 2.3, nfd 0.6.0, cmk v1.4.1 TAS we build from specific commit “a13708825e854da919c6fdf05d50753113d04831” From 63373ef56100b4ebc03cf69e5512dbcdfaa958aa Mon Sep 17 00:00:00 2001 From: i-kwilk <50014376+i-kwilk@users.noreply.github.com> Date: Thu, 29 Oct 2020 13:07:58 +0100 Subject: [PATCH 004/148] DOC for vm support update (#350) --- doc/applications-onboard/openness-network-edge-vm-support.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/applications-onboard/openness-network-edge-vm-support.md b/doc/applications-onboard/openness-network-edge-vm-support.md index 5c158408..b7bf3102 100644 --- a/doc/applications-onboard/openness-network-edge-vm-support.md +++ b/doc/applications-onboard/openness-network-edge-vm-support.md @@ -132,7 +132,7 @@ The KubeVirt role responsible for bringing up KubeVirt components is enabled by ## VM deployment Provided below are sample deployment instructions for different types of VMs. -Please use sample `.yaml` specification files provided in the OpenNESS Edge Controller directory, [edgenode/edgecontroller/kubevirt/examples/](https://github.com/otcshare/edgenode/edgecontroller/tree/master/kubevirt/examples), to deploy the workloads. Some of the files require modification to suit the environment they will be deployed in. Specific instructions on modifications are provided in the following steps: +Please use sample `.yaml` specification files provided in the OpenNESS Edge Controller directory, [edgenode/edgecontroller/kubevirt/examples/](https://github.com/otcshare/edgenode/tree/master/edgecontroller/kubevirt/examples), to deploy the workloads. Some of the files require modification to suit the environment they will be deployed in. Specific instructions on modifications are provided in the following steps: ### Stateless VM deployment To deploy a sample stateless VM with containerDisk storage: @@ -150,7 +150,7 @@ To deploy a sample stateless VM with containerDisk storage: [root@controller ~]# kubectl get pods | grep launcher [root@controller ~]# kubectl get vms ``` - 4. Execute into the VM (pass/login cirros/gocubsgo): + 4. Execute into the VM (login/pass cirros/gocubsgo): ```shell [root@controller ~]# kubectl virt console cirros-stateless-vm ``` From 80a433be6ce20b9356924e437de6a483237f596e Mon Sep 17 00:00:00 2001 From: Amr Mokhtar Date: Thu, 29 Oct 2020 14:01:47 +0000 Subject: [PATCH 005/148] Delete k8s dashboard installation steps as it is now automated in OEK --- .../controller-edge-node-setup.md | 108 ------------------ 1 file changed, 108 deletions(-) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index 731ffac6..b95732e7 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -31,7 +31,6 @@ Copyright (c) 2019-2020 Intel Corporation - [Setting Git](#setting-git) - [GitHub token](#github-token) - [Customize tag/branch/sha to checkout](#customize-tagbranchsha-to-checkout) - - [Installing Kubernetes dashboard](#installing-kubernetes-dashboard) - [Customization of kernel, grub parameters, and tuned profile](#customization-of-kernel-grub-parameters-and-tuned-profile) # Quickstart @@ -457,113 +456,6 @@ controller_repository_branch: openness-20.03 edgenode_repository_branch: openness-20.03 ``` -## Installing Kubernetes dashboard - -Kubernetes does not ship with a graphical interface by default, but a web-based tool called [Kubernetes Dashboard](https://github.com/kubernetes/dashboard) can be installed with a few simple steps. The Kubernetes dashboard allows users to manage the cluster and edge applications. - -The Kubernetes dashboard can only be installed with Network Edge deployments. - -Follow the below steps to install the Kubernetes dashboard after OpenNESS is installed through [playbooks](#running-playbooks). - -1. Deploy the dashboard using `kubectl`: - - ```shell - kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.1/aio/deploy/recommended.yaml - ``` - -2. Get all the pods in all namespaces: - - ```shell - kubectl get pods -o wide --all-namespaces - ``` - -3. Create a new service account with the cluster admin: - - ```shell - cat > dashboard-admin-user.yaml << EOF - apiVersion: v1 - kind: ServiceAccount - metadata: - name: admin-user - namespace: kubernetes-dashboard - --- - apiVersion: rbac.authorization.k8s.io/v1 - kind: ClusterRoleBinding - metadata: - name: admin-user - roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cluster-admin - subjects: - - kind: ServiceAccount - name: admin-user - namespace: kubernetes-dashboard - EOF - ``` - -4. Apply the admin user: - - ```shell - kubectl apply -f dashboard-admin-user.yaml - ``` - -5. Edit kubernetes-dashboard service through the following command: - - ```shell - kubectl -n kubernetes-dashboard edit service kubernetes-dashboard - ``` - - Add `externalIPs` to the service spec, replace `` with the actual controller IP address: - - ```yaml - spec: - externalIPs: - - - ``` - - > **OPTIONAL**: By default the dashboard is accessible at port 443, and it can be changed by editing the port value `- port: ` in the service spec. - -6. Verify that the `kubernetes-dashboard` service has `EXTERNAL-IP` assigned: - - ```shell - kubectl -n kubernetes-dashboard get service kubernetes-dashboard - ``` - -7. Open the dashboard from the browser at `https:///`. If the port was changed according to the OPTIONAL note in step 5, then use `https://:/` instead. - - > **NOTE**: A Firefox\* browser can be an alternative to Chrome\* and Internet Explorer\* in case the dashboard web page is blocked due to certification a issue. - -8. Capture the bearer token using this command: - - ```shell - kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}') - ``` - -Paste the token in the browser to log in, as shown in the following diagram: - -![Dashboard Login](controller-edge-node-setup-images/dashboard-login.png) - -_Figure - Kubernetes Dashboard Login_ - -9. Go to the OpenNESS Controller installation directory and edit the `.env` file with the dashboard link `INFRASTRUCTURE_UI_URL=https://:/` to integrate it with the OpenNESS controller UI: - - ```shell - cd /opt/edgecontroller/ - vi .env - ``` - -10. Build the OpenNESS Controller UI: - - ```shell - cd /opt/edgecontroller/ - make ui-up - ``` - -11. The OpenNESS controller landing page is accessible at `http:///`. - > **NOTE**: `LANDING_UI_URL` can be retrieved from `.env` file. - - ## Customization of kernel, grub parameters, and tuned profile OpenNESS Experience Kits provide an easy way to customize the kernel version, grub parameters, and tuned profile. For more information, refer to [the OpenNESS Experience Kits guide](https://github.com/otcshare/specs/blob/master/doc/getting-started/openness-experience-kits.md). From 08e946e2a8138f33ddba08d1ec601b51977993a7 Mon Sep 17 00:00:00 2001 From: Karina Murawko-Wisniewska <48431435+i-karina@users.noreply.github.com> Date: Fri, 6 Nov 2020 15:59:36 +0100 Subject: [PATCH 006/148] K8s and Calico version updated in release notes (#354) --- openness_releasenotes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openness_releasenotes.md b/openness_releasenotes.md index 9310a9f3..85663827 100644 --- a/openness_releasenotes.md +++ b/openness_releasenotes.md @@ -349,4 +349,4 @@ OpenNESS Edge Node has been tested using the following hardware specification: > OpenNESS was tested on CentOS Linux release 7.8.2003 (Core) : Note: OpenNESS is tested with CentOS 7.8 Pre-empt RT kernel to ensure VNFs and Applications can co-exist. There is not a requirement from OpenNESS software to run on a Pre-empt RT kernel. # Package Versions -Package: telemetry, cadvisor 0.36.0, grafana 7.0.3, prometheus 2.16.0, prometheus: node exporter 1.0.0-rc.0, tas 0., golang 1.14.9 docker 19.03.12, kubernetes 1.18.4, dpdk 18.11.6, ovs 2.12.0, ovn 2.12.0, helm 3.0, kubeovn 1.0.1, flannel 0.12.0, calico 3.14.0 , multus 3.6, sriov cni 2.3, nfd 0.6.0, cmk v1.4.1 TAS we build from specific commit “a13708825e854da919c6fdf05d50753113d04831” +Package: telemetry, cadvisor 0.36.0, grafana 7.0.3, prometheus 2.16.0, prometheus: node exporter 1.0.0-rc.0, golang 1.14.9 docker 19.03.12, kubernetes 1.19.3, dpdk 18.11.6, ovs 2.12.0, ovn 2.12.0, helm 3.0, kubeovn 1.0.1, flannel 0.12.0, calico 3.16.0 , multus 3.6, sriov cni 2.3, nfd 0.6.0, cmk v1.4.1, TAS we build from specific commit “a13708825e854da919c6fdf05d50753113d04831” From 8c41d5bd5acca05f53b6811ee43f67ef575b7039 Mon Sep 17 00:00:00 2001 From: Changping Ma Date: Wed, 11 Nov 2020 17:49:08 +0800 Subject: [PATCH 007/148] change docker registry to harbor registry --- .../controller-edge-node-setup.md | 57 ++++++++++--------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index b95732e7..6f22ad35 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -3,7 +3,9 @@ SPDX-License-Identifier: Apache-2.0 Copyright (c) 2019-2020 Intel Corporation ``` + # OpenNESS Network Edge: Controller and Edge node setup +- [OpenNESS Network Edge: Controller and Edge node setup](#openness-network-edge-controller-and-edge-node-setup) - [Quickstart](#quickstart) - [Preconditions](#preconditions) - [Running playbooks](#running-playbooks) @@ -14,10 +16,10 @@ Copyright (c) 2019-2020 Intel Corporation - [VM support for Network Edge](#vm-support-for-network-edge) - [Application on-boarding](#application-on-boarding) - [Single-node Network Edge cluster](#single-node-network-edge-cluster) - - [Docker registry](#docker-registry) - - [Deploy Docker registry](#deploy-docker-registry) - - [Docker registry image push](#docker-registry-image-push) - - [Docker registry image pull](#docker-registry-image-pull) + - [Harbor registry](#harbor-registry) + - [Deploy Harbor registry](#deploy-harbor-registry) + - [Harbor registry image push](#harbor-registry-image-push) + - [Harbor registry image pull](#harbor-registry-image-pull) - [Kubernetes cluster networking plugins (Network Edge)](#kubernetes-cluster-networking-plugins-network-edge) - [Selecting cluster networking plugins (CNI)](#selecting-cluster-networking-plugins-cni) - [Adding additional interfaces to pods](#adding-additional-interfaces-to-pods) @@ -133,49 +135,50 @@ To deploy Network Edge in a single-node cluster scenario, follow the steps below ``` 2. Features can be enabled in the `group_vars/all/10-default.yml` file by tweaking the configuration variables. 3. Settings regarding the kernel, grub, HugePages\*, and tuned can be customized in `group_vars/edgenode_group/10-default.yml`. + > Default settings in the single-node cluster mode are those of the Edge Node (i.e., kernel and tuned customization enabled). 4. Single-node cluster can be deployed by running command: `./deploy_ne.sh single` -## Docker registry +## Harbor registry -Docker registry is a storage and distribution system for Docker Images. On the OpenNESS environment, Docker registry service is deployed as a pod on Control plane Node. Docker registry authentication enabled with self-signed certificates as well as all nodes and control plane will have access to the Docker registry. +Harbor registry is a storage and distribution system for Docker Images. On the OpenNESS environment, Harbor registry service is deployed as a pod on Control plane Node. Harbor registry authentication enabled with self-signed certificates as well as all nodes and control plane will have access to the Harbor registry. -### Deploy Docker registry +### Deploy Harbor registry -Ansible "docker_registry" roles created on openness-experience-kits. For deploying a Docker registry on Kubernetes, control plane roles are enabled on the openness-experience-kits "network_edge.yml" file. +Ansible "harbor_registry" roles created on openness-experience-kits. For deploying a Harbor registry on Kubernetes, control plane roles are enabled on the openness-experience-kits "network_edge.yml" file. ```ini - role: docker_registry/controlplane - role: docker_registry/node - ``` -The following steps are processed during the Docker registry deployment on the OpenNESS setup. + role: harbor_registry/controlplane + role: harbor_registry/node + ``` +The following steps are processed during the Harbor registry deployment on the OpenNESS setup. * Generate a self-signed certificate on the Kubernetes Control plane Node. * Build and deploy a docker-registry pod on the Control plane Node. -* Generate client.key and client.csr on the node -* Authenticate client.csr for server access. -* Share public key and client.cert on trusted Node and Ansible build host location +* Generate a token on the node +* Authenticate token for server access. +* Share public harbor.crt on trusted Node and Ansible build host location /etc/docker/certs.d/ -* After the Docker registry deploys, the Node and Ansible host can access the private Docker registry. -* The IP address of the Docker registry will be: "Kubernetes_Control_Plane_IP" -* The port number of the Docker registry will be: 5000 +* After the Harbor registry deploys, the Node and Ansible host can access the private Docker registry. +* The IP address of the Harbor registry will be: "Kubernetes_Control_Plane_IP" +* The port number of the Docker registry will be: 30003 -### Docker registry image push -Use the Docker tag to create an alias of the image with the fully qualified path to your Docker registry after the tag successfully pushes the image to the Docker registry. +### Harbor registry image push +Use the Docker tag to create an alias of the image with the fully qualified path to your Harbor registry after the tag successfully pushes the image to the Docker registry. ```ini - docker tag nginx:latest Kubernetes_Control_Plane_IP:5000/nginx:latest - docker push Kubernetes_Control_Plane_IP:5000/nginx:latest - ``` + docker tag nginx:latest Kubernetes_Control_Plane_IP:30003/library/nginx:latest + docker push Kubernetes_Control_Plane_IP:30003/library/nginx:latest + ``` Now image the tag with the fully qualified path to your private registry. You can push the image to the registry using the Docker push command. -### Docker registry image pull +### Harbor registry image pull Use the `docker pull` command to pull the image from Docker registry: ```ini - docker pull Kubernetes_Control_Plane_IP:5000/nginx:latest - ``` ->**NOTE**: should be replaced as per our docker registry IP address. + docker pull Kubernetes_Control_Plane_IP:30003/library/nginx:latest + ``` +>**NOTE**: should be replaced as per our harbor registry IP address. ## Kubernetes cluster networking plugins (Network Edge) From c7288f0310600745f5eaaf3a6dec515ec6b84d3b Mon Sep 17 00:00:00 2001 From: cuizhaoyue Date: Wed, 11 Nov 2020 18:11:36 +0800 Subject: [PATCH 008/148] modify some of setup --- doc/getting-started/network-edge/controller-edge-node-setup.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index 6f22ad35..43966844 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -155,8 +155,6 @@ The following steps are processed during the Harbor registry deployment on the O * Generate a self-signed certificate on the Kubernetes Control plane Node. * Build and deploy a docker-registry pod on the Control plane Node. -* Generate a token on the node -* Authenticate token for server access. * Share public harbor.crt on trusted Node and Ansible build host location /etc/docker/certs.d/ * After the Harbor registry deploys, the Node and Ansible host can access the private Docker registry. From abe0d19585f3af117f0aeb0ceddabfd5e73c112e Mon Sep 17 00:00:00 2001 From: cuizhaoyue Date: Thu, 12 Nov 2020 14:09:19 +0800 Subject: [PATCH 009/148] modified doc/enhanced-platform-awareness/openness-fpga.md --- doc/enhanced-platform-awareness/openness-fpga.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/enhanced-platform-awareness/openness-fpga.md b/doc/enhanced-platform-awareness/openness-fpga.md index f06f790c..831a7408 100644 --- a/doc/enhanced-platform-awareness/openness-fpga.md +++ b/doc/enhanced-platform-awareness/openness-fpga.md @@ -68,7 +68,7 @@ The full pipeline of preparing the device for workload deployment and deploying - Programming the FPGA with RTL factory and user images: feature installation via Ansible\* automation and a K8s kubectl plugin are provided to use the feature. - Enabling SRIOV, binding devices to appropriate drivers, and the creation of VFs: delivered as part of the Edge Nodes Ansible automation. -- Queue configuration of FPGAs PF/VFs with an aid of DPDK Baseband Device (BBDEV) config utility: Docker\* image creation delivered as part of the Edge Nodes Ansible automation (dependency on the config utility from the FlexRAN package). The images being pushed to a local Docker registry, sample pod (job) deployment via Helm charts. +- Queue configuration of FPGAs PF/VFs with an aid of DPDK Baseband Device (BBDEV) config utility: Docker\* image creation delivered as part of the Edge Nodes Ansible automation (dependency on the config utility from the FlexRAN package). The images being pushed to a local Harbor registry, sample pod (job) deployment via Helm charts. - Enabling orchestration and allocation of the devices (VFs) to non-root pods requesting the devices: leveraging the support of FPGA SRIOV VFs from K8s SRIOV Device Plugin. K8s plugin deployment is delivered as part of the Edge Controller's Ansible automation. - Simple sample BBDEV application to validate the pipeline (i.e., SRIOV creation - Queue configuration - Device orchestration - Pod deployment): Script delivery and instructions to build Docker image for sample application delivered as part of Edge Apps package. From ad624be1735635f151952d3f9f5cacda027a8c1e Mon Sep 17 00:00:00 2001 From: cuizhaoyue Date: Thu, 12 Nov 2020 14:44:24 +0800 Subject: [PATCH 010/148] change Docker registry to Harbor registry --- doc/enhanced-platform-awareness/openness-telemetry.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/enhanced-platform-awareness/openness-telemetry.md b/doc/enhanced-platform-awareness/openness-telemetry.md index 52819159..fcddd4cb 100644 --- a/doc/enhanced-platform-awareness/openness-telemetry.md +++ b/doc/enhanced-platform-awareness/openness-telemetry.md @@ -218,7 +218,7 @@ OpenCensus exporter/receiver is used in the default OpenNESS configuration for a #### Usage 1. Pull the Edge Apps repository. -2. Build the sample telemetry application Docker image and push to the local Docker registry from the Edge Apps repo. +2. Build the sample telemetry application Docker image and push to the local Harbor registry from the Edge Apps repo. ```shell cd edgeapps/applications/telemetry-sample-app/image/ @@ -232,7 +232,7 @@ OpenCensus exporter/receiver is used in the default OpenNESS configuration for a ./create-secret.sh ``` -4. Configure and deploy the sample telemetry application with the side-car OpenTelemetry agent from the Edge Apps repo using Helm. Edit `edgeapps/applications/telemetry-sample-app/opentelemetry-agent/values.yaml`, and change `app:image:repository: 10.0.0.1:5000/intel/metricapp` to the IP address of the Docker registry. +4. Configure and deploy the sample telemetry application with the side-car OpenTelemetry agent from the Edge Apps repo using Helm. Edit `edgeapps/applications/telemetry-sample-app/opentelemetry-agent/values.yaml`, and change `app:image:repository: 10.0.0.1:30003/library/metricapp` to the IP address of the Harbor registry. ```shell cd edgeapps/applications/telemetry-sample-app/ From 4259c37a9f4ef5d46855c3879534267c844d5cb8 Mon Sep 17 00:00:00 2001 From: cuizhaoyue Date: Thu, 12 Nov 2020 15:15:53 +0800 Subject: [PATCH 011/148] change docker registry to harbor registry --- .../network-edge-applications-onboarding.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/applications-onboard/network-edge-applications-onboarding.md b/doc/applications-onboard/network-edge-applications-onboarding.md index c4016282..01fb921f 100644 --- a/doc/applications-onboard/network-edge-applications-onboarding.md +++ b/doc/applications-onboard/network-edge-applications-onboarding.md @@ -40,7 +40,7 @@ The following application onboarding steps assume that OpenNESS was installed th # Building applications Users must provide the application to be deployed on the OpenNESS platform for Network Edge. The application must be provided in a Docker\* image format that is available either from an external Docker repository (Docker Hub) or a locally built Docker image. The image must be available on the Edge Node, which the application will be deployed on. -> **Note**: The Docker registry setup is out of scope for this document. If users already have a docker container image file and would like to copy it to the node manually, they can use the `docker load` command to add the image. The success of using a pre-built Docker image depends on the application dependencies that users must know. +> **Note**: The Harbor registry setup is out of scope for this document. If users already have a docker container image file and would like to copy it to the node manually, they can use the `docker load` command to add the image. The success of using a pre-built Docker image depends on the application dependencies that users must know. The OpenNESS [edgeapps](https://github.com/otcshare/edgeapps) repository provides images for OpenNESS supported applications. Pull the repository to your Edge Node to build the images. From f799cf002dbfc27f34991de878450df517de821b Mon Sep 17 00:00:00 2001 From: cuizhaoyue Date: Thu, 12 Nov 2020 15:26:36 +0800 Subject: [PATCH 012/148] change docker registry to harbor registry --- doc/ran/openness_ran.md | 8 ++++---- openness_releasenotes.md | 2 +- schema/pb/eva.proto | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/ran/openness_ran.md b/doc/ran/openness_ran.md index 2953b409..429564a5 100644 --- a/doc/ran/openness_ran.md +++ b/doc/ran/openness_ran.md @@ -73,15 +73,15 @@ The following example reflects the Docker image [expected by Helm chart](https:/ ```shell docker build -t flexran5g:3.10.0-1062.12.1.rt56 . ``` -7. Tag the image and push to a local Docker registry (Docker registry deployed as part of OpenNESS Experience Kit) +7. Tag the image and push to a local Harbor registry (Harbor registry deployed as part of OpenNESS Experience Kit) ```shell - docker tag flexran5g :/intel/flexran5g:3.10.0-1062.12.1.rt56 + docker tag flexran5g :/library/flexran5g:3.10.0-1062.12.1.rt56 - docker push :/intel/flexran5g:3.10.0-1062.12.1.rt56 + docker push :/library/flexran5g:3.10.0-1062.12.1.rt56 ``` -By the end of step 7, the FlexRAN Docker image is created and available in the Docker registry. This image is copied to the edge node where FlexRAN will be deployed and that is installed with OpenNESS Network edge with all the required EPA features including Intel® FPGA Programmable Acceleration Card (Intel® FPGA PAC) N3000. Please refer to the document [Using FPGA in OpenNESS: Programming, Resource Allocation, and Configuration](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-fpga.md) for details on setting up Intel® FPGA PAC N3000 with vRAN FPGA image. +By the end of step 7, the FlexRAN Docker image is created and available in the Harbor registry. This image is copied to the edge node where FlexRAN will be deployed and that is installed with OpenNESS Network edge with all the required EPA features including Intel® FPGA Programmable Acceleration Card (Intel® FPGA PAC) N3000. Please refer to the document [Using FPGA in OpenNESS: Programming, Resource Allocation, and Configuration](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-fpga.md) for details on setting up Intel® FPGA PAC N3000 with vRAN FPGA image. # FlexRAN hardware platform configuration ## BIOS diff --git a/openness_releasenotes.md b/openness_releasenotes.md index 85663827..f45d4b81 100644 --- a/openness_releasenotes.md +++ b/openness_releasenotes.md @@ -181,7 +181,7 @@ This document provides high level system features, issues and limitations inform - xRAN Fronthaul with Helm CHart (xRAN app not part of the release) - Helm Chart for Kubernetes enhancements - NFD, CMK, SRIOV-Device plugin and Multus - - Support for local Docker registry setup + - Support for local Harbor registry setup - Support for deployment specific Flavors - Minimal - RAN - 4G and 5G diff --git a/schema/pb/eva.proto b/schema/pb/eva.proto index 7eea1e3b..e1972b95 100644 --- a/schema/pb/eva.proto +++ b/schema/pb/eva.proto @@ -34,7 +34,7 @@ service ApplicationLifecycleService { // Image sources will be added over time. For example, pulling from external // Docker registries may be supported with a source such as: // -// // Image will be downloaded from a Docker registry +// // Image will be downloaded from a Harbor registry // message DockerRegistrySource { // string repo = 1; // string tag = 2; From 833400c6e6223959fae18590d92d76358c0789ca Mon Sep 17 00:00:00 2001 From: Krishnamurthy Jambur <47258934+krishnajs@users.noreply.github.com> Date: Thu, 12 Nov 2020 18:56:16 +0000 Subject: [PATCH 013/148] updating locations (#356) --- .../dataplane/iap-images/iap1.png | Bin .../dataplane/iap-images/iap2.png | Bin .../dataplane/iap-images/iap3.png | Bin .../dataplane/index.html | 0 .../dataplane/nts-images/nts1.png | Bin .../dataplane/nts-images/nts2.png | Bin .../dataplane/openness-interapp.md | 0 .../dataplane/openness-ovn.md | 0 .../dataplane/openness-userspace-cni.md | 0 .../dataplane/ovn_images/openness_ovn.png | Bin .../dataplane/ovn_images/openness_ovnovs.png | Bin .../dataplane/ovn_images/ovncni_cluster.png | Bin .../biosfw-images/openness_biosfw.png | Bin .../cmk-images/cmk1.png | Bin .../cmk-images/cmk2.png | Bin .../fpga-images/openness-fpga1.png | Bin .../fpga-images/openness-fpga2.png | Bin .../fpga-images/openness-fpga3.png | Bin .../fpga-images/openness-fpga4.png | Bin .../hddl-images/hddlservice.png | Bin .../hddl-images/openness_HDDL.png | Bin .../hddl-images/openness_dynamic.png | Bin .../enhanced-platform-awareness/index.html | 0 .../multussriov-images/multus-pod-image.svg | 0 .../multussriov-images/sriov-cni.png | Bin .../multussriov-images/sriov-dp.png | Bin .../nfd-images/nfd0.png | Bin .../nfd-images/nfd1.png | Bin .../nfd-images/nfd2.png | Bin .../openness-bios.md | 0 .../openness-dedicated-core.md | 0 .../openness-fpga.md | 0 .../openness-hugepage.md | 0 .../openness-kubernetes-dashboard.md | 0 .../openness-node-feature-discovery.md | 0 .../openness-rmd.md | 0 .../openness-sriov-multiple-interfaces.md | 0 .../openness-telemetry.md | 0 .../openness-topology-manager.md | 0 .../openness-vcac-a.md | 0 .../openness_hddl.md | 0 .../telemetry-images/architecture.svg | 0 .../telemetry-images/cadvisor_metric.png | Bin .../telemetry-images/collectd_metric.png | Bin .../telemetry-images/grafana-add-panel.png | Bin .../telemetry-images/grafana-dash-setting.png | Bin .../telemetry-images/grafana-new-dash.png | Bin .../grafana-panel-settings.png | Bin .../telemetry-images/grafana-panel.png | Bin .../grafana-pcm-dashboard.png | Bin .../telemetry-images/grafana-save-dash.png | Bin .../telemetry-images/grafana-save.png | Bin .../telemetry-images/grafana-settings.png | Bin .../telemetry-images/grafana_login.png | Bin .../telemetry-images/node_exporter_metric.png | Bin .../telemetry-images/pcm-metrics.png | Bin .../telemetry-images/pcm-stats.png | Bin .../telemetry-images/prometheus_graph.png | Bin .../telemetry-images/prometheus_metrics.png | Bin .../telemetry-images/prometheus_targets.png | Bin .../tm-images/tm1.png | Bin .../tm-images/tm2.png | Bin .../vcaca-images/smart-city-app-vcac-a.png | Bin .../vcaca-images/using-vcac-a-telemetry.png | Bin .../vcaca-images/vcac-a-vpu-metrics.png | Bin .../epc-images/Openness_highlevel.png | Bin .../core-network/epc-images/openness_epc1.png | Bin .../core-network/epc-images/openness_epc2.png | Bin .../core-network/epc-images/openness_epc3.png | Bin .../epc-images/openness_epc_cnca_1.png | Bin .../epc-images/openness_epcconfig.png | Bin .../epc-images/openness_epctest1.png | Bin .../epc-images/openness_epctest2.png | Bin .../epc-images/openness_epctest3.png | Bin .../epc-images/openness_epctest4.png | Bin .../epc-images/openness_epcupf_add.png | Bin .../epc-images/openness_epcupf_del.png | Bin .../epc-images/openness_epcupf_get.png | Bin .../core-network/index.html | 0 .../ngc-images/5g_edge_data_paths.png | Bin .../5g_edge_deployment_scenario1.png | Bin .../5g_edge_deployment_scenario2.png | Bin .../5g_edge_deployment_scenario3.png | Bin .../ngc-images/5g_openess_components.png | Bin .../ngc-images/5g_openess_microservices.png | Bin .../ngc-images/5g_system_architecture.png | Bin .../core-network/ngc-images/OAuth2.png | Bin .../PFD_Management_transaction_add.png | Bin .../PFD_Management_transaction_del.png | Bin .../PFD_Management_transaction_get.png | Bin .../PFD_Management_transaction_update.png | Bin .../ngc-images/e2e_edge_deployment_flows.png | Bin .../ngc-images/oam_af_service_add.png | Bin .../ngc-images/oam_af_service_del.png | Bin .../ngc-images/oam_af_service_get.png | Bin .../ngc-images/oam_af_service_update.png | Bin .../ngc-images/traffic_subscription_add.png | Bin .../ngc-images/traffic_subscription_del.png | Bin .../ngc-images/traffic_subscription_get.png | Bin .../traffic_subscription_update.png | Bin .../ngc_flows/AF_traffic_influence_add.uml | 100 ++++++------- .../ngc_flows/AF_traffic_influence_delete.uml | 102 ++++++------- .../ngc_flows/AF_traffic_influence_get.uml | 136 +++++++++--------- .../ngc_flows/AF_traffic_influence_update.uml | 100 ++++++------- .../PFD_Management_transaction_delete.uml | 0 .../PFD_Management_transaction_get.uml | 0 .../PFD_Managment_transaction_add.uml | 0 .../PFD_management_transaction_update.uml | 0 .../ngc_flows/e2e_config_flow_for_5g_edge.uml | 0 .../ngc_flows/ngcoam_af_service_add.uml | 90 ++++++------ .../ngc_flows/ngcoam_af_service_delete.uml | 92 ++++++------ .../ngc_flows/ngcoam_af_service_get.uml | 90 ++++++------ .../ngc_flows/ngcoam_af_service_update.uml | 92 ++++++------ .../core-network/openness-core.png | Bin .../core-network/openness_epc.md | 0 .../core-network/openness_ngc.md | 0 .../core-network/openness_upf.md | 0 .../ran/index.html | 0 .../ran/openness-ran.png | Bin .../ran/openness_ran.md | 0 .../ran/openness_xran.md | 0 .../ran/openness_xran_images/xran_img1.png | Bin .../ran/openness_xran_images/xran_img10.png | Bin .../ran/openness_xran_images/xran_img11.png | Bin .../ran/openness_xran_images/xran_img12.png | Bin .../ran/openness_xran_images/xran_img13.png | Bin .../ran/openness_xran_images/xran_img14.png | Bin .../ran/openness_xran_images/xran_img16.png | Bin .../ran/openness_xran_images/xran_img17.png | Bin .../ran/openness_xran_images/xran_img18.png | Bin .../ran/openness_xran_images/xran_img19.png | Bin .../ran/openness_xran_images/xran_img2.png | Bin .../ran/openness_xran_images/xran_img20.png | Bin .../ran/openness_xran_images/xran_img21.png | Bin .../ran/openness_xran_images/xran_img22.png | Bin .../ran/openness_xran_images/xran_img23.png | Bin .../ran/openness_xran_images/xran_img24.png | Bin .../ran/openness_xran_images/xran_img25.png | Bin .../ran/openness_xran_images/xran_img3.png | Bin .../ran/openness_xran_images/xran_img4.png | Bin .../ran/openness_xran_images/xran_img5.png | Bin .../ran/openness_xran_images/xran_img6.png | Bin .../ran/openness_xran_images/xran_img7.png | Bin .../ran/openness_xran_images/xran_img8.png | Bin .../ran/openness_xran_images/xran_img9.png | Bin 145 files changed, 401 insertions(+), 401 deletions(-) rename doc/{ => building-blocks}/dataplane/iap-images/iap1.png (100%) rename doc/{ => building-blocks}/dataplane/iap-images/iap2.png (100%) rename doc/{ => building-blocks}/dataplane/iap-images/iap3.png (100%) rename doc/{ => building-blocks}/dataplane/index.html (100%) rename doc/{ => building-blocks}/dataplane/nts-images/nts1.png (100%) rename doc/{ => building-blocks}/dataplane/nts-images/nts2.png (100%) rename doc/{ => building-blocks}/dataplane/openness-interapp.md (100%) rename doc/{ => building-blocks}/dataplane/openness-ovn.md (100%) rename doc/{ => building-blocks}/dataplane/openness-userspace-cni.md (100%) rename doc/{ => building-blocks}/dataplane/ovn_images/openness_ovn.png (100%) rename doc/{ => building-blocks}/dataplane/ovn_images/openness_ovnovs.png (100%) rename doc/{ => building-blocks}/dataplane/ovn_images/ovncni_cluster.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/biosfw-images/openness_biosfw.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/cmk-images/cmk1.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/cmk-images/cmk2.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/fpga-images/openness-fpga1.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/fpga-images/openness-fpga2.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/fpga-images/openness-fpga3.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/fpga-images/openness-fpga4.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/hddl-images/hddlservice.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/hddl-images/openness_HDDL.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/hddl-images/openness_dynamic.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/index.html (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/multussriov-images/multus-pod-image.svg (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/multussriov-images/sriov-cni.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/multussriov-images/sriov-dp.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/nfd-images/nfd0.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/nfd-images/nfd1.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/nfd-images/nfd2.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/openness-bios.md (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/openness-dedicated-core.md (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/openness-fpga.md (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/openness-hugepage.md (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/openness-kubernetes-dashboard.md (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/openness-node-feature-discovery.md (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/openness-rmd.md (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/openness-sriov-multiple-interfaces.md (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/openness-telemetry.md (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/openness-topology-manager.md (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/openness-vcac-a.md (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/openness_hddl.md (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/telemetry-images/architecture.svg (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/telemetry-images/cadvisor_metric.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/telemetry-images/collectd_metric.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/telemetry-images/grafana-add-panel.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/telemetry-images/grafana-dash-setting.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/telemetry-images/grafana-new-dash.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/telemetry-images/grafana-panel-settings.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/telemetry-images/grafana-panel.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/telemetry-images/grafana-pcm-dashboard.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/telemetry-images/grafana-save-dash.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/telemetry-images/grafana-save.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/telemetry-images/grafana-settings.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/telemetry-images/grafana_login.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/telemetry-images/node_exporter_metric.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/telemetry-images/pcm-metrics.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/telemetry-images/pcm-stats.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/telemetry-images/prometheus_graph.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/telemetry-images/prometheus_metrics.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/telemetry-images/prometheus_targets.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/tm-images/tm1.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/tm-images/tm2.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/vcaca-images/smart-city-app-vcac-a.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/vcaca-images/using-vcac-a-telemetry.png (100%) rename doc/{ => building-blocks}/enhanced-platform-awareness/vcaca-images/vcac-a-vpu-metrics.png (100%) rename doc/{ => reference-architectures}/core-network/epc-images/Openness_highlevel.png (100%) rename doc/{ => reference-architectures}/core-network/epc-images/openness_epc1.png (100%) rename doc/{ => reference-architectures}/core-network/epc-images/openness_epc2.png (100%) rename doc/{ => reference-architectures}/core-network/epc-images/openness_epc3.png (100%) rename doc/{ => reference-architectures}/core-network/epc-images/openness_epc_cnca_1.png (100%) rename doc/{ => reference-architectures}/core-network/epc-images/openness_epcconfig.png (100%) rename doc/{ => reference-architectures}/core-network/epc-images/openness_epctest1.png (100%) rename doc/{ => reference-architectures}/core-network/epc-images/openness_epctest2.png (100%) rename doc/{ => reference-architectures}/core-network/epc-images/openness_epctest3.png (100%) rename doc/{ => reference-architectures}/core-network/epc-images/openness_epctest4.png (100%) rename doc/{ => reference-architectures}/core-network/epc-images/openness_epcupf_add.png (100%) rename doc/{ => reference-architectures}/core-network/epc-images/openness_epcupf_del.png (100%) rename doc/{ => reference-architectures}/core-network/epc-images/openness_epcupf_get.png (100%) rename doc/{ => reference-architectures}/core-network/index.html (100%) rename doc/{ => reference-architectures}/core-network/ngc-images/5g_edge_data_paths.png (100%) rename doc/{ => reference-architectures}/core-network/ngc-images/5g_edge_deployment_scenario1.png (100%) rename doc/{ => reference-architectures}/core-network/ngc-images/5g_edge_deployment_scenario2.png (100%) rename doc/{ => reference-architectures}/core-network/ngc-images/5g_edge_deployment_scenario3.png (100%) rename doc/{ => reference-architectures}/core-network/ngc-images/5g_openess_components.png (100%) rename doc/{ => reference-architectures}/core-network/ngc-images/5g_openess_microservices.png (100%) rename doc/{ => reference-architectures}/core-network/ngc-images/5g_system_architecture.png (100%) rename doc/{ => reference-architectures}/core-network/ngc-images/OAuth2.png (100%) rename doc/{ => reference-architectures}/core-network/ngc-images/PFD_Management_transaction_add.png (100%) rename doc/{ => reference-architectures}/core-network/ngc-images/PFD_Management_transaction_del.png (100%) rename doc/{ => reference-architectures}/core-network/ngc-images/PFD_Management_transaction_get.png (100%) rename doc/{ => reference-architectures}/core-network/ngc-images/PFD_Management_transaction_update.png (100%) rename doc/{ => reference-architectures}/core-network/ngc-images/e2e_edge_deployment_flows.png (100%) rename doc/{ => reference-architectures}/core-network/ngc-images/oam_af_service_add.png (100%) rename doc/{ => reference-architectures}/core-network/ngc-images/oam_af_service_del.png (100%) rename doc/{ => reference-architectures}/core-network/ngc-images/oam_af_service_get.png (100%) rename doc/{ => reference-architectures}/core-network/ngc-images/oam_af_service_update.png (100%) rename doc/{ => reference-architectures}/core-network/ngc-images/traffic_subscription_add.png (100%) rename doc/{ => reference-architectures}/core-network/ngc-images/traffic_subscription_del.png (100%) rename doc/{ => reference-architectures}/core-network/ngc-images/traffic_subscription_get.png (100%) rename doc/{ => reference-architectures}/core-network/ngc-images/traffic_subscription_update.png (100%) rename doc/{ => reference-architectures}/core-network/ngc_flows/AF_traffic_influence_add.uml (96%) rename doc/{ => reference-architectures}/core-network/ngc_flows/AF_traffic_influence_delete.uml (96%) rename doc/{ => reference-architectures}/core-network/ngc_flows/AF_traffic_influence_get.uml (96%) rename doc/{ => reference-architectures}/core-network/ngc_flows/AF_traffic_influence_update.uml (96%) rename doc/{ => reference-architectures}/core-network/ngc_flows/PFD_Management_transaction_delete.uml (100%) rename doc/{ => reference-architectures}/core-network/ngc_flows/PFD_Management_transaction_get.uml (100%) rename doc/{ => reference-architectures}/core-network/ngc_flows/PFD_Managment_transaction_add.uml (100%) rename doc/{ => reference-architectures}/core-network/ngc_flows/PFD_management_transaction_update.uml (100%) rename doc/{ => reference-architectures}/core-network/ngc_flows/e2e_config_flow_for_5g_edge.uml (100%) rename doc/{ => reference-architectures}/core-network/ngc_flows/ngcoam_af_service_add.uml (96%) rename doc/{ => reference-architectures}/core-network/ngc_flows/ngcoam_af_service_delete.uml (96%) rename doc/{ => reference-architectures}/core-network/ngc_flows/ngcoam_af_service_get.uml (96%) rename doc/{ => reference-architectures}/core-network/ngc_flows/ngcoam_af_service_update.uml (96%) rename doc/{ => reference-architectures}/core-network/openness-core.png (100%) rename doc/{ => reference-architectures}/core-network/openness_epc.md (100%) rename doc/{ => reference-architectures}/core-network/openness_ngc.md (100%) rename doc/{ => reference-architectures}/core-network/openness_upf.md (100%) rename doc/{ => reference-architectures}/ran/index.html (100%) rename doc/{ => reference-architectures}/ran/openness-ran.png (100%) rename doc/{ => reference-architectures}/ran/openness_ran.md (100%) rename doc/{ => reference-architectures}/ran/openness_xran.md (100%) rename doc/{ => reference-architectures}/ran/openness_xran_images/xran_img1.png (100%) rename doc/{ => reference-architectures}/ran/openness_xran_images/xran_img10.png (100%) rename doc/{ => reference-architectures}/ran/openness_xran_images/xran_img11.png (100%) rename doc/{ => reference-architectures}/ran/openness_xran_images/xran_img12.png (100%) rename doc/{ => reference-architectures}/ran/openness_xran_images/xran_img13.png (100%) rename doc/{ => reference-architectures}/ran/openness_xran_images/xran_img14.png (100%) rename doc/{ => reference-architectures}/ran/openness_xran_images/xran_img16.png (100%) rename doc/{ => reference-architectures}/ran/openness_xran_images/xran_img17.png (100%) rename doc/{ => reference-architectures}/ran/openness_xran_images/xran_img18.png (100%) rename doc/{ => reference-architectures}/ran/openness_xran_images/xran_img19.png (100%) rename doc/{ => reference-architectures}/ran/openness_xran_images/xran_img2.png (100%) rename doc/{ => reference-architectures}/ran/openness_xran_images/xran_img20.png (100%) rename doc/{ => reference-architectures}/ran/openness_xran_images/xran_img21.png (100%) rename doc/{ => reference-architectures}/ran/openness_xran_images/xran_img22.png (100%) rename doc/{ => reference-architectures}/ran/openness_xran_images/xran_img23.png (100%) rename doc/{ => reference-architectures}/ran/openness_xran_images/xran_img24.png (100%) rename doc/{ => reference-architectures}/ran/openness_xran_images/xran_img25.png (100%) rename doc/{ => reference-architectures}/ran/openness_xran_images/xran_img3.png (100%) rename doc/{ => reference-architectures}/ran/openness_xran_images/xran_img4.png (100%) rename doc/{ => reference-architectures}/ran/openness_xran_images/xran_img5.png (100%) rename doc/{ => reference-architectures}/ran/openness_xran_images/xran_img6.png (100%) rename doc/{ => reference-architectures}/ran/openness_xran_images/xran_img7.png (100%) rename doc/{ => reference-architectures}/ran/openness_xran_images/xran_img8.png (100%) rename doc/{ => reference-architectures}/ran/openness_xran_images/xran_img9.png (100%) diff --git a/doc/dataplane/iap-images/iap1.png b/doc/building-blocks/dataplane/iap-images/iap1.png similarity index 100% rename from doc/dataplane/iap-images/iap1.png rename to doc/building-blocks/dataplane/iap-images/iap1.png diff --git a/doc/dataplane/iap-images/iap2.png b/doc/building-blocks/dataplane/iap-images/iap2.png similarity index 100% rename from doc/dataplane/iap-images/iap2.png rename to doc/building-blocks/dataplane/iap-images/iap2.png diff --git a/doc/dataplane/iap-images/iap3.png b/doc/building-blocks/dataplane/iap-images/iap3.png similarity index 100% rename from doc/dataplane/iap-images/iap3.png rename to doc/building-blocks/dataplane/iap-images/iap3.png diff --git a/doc/dataplane/index.html b/doc/building-blocks/dataplane/index.html similarity index 100% rename from doc/dataplane/index.html rename to doc/building-blocks/dataplane/index.html diff --git a/doc/dataplane/nts-images/nts1.png b/doc/building-blocks/dataplane/nts-images/nts1.png similarity index 100% rename from doc/dataplane/nts-images/nts1.png rename to doc/building-blocks/dataplane/nts-images/nts1.png diff --git a/doc/dataplane/nts-images/nts2.png b/doc/building-blocks/dataplane/nts-images/nts2.png similarity index 100% rename from doc/dataplane/nts-images/nts2.png rename to doc/building-blocks/dataplane/nts-images/nts2.png diff --git a/doc/dataplane/openness-interapp.md b/doc/building-blocks/dataplane/openness-interapp.md similarity index 100% rename from doc/dataplane/openness-interapp.md rename to doc/building-blocks/dataplane/openness-interapp.md diff --git a/doc/dataplane/openness-ovn.md b/doc/building-blocks/dataplane/openness-ovn.md similarity index 100% rename from doc/dataplane/openness-ovn.md rename to doc/building-blocks/dataplane/openness-ovn.md diff --git a/doc/dataplane/openness-userspace-cni.md b/doc/building-blocks/dataplane/openness-userspace-cni.md similarity index 100% rename from doc/dataplane/openness-userspace-cni.md rename to doc/building-blocks/dataplane/openness-userspace-cni.md diff --git a/doc/dataplane/ovn_images/openness_ovn.png b/doc/building-blocks/dataplane/ovn_images/openness_ovn.png similarity index 100% rename from doc/dataplane/ovn_images/openness_ovn.png rename to doc/building-blocks/dataplane/ovn_images/openness_ovn.png diff --git a/doc/dataplane/ovn_images/openness_ovnovs.png b/doc/building-blocks/dataplane/ovn_images/openness_ovnovs.png similarity index 100% rename from doc/dataplane/ovn_images/openness_ovnovs.png rename to doc/building-blocks/dataplane/ovn_images/openness_ovnovs.png diff --git a/doc/dataplane/ovn_images/ovncni_cluster.png b/doc/building-blocks/dataplane/ovn_images/ovncni_cluster.png similarity index 100% rename from doc/dataplane/ovn_images/ovncni_cluster.png rename to doc/building-blocks/dataplane/ovn_images/ovncni_cluster.png diff --git a/doc/enhanced-platform-awareness/biosfw-images/openness_biosfw.png b/doc/building-blocks/enhanced-platform-awareness/biosfw-images/openness_biosfw.png similarity index 100% rename from doc/enhanced-platform-awareness/biosfw-images/openness_biosfw.png rename to doc/building-blocks/enhanced-platform-awareness/biosfw-images/openness_biosfw.png diff --git a/doc/enhanced-platform-awareness/cmk-images/cmk1.png b/doc/building-blocks/enhanced-platform-awareness/cmk-images/cmk1.png similarity index 100% rename from doc/enhanced-platform-awareness/cmk-images/cmk1.png rename to doc/building-blocks/enhanced-platform-awareness/cmk-images/cmk1.png diff --git a/doc/enhanced-platform-awareness/cmk-images/cmk2.png b/doc/building-blocks/enhanced-platform-awareness/cmk-images/cmk2.png similarity index 100% rename from doc/enhanced-platform-awareness/cmk-images/cmk2.png rename to doc/building-blocks/enhanced-platform-awareness/cmk-images/cmk2.png diff --git a/doc/enhanced-platform-awareness/fpga-images/openness-fpga1.png b/doc/building-blocks/enhanced-platform-awareness/fpga-images/openness-fpga1.png similarity index 100% rename from doc/enhanced-platform-awareness/fpga-images/openness-fpga1.png rename to doc/building-blocks/enhanced-platform-awareness/fpga-images/openness-fpga1.png diff --git a/doc/enhanced-platform-awareness/fpga-images/openness-fpga2.png b/doc/building-blocks/enhanced-platform-awareness/fpga-images/openness-fpga2.png similarity index 100% rename from doc/enhanced-platform-awareness/fpga-images/openness-fpga2.png rename to doc/building-blocks/enhanced-platform-awareness/fpga-images/openness-fpga2.png diff --git a/doc/enhanced-platform-awareness/fpga-images/openness-fpga3.png b/doc/building-blocks/enhanced-platform-awareness/fpga-images/openness-fpga3.png similarity index 100% rename from doc/enhanced-platform-awareness/fpga-images/openness-fpga3.png rename to doc/building-blocks/enhanced-platform-awareness/fpga-images/openness-fpga3.png diff --git a/doc/enhanced-platform-awareness/fpga-images/openness-fpga4.png b/doc/building-blocks/enhanced-platform-awareness/fpga-images/openness-fpga4.png similarity index 100% rename from doc/enhanced-platform-awareness/fpga-images/openness-fpga4.png rename to doc/building-blocks/enhanced-platform-awareness/fpga-images/openness-fpga4.png diff --git a/doc/enhanced-platform-awareness/hddl-images/hddlservice.png b/doc/building-blocks/enhanced-platform-awareness/hddl-images/hddlservice.png similarity index 100% rename from doc/enhanced-platform-awareness/hddl-images/hddlservice.png rename to doc/building-blocks/enhanced-platform-awareness/hddl-images/hddlservice.png diff --git a/doc/enhanced-platform-awareness/hddl-images/openness_HDDL.png b/doc/building-blocks/enhanced-platform-awareness/hddl-images/openness_HDDL.png similarity index 100% rename from doc/enhanced-platform-awareness/hddl-images/openness_HDDL.png rename to doc/building-blocks/enhanced-platform-awareness/hddl-images/openness_HDDL.png diff --git a/doc/enhanced-platform-awareness/hddl-images/openness_dynamic.png b/doc/building-blocks/enhanced-platform-awareness/hddl-images/openness_dynamic.png similarity index 100% rename from doc/enhanced-platform-awareness/hddl-images/openness_dynamic.png rename to doc/building-blocks/enhanced-platform-awareness/hddl-images/openness_dynamic.png diff --git a/doc/enhanced-platform-awareness/index.html b/doc/building-blocks/enhanced-platform-awareness/index.html similarity index 100% rename from doc/enhanced-platform-awareness/index.html rename to doc/building-blocks/enhanced-platform-awareness/index.html diff --git a/doc/enhanced-platform-awareness/multussriov-images/multus-pod-image.svg b/doc/building-blocks/enhanced-platform-awareness/multussriov-images/multus-pod-image.svg similarity index 100% rename from doc/enhanced-platform-awareness/multussriov-images/multus-pod-image.svg rename to doc/building-blocks/enhanced-platform-awareness/multussriov-images/multus-pod-image.svg diff --git a/doc/enhanced-platform-awareness/multussriov-images/sriov-cni.png b/doc/building-blocks/enhanced-platform-awareness/multussriov-images/sriov-cni.png similarity index 100% rename from doc/enhanced-platform-awareness/multussriov-images/sriov-cni.png rename to doc/building-blocks/enhanced-platform-awareness/multussriov-images/sriov-cni.png diff --git a/doc/enhanced-platform-awareness/multussriov-images/sriov-dp.png b/doc/building-blocks/enhanced-platform-awareness/multussriov-images/sriov-dp.png similarity index 100% rename from doc/enhanced-platform-awareness/multussriov-images/sriov-dp.png rename to doc/building-blocks/enhanced-platform-awareness/multussriov-images/sriov-dp.png diff --git a/doc/enhanced-platform-awareness/nfd-images/nfd0.png b/doc/building-blocks/enhanced-platform-awareness/nfd-images/nfd0.png similarity index 100% rename from doc/enhanced-platform-awareness/nfd-images/nfd0.png rename to doc/building-blocks/enhanced-platform-awareness/nfd-images/nfd0.png diff --git a/doc/enhanced-platform-awareness/nfd-images/nfd1.png b/doc/building-blocks/enhanced-platform-awareness/nfd-images/nfd1.png similarity index 100% rename from doc/enhanced-platform-awareness/nfd-images/nfd1.png rename to doc/building-blocks/enhanced-platform-awareness/nfd-images/nfd1.png diff --git a/doc/enhanced-platform-awareness/nfd-images/nfd2.png b/doc/building-blocks/enhanced-platform-awareness/nfd-images/nfd2.png similarity index 100% rename from doc/enhanced-platform-awareness/nfd-images/nfd2.png rename to doc/building-blocks/enhanced-platform-awareness/nfd-images/nfd2.png diff --git a/doc/enhanced-platform-awareness/openness-bios.md b/doc/building-blocks/enhanced-platform-awareness/openness-bios.md similarity index 100% rename from doc/enhanced-platform-awareness/openness-bios.md rename to doc/building-blocks/enhanced-platform-awareness/openness-bios.md diff --git a/doc/enhanced-platform-awareness/openness-dedicated-core.md b/doc/building-blocks/enhanced-platform-awareness/openness-dedicated-core.md similarity index 100% rename from doc/enhanced-platform-awareness/openness-dedicated-core.md rename to doc/building-blocks/enhanced-platform-awareness/openness-dedicated-core.md diff --git a/doc/enhanced-platform-awareness/openness-fpga.md b/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md similarity index 100% rename from doc/enhanced-platform-awareness/openness-fpga.md rename to doc/building-blocks/enhanced-platform-awareness/openness-fpga.md diff --git a/doc/enhanced-platform-awareness/openness-hugepage.md b/doc/building-blocks/enhanced-platform-awareness/openness-hugepage.md similarity index 100% rename from doc/enhanced-platform-awareness/openness-hugepage.md rename to doc/building-blocks/enhanced-platform-awareness/openness-hugepage.md diff --git a/doc/enhanced-platform-awareness/openness-kubernetes-dashboard.md b/doc/building-blocks/enhanced-platform-awareness/openness-kubernetes-dashboard.md similarity index 100% rename from doc/enhanced-platform-awareness/openness-kubernetes-dashboard.md rename to doc/building-blocks/enhanced-platform-awareness/openness-kubernetes-dashboard.md diff --git a/doc/enhanced-platform-awareness/openness-node-feature-discovery.md b/doc/building-blocks/enhanced-platform-awareness/openness-node-feature-discovery.md similarity index 100% rename from doc/enhanced-platform-awareness/openness-node-feature-discovery.md rename to doc/building-blocks/enhanced-platform-awareness/openness-node-feature-discovery.md diff --git a/doc/enhanced-platform-awareness/openness-rmd.md b/doc/building-blocks/enhanced-platform-awareness/openness-rmd.md similarity index 100% rename from doc/enhanced-platform-awareness/openness-rmd.md rename to doc/building-blocks/enhanced-platform-awareness/openness-rmd.md diff --git a/doc/enhanced-platform-awareness/openness-sriov-multiple-interfaces.md b/doc/building-blocks/enhanced-platform-awareness/openness-sriov-multiple-interfaces.md similarity index 100% rename from doc/enhanced-platform-awareness/openness-sriov-multiple-interfaces.md rename to doc/building-blocks/enhanced-platform-awareness/openness-sriov-multiple-interfaces.md diff --git a/doc/enhanced-platform-awareness/openness-telemetry.md b/doc/building-blocks/enhanced-platform-awareness/openness-telemetry.md similarity index 100% rename from doc/enhanced-platform-awareness/openness-telemetry.md rename to doc/building-blocks/enhanced-platform-awareness/openness-telemetry.md diff --git a/doc/enhanced-platform-awareness/openness-topology-manager.md b/doc/building-blocks/enhanced-platform-awareness/openness-topology-manager.md similarity index 100% rename from doc/enhanced-platform-awareness/openness-topology-manager.md rename to doc/building-blocks/enhanced-platform-awareness/openness-topology-manager.md diff --git a/doc/enhanced-platform-awareness/openness-vcac-a.md b/doc/building-blocks/enhanced-platform-awareness/openness-vcac-a.md similarity index 100% rename from doc/enhanced-platform-awareness/openness-vcac-a.md rename to doc/building-blocks/enhanced-platform-awareness/openness-vcac-a.md diff --git a/doc/enhanced-platform-awareness/openness_hddl.md b/doc/building-blocks/enhanced-platform-awareness/openness_hddl.md similarity index 100% rename from doc/enhanced-platform-awareness/openness_hddl.md rename to doc/building-blocks/enhanced-platform-awareness/openness_hddl.md diff --git a/doc/enhanced-platform-awareness/telemetry-images/architecture.svg b/doc/building-blocks/enhanced-platform-awareness/telemetry-images/architecture.svg similarity index 100% rename from doc/enhanced-platform-awareness/telemetry-images/architecture.svg rename to doc/building-blocks/enhanced-platform-awareness/telemetry-images/architecture.svg diff --git a/doc/enhanced-platform-awareness/telemetry-images/cadvisor_metric.png b/doc/building-blocks/enhanced-platform-awareness/telemetry-images/cadvisor_metric.png similarity index 100% rename from doc/enhanced-platform-awareness/telemetry-images/cadvisor_metric.png rename to doc/building-blocks/enhanced-platform-awareness/telemetry-images/cadvisor_metric.png diff --git a/doc/enhanced-platform-awareness/telemetry-images/collectd_metric.png b/doc/building-blocks/enhanced-platform-awareness/telemetry-images/collectd_metric.png similarity index 100% rename from doc/enhanced-platform-awareness/telemetry-images/collectd_metric.png rename to doc/building-blocks/enhanced-platform-awareness/telemetry-images/collectd_metric.png diff --git a/doc/enhanced-platform-awareness/telemetry-images/grafana-add-panel.png b/doc/building-blocks/enhanced-platform-awareness/telemetry-images/grafana-add-panel.png similarity index 100% rename from doc/enhanced-platform-awareness/telemetry-images/grafana-add-panel.png rename to doc/building-blocks/enhanced-platform-awareness/telemetry-images/grafana-add-panel.png diff --git a/doc/enhanced-platform-awareness/telemetry-images/grafana-dash-setting.png b/doc/building-blocks/enhanced-platform-awareness/telemetry-images/grafana-dash-setting.png similarity index 100% rename from doc/enhanced-platform-awareness/telemetry-images/grafana-dash-setting.png rename to doc/building-blocks/enhanced-platform-awareness/telemetry-images/grafana-dash-setting.png diff --git a/doc/enhanced-platform-awareness/telemetry-images/grafana-new-dash.png b/doc/building-blocks/enhanced-platform-awareness/telemetry-images/grafana-new-dash.png similarity index 100% rename from doc/enhanced-platform-awareness/telemetry-images/grafana-new-dash.png rename to doc/building-blocks/enhanced-platform-awareness/telemetry-images/grafana-new-dash.png diff --git a/doc/enhanced-platform-awareness/telemetry-images/grafana-panel-settings.png b/doc/building-blocks/enhanced-platform-awareness/telemetry-images/grafana-panel-settings.png similarity index 100% rename from doc/enhanced-platform-awareness/telemetry-images/grafana-panel-settings.png rename to doc/building-blocks/enhanced-platform-awareness/telemetry-images/grafana-panel-settings.png diff --git a/doc/enhanced-platform-awareness/telemetry-images/grafana-panel.png b/doc/building-blocks/enhanced-platform-awareness/telemetry-images/grafana-panel.png similarity index 100% rename from doc/enhanced-platform-awareness/telemetry-images/grafana-panel.png rename to doc/building-blocks/enhanced-platform-awareness/telemetry-images/grafana-panel.png diff --git a/doc/enhanced-platform-awareness/telemetry-images/grafana-pcm-dashboard.png b/doc/building-blocks/enhanced-platform-awareness/telemetry-images/grafana-pcm-dashboard.png similarity index 100% rename from doc/enhanced-platform-awareness/telemetry-images/grafana-pcm-dashboard.png rename to doc/building-blocks/enhanced-platform-awareness/telemetry-images/grafana-pcm-dashboard.png diff --git a/doc/enhanced-platform-awareness/telemetry-images/grafana-save-dash.png b/doc/building-blocks/enhanced-platform-awareness/telemetry-images/grafana-save-dash.png similarity index 100% rename from doc/enhanced-platform-awareness/telemetry-images/grafana-save-dash.png rename to doc/building-blocks/enhanced-platform-awareness/telemetry-images/grafana-save-dash.png diff --git a/doc/enhanced-platform-awareness/telemetry-images/grafana-save.png b/doc/building-blocks/enhanced-platform-awareness/telemetry-images/grafana-save.png similarity index 100% rename from doc/enhanced-platform-awareness/telemetry-images/grafana-save.png rename to doc/building-blocks/enhanced-platform-awareness/telemetry-images/grafana-save.png diff --git a/doc/enhanced-platform-awareness/telemetry-images/grafana-settings.png b/doc/building-blocks/enhanced-platform-awareness/telemetry-images/grafana-settings.png similarity index 100% rename from doc/enhanced-platform-awareness/telemetry-images/grafana-settings.png rename to doc/building-blocks/enhanced-platform-awareness/telemetry-images/grafana-settings.png diff --git a/doc/enhanced-platform-awareness/telemetry-images/grafana_login.png b/doc/building-blocks/enhanced-platform-awareness/telemetry-images/grafana_login.png similarity index 100% rename from doc/enhanced-platform-awareness/telemetry-images/grafana_login.png rename to doc/building-blocks/enhanced-platform-awareness/telemetry-images/grafana_login.png diff --git a/doc/enhanced-platform-awareness/telemetry-images/node_exporter_metric.png b/doc/building-blocks/enhanced-platform-awareness/telemetry-images/node_exporter_metric.png similarity index 100% rename from doc/enhanced-platform-awareness/telemetry-images/node_exporter_metric.png rename to doc/building-blocks/enhanced-platform-awareness/telemetry-images/node_exporter_metric.png diff --git a/doc/enhanced-platform-awareness/telemetry-images/pcm-metrics.png b/doc/building-blocks/enhanced-platform-awareness/telemetry-images/pcm-metrics.png similarity index 100% rename from doc/enhanced-platform-awareness/telemetry-images/pcm-metrics.png rename to doc/building-blocks/enhanced-platform-awareness/telemetry-images/pcm-metrics.png diff --git a/doc/enhanced-platform-awareness/telemetry-images/pcm-stats.png b/doc/building-blocks/enhanced-platform-awareness/telemetry-images/pcm-stats.png similarity index 100% rename from doc/enhanced-platform-awareness/telemetry-images/pcm-stats.png rename to doc/building-blocks/enhanced-platform-awareness/telemetry-images/pcm-stats.png diff --git a/doc/enhanced-platform-awareness/telemetry-images/prometheus_graph.png b/doc/building-blocks/enhanced-platform-awareness/telemetry-images/prometheus_graph.png similarity index 100% rename from doc/enhanced-platform-awareness/telemetry-images/prometheus_graph.png rename to doc/building-blocks/enhanced-platform-awareness/telemetry-images/prometheus_graph.png diff --git a/doc/enhanced-platform-awareness/telemetry-images/prometheus_metrics.png b/doc/building-blocks/enhanced-platform-awareness/telemetry-images/prometheus_metrics.png similarity index 100% rename from doc/enhanced-platform-awareness/telemetry-images/prometheus_metrics.png rename to doc/building-blocks/enhanced-platform-awareness/telemetry-images/prometheus_metrics.png diff --git a/doc/enhanced-platform-awareness/telemetry-images/prometheus_targets.png b/doc/building-blocks/enhanced-platform-awareness/telemetry-images/prometheus_targets.png similarity index 100% rename from doc/enhanced-platform-awareness/telemetry-images/prometheus_targets.png rename to doc/building-blocks/enhanced-platform-awareness/telemetry-images/prometheus_targets.png diff --git a/doc/enhanced-platform-awareness/tm-images/tm1.png b/doc/building-blocks/enhanced-platform-awareness/tm-images/tm1.png similarity index 100% rename from doc/enhanced-platform-awareness/tm-images/tm1.png rename to doc/building-blocks/enhanced-platform-awareness/tm-images/tm1.png diff --git a/doc/enhanced-platform-awareness/tm-images/tm2.png b/doc/building-blocks/enhanced-platform-awareness/tm-images/tm2.png similarity index 100% rename from doc/enhanced-platform-awareness/tm-images/tm2.png rename to doc/building-blocks/enhanced-platform-awareness/tm-images/tm2.png diff --git a/doc/enhanced-platform-awareness/vcaca-images/smart-city-app-vcac-a.png b/doc/building-blocks/enhanced-platform-awareness/vcaca-images/smart-city-app-vcac-a.png similarity index 100% rename from doc/enhanced-platform-awareness/vcaca-images/smart-city-app-vcac-a.png rename to doc/building-blocks/enhanced-platform-awareness/vcaca-images/smart-city-app-vcac-a.png diff --git a/doc/enhanced-platform-awareness/vcaca-images/using-vcac-a-telemetry.png b/doc/building-blocks/enhanced-platform-awareness/vcaca-images/using-vcac-a-telemetry.png similarity index 100% rename from doc/enhanced-platform-awareness/vcaca-images/using-vcac-a-telemetry.png rename to doc/building-blocks/enhanced-platform-awareness/vcaca-images/using-vcac-a-telemetry.png diff --git a/doc/enhanced-platform-awareness/vcaca-images/vcac-a-vpu-metrics.png b/doc/building-blocks/enhanced-platform-awareness/vcaca-images/vcac-a-vpu-metrics.png similarity index 100% rename from doc/enhanced-platform-awareness/vcaca-images/vcac-a-vpu-metrics.png rename to doc/building-blocks/enhanced-platform-awareness/vcaca-images/vcac-a-vpu-metrics.png diff --git a/doc/core-network/epc-images/Openness_highlevel.png b/doc/reference-architectures/core-network/epc-images/Openness_highlevel.png similarity index 100% rename from doc/core-network/epc-images/Openness_highlevel.png rename to doc/reference-architectures/core-network/epc-images/Openness_highlevel.png diff --git a/doc/core-network/epc-images/openness_epc1.png b/doc/reference-architectures/core-network/epc-images/openness_epc1.png similarity index 100% rename from doc/core-network/epc-images/openness_epc1.png rename to doc/reference-architectures/core-network/epc-images/openness_epc1.png diff --git a/doc/core-network/epc-images/openness_epc2.png b/doc/reference-architectures/core-network/epc-images/openness_epc2.png similarity index 100% rename from doc/core-network/epc-images/openness_epc2.png rename to doc/reference-architectures/core-network/epc-images/openness_epc2.png diff --git a/doc/core-network/epc-images/openness_epc3.png b/doc/reference-architectures/core-network/epc-images/openness_epc3.png similarity index 100% rename from doc/core-network/epc-images/openness_epc3.png rename to doc/reference-architectures/core-network/epc-images/openness_epc3.png diff --git a/doc/core-network/epc-images/openness_epc_cnca_1.png b/doc/reference-architectures/core-network/epc-images/openness_epc_cnca_1.png similarity index 100% rename from doc/core-network/epc-images/openness_epc_cnca_1.png rename to doc/reference-architectures/core-network/epc-images/openness_epc_cnca_1.png diff --git a/doc/core-network/epc-images/openness_epcconfig.png b/doc/reference-architectures/core-network/epc-images/openness_epcconfig.png similarity index 100% rename from doc/core-network/epc-images/openness_epcconfig.png rename to doc/reference-architectures/core-network/epc-images/openness_epcconfig.png diff --git a/doc/core-network/epc-images/openness_epctest1.png b/doc/reference-architectures/core-network/epc-images/openness_epctest1.png similarity index 100% rename from doc/core-network/epc-images/openness_epctest1.png rename to doc/reference-architectures/core-network/epc-images/openness_epctest1.png diff --git a/doc/core-network/epc-images/openness_epctest2.png b/doc/reference-architectures/core-network/epc-images/openness_epctest2.png similarity index 100% rename from doc/core-network/epc-images/openness_epctest2.png rename to doc/reference-architectures/core-network/epc-images/openness_epctest2.png diff --git a/doc/core-network/epc-images/openness_epctest3.png b/doc/reference-architectures/core-network/epc-images/openness_epctest3.png similarity index 100% rename from doc/core-network/epc-images/openness_epctest3.png rename to doc/reference-architectures/core-network/epc-images/openness_epctest3.png diff --git a/doc/core-network/epc-images/openness_epctest4.png b/doc/reference-architectures/core-network/epc-images/openness_epctest4.png similarity index 100% rename from doc/core-network/epc-images/openness_epctest4.png rename to doc/reference-architectures/core-network/epc-images/openness_epctest4.png diff --git a/doc/core-network/epc-images/openness_epcupf_add.png b/doc/reference-architectures/core-network/epc-images/openness_epcupf_add.png similarity index 100% rename from doc/core-network/epc-images/openness_epcupf_add.png rename to doc/reference-architectures/core-network/epc-images/openness_epcupf_add.png diff --git a/doc/core-network/epc-images/openness_epcupf_del.png b/doc/reference-architectures/core-network/epc-images/openness_epcupf_del.png similarity index 100% rename from doc/core-network/epc-images/openness_epcupf_del.png rename to doc/reference-architectures/core-network/epc-images/openness_epcupf_del.png diff --git a/doc/core-network/epc-images/openness_epcupf_get.png b/doc/reference-architectures/core-network/epc-images/openness_epcupf_get.png similarity index 100% rename from doc/core-network/epc-images/openness_epcupf_get.png rename to doc/reference-architectures/core-network/epc-images/openness_epcupf_get.png diff --git a/doc/core-network/index.html b/doc/reference-architectures/core-network/index.html similarity index 100% rename from doc/core-network/index.html rename to doc/reference-architectures/core-network/index.html diff --git a/doc/core-network/ngc-images/5g_edge_data_paths.png b/doc/reference-architectures/core-network/ngc-images/5g_edge_data_paths.png similarity index 100% rename from doc/core-network/ngc-images/5g_edge_data_paths.png rename to doc/reference-architectures/core-network/ngc-images/5g_edge_data_paths.png diff --git a/doc/core-network/ngc-images/5g_edge_deployment_scenario1.png b/doc/reference-architectures/core-network/ngc-images/5g_edge_deployment_scenario1.png similarity index 100% rename from doc/core-network/ngc-images/5g_edge_deployment_scenario1.png rename to doc/reference-architectures/core-network/ngc-images/5g_edge_deployment_scenario1.png diff --git a/doc/core-network/ngc-images/5g_edge_deployment_scenario2.png b/doc/reference-architectures/core-network/ngc-images/5g_edge_deployment_scenario2.png similarity index 100% rename from doc/core-network/ngc-images/5g_edge_deployment_scenario2.png rename to doc/reference-architectures/core-network/ngc-images/5g_edge_deployment_scenario2.png diff --git a/doc/core-network/ngc-images/5g_edge_deployment_scenario3.png b/doc/reference-architectures/core-network/ngc-images/5g_edge_deployment_scenario3.png similarity index 100% rename from doc/core-network/ngc-images/5g_edge_deployment_scenario3.png rename to doc/reference-architectures/core-network/ngc-images/5g_edge_deployment_scenario3.png diff --git a/doc/core-network/ngc-images/5g_openess_components.png b/doc/reference-architectures/core-network/ngc-images/5g_openess_components.png similarity index 100% rename from doc/core-network/ngc-images/5g_openess_components.png rename to doc/reference-architectures/core-network/ngc-images/5g_openess_components.png diff --git a/doc/core-network/ngc-images/5g_openess_microservices.png b/doc/reference-architectures/core-network/ngc-images/5g_openess_microservices.png similarity index 100% rename from doc/core-network/ngc-images/5g_openess_microservices.png rename to doc/reference-architectures/core-network/ngc-images/5g_openess_microservices.png diff --git a/doc/core-network/ngc-images/5g_system_architecture.png b/doc/reference-architectures/core-network/ngc-images/5g_system_architecture.png similarity index 100% rename from doc/core-network/ngc-images/5g_system_architecture.png rename to doc/reference-architectures/core-network/ngc-images/5g_system_architecture.png diff --git a/doc/core-network/ngc-images/OAuth2.png b/doc/reference-architectures/core-network/ngc-images/OAuth2.png similarity index 100% rename from doc/core-network/ngc-images/OAuth2.png rename to doc/reference-architectures/core-network/ngc-images/OAuth2.png diff --git a/doc/core-network/ngc-images/PFD_Management_transaction_add.png b/doc/reference-architectures/core-network/ngc-images/PFD_Management_transaction_add.png similarity index 100% rename from doc/core-network/ngc-images/PFD_Management_transaction_add.png rename to doc/reference-architectures/core-network/ngc-images/PFD_Management_transaction_add.png diff --git a/doc/core-network/ngc-images/PFD_Management_transaction_del.png b/doc/reference-architectures/core-network/ngc-images/PFD_Management_transaction_del.png similarity index 100% rename from doc/core-network/ngc-images/PFD_Management_transaction_del.png rename to doc/reference-architectures/core-network/ngc-images/PFD_Management_transaction_del.png diff --git a/doc/core-network/ngc-images/PFD_Management_transaction_get.png b/doc/reference-architectures/core-network/ngc-images/PFD_Management_transaction_get.png similarity index 100% rename from doc/core-network/ngc-images/PFD_Management_transaction_get.png rename to doc/reference-architectures/core-network/ngc-images/PFD_Management_transaction_get.png diff --git a/doc/core-network/ngc-images/PFD_Management_transaction_update.png b/doc/reference-architectures/core-network/ngc-images/PFD_Management_transaction_update.png similarity index 100% rename from doc/core-network/ngc-images/PFD_Management_transaction_update.png rename to doc/reference-architectures/core-network/ngc-images/PFD_Management_transaction_update.png diff --git a/doc/core-network/ngc-images/e2e_edge_deployment_flows.png b/doc/reference-architectures/core-network/ngc-images/e2e_edge_deployment_flows.png similarity index 100% rename from doc/core-network/ngc-images/e2e_edge_deployment_flows.png rename to doc/reference-architectures/core-network/ngc-images/e2e_edge_deployment_flows.png diff --git a/doc/core-network/ngc-images/oam_af_service_add.png b/doc/reference-architectures/core-network/ngc-images/oam_af_service_add.png similarity index 100% rename from doc/core-network/ngc-images/oam_af_service_add.png rename to doc/reference-architectures/core-network/ngc-images/oam_af_service_add.png diff --git a/doc/core-network/ngc-images/oam_af_service_del.png b/doc/reference-architectures/core-network/ngc-images/oam_af_service_del.png similarity index 100% rename from doc/core-network/ngc-images/oam_af_service_del.png rename to doc/reference-architectures/core-network/ngc-images/oam_af_service_del.png diff --git a/doc/core-network/ngc-images/oam_af_service_get.png b/doc/reference-architectures/core-network/ngc-images/oam_af_service_get.png similarity index 100% rename from doc/core-network/ngc-images/oam_af_service_get.png rename to doc/reference-architectures/core-network/ngc-images/oam_af_service_get.png diff --git a/doc/core-network/ngc-images/oam_af_service_update.png b/doc/reference-architectures/core-network/ngc-images/oam_af_service_update.png similarity index 100% rename from doc/core-network/ngc-images/oam_af_service_update.png rename to doc/reference-architectures/core-network/ngc-images/oam_af_service_update.png diff --git a/doc/core-network/ngc-images/traffic_subscription_add.png b/doc/reference-architectures/core-network/ngc-images/traffic_subscription_add.png similarity index 100% rename from doc/core-network/ngc-images/traffic_subscription_add.png rename to doc/reference-architectures/core-network/ngc-images/traffic_subscription_add.png diff --git a/doc/core-network/ngc-images/traffic_subscription_del.png b/doc/reference-architectures/core-network/ngc-images/traffic_subscription_del.png similarity index 100% rename from doc/core-network/ngc-images/traffic_subscription_del.png rename to doc/reference-architectures/core-network/ngc-images/traffic_subscription_del.png diff --git a/doc/core-network/ngc-images/traffic_subscription_get.png b/doc/reference-architectures/core-network/ngc-images/traffic_subscription_get.png similarity index 100% rename from doc/core-network/ngc-images/traffic_subscription_get.png rename to doc/reference-architectures/core-network/ngc-images/traffic_subscription_get.png diff --git a/doc/core-network/ngc-images/traffic_subscription_update.png b/doc/reference-architectures/core-network/ngc-images/traffic_subscription_update.png similarity index 100% rename from doc/core-network/ngc-images/traffic_subscription_update.png rename to doc/reference-architectures/core-network/ngc-images/traffic_subscription_update.png diff --git a/doc/core-network/ngc_flows/AF_traffic_influence_add.uml b/doc/reference-architectures/core-network/ngc_flows/AF_traffic_influence_add.uml similarity index 96% rename from doc/core-network/ngc_flows/AF_traffic_influence_add.uml rename to doc/reference-architectures/core-network/ngc_flows/AF_traffic_influence_add.uml index 618e72d4..1b5316ec 100644 --- a/doc/core-network/ngc_flows/AF_traffic_influence_add.uml +++ b/doc/reference-architectures/core-network/ngc_flows/AF_traffic_influence_add.uml @@ -1,50 +1,50 @@ -@startuml -/' SPDX-License-Identifier: Apache-2.0 - Copyright (c) 2020 Intel Corporation -'/ -skinparam monochrome false -skinparam roundcorner 20 -skinparam defaultFontName "Intel Clear" -skinparam defaultFontSize 20 -skinparam maxmessagesize 300 -skinparam sequenceArrowThickness 3 - -header Intel Corporation -footer Proprietary and Confidential -title Traffic influencing flows between OpenNESS controller and 5G Core - -actor "User/Admin" as user -box "OpenNESS Controller components" #LightBlue - participant "UI/CLI" as cnca - participant "AF Microservice" as af -end box -box "5G Core components" #LightGreen - participant "NEF" as nef - note over nef - OpenNESS provided - Core component with - limited functionality - end note - participant "NGC\nCP Functions" as ngccp -end box - -group Traffic influence submission flow - user -> cnca : Traffic influencing request - activate cnca - cnca -> af : /af/v1/subscriptions: POST \n {3GPP TS 29.522v15.3 \n Sec. 5.4}* - activate af - af -> nef : /3gpp-traffic-Influence/v1/{afId}/subscriptions : POST \n {3GPP TS 29.522v15.3 \n Sec. 5.4} - activate nef - nef -> nef : NGC_STUB(PCF,UDR,BSF) - nef -> ngccp : {Open: 3rd party NGC integration with OpenNESS(NEF)} - ngccp --> nef : - nef --> af : OK: {subscriptionId} \n ERROR: {400/500} - deactivate nef - af --> cnca : OK: {subscriptionId} \n ERROR: {400/500} - deactivate af - cnca --> user : Success: {subscriptionId} - deactivate cnca -end group - -@enduml - +@startuml +/' SPDX-License-Identifier: Apache-2.0 + Copyright (c) 2020 Intel Corporation +'/ +skinparam monochrome false +skinparam roundcorner 20 +skinparam defaultFontName "Intel Clear" +skinparam defaultFontSize 20 +skinparam maxmessagesize 300 +skinparam sequenceArrowThickness 3 + +header Intel Corporation +footer Proprietary and Confidential +title Traffic influencing flows between OpenNESS controller and 5G Core + +actor "User/Admin" as user +box "OpenNESS Controller components" #LightBlue + participant "UI/CLI" as cnca + participant "AF Microservice" as af +end box +box "5G Core components" #LightGreen + participant "NEF" as nef + note over nef + OpenNESS provided + Core component with + limited functionality + end note + participant "NGC\nCP Functions" as ngccp +end box + +group Traffic influence submission flow + user -> cnca : Traffic influencing request + activate cnca + cnca -> af : /af/v1/subscriptions: POST \n {3GPP TS 29.522v15.3 \n Sec. 5.4}* + activate af + af -> nef : /3gpp-traffic-Influence/v1/{afId}/subscriptions : POST \n {3GPP TS 29.522v15.3 \n Sec. 5.4} + activate nef + nef -> nef : NGC_STUB(PCF,UDR,BSF) + nef -> ngccp : {Open: 3rd party NGC integration with OpenNESS(NEF)} + ngccp --> nef : + nef --> af : OK: {subscriptionId} \n ERROR: {400/500} + deactivate nef + af --> cnca : OK: {subscriptionId} \n ERROR: {400/500} + deactivate af + cnca --> user : Success: {subscriptionId} + deactivate cnca +end group + +@enduml + diff --git a/doc/core-network/ngc_flows/AF_traffic_influence_delete.uml b/doc/reference-architectures/core-network/ngc_flows/AF_traffic_influence_delete.uml similarity index 96% rename from doc/core-network/ngc_flows/AF_traffic_influence_delete.uml rename to doc/reference-architectures/core-network/ngc_flows/AF_traffic_influence_delete.uml index 037c12c8..8841e5be 100644 --- a/doc/core-network/ngc_flows/AF_traffic_influence_delete.uml +++ b/doc/reference-architectures/core-network/ngc_flows/AF_traffic_influence_delete.uml @@ -1,51 +1,51 @@ -@startuml -/' SPDX-License-Identifier: Apache-2.0 - Copyright (c) 2020 Intel Corporation -'/ -skinparam monochrome false -skinparam roundcorner 20 -skinparam defaultFontName "Intel Clear" -skinparam defaultFontSize 20 -skinparam maxmessagesize 300 -skinparam sequenceArrowThickness 3 - -header Intel Corporation -footer Proprietary and Confidential -title Traffic influencing flows between OpenNESS controller and 5G Core - -actor "User/Admin" as user -box "OpenNESS Controller components" #LightBlue - participant "UI/CLI" as cnca - participant "AF Microservice" as af -end box -box "5G Core components" #LightGreen - participant "NEF" as nef - note over nef - OpenNESS provided - Core component with - limited functionality - end note - participant "NGC\nCP Functions" as ngccp -end box - - -group Delete a subscribed traffic influence by subscriptionId - user -> cnca : Delete request by subscriptionId - activate cnca - cnca -> af : /af/v1/subscriptions/{subscriptionId} : DELETE - activate af - af -> nef : /3gpp-traffic-Influence/v1/{afId}/subscriptions/{subscriptionId} : DELETE - activate nef - nef -> nef : NGC_STUB(PCF,UDR,BSF) - nef -> ngccp : {Open: 3rd party NGC integration with OpenNESS(NEF)} - ngccp --> nef : - nef --> af : OK : Delete success \n ERROR: {400/500} - deactivate nef - af --> cnca : OK : Delete success \n ERROR: {400/500} - deactivate af - cnca --> user : Success/Error - deactivate cnca -end group - -@enduml - +@startuml +/' SPDX-License-Identifier: Apache-2.0 + Copyright (c) 2020 Intel Corporation +'/ +skinparam monochrome false +skinparam roundcorner 20 +skinparam defaultFontName "Intel Clear" +skinparam defaultFontSize 20 +skinparam maxmessagesize 300 +skinparam sequenceArrowThickness 3 + +header Intel Corporation +footer Proprietary and Confidential +title Traffic influencing flows between OpenNESS controller and 5G Core + +actor "User/Admin" as user +box "OpenNESS Controller components" #LightBlue + participant "UI/CLI" as cnca + participant "AF Microservice" as af +end box +box "5G Core components" #LightGreen + participant "NEF" as nef + note over nef + OpenNESS provided + Core component with + limited functionality + end note + participant "NGC\nCP Functions" as ngccp +end box + + +group Delete a subscribed traffic influence by subscriptionId + user -> cnca : Delete request by subscriptionId + activate cnca + cnca -> af : /af/v1/subscriptions/{subscriptionId} : DELETE + activate af + af -> nef : /3gpp-traffic-Influence/v1/{afId}/subscriptions/{subscriptionId} : DELETE + activate nef + nef -> nef : NGC_STUB(PCF,UDR,BSF) + nef -> ngccp : {Open: 3rd party NGC integration with OpenNESS(NEF)} + ngccp --> nef : + nef --> af : OK : Delete success \n ERROR: {400/500} + deactivate nef + af --> cnca : OK : Delete success \n ERROR: {400/500} + deactivate af + cnca --> user : Success/Error + deactivate cnca +end group + +@enduml + diff --git a/doc/core-network/ngc_flows/AF_traffic_influence_get.uml b/doc/reference-architectures/core-network/ngc_flows/AF_traffic_influence_get.uml similarity index 96% rename from doc/core-network/ngc_flows/AF_traffic_influence_get.uml rename to doc/reference-architectures/core-network/ngc_flows/AF_traffic_influence_get.uml index fb051437..44921c43 100644 --- a/doc/core-network/ngc_flows/AF_traffic_influence_get.uml +++ b/doc/reference-architectures/core-network/ngc_flows/AF_traffic_influence_get.uml @@ -1,68 +1,68 @@ -@startuml -/' SPDX-License-Identifier: Apache-2.0 - Copyright (c) 2020 Intel Corporation -'/ -skinparam monochrome false -skinparam roundcorner 20 -skinparam defaultFontName "Intel Clear" -skinparam defaultFontSize 20 -skinparam maxmessagesize 300 -skinparam sequenceArrowThickness 3 - -header Intel Corporation -footer Proprietary and Confidential -title Traffic influencing flows between OpenNESS controller and 5G Core - -actor "User/Admin" as user -box "OpenNESS Controller components" #LightBlue - participant "UI/CLI" as cnca - participant "AF Microservice" as af -end box -box "5G Core components" #LightGreen - participant "NEF" as nef - note over nef - OpenNESS provided - Core component with - limited functionality - end note - participant "NGC\nCP Functions" as ngccp -end box - -group Get all subscribed traffic influence info - user -> cnca : Request all traffic influence subscribed - activate cnca - cnca -> af : /af/v1/subscriptions : GET - activate af - af -> nef : /3gpp-traffic-Influence/v1/{afId}/subscriptions : GET - activate nef - nef -> nef : NGC_STUB(PCF,UDR,BSF) - nef -> ngccp : {Open: 3rd party NGC integration with OpenNESS(NEF)} - ngccp --> nef : - nef --> af : OK: traffic influence info \n ERROR: {400/500} - deactivate nef - af --> cnca : OK: traffic influence info \n ERROR: {400/500} - deactivate af - cnca --> user : Traffic influence details - deactivate cnca -end group - -group Get subscribed traffic influence info by subscriptionId - user -> cnca : Request traffic influence using subscriptionId - activate cnca - cnca -> af : /af/v1/subscriptions/{subscriptionId} : GET - activate af - af -> nef : /3gpp-traffic-Influence/v1/{afId}/subscriptions/{subscriptionId} : GET - activate nef - nef -> nef : NGC_STUB(PCF,UDR,BSF) - nef -> ngccp : {Open: 3rd party NGC integration with OpenNESS(NEF)} - ngccp --> nef : - nef --> af : OK: traffic influence info \n ERROR: {400/500} - deactivate nef - af --> cnca : OK: traffic influence info \n ERROR: {400/500} - deactivate af - cnca --> user : Traffic influence details - deactivate cnca -end group - -@enduml - +@startuml +/' SPDX-License-Identifier: Apache-2.0 + Copyright (c) 2020 Intel Corporation +'/ +skinparam monochrome false +skinparam roundcorner 20 +skinparam defaultFontName "Intel Clear" +skinparam defaultFontSize 20 +skinparam maxmessagesize 300 +skinparam sequenceArrowThickness 3 + +header Intel Corporation +footer Proprietary and Confidential +title Traffic influencing flows between OpenNESS controller and 5G Core + +actor "User/Admin" as user +box "OpenNESS Controller components" #LightBlue + participant "UI/CLI" as cnca + participant "AF Microservice" as af +end box +box "5G Core components" #LightGreen + participant "NEF" as nef + note over nef + OpenNESS provided + Core component with + limited functionality + end note + participant "NGC\nCP Functions" as ngccp +end box + +group Get all subscribed traffic influence info + user -> cnca : Request all traffic influence subscribed + activate cnca + cnca -> af : /af/v1/subscriptions : GET + activate af + af -> nef : /3gpp-traffic-Influence/v1/{afId}/subscriptions : GET + activate nef + nef -> nef : NGC_STUB(PCF,UDR,BSF) + nef -> ngccp : {Open: 3rd party NGC integration with OpenNESS(NEF)} + ngccp --> nef : + nef --> af : OK: traffic influence info \n ERROR: {400/500} + deactivate nef + af --> cnca : OK: traffic influence info \n ERROR: {400/500} + deactivate af + cnca --> user : Traffic influence details + deactivate cnca +end group + +group Get subscribed traffic influence info by subscriptionId + user -> cnca : Request traffic influence using subscriptionId + activate cnca + cnca -> af : /af/v1/subscriptions/{subscriptionId} : GET + activate af + af -> nef : /3gpp-traffic-Influence/v1/{afId}/subscriptions/{subscriptionId} : GET + activate nef + nef -> nef : NGC_STUB(PCF,UDR,BSF) + nef -> ngccp : {Open: 3rd party NGC integration with OpenNESS(NEF)} + ngccp --> nef : + nef --> af : OK: traffic influence info \n ERROR: {400/500} + deactivate nef + af --> cnca : OK: traffic influence info \n ERROR: {400/500} + deactivate af + cnca --> user : Traffic influence details + deactivate cnca +end group + +@enduml + diff --git a/doc/core-network/ngc_flows/AF_traffic_influence_update.uml b/doc/reference-architectures/core-network/ngc_flows/AF_traffic_influence_update.uml similarity index 96% rename from doc/core-network/ngc_flows/AF_traffic_influence_update.uml rename to doc/reference-architectures/core-network/ngc_flows/AF_traffic_influence_update.uml index eb5c26a8..87fd3102 100644 --- a/doc/core-network/ngc_flows/AF_traffic_influence_update.uml +++ b/doc/reference-architectures/core-network/ngc_flows/AF_traffic_influence_update.uml @@ -1,50 +1,50 @@ -@startuml -/' SPDX-License-Identifier: Apache-2.0 - Copyright (c) 2020 Intel Corporation -'/ -skinparam monochrome false -skinparam roundcorner 20 -skinparam defaultFontName "Intel Clear" -skinparam defaultFontSize 20 -skinparam maxmessagesize 300 -skinparam sequenceArrowThickness 3 - -header Intel Corporation -footer Proprietary and Confidential -title Traffic influencing flows between OpenNESS controller and 5G Core - -actor "User/Admin" as user -box "OpenNESS Controller components" #LightBlue - participant "UI/CLI" as cnca - participant "AF Microservice" as af -end box -box "5G Core components" #LightGreen - participant "NEF" as nef - note over nef - OpenNESS provided - Core component with - limited functionality - end note - participant "NGC\nCP Functions" as ngccp -end box - -group Update a subscribed traffic influence by subscriptionId - user -> cnca : Update request by subscriptionId - activate cnca - cnca -> af : /af/v1/subscriptions/{subscriptionId} : PUT - activate af - af -> nef : /3gpp-traffic-Influence/v1/{afId}/subscriptions/{subscriptionId} : PUT - activate nef - nef -> nef : NGC_STUB(PCF,UDR,BSF) - nef -> ngccp : {Open: 3rd party NGC integration with OpenNESS(NEF)} - ngccp --> nef : - nef --> af : OK : Update success, traffic influence info \n ERROR: {400/500} - deactivate nef - af --> cnca : OK : Update success, traffic influence info \n ERROR: {400/500} - deactivate af - cnca --> user : Success/Error - deactivate cnca -end group - -@enduml - +@startuml +/' SPDX-License-Identifier: Apache-2.0 + Copyright (c) 2020 Intel Corporation +'/ +skinparam monochrome false +skinparam roundcorner 20 +skinparam defaultFontName "Intel Clear" +skinparam defaultFontSize 20 +skinparam maxmessagesize 300 +skinparam sequenceArrowThickness 3 + +header Intel Corporation +footer Proprietary and Confidential +title Traffic influencing flows between OpenNESS controller and 5G Core + +actor "User/Admin" as user +box "OpenNESS Controller components" #LightBlue + participant "UI/CLI" as cnca + participant "AF Microservice" as af +end box +box "5G Core components" #LightGreen + participant "NEF" as nef + note over nef + OpenNESS provided + Core component with + limited functionality + end note + participant "NGC\nCP Functions" as ngccp +end box + +group Update a subscribed traffic influence by subscriptionId + user -> cnca : Update request by subscriptionId + activate cnca + cnca -> af : /af/v1/subscriptions/{subscriptionId} : PUT + activate af + af -> nef : /3gpp-traffic-Influence/v1/{afId}/subscriptions/{subscriptionId} : PUT + activate nef + nef -> nef : NGC_STUB(PCF,UDR,BSF) + nef -> ngccp : {Open: 3rd party NGC integration with OpenNESS(NEF)} + ngccp --> nef : + nef --> af : OK : Update success, traffic influence info \n ERROR: {400/500} + deactivate nef + af --> cnca : OK : Update success, traffic influence info \n ERROR: {400/500} + deactivate af + cnca --> user : Success/Error + deactivate cnca +end group + +@enduml + diff --git a/doc/core-network/ngc_flows/PFD_Management_transaction_delete.uml b/doc/reference-architectures/core-network/ngc_flows/PFD_Management_transaction_delete.uml similarity index 100% rename from doc/core-network/ngc_flows/PFD_Management_transaction_delete.uml rename to doc/reference-architectures/core-network/ngc_flows/PFD_Management_transaction_delete.uml diff --git a/doc/core-network/ngc_flows/PFD_Management_transaction_get.uml b/doc/reference-architectures/core-network/ngc_flows/PFD_Management_transaction_get.uml similarity index 100% rename from doc/core-network/ngc_flows/PFD_Management_transaction_get.uml rename to doc/reference-architectures/core-network/ngc_flows/PFD_Management_transaction_get.uml diff --git a/doc/core-network/ngc_flows/PFD_Managment_transaction_add.uml b/doc/reference-architectures/core-network/ngc_flows/PFD_Managment_transaction_add.uml similarity index 100% rename from doc/core-network/ngc_flows/PFD_Managment_transaction_add.uml rename to doc/reference-architectures/core-network/ngc_flows/PFD_Managment_transaction_add.uml diff --git a/doc/core-network/ngc_flows/PFD_management_transaction_update.uml b/doc/reference-architectures/core-network/ngc_flows/PFD_management_transaction_update.uml similarity index 100% rename from doc/core-network/ngc_flows/PFD_management_transaction_update.uml rename to doc/reference-architectures/core-network/ngc_flows/PFD_management_transaction_update.uml diff --git a/doc/core-network/ngc_flows/e2e_config_flow_for_5g_edge.uml b/doc/reference-architectures/core-network/ngc_flows/e2e_config_flow_for_5g_edge.uml similarity index 100% rename from doc/core-network/ngc_flows/e2e_config_flow_for_5g_edge.uml rename to doc/reference-architectures/core-network/ngc_flows/e2e_config_flow_for_5g_edge.uml diff --git a/doc/core-network/ngc_flows/ngcoam_af_service_add.uml b/doc/reference-architectures/core-network/ngc_flows/ngcoam_af_service_add.uml similarity index 96% rename from doc/core-network/ngc_flows/ngcoam_af_service_add.uml rename to doc/reference-architectures/core-network/ngc_flows/ngcoam_af_service_add.uml index da2bd7c7..3c6543cd 100644 --- a/doc/core-network/ngc_flows/ngcoam_af_service_add.uml +++ b/doc/reference-architectures/core-network/ngc_flows/ngcoam_af_service_add.uml @@ -1,46 +1,46 @@ -@startuml -/' SPDX-License-Identifier: Apache-2.0 - Copyright (c) 2020 Intel Corporation -'/ - -skinparam monochrome false -skinparam roundcorner 20 -skinparam defaultFontName "Intel Clear" -skinparam defaultFontSize 20 -skinparam maxmessagesize 400 -skinparam sequenceArrowThickness 3 - -header "Intel Corporation" -footer "Proprietary and Confidential" -title "NGC OAM flows between OpenNESS Controller and NGC Core OAM Component" - -actor "Admin" as user -box "OpenNESS Controller" #LightBlue -participant "UI/CLI" as cnca -end box -box "NGC component" #LightGreen -participant "OAM" as oam -note over oam - OpenNESS provided component - with REST based HTTP interface - (for reference) -end note -participant "NGC \n CP Functions" as ngccp -end box - -== AF services operations with NGC Core through OAM Component == -group AF services registration with 5G Core - user -> cnca : Register AF services (UI): \n {dnn, dnai, snssai, tac, dns-ip, upf-ip} - activate cnca - cnca -> oam : /ngcoam/v1/af/services : POST \n {dnn, dnai, snssai, tac, dns-ip, upf-ip} - activate oam - oam -> oam : NGC_OAM_STUB() - oam -> ngccp : {Open: 3rd Party NGC integration with OpenNESS(oam)} - ngccp --> oam : - oam --> cnca : OK : {afServiceId} \n ERROR: {400/500} - deactivate oam - cnca --> user : Success/Failure : {afServiceId} - deactivate cnca -end - +@startuml +/' SPDX-License-Identifier: Apache-2.0 + Copyright (c) 2020 Intel Corporation +'/ + +skinparam monochrome false +skinparam roundcorner 20 +skinparam defaultFontName "Intel Clear" +skinparam defaultFontSize 20 +skinparam maxmessagesize 400 +skinparam sequenceArrowThickness 3 + +header "Intel Corporation" +footer "Proprietary and Confidential" +title "NGC OAM flows between OpenNESS Controller and NGC Core OAM Component" + +actor "Admin" as user +box "OpenNESS Controller" #LightBlue +participant "UI/CLI" as cnca +end box +box "NGC component" #LightGreen +participant "OAM" as oam +note over oam + OpenNESS provided component + with REST based HTTP interface + (for reference) +end note +participant "NGC \n CP Functions" as ngccp +end box + +== AF services operations with NGC Core through OAM Component == +group AF services registration with 5G Core + user -> cnca : Register AF services (UI): \n {dnn, dnai, snssai, tac, dns-ip, upf-ip} + activate cnca + cnca -> oam : /ngcoam/v1/af/services : POST \n {dnn, dnai, snssai, tac, dns-ip, upf-ip} + activate oam + oam -> oam : NGC_OAM_STUB() + oam -> ngccp : {Open: 3rd Party NGC integration with OpenNESS(oam)} + ngccp --> oam : + oam --> cnca : OK : {afServiceId} \n ERROR: {400/500} + deactivate oam + cnca --> user : Success/Failure : {afServiceId} + deactivate cnca +end + @enduml \ No newline at end of file diff --git a/doc/core-network/ngc_flows/ngcoam_af_service_delete.uml b/doc/reference-architectures/core-network/ngc_flows/ngcoam_af_service_delete.uml similarity index 96% rename from doc/core-network/ngc_flows/ngcoam_af_service_delete.uml rename to doc/reference-architectures/core-network/ngc_flows/ngcoam_af_service_delete.uml index aa299743..40de449c 100644 --- a/doc/core-network/ngc_flows/ngcoam_af_service_delete.uml +++ b/doc/reference-architectures/core-network/ngc_flows/ngcoam_af_service_delete.uml @@ -1,47 +1,47 @@ -@startuml -/' SPDX-License-Identifier: Apache-2.0 - Copyright (c) 2020 Intel Corporation -'/ - -skinparam monochrome false -skinparam roundcorner 20 -skinparam defaultFontName "Intel Clear" -skinparam defaultFontSize 20 -skinparam maxmessagesize 400 -skinparam sequenceArrowThickness 3 - -header "Intel Corporation" -footer "Proprietary and Confidential" -title "NGC OAM flows between OpenNESS Controller and NGC Core OAM Component" - -actor "Admin" as user -box "OpenNESS Controller" #LightBlue -participant "UI/CLI" as cnca -end box -box "NGC component" #LightGreen -participant "OAM" as oam -note over oam - OpenNESS provided component - with REST based HTTP interface - (for reference) -end note -participant "NGC \n CP Functions" as ngccp -end box - -== AF services operations with NGC Core through OAM Component == - -group AF services deregistration with 5G Core - user -> cnca : Deregister AF services from 5G Core (UI): \n {afServiceId} - activate cnca - cnca -> oam : /ngcoam/v1/af/services/{afServiceId}: DELETE - activate oam - oam -> oam : NGC_OAM_STUB() - oam -> ngccp : {Open: 3rd Party NGC integration with OpenNESS(oam)} - ngccp --> oam : - oam --> cnca : OK \n ERROR: {400/500} - deactivate oam - cnca --> user : Success/Failure - deactivate cnca -end - +@startuml +/' SPDX-License-Identifier: Apache-2.0 + Copyright (c) 2020 Intel Corporation +'/ + +skinparam monochrome false +skinparam roundcorner 20 +skinparam defaultFontName "Intel Clear" +skinparam defaultFontSize 20 +skinparam maxmessagesize 400 +skinparam sequenceArrowThickness 3 + +header "Intel Corporation" +footer "Proprietary and Confidential" +title "NGC OAM flows between OpenNESS Controller and NGC Core OAM Component" + +actor "Admin" as user +box "OpenNESS Controller" #LightBlue +participant "UI/CLI" as cnca +end box +box "NGC component" #LightGreen +participant "OAM" as oam +note over oam + OpenNESS provided component + with REST based HTTP interface + (for reference) +end note +participant "NGC \n CP Functions" as ngccp +end box + +== AF services operations with NGC Core through OAM Component == + +group AF services deregistration with 5G Core + user -> cnca : Deregister AF services from 5G Core (UI): \n {afServiceId} + activate cnca + cnca -> oam : /ngcoam/v1/af/services/{afServiceId}: DELETE + activate oam + oam -> oam : NGC_OAM_STUB() + oam -> ngccp : {Open: 3rd Party NGC integration with OpenNESS(oam)} + ngccp --> oam : + oam --> cnca : OK \n ERROR: {400/500} + deactivate oam + cnca --> user : Success/Failure + deactivate cnca +end + @enduml \ No newline at end of file diff --git a/doc/core-network/ngc_flows/ngcoam_af_service_get.uml b/doc/reference-architectures/core-network/ngc_flows/ngcoam_af_service_get.uml similarity index 96% rename from doc/core-network/ngc_flows/ngcoam_af_service_get.uml rename to doc/reference-architectures/core-network/ngc_flows/ngcoam_af_service_get.uml index ae77bece..577559b4 100644 --- a/doc/core-network/ngc_flows/ngcoam_af_service_get.uml +++ b/doc/reference-architectures/core-network/ngc_flows/ngcoam_af_service_get.uml @@ -1,46 +1,46 @@ -@startuml -/' SPDX-License-Identifier: Apache-2.0 - Copyright (c) 2020 Intel Corporation -'/ - -skinparam monochrome false -skinparam roundcorner 20 -skinparam defaultFontName "Intel Clear" -skinparam defaultFontSize 20 -skinparam maxmessagesize 400 -skinparam sequenceArrowThickness 3 - -header "Intel Corporation" -footer "Proprietary and Confidential" -title "NGC OAM flows between OpenNESS Controller and NGC Core OAM Component" - -actor "Admin" as user -box "OpenNESS Controller" #LightBlue -participant "UI/CLI" as cnca -end box -box "NGC component" #LightGreen -participant "OAM" as oam -note over oam - OpenNESS provided component - with REST based HTTP interface - (for reference) -end note -participant "NGC \n CP Functions" as ngccp -end box - - -group Get AF registered DNN services from NGC Core - user -> cnca : Get AF registered DNN services info : {afServiceId} - activate cnca - cnca -> oam : /ngcoam/v1/af/services/{afServiceId}: GET - activate oam - oam -> oam : NGC_OAM_STUB() - oam -> ngccp : {Open: 3rd Party NGC integration with OpenNESS(oam)} - ngccp --> oam : - oam --> cnca : OK : {dnn, dnai, snssai, tac, dnsIp, upfIp} \n ERROR: {400/500} - deactivate oam - cnca --> user : DNN services info associated with afServiceId - deactivate cnca -end - +@startuml +/' SPDX-License-Identifier: Apache-2.0 + Copyright (c) 2020 Intel Corporation +'/ + +skinparam monochrome false +skinparam roundcorner 20 +skinparam defaultFontName "Intel Clear" +skinparam defaultFontSize 20 +skinparam maxmessagesize 400 +skinparam sequenceArrowThickness 3 + +header "Intel Corporation" +footer "Proprietary and Confidential" +title "NGC OAM flows between OpenNESS Controller and NGC Core OAM Component" + +actor "Admin" as user +box "OpenNESS Controller" #LightBlue +participant "UI/CLI" as cnca +end box +box "NGC component" #LightGreen +participant "OAM" as oam +note over oam + OpenNESS provided component + with REST based HTTP interface + (for reference) +end note +participant "NGC \n CP Functions" as ngccp +end box + + +group Get AF registered DNN services from NGC Core + user -> cnca : Get AF registered DNN services info : {afServiceId} + activate cnca + cnca -> oam : /ngcoam/v1/af/services/{afServiceId}: GET + activate oam + oam -> oam : NGC_OAM_STUB() + oam -> ngccp : {Open: 3rd Party NGC integration with OpenNESS(oam)} + ngccp --> oam : + oam --> cnca : OK : {dnn, dnai, snssai, tac, dnsIp, upfIp} \n ERROR: {400/500} + deactivate oam + cnca --> user : DNN services info associated with afServiceId + deactivate cnca +end + @enduml \ No newline at end of file diff --git a/doc/core-network/ngc_flows/ngcoam_af_service_update.uml b/doc/reference-architectures/core-network/ngc_flows/ngcoam_af_service_update.uml similarity index 96% rename from doc/core-network/ngc_flows/ngcoam_af_service_update.uml rename to doc/reference-architectures/core-network/ngc_flows/ngcoam_af_service_update.uml index 9c566161..0083a509 100644 --- a/doc/core-network/ngc_flows/ngcoam_af_service_update.uml +++ b/doc/reference-architectures/core-network/ngc_flows/ngcoam_af_service_update.uml @@ -1,47 +1,47 @@ -@startuml -/' SPDX-License-Identifier: Apache-2.0 - Copyright (c) 2020 Intel Corporation -'/ - -skinparam monochrome false -skinparam roundcorner 20 -skinparam defaultFontName "Intel Clear" -skinparam defaultFontSize 20 -skinparam maxmessagesize 400 -skinparam sequenceArrowThickness 3 - -header "Intel Corporation" -footer "Proprietary and Confidential" -title "NGC OAM flows between OpenNESS Controller and NGC Core OAM Component" - -actor "Admin" as user -box "OpenNESS Controller" #LightBlue -participant "UI/CLI" as cnca -end box -box "NGC component" #LightGreen -participant "OAM" as oam -note over oam - OpenNESS provided component - with REST based HTTP interface - (for reference) -end note -participant "NGC \n CP Functions" as ngccp -end box - -== AF services operations with NGC Core through OAM Component == - -group Update DNS config values for DNN served by Edge DNN - user -> cnca : Update DNS configuration of DNN (UI): \n {afServiceId, dnn, dnai, snssai, tac, dns-ip, upf-ip} - activate cnca - cnca -> oam : /ngcoam/v1/af/services/{afServiceId} : PATCH \n {dnn, dnai, snssai, tac, dns-ip, upf-ip} - activate oam - oam -> oam : NGC_OAM_STUB() - oam -> ngccp : {Open: 3rd Party NGC integration with OpenNESS(oam)} - ngccp --> oam : - oam --> cnca : OK \n ERROR: {400/500} - deactivate oam - cnca --> user : Success/Failure - deactivate cnca -end - +@startuml +/' SPDX-License-Identifier: Apache-2.0 + Copyright (c) 2020 Intel Corporation +'/ + +skinparam monochrome false +skinparam roundcorner 20 +skinparam defaultFontName "Intel Clear" +skinparam defaultFontSize 20 +skinparam maxmessagesize 400 +skinparam sequenceArrowThickness 3 + +header "Intel Corporation" +footer "Proprietary and Confidential" +title "NGC OAM flows between OpenNESS Controller and NGC Core OAM Component" + +actor "Admin" as user +box "OpenNESS Controller" #LightBlue +participant "UI/CLI" as cnca +end box +box "NGC component" #LightGreen +participant "OAM" as oam +note over oam + OpenNESS provided component + with REST based HTTP interface + (for reference) +end note +participant "NGC \n CP Functions" as ngccp +end box + +== AF services operations with NGC Core through OAM Component == + +group Update DNS config values for DNN served by Edge DNN + user -> cnca : Update DNS configuration of DNN (UI): \n {afServiceId, dnn, dnai, snssai, tac, dns-ip, upf-ip} + activate cnca + cnca -> oam : /ngcoam/v1/af/services/{afServiceId} : PATCH \n {dnn, dnai, snssai, tac, dns-ip, upf-ip} + activate oam + oam -> oam : NGC_OAM_STUB() + oam -> ngccp : {Open: 3rd Party NGC integration with OpenNESS(oam)} + ngccp --> oam : + oam --> cnca : OK \n ERROR: {400/500} + deactivate oam + cnca --> user : Success/Failure + deactivate cnca +end + @enduml \ No newline at end of file diff --git a/doc/core-network/openness-core.png b/doc/reference-architectures/core-network/openness-core.png similarity index 100% rename from doc/core-network/openness-core.png rename to doc/reference-architectures/core-network/openness-core.png diff --git a/doc/core-network/openness_epc.md b/doc/reference-architectures/core-network/openness_epc.md similarity index 100% rename from doc/core-network/openness_epc.md rename to doc/reference-architectures/core-network/openness_epc.md diff --git a/doc/core-network/openness_ngc.md b/doc/reference-architectures/core-network/openness_ngc.md similarity index 100% rename from doc/core-network/openness_ngc.md rename to doc/reference-architectures/core-network/openness_ngc.md diff --git a/doc/core-network/openness_upf.md b/doc/reference-architectures/core-network/openness_upf.md similarity index 100% rename from doc/core-network/openness_upf.md rename to doc/reference-architectures/core-network/openness_upf.md diff --git a/doc/ran/index.html b/doc/reference-architectures/ran/index.html similarity index 100% rename from doc/ran/index.html rename to doc/reference-architectures/ran/index.html diff --git a/doc/ran/openness-ran.png b/doc/reference-architectures/ran/openness-ran.png similarity index 100% rename from doc/ran/openness-ran.png rename to doc/reference-architectures/ran/openness-ran.png diff --git a/doc/ran/openness_ran.md b/doc/reference-architectures/ran/openness_ran.md similarity index 100% rename from doc/ran/openness_ran.md rename to doc/reference-architectures/ran/openness_ran.md diff --git a/doc/ran/openness_xran.md b/doc/reference-architectures/ran/openness_xran.md similarity index 100% rename from doc/ran/openness_xran.md rename to doc/reference-architectures/ran/openness_xran.md diff --git a/doc/ran/openness_xran_images/xran_img1.png b/doc/reference-architectures/ran/openness_xran_images/xran_img1.png similarity index 100% rename from doc/ran/openness_xran_images/xran_img1.png rename to doc/reference-architectures/ran/openness_xran_images/xran_img1.png diff --git a/doc/ran/openness_xran_images/xran_img10.png b/doc/reference-architectures/ran/openness_xran_images/xran_img10.png similarity index 100% rename from doc/ran/openness_xran_images/xran_img10.png rename to doc/reference-architectures/ran/openness_xran_images/xran_img10.png diff --git a/doc/ran/openness_xran_images/xran_img11.png b/doc/reference-architectures/ran/openness_xran_images/xran_img11.png similarity index 100% rename from doc/ran/openness_xran_images/xran_img11.png rename to doc/reference-architectures/ran/openness_xran_images/xran_img11.png diff --git a/doc/ran/openness_xran_images/xran_img12.png b/doc/reference-architectures/ran/openness_xran_images/xran_img12.png similarity index 100% rename from doc/ran/openness_xran_images/xran_img12.png rename to doc/reference-architectures/ran/openness_xran_images/xran_img12.png diff --git a/doc/ran/openness_xran_images/xran_img13.png b/doc/reference-architectures/ran/openness_xran_images/xran_img13.png similarity index 100% rename from doc/ran/openness_xran_images/xran_img13.png rename to doc/reference-architectures/ran/openness_xran_images/xran_img13.png diff --git a/doc/ran/openness_xran_images/xran_img14.png b/doc/reference-architectures/ran/openness_xran_images/xran_img14.png similarity index 100% rename from doc/ran/openness_xran_images/xran_img14.png rename to doc/reference-architectures/ran/openness_xran_images/xran_img14.png diff --git a/doc/ran/openness_xran_images/xran_img16.png b/doc/reference-architectures/ran/openness_xran_images/xran_img16.png similarity index 100% rename from doc/ran/openness_xran_images/xran_img16.png rename to doc/reference-architectures/ran/openness_xran_images/xran_img16.png diff --git a/doc/ran/openness_xran_images/xran_img17.png b/doc/reference-architectures/ran/openness_xran_images/xran_img17.png similarity index 100% rename from doc/ran/openness_xran_images/xran_img17.png rename to doc/reference-architectures/ran/openness_xran_images/xran_img17.png diff --git a/doc/ran/openness_xran_images/xran_img18.png b/doc/reference-architectures/ran/openness_xran_images/xran_img18.png similarity index 100% rename from doc/ran/openness_xran_images/xran_img18.png rename to doc/reference-architectures/ran/openness_xran_images/xran_img18.png diff --git a/doc/ran/openness_xran_images/xran_img19.png b/doc/reference-architectures/ran/openness_xran_images/xran_img19.png similarity index 100% rename from doc/ran/openness_xran_images/xran_img19.png rename to doc/reference-architectures/ran/openness_xran_images/xran_img19.png diff --git a/doc/ran/openness_xran_images/xran_img2.png b/doc/reference-architectures/ran/openness_xran_images/xran_img2.png similarity index 100% rename from doc/ran/openness_xran_images/xran_img2.png rename to doc/reference-architectures/ran/openness_xran_images/xran_img2.png diff --git a/doc/ran/openness_xran_images/xran_img20.png b/doc/reference-architectures/ran/openness_xran_images/xran_img20.png similarity index 100% rename from doc/ran/openness_xran_images/xran_img20.png rename to doc/reference-architectures/ran/openness_xran_images/xran_img20.png diff --git a/doc/ran/openness_xran_images/xran_img21.png b/doc/reference-architectures/ran/openness_xran_images/xran_img21.png similarity index 100% rename from doc/ran/openness_xran_images/xran_img21.png rename to doc/reference-architectures/ran/openness_xran_images/xran_img21.png diff --git a/doc/ran/openness_xran_images/xran_img22.png b/doc/reference-architectures/ran/openness_xran_images/xran_img22.png similarity index 100% rename from doc/ran/openness_xran_images/xran_img22.png rename to doc/reference-architectures/ran/openness_xran_images/xran_img22.png diff --git a/doc/ran/openness_xran_images/xran_img23.png b/doc/reference-architectures/ran/openness_xran_images/xran_img23.png similarity index 100% rename from doc/ran/openness_xran_images/xran_img23.png rename to doc/reference-architectures/ran/openness_xran_images/xran_img23.png diff --git a/doc/ran/openness_xran_images/xran_img24.png b/doc/reference-architectures/ran/openness_xran_images/xran_img24.png similarity index 100% rename from doc/ran/openness_xran_images/xran_img24.png rename to doc/reference-architectures/ran/openness_xran_images/xran_img24.png diff --git a/doc/ran/openness_xran_images/xran_img25.png b/doc/reference-architectures/ran/openness_xran_images/xran_img25.png similarity index 100% rename from doc/ran/openness_xran_images/xran_img25.png rename to doc/reference-architectures/ran/openness_xran_images/xran_img25.png diff --git a/doc/ran/openness_xran_images/xran_img3.png b/doc/reference-architectures/ran/openness_xran_images/xran_img3.png similarity index 100% rename from doc/ran/openness_xran_images/xran_img3.png rename to doc/reference-architectures/ran/openness_xran_images/xran_img3.png diff --git a/doc/ran/openness_xran_images/xran_img4.png b/doc/reference-architectures/ran/openness_xran_images/xran_img4.png similarity index 100% rename from doc/ran/openness_xran_images/xran_img4.png rename to doc/reference-architectures/ran/openness_xran_images/xran_img4.png diff --git a/doc/ran/openness_xran_images/xran_img5.png b/doc/reference-architectures/ran/openness_xran_images/xran_img5.png similarity index 100% rename from doc/ran/openness_xran_images/xran_img5.png rename to doc/reference-architectures/ran/openness_xran_images/xran_img5.png diff --git a/doc/ran/openness_xran_images/xran_img6.png b/doc/reference-architectures/ran/openness_xran_images/xran_img6.png similarity index 100% rename from doc/ran/openness_xran_images/xran_img6.png rename to doc/reference-architectures/ran/openness_xran_images/xran_img6.png diff --git a/doc/ran/openness_xran_images/xran_img7.png b/doc/reference-architectures/ran/openness_xran_images/xran_img7.png similarity index 100% rename from doc/ran/openness_xran_images/xran_img7.png rename to doc/reference-architectures/ran/openness_xran_images/xran_img7.png diff --git a/doc/ran/openness_xran_images/xran_img8.png b/doc/reference-architectures/ran/openness_xran_images/xran_img8.png similarity index 100% rename from doc/ran/openness_xran_images/xran_img8.png rename to doc/reference-architectures/ran/openness_xran_images/xran_img8.png diff --git a/doc/ran/openness_xran_images/xran_img9.png b/doc/reference-architectures/ran/openness_xran_images/xran_img9.png similarity index 100% rename from doc/ran/openness_xran_images/xran_img9.png rename to doc/reference-architectures/ran/openness_xran_images/xran_img9.png From ebdb66fffabfeb18432cbe2c81aaa59d9cc6127c Mon Sep 17 00:00:00 2001 From: cuizhaoyue Date: Sat, 14 Nov 2020 21:17:36 +0800 Subject: [PATCH 014/148] Correct typos --- doc/getting-started/network-edge/controller-edge-node-setup.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index 43966844..387b57de 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -4,7 +4,6 @@ Copyright (c) 2019-2020 Intel Corporation ``` -# OpenNESS Network Edge: Controller and Edge node setup - [OpenNESS Network Edge: Controller and Edge node setup](#openness-network-edge-controller-and-edge-node-setup) - [Quickstart](#quickstart) - [Preconditions](#preconditions) @@ -176,7 +175,7 @@ Use the `docker pull` command to pull the image from Docker registry: ```ini docker pull Kubernetes_Control_Plane_IP:30003/library/nginx:latest ``` ->**NOTE**: should be replaced as per our harbor registry IP address. +>**NOTE**: should be replaced as per our Harbor registry IP address. ## Kubernetes cluster networking plugins (Network Edge) From 11788b919a42abafda8043599727de445ca9f08d Mon Sep 17 00:00:00 2001 From: cuizhaoyue Date: Sat, 14 Nov 2020 21:19:47 +0800 Subject: [PATCH 015/148] modify index --- doc/getting-started/network-edge/controller-edge-node-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index 387b57de..7e87683c 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -4,7 +4,7 @@ Copyright (c) 2019-2020 Intel Corporation ``` -- [OpenNESS Network Edge: Controller and Edge node setup](#openness-network-edge-controller-and-edge-node-setup) +# OpenNESS Network Edge: Controller and Edge node setup - [Quickstart](#quickstart) - [Preconditions](#preconditions) - [Running playbooks](#running-playbooks) From 0696d25db6b89fc7c94fdb1629417841f43fbc75 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Mon, 16 Nov 2020 15:37:16 +0800 Subject: [PATCH 016/148] update harbor procedure --- .../controller-edge-node-setup.md | 40 ++++++++++++++++--- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index 7e87683c..af323ee5 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -140,7 +140,7 @@ To deploy Network Edge in a single-node cluster scenario, follow the steps below ## Harbor registry -Harbor registry is a storage and distribution system for Docker Images. On the OpenNESS environment, Harbor registry service is deployed as a pod on Control plane Node. Harbor registry authentication enabled with self-signed certificates as well as all nodes and control plane will have access to the Harbor registry. +Harbor registry is an open source cloud native registry which can support images and relevant artifacts with extended functionalities as described in [Harbor](https://goharbor.io/). On the OpenNESS environment, Harbor registry service is installed on Control plane Node by Harbor Helm Chart [github](https://github.com/goharbor/harbor-helm/releases/tag/v1.5.1). Harbor registry authentication enabled with self-signed certificates as well as all nodes and control plane will have access to the Harbor registry. ### Deploy Harbor registry @@ -150,16 +150,44 @@ Ansible "harbor_registry" roles created on openness-experience-kits. For deployi role: harbor_registry/controlplane role: harbor_registry/node ``` -The following steps are processed during the Harbor registry deployment on the OpenNESS setup. -* Generate a self-signed certificate on the Kubernetes Control plane Node. -* Build and deploy a docker-registry pod on the Control plane Node. -* Share public harbor.crt on trusted Node and Ansible build host location +The following steps are processed by openness-experience-kits during the Harbor registry installation on the OpenNESS control plane node. + +* Download Harbor Helm Charts on the Kubernetes Control plane Node. +* Check whether huge pages is enabled and templates values.yaml file accordingly. +* Create namespace and disk PV for Harbor Services (The defaut disk PV size is 20G. The values can be chanageable in the roles/harbor_registry/controlplane/defaults/main.yaml). +* Install Harbor on the control plane node using the Helm Charts. +* Create project - intel for OpenNESS microservices, Kurbernetes enhanced add-on images storage. +* Docker login the Harbor Registry, thus enable pulling, pushing and tag images with the Harbor Registry + + +On the OpenNESS edge nodes, openness-experience-kits will conduct the following steps: +* Get harbor.crt from the OpenNESS control plane node and save into the host location /etc/docker/certs.d/ -* After the Harbor registry deploys, the Node and Ansible host can access the private Docker registry. +* Docker login the Harbor Registry, thus enable pulling, pushing and tag images with the Harbor Registry +* After above steps, the Node can access the private Harbor registry. * The IP address of the Harbor registry will be: "Kubernetes_Control_Plane_IP" * The port number of the Docker registry will be: 30003 +For the host outside of the OpenNESS cluster, can use following commands to access the Harbor Registry: + +```shell +# create directory for harbor's CA cert +mkdir /etc/docker/certs.d/${Kubernetes_Control_Plane_IP}:${port}/ + +# get EMCO harbor CA.crt +set -o pipefail && echo -n | openssl s_client -showcerts -connect ${Kubernetes_Control_Plane_IP}:${port} 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /etc/docker/certs.d/${Kubernetes_Control_Plane_IP}:${port}/harbor.crt + +# docker login harobr registry +docker login ${Kubernetes_Control_Plane_IP}:${port} -uadmin -p${harborAdminPassword} +``` +The default access configuration for the Harbor Registry is: + ```ini +Kubernetes_Control_Plane_IP: 30003(default) +harborAdminPassword: Harbor12345(default) + ``` + + ### Harbor registry image push Use the Docker tag to create an alias of the image with the fully qualified path to your Harbor registry after the tag successfully pushes the image to the Docker registry. From 7668103c9299ad208ff601ff8d459a692bae10f0 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Mon, 16 Nov 2020 16:07:46 +0800 Subject: [PATCH 017/148] fix some typo effor --- .../controller-edge-node-setup.md | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index af323ee5..10caafd3 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -156,8 +156,8 @@ The following steps are processed by openness-experience-kits during the Harbor * Download Harbor Helm Charts on the Kubernetes Control plane Node. * Check whether huge pages is enabled and templates values.yaml file accordingly. * Create namespace and disk PV for Harbor Services (The defaut disk PV size is 20G. The values can be chanageable in the roles/harbor_registry/controlplane/defaults/main.yaml). -* Install Harbor on the control plane node using the Helm Charts. -* Create project - intel for OpenNESS microservices, Kurbernetes enhanced add-on images storage. +* Install Harbor on the control plane node using the Helm Charts (The CA crt will be generated by Harbor itself). +* Create the new project - ```intel``` for OpenNESS microservices, Kurbernetes enhanced add-on images storage. * Docker login the Harbor Registry, thus enable pulling, pushing and tag images with the Harbor Registry @@ -172,7 +172,7 @@ On the OpenNESS edge nodes, openness-experience-kits will conduct the following For the host outside of the OpenNESS cluster, can use following commands to access the Harbor Registry: ```shell -# create directory for harbor's CA cert +# create directory for harbor's CA crt mkdir /etc/docker/certs.d/${Kubernetes_Control_Plane_IP}:${port}/ # get EMCO harbor CA.crt @@ -187,24 +187,21 @@ Kubernetes_Control_Plane_IP: 30003(default) harborAdminPassword: Harbor12345(default) ``` - ### Harbor registry image push -Use the Docker tag to create an alias of the image with the fully qualified path to your Harbor registry after the tag successfully pushes the image to the Docker registry. +Use the Docker tag to create an alias of the image with the fully qualified path to your Harbor registry after the tag successfully pushes the image to the Harbor registry. ```ini - docker tag nginx:latest Kubernetes_Control_Plane_IP:30003/library/nginx:latest - docker push Kubernetes_Control_Plane_IP:30003/library/nginx:latest + docker tag nginx:latest {Kubernetes_Control_Plane_IP}:30003/intel/nginx:latest + docker push {Kubernetes_Control_Plane_IP}:30003/intel/nginx:latest ``` Now image the tag with the fully qualified path to your private registry. You can push the image to the registry using the Docker push command. ### Harbor registry image pull -Use the `docker pull` command to pull the image from Docker registry: +Use the `docker pull` command to pull the image from Harbor registry: ```ini - docker pull Kubernetes_Control_Plane_IP:30003/library/nginx:latest + docker pull {Kubernetes_Control_Plane_IP}:30003/intel/nginx:latest ``` ->**NOTE**: should be replaced as per our Harbor registry IP address. - ## Kubernetes cluster networking plugins (Network Edge) From 74a12f3b7254031fdcf3b9ca867e6a280c9f2a3c Mon Sep 17 00:00:00 2001 From: cuizhaoyue Date: Tue, 17 Nov 2020 10:10:46 +0800 Subject: [PATCH 018/148] use the custom registry named intel --- .../openness-sriov-multiple-interfaces.md | 2 +- .../openness-telemetry.md | 2 +- .../network-edge/controller-edge-node-setup.md | 14 +++++++------- doc/ran/openness_ran.md | 4 ++-- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/doc/enhanced-platform-awareness/openness-sriov-multiple-interfaces.md b/doc/enhanced-platform-awareness/openness-sriov-multiple-interfaces.md index d6418fed..acd46703 100644 --- a/doc/enhanced-platform-awareness/openness-sriov-multiple-interfaces.md +++ b/doc/enhanced-platform-awareness/openness-sriov-multiple-interfaces.md @@ -130,7 +130,7 @@ kubernetes_cnis: - sriov ``` -SR-IOV CNI and device plugin are deployed in OpenNESS using Helm chart. The Helm chart is available in [openness-experience-kits](https://github.com/otcshare/openness-experience-kits/tree/master/roles/kubernetes/cni/sriov/master/files/sriov). Additional chart templates for SR-IOV device plugin can be downloaded from [container-experience-kits repository](https://github.com/intel/container-experience-kits/tree/master/roles/sriov-dp-install/charts/sriov-net-dp/templates). SR-IOV images are built from source by the Ansible SR-IOV role and pushed to a local Docker registry on Edge Controller. +SR-IOV CNI and device plugin are deployed in OpenNESS using Helm chart. The Helm chart is available in [openness-experience-kits](https://github.com/otcshare/openness-experience-kits/tree/master/roles/kubernetes/cni/sriov/master/files/sriov). Additional chart templates for SR-IOV device plugin can be downloaded from [container-experience-kits repository](https://github.com/intel/container-experience-kits/tree/master/roles/sriov-dp-install/charts/sriov-net-dp/templates). SR-IOV images are built from source by the Ansible SR-IOV role and pushed to a local Harbor registry on Edge Controller. #### Edge Node SR-IOV interfaces configuration diff --git a/doc/enhanced-platform-awareness/openness-telemetry.md b/doc/enhanced-platform-awareness/openness-telemetry.md index fcddd4cb..2555c1b2 100644 --- a/doc/enhanced-platform-awareness/openness-telemetry.md +++ b/doc/enhanced-platform-awareness/openness-telemetry.md @@ -232,7 +232,7 @@ OpenCensus exporter/receiver is used in the default OpenNESS configuration for a ./create-secret.sh ``` -4. Configure and deploy the sample telemetry application with the side-car OpenTelemetry agent from the Edge Apps repo using Helm. Edit `edgeapps/applications/telemetry-sample-app/opentelemetry-agent/values.yaml`, and change `app:image:repository: 10.0.0.1:30003/library/metricapp` to the IP address of the Harbor registry. +4. Configure and deploy the sample telemetry application with the side-car OpenTelemetry agent from the Edge Apps repo using Helm. Edit `edgeapps/applications/telemetry-sample-app/opentelemetry-agent/values.yaml`, and change `app:image:repository: 10.0.0.1:30003/intel/metricapp` to the IP address of the Harbor registry. ```shell cd edgeapps/applications/telemetry-sample-app/ diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index 7e87683c..366ce4a0 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -156,24 +156,24 @@ The following steps are processed during the Harbor registry deployment on the O * Build and deploy a docker-registry pod on the Control plane Node. * Share public harbor.crt on trusted Node and Ansible build host location /etc/docker/certs.d/ -* After the Harbor registry deploys, the Node and Ansible host can access the private Docker registry. +* After the Harbor registry deploys, the Node and Ansible host can access the private Harbor registry. * The IP address of the Harbor registry will be: "Kubernetes_Control_Plane_IP" -* The port number of the Docker registry will be: 30003 +* The port number of the Harbor registry will be: 30003 ### Harbor registry image push -Use the Docker tag to create an alias of the image with the fully qualified path to your Harbor registry after the tag successfully pushes the image to the Docker registry. +Use the Docker tag to create an alias of the image with the fully qualified path to your Harbor registry after the tag successfully pushes the image to the Harbor registry. ```ini - docker tag nginx:latest Kubernetes_Control_Plane_IP:30003/library/nginx:latest - docker push Kubernetes_Control_Plane_IP:30003/library/nginx:latest + docker tag nginx:latest Kubernetes_Control_Plane_IP:30003/intel/nginx:latest + docker push Kubernetes_Control_Plane_IP:30003/intel/nginx:latest ``` Now image the tag with the fully qualified path to your private registry. You can push the image to the registry using the Docker push command. ### Harbor registry image pull -Use the `docker pull` command to pull the image from Docker registry: +Use the `docker pull` command to pull the image from Harbor registry: ```ini - docker pull Kubernetes_Control_Plane_IP:30003/library/nginx:latest + docker pull Kubernetes_Control_Plane_IP:30003/intel/nginx:latest ``` >**NOTE**: should be replaced as per our Harbor registry IP address. diff --git a/doc/ran/openness_ran.md b/doc/ran/openness_ran.md index 429564a5..036c5bf3 100644 --- a/doc/ran/openness_ran.md +++ b/doc/ran/openness_ran.md @@ -76,9 +76,9 @@ The following example reflects the Docker image [expected by Helm chart](https:/ 7. Tag the image and push to a local Harbor registry (Harbor registry deployed as part of OpenNESS Experience Kit) ```shell - docker tag flexran5g :/library/flexran5g:3.10.0-1062.12.1.rt56 + docker tag flexran5g :/intel/flexran5g:3.10.0-1062.12.1.rt56 - docker push :/library/flexran5g:3.10.0-1062.12.1.rt56 + docker push :/intel/flexran5g:3.10.0-1062.12.1.rt56 ``` By the end of step 7, the FlexRAN Docker image is created and available in the Harbor registry. This image is copied to the edge node where FlexRAN will be deployed and that is installed with OpenNESS Network edge with all the required EPA features including Intel® FPGA Programmable Acceleration Card (Intel® FPGA PAC) N3000. Please refer to the document [Using FPGA in OpenNESS: Programming, Resource Allocation, and Configuration](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-fpga.md) for details on setting up Intel® FPGA PAC N3000 with vRAN FPGA image. From 6e710d3f095ffe4980953729bd6f488b87db9d46 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Tue, 17 Nov 2020 12:29:28 +0800 Subject: [PATCH 019/148] add ui part --- .../harbor_ui.png | Bin 0 -> 64265 bytes .../network-edge/controller-edge-node-setup.md | 15 ++++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 doc/getting-started/network-edge/controller-edge-node-setup-images/harbor_ui.png diff --git a/doc/getting-started/network-edge/controller-edge-node-setup-images/harbor_ui.png b/doc/getting-started/network-edge/controller-edge-node-setup-images/harbor_ui.png new file mode 100644 index 0000000000000000000000000000000000000000..448feee675ebe48362cf11cd52c700d03f507181 GIT binary patch literal 64265 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 literal 0 HcmV?d00001 diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index 10caafd3..45bdffcf 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -17,8 +17,10 @@ Copyright (c) 2019-2020 Intel Corporation - [Single-node Network Edge cluster](#single-node-network-edge-cluster) - [Harbor registry](#harbor-registry) - [Deploy Harbor registry](#deploy-harbor-registry) + - [Harbor login](#harbor-login) - [Harbor registry image push](#harbor-registry-image-push) - [Harbor registry image pull](#harbor-registry-image-pull) + - [Harbor UI](#harbor-ui) - [Kubernetes cluster networking plugins (Network Edge)](#kubernetes-cluster-networking-plugins-network-edge) - [Selecting cluster networking plugins (CNI)](#selecting-cluster-networking-plugins-cni) - [Adding additional interfaces to pods](#adding-additional-interfaces-to-pods) @@ -155,7 +157,7 @@ The following steps are processed by openness-experience-kits during the Harbor * Download Harbor Helm Charts on the Kubernetes Control plane Node. * Check whether huge pages is enabled and templates values.yaml file accordingly. -* Create namespace and disk PV for Harbor Services (The defaut disk PV size is 20G. The values can be chanageable in the roles/harbor_registry/controlplane/defaults/main.yaml). +* Create namespace and disk PV for Harbor Services (The defaut disk PV/PVC total size is 30G. The values can be configurable in the ```roles/harbor_registry/controlplane/defaults/main.yaml```). * Install Harbor on the control plane node using the Helm Charts (The CA crt will be generated by Harbor itself). * Create the new project - ```intel``` for OpenNESS microservices, Kurbernetes enhanced add-on images storage. * Docker login the Harbor Registry, thus enable pulling, pushing and tag images with the Harbor Registry @@ -169,6 +171,11 @@ On the OpenNESS edge nodes, openness-experience-kits will conduct the following * The IP address of the Harbor registry will be: "Kubernetes_Control_Plane_IP" * The port number of the Docker registry will be: 30003 + +### Harbor login +For the nodes inside of the OpenNESS cluster, openness-experience-kits ansible playbooks automatically login and prepare harbor CA certifications to access Harbor services. + + For the host outside of the OpenNESS cluster, can use following commands to access the Harbor Registry: ```shell @@ -203,6 +210,12 @@ Use the `docker pull` command to pull the image from Harbor registry: docker pull {Kubernetes_Control_Plane_IP}:30003/intel/nginx:latest ``` +### Harbor UI +Open the https://{Kubernetes_Control_Plane_IP}:30003 with login username ```admin``` and password ```Harbor12345```: +![](controller-edge-node-setup-images/harbor_ui.png) + +You should see the project - ```intel``` on the Web UI and manage the images. + ## Kubernetes cluster networking plugins (Network Edge) Kubernetes uses 3rd party networking plugins to provide [cluster networking](https://kubernetes.io/docs/concepts/cluster-administration/networking/). From aaeac0bbb5e7e17230b463cb72766598912a8ce3 Mon Sep 17 00:00:00 2001 From: cuizhaoyue Date: Tue, 17 Nov 2020 15:19:29 +0800 Subject: [PATCH 020/148] Add Harbor Proxy Cache chapter --- .../harbor-proxy-step1.png | Bin 0 -> 53253 bytes .../harbor-proxy-step2.png | Bin 0 -> 51256 bytes .../harbor-proxy-step3.png | Bin 0 -> 39177 bytes .../harbor-proxy-step4.png | Bin 0 -> 31964 bytes .../controller-edge-node-setup.md | 34 +++++++++++++----- 5 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 doc/getting-started/network-edge/controller-edge-node-setup-images/harbor-proxy-step1.png create mode 100644 doc/getting-started/network-edge/controller-edge-node-setup-images/harbor-proxy-step2.png create mode 100644 doc/getting-started/network-edge/controller-edge-node-setup-images/harbor-proxy-step3.png create mode 100644 doc/getting-started/network-edge/controller-edge-node-setup-images/harbor-proxy-step4.png diff --git a/doc/getting-started/network-edge/controller-edge-node-setup-images/harbor-proxy-step1.png b/doc/getting-started/network-edge/controller-edge-node-setup-images/harbor-proxy-step1.png new file mode 100644 index 0000000000000000000000000000000000000000..4861207c52f58214735ff9e03f87b007a57b890c GIT binary patch literal 53253 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ℜTtEu;| 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 ISonAU0QMxkHUIzs literal 0 HcmV?d00001 diff --git a/doc/getting-started/network-edge/controller-edge-node-setup-images/harbor-proxy-step3.png b/doc/getting-started/network-edge/controller-edge-node-setup-images/harbor-proxy-step3.png new file mode 100644 index 0000000000000000000000000000000000000000..b898c87acf6d1b743e531361ffc05ac28b3e37f4 GIT binary patch literal 39177 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 7668103c9299ad208ff601ff8d459a692bae10f0 ``` Now image the tag with the fully qualified path to your private registry. You can push the image to the registry using the Docker push command. @@ -212,11 +207,7 @@ Now image the tag with the fully qualified path to your private registry. You ca Use the `docker pull` command to pull the image from Harbor registry: ```ini -<<<<<<< HEAD - docker pull Kubernetes_Control_Plane_IP:30003/intel/nginx:latest -======= docker pull {Kubernetes_Control_Plane_IP}:30003/intel/nginx:latest ->>>>>>> 7668103c9299ad208ff601ff8d459a692bae10f0 ``` ### Harbor UI @@ -225,6 +216,31 @@ Open the https://{Kubernetes_Control_Plane_IP}:30003 with login username ```admi You should see the project - ```intel``` on the Web UI and manage the images. +### Harbor Proxy Cache + +1. Create a new registry endpoint + + ![](controller-edge-node-setup-images/harbor-proxy-step1.png) + + ![](controller-edge-node-setup-images/harbor-proxy-step2.png) + +2. Create a new project with proxy cache enabled. + + ![](controller-edge-node-setup-images/harbor-proxy-step3.png) + + ![](controller-edge-node-setup-images/harbor-proxy-step4.png) + + + +To start using the proxy cache, configure your docker pull commands or pod manifests to reference the proxy cache project by adding `//` as a prefix to the image tag. For example: + +```bash +> docker pull //goharbor/harbor-core:dev + +# To pull offcial images, use the 'library' namespace +> docker pull //library/hello-world:latest +``` + ## Kubernetes cluster networking plugins (Network Edge) Kubernetes uses 3rd party networking plugins to provide [cluster networking](https://kubernetes.io/docs/concepts/cluster-administration/networking/). From 7b57ebe8bb090fb5997346b56f4637ec513a0871 Mon Sep 17 00:00:00 2001 From: cuizhaoyue Date: Tue, 17 Nov 2020 15:22:32 +0800 Subject: [PATCH 021/148] Add Harbor Proxy Cache chapter --- doc/getting-started/network-edge/controller-edge-node-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index b3e2e4e5..e2964a80 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -232,7 +232,7 @@ You should see the project - ```intel``` on the Web UI and manage the images. -To start using the proxy cache, configure your docker pull commands or pod manifests to reference the proxy cache project by adding `//` as a prefix to the image tag. For example: +To start using the proxy cache, configure your docker pull commands or pod manifests to reference the proxy cache project by adding `//` as a prefix to the image tag. For example: ```bash > docker pull //goharbor/harbor-core:dev From 273388767145c32f4427916a8c7b3156c6f5329d Mon Sep 17 00:00:00 2001 From: cuizhaoyue Date: Tue, 17 Nov 2020 15:35:26 +0800 Subject: [PATCH 022/148] add `//` --- doc/getting-started/network-edge/controller-edge-node-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index e2964a80..5a635e77 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -232,7 +232,7 @@ You should see the project - ```intel``` on the Web UI and manage the images. -To start using the proxy cache, configure your docker pull commands or pod manifests to reference the proxy cache project by adding `//` as a prefix to the image tag. For example: +To start using the proxy cache, configure your docker pull commands or pod manifests to reference the proxy cache project by adding `//` as a prefix to the image tag. For example: ```bash > docker pull //goharbor/harbor-core:dev From 2a9b8c91e22fdc48dadcb36bd50d0d14d091b6a5 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Wed, 18 Nov 2020 07:05:29 +0800 Subject: [PATCH 023/148] harbor cache --- .../harbor_proxy_setup.png | Bin 0 -> 24784 bytes .../network-edge/controller-edge-node-setup.md | 5 +++++ 2 files changed, 5 insertions(+) create mode 100644 doc/getting-started/network-edge/controller-edge-node-setup-images/harbor_proxy_setup.png diff --git a/doc/getting-started/network-edge/controller-edge-node-setup-images/harbor_proxy_setup.png b/doc/getting-started/network-edge/controller-edge-node-setup-images/harbor_proxy_setup.png new file mode 100644 index 0000000000000000000000000000000000000000..062bba3f717dfe25c8a2f42f5af56d23ba7d2cbf GIT binary patch literal 24784 zcmeFZ2T+q)-#Civy1u)Jt_4u)E*Jp`pn!CUg__Wj5_$BSr%$>RSKi`ZFkUY;hzw_($1Z%1*G5p5z8yy`T zgNm}eHXYreW;(i`Q2+V~e3H_ztOkA@aMM=0N|)2hHVOXt+4hRs6*{{72>MNnL*VaU zZz&_)=;)5t(f%K3aDIWJqcgWwk-u`?+jMro?6Ihw3D5fK@QaC=-^%$5!fg#+Sx6k@ zKALj(peT3Vq7vogQ{mE-f=9P|nvflzvY!6Q`^)R(I@X8tP35ii_fJ>97PNRXr=IZT zZT%Ucl`8Jxsy~Oryzhoqf2>MLaW0*DLXxX#=HcfT;pdmGC_i5yHBAn7KJs2y!$vN4 zpfj3cjbCr#15na2r=bpj9|i{@^x(%U7G5On)2_=z+Bx%nfir<0w=ZepX`g1@!O%`- z&JYC!k3OxA*+_5Oc*aksv+!(a`-VL2l_PNCPpT2L$4dE&RjA)SZRvpZ|YvVd1t;X>{FMeyN9ayT6{`lg%Ef zO4eNzfdh|g;T=WcSc^UI%We(ZQ&wJ2+NIWgdZ#k_v9}*xm3~v6sjJ{ntU6J9D~(NQ zCAs`K^0b~>zViISLj?BQR@I#w&Wy1Y3EUUOV~ zm)OV@a5M)q#x~N%2_aqhA7B-9l}(;3wYxFDo~YcfG?B!?!LGEDJNQr(`_g89-DUI( zZ#^?TlOZ)}DHcLn9#Iy1TENjX;m?v0YSJiH?wH{^{h)2|QL2!`G*P@SccZjX+}gsw zy1Q3oU`)C98B|)L1p}$LJJXjPsa(8xw))*dc3GesD~y?f|8^4NQD3Ag^$eq zh!}A`LQUJzj@JO>l~>Jp&LfiC`@~Tq3P)fd@dX&`5BnUEz=**5JZSH{G0N{)!NWUn zI4a^-`hJ0ADXH*6b-sbn>qb5fL~T#b-YLA|(<0Lh28Zm^ixpN)gXy@_=Sz~Hndg0R z>uN-tX$t=syRN`tw-yKjlbbD>rDr41EWiE@PrS%QUgY_TT+|tneSmDYAPApy4a7+; z4N3gP(oE84bCrKP7}A}tkm zc4Ffw{QC{?qBiZ`o=L9v;7kzG{ci%(WrV+;n_mGBi!x9tOX{6SWpa=xV6sy|x^>9K zUh2Cz?>>$yN3Tbu- zmqr^pw|is^L6N>%c+sTn)NE;oa5U~4&+{9%*=m7Zus~{_eWO~aaa+SZ_mS`0T7j3RE9iJI21E>_1p3j)k(?X+=!fd zlEVxHrwA|VyKz)d=$&+T-s7&gl&sUj23j~tySt4n7wvKQXFK1|ivGd|4f%f52ys8}uh_3o#rGrZpb^p#E4!8h|F zUpi>wk9^}8ovI|W^PLRcIYW;MjRS>L*8dK#OEIW4Xj3&F9SSb=#}j3GhcbGDRwRTg zl5!s+)@_}Y>?0*B#v8pn#bWPHi*wUk;q6LVCF57#Eo^tjqwBel#T6)|>jiR1ssyG$ zAPI?=@e|SZ$B^FH;ePJD1PV6WQtcegZXE5Bj z!s7&A$o;s;x|ESd8U@Gk?;m2uhRXukh(YGV$qgGC0}n+TvK~|H>(=$8DSJ8~3J6;$ zu;seD!rVKCv7YaZ9Ok{w#*rAs#}Ox4=^>3r8(r;6j_(dv=T1-0XXfe783YEIn1U+v zZW0^)td4Sm{n?4J4$DmR-{W8gICh*)QUs38-em{UO)S)}EvcCWn{`*BG*G1dbR^zu zOG4ZI_p&-$XGNB}Vj(zFZ|8SVF@5vJfQAg+bJ8mG@gKt35|R{aUoW$w?_H$NpeDwU zzNDK*LGhV;3W*me&OQHa#*nC8ruEr4D1XcbSKKJt9}Cyj`k>*y-1_>RUFu`%K&+dt zh+nrA0}tAgf$@P-!-l@IJWHtjigTi3t7x)6g6K-7S#B1jgjBeD^d%q5R!U*$JsbS< z37XTil41h$og~q7R5dyZ3p89f`mx=rXC+&e%m-DsDQ;ZEo~Kgm*xL0vFI~53ukKsF zo@-piZnrglUXRJz+u9+&%xF$dcE)Z}BHpi3l;j)L#Uimw!gj zI?*w-6T{_Kx$IgcHxW6-lqn+VBv8zvlq(!~FNN8T?bU^3jV-$SIn_|JmkDj{#AYVD z?dzyup^1`ooNKxSl+cG6zF}4oD54ED+UiO`;+rRW*Q@xeU8J>&_9(WV?m3x*%1D>9 zg&@vANFTql6AlBZu}%pjwbee!=@1-TMB7;87I2$&8HExw-HsMSCv1FHV1hj_ojsja(`@p{o~^Ff*}7j{ zSJ)_(qN4@7NslvKK8&CByPilyLJ;SM)`wk;)~`wL^V52|mS{(get%B0e#Wm+&?`iY zc49CF2b@U|U;uA_>pd@veRrml{&;4`&v5KhluAacJh2_Nr+D2`eGd%j;!iQpl5PFc z9l5TqF0pVk|B`zh?_T)pvPCC9rNBm*Ox`ul=S!-tva4AoLT5IGZm0U&R99I`}30YYfhZ zPG9mqzdyfiC^S6xrsb!JY~Q86Y9(6^Y;}Vg&8NNaF9?Fli)?aO?!8xzfwVcI2@9QS z`$mJ56AcZUo~kb(y>~nrC+?MX%X(0C79(xqA@nFV-DSDj`@oPv=QsjeAl8AdwtgKe zIfUwq`1IRQQ!ntbG95yLfal)6rSm{(!Fv0~je(}v2e^3`9a`{qQH{9eK)QOac8R2dn4L@%e90YQo`RUjfvyDYlyHN(P7Pdhk+oh zS`*)!V!+0|ld`d6*}Xd(FE6zGGWD@bCBN_L_Q!$}?%C{yAGUptniMC0-FIpv8p^#F zkN%f0tS8`DnP|j9<=tI9IWbO)gG5E`YTV5}HC0~fj^MVt);rWt=F8pAc9NMm_GB!k zC1Cn~HK2Y!0^65hOU{5AkOr5f1*AJmpr6s}2aG+BjL-?n?vkdXK|i9$C3QoCy=b(# zu6?zXj~0sm@(ft-rFfqrVNHC8h*7FsweOoK=t0GuNW@wkfnC%KS9qYr<8wZU0*RcP zDLsQU&`n~@X^u(ni};%s=q>Ts9R(JmtdhepkW+J(DP5Fm$-skbYQ@brXGUKk-Sc&8 zjfSPT-Qus%N%MYQv@mJJw4`PwY!P^5;_!t+_BzJuXc}cEa2ol=VuZH-?CA3J@A&2} z24{RtcA*qwtzrYB6n*>=&acE1K!(hi)SOhQy5=JPaxrsgh5n5EDr}R?HCf3mF1j8-`iqQ9Xtp%#T6Qw| zWF%>Xa`Dfei!D(nUr&os%j#N7@G)5D5T|YW>JOUT32{c z&OJ6!T(~(2k#ycuQ(UaU80)NWD@FE`VbeMi8C1JxYm2FC{g*A2wwK!IzAb(Zjzxc4 z+&pLS(aexkFdGM>Q2EQc6z|Q^kLzm7O?}@z0>bM(h4X)Sz69?9JS+TaN0>614-M4a zZsr1=4U#2-yRH>*I~+}-pswgWjH4=Cw@TOE$%F+-4hBsrrb;TN?uErny*a$d(ZBXk z-{^^hBE#q8`);z7`^UG>>>w`GovcPEx!~*-n&`oH1dIQ>?sBQY7 zZT+ER#$A~){3KTm&K}vLSFP+JJJuw^9<$!5_y=El{@Zw{I~!1k1h<0hHf+mA9DyPv zgbaC(s+NxJolE_IoPo2DbHkkDgFJf2y|T*(2=j)LWb2_Qs89cxh_x8Y4?qGq#db9c z4W}8#Im}o9!(pKs;~Hd@R~phuo~6HuK6KpIox9d1P zgaob9?-!$vKeLS#JsEW57{?e7Gyy3ezYf1}jv5l#?n@aY}@OJp0ABckNb2u+jaUbwFE&QWoiJ37a>UhxQa>>hL`-y7s=o#2|CN4$6LpGl{7YYai33pH8(4Hab_mF*oec zBSWJg-N{sxg*WXvx^tfomhtQ7q*h3VC|N}AKK&ST@6(Qd`y^_@6_!xpI@aVo5i()^ z_3IGKJy75Q?>+&!G*I6Gzg^&)od3-vwoF=I=5Tx}%_}h1j)H<}0|;MUrA7tmzi1jd zZArJgqXMxOM33MtRrwKa=S*#~_M^KkJ4LJu$Kg!%xSiLzSU7!*qT^yZYEPwD4D3Gs zH|CzpE?obD(2r>EYarJv@5ow z@f4zV{p)8@P{-YpTuc(?p3_qrz#rQ;$RE=A17%k+F_o!nKX&_%k2!bkYv&ziQ(z{2L9GiM3z;cflwB zi^KnAoBtpwk13{tCNbFRcz(rKI85OEXy_3YnpB~ppsK3tXY}wF&eD|POoH=R^_P1> zGGCfDxbsOR4!FBD+Nw?!B{9ZIR@;GkgpQ^s#Oc0N53bk z(w}0D&%;f9sr20Qo1G8jwwC<3g0>5A7D~21q=tYjfF_Q{yPbc@R)ml@*zKBXvTy+3aSaWZ3GxeMctWQuKLjJrcp^ldMWDpudWp>Ml(!9>Vg6&W zJS-D}q{Yefp_4xI&N6I11dVEm#r6&SW*uzvTK*Y2^YiV|qnWFw96sx;8b_%Uf0vUB zoCB;!Yc{)c6++I`{n3uNwqud=Jb>8 z;iXX?QxCII*26)Zd};VIgk_8OzEbz<3AU6mNkOG!D+PpF#h0JB_v@rW_}9seR0tZgj9!4Uy+Jg%lDfzoENBPZ9&WjS&SN$S&Exm z?TSH)3XdW!n)}UY#*Xqv@G`Moo%qwEKN1n&@OYy=7!5)*d@YlopU_}GH zN>Itx`bwaQ@u{CP)yDn%)wGEiUDe)B%Ka?i{DL>=rlVc=Z3BPhL*72VNle~!8D&oP zFI{M@ZrR~%nT72JZoyq zS7n`&EM-#hlJdyNO23G+#4r@iGQ~{y+Ke+rT)vo1LOTpRi>2aN&&{i$V5^3U#lD-tLchR+% ztqEPg*z8rj=1aMgDElN>i3AC`lvV2RN(|2Fv%xL2_Dp$%VQbR|y0~^wpDQ$=NoO7! zn3+{#zpENsoC6DbID3wK<(??$Gw(dl00U!Bz1$=8pwxM8ypAPPt**&>8lg)IdtX5S zuH<&5sLtoyYMgj=rAt!2EM@8ad~hmtrS!?tJw|;mwNC!J)Y6$O(=$w6rl7hsILYly z@@N$b7||{)WfMfD;29_44UN54J^PdGg^<{g*cPFhV+C)R6*%)gECw_B6#@i>;M)Hp zSTWMa$45jQW;%Mg{|z=Mm(~98S@t^LWZ_8JGZBg*lGp2@GxEi~OD0I~DOJM#knHO% zp66%vt&&3B9{wsi{`;|(a5!eX*VUYaj(%M>c$ldaTAk##WyJANbg-p6p(bFonqMF9 zKbo&h?$sr?ng#GK-V^eF_6;YuqM(eS-G0mbpFlQ7u3)p)n5g}N{jvLzXlOK8QW8S1 z3i2%Ln!BvX6V2?f?q1F?K0CjW(U=@SK>+p0tZBN;XeOjvb0Wvki+IAQNv!LcPmN;n zm?MFb#?(DfHL#K{1;-9^$yCgy@~O?3!-V72W9EXRr7yj&Y_qOT}D}AVhyv-d})y2bd2!Q2t_isei1-&4d+*-Ai;mI{Aao z-CmSc9Yx+S$#h2~%`LpHZoFX`noc@=HW}&R#!zI<{~*VSM^BF}pxG0wn2(K(bo7ctu@0Q+7ni_{jLk0{~d^+|0tBm`XEj(48$YK)*ii|nM^ahLXm#>fA z?0-6}Em;#NL|s%DD>im?86bE%FmJle>cB}Ryx^75~m$7syc+h88|t0+dL4J#edj*d#PmboL;Qc%#76&*)y5h zZ6f;A41T2~zoTR{ji`G1n&FN)#V+P|Nb~IT>y$<%>Jl*h(rfFBU5%{6F|!9FldJaiIB6(iiCq8R|4%mu@p{0nAr+gJE~}XLxsvMQ zn}6SbZhH|nT(#I*q8N8j@UiU$D&R zO=MWC*s1pp@jhAj>H@+Mazk8Zc0_{R^iNDjm2b%Y5nKHFUK1N0V%f2Hhn&qUUDS$! zOg_0r{?{qDCqjv`$ejH0c2|^>&K2TMks_CgiyhLr@;Sz3(+f3Q=BW!ahf+`$r+4jI zi#C2oI85;LuiPgkB84(g!7gwt3xwn!))|fEc8LEC&h!N243~BlK~EN}ZL8KQH$+rj zNUy~T-N0FTA_M6~TwD@QdL%PXp^CaLMATSIg$&zF3wB#+_g2Q4DCSg+OXw7bZs@OQ zpTX)v>5QyWIQ@;f_%kf*WGb+0AC2yRT^tIb2LZ@|o}c#BL>>~(lm@Cnd56Anb;0n= zpP1IOEa}XdV`R=Ueqrf(A1LCyahC}`wQ`upj12^LJrK`<#bcajKzmQKoDA+|W)M

SYaf)S-xyY^!i^riXfQF$P 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 Date: Wed, 18 Nov 2020 11:07:46 +0800 Subject: [PATCH 024/148] add harbor proxy cache example --- .../harbor-proxy-step2.png | Bin 51256 -> 35572 bytes .../harbor-proxy-step4.png | Bin 31964 -> 31633 bytes .../controller-edge-node-setup.md | 41 +++++++++++++++--- 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup-images/harbor-proxy-step2.png b/doc/getting-started/network-edge/controller-edge-node-setup-images/harbor-proxy-step2.png index 48df9d6f5ceafb9c369993ef2d3058fe1fd74613..9eefef63cbfe916c50f9890b9ec6ce17ebb493b2 100644 GIT binary patch literal 35572 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ℜTtEu;| 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 ISonAU0QMxkHUIzs diff --git a/doc/getting-started/network-edge/controller-edge-node-setup-images/harbor-proxy-step4.png b/doc/getting-started/network-edge/controller-edge-node-setup-images/harbor-proxy-step4.png index e3a3adb5ea7c4441e06706c6ffa20418b33ae06f..871962453ea5b05e102b20f958b32bf6e499f860 100644 GIT binary patch literal 31633 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//` as a prefix to the image tag. For example: +3. Pull a image from the proxy cache. -```bash -> docker pull //goharbor/harbor-core:dev + ```shell + > docker pull /// + ``` -# To pull offcial images, use the 'library' namespace -> docker pull //library/hello-world:latest -``` + for example: + + ```sh + > docker pull 172.16.182.211:30003/intel-proxy/library/nginx:v1 + ``` + + > The endpoint of deployed registry is `172.16.182.211:30003`. + + If you are deploying a pod with a yaml file, configure the `image` field to reference the proxy cache project as `///` format. + + ```yaml + spec: + containers: + ... ... + image: 172.16.182.211:30003/intel-proxy/library/nginx:v1 + ``` ## Kubernetes cluster networking plugins (Network Edge) From 480c3a3c5a1bbf809167f25dcda46464d3ee5482 Mon Sep 17 00:00:00 2001 From: cuizhaoyue Date: Wed, 18 Nov 2020 16:23:58 +0800 Subject: [PATCH 025/148] target registry is Docker hub --- .../harbor-proxy-step2.png | Bin 35572 -> 33728 bytes .../harbor-proxy-step4.png | Bin 31633 -> 30104 bytes .../controller-edge-node-setup.md | 14 ++++++-------- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup-images/harbor-proxy-step2.png b/doc/getting-started/network-edge/controller-edge-node-setup-images/harbor-proxy-step2.png index 9eefef63cbfe916c50f9890b9ec6ce17ebb493b2..ebcfce6c26c146600b447fa3407ee6e9a9c474d5 100644 GIT binary patch literal 33728 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 literal 35572 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 docker pull 172.16.182.211:30003/intel-proxy/library/nginx:v1 + > docker pull 172.16.182.211:30003/intel-proxy/cuizy/coredns:1.6.7 ``` > The endpoint of deployed registry is `172.16.182.211:30003`. @@ -265,9 +264,8 @@ The detailed setup steps are shown as below: spec: containers: ... ... - image: 172.16.182.211:30003/intel-proxy/library/nginx:v1 + image: 172.16.182.211:30003/intel-proxy/cuizy/coredns:1.6.7 ``` - ## Kubernetes cluster networking plugins (Network Edge) Kubernetes uses 3rd party networking plugins to provide [cluster networking](https://kubernetes.io/docs/concepts/cluster-administration/networking/). From 2af46d2d07e506c3afdb269c7f507e3dd98bb0af Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Wed, 18 Nov 2020 16:34:07 +0800 Subject: [PATCH 026/148] initial draft for emco documents --- .../openness-emco-arch.png | Bin 0 -> 55506 bytes doc/orchestration/openness-emco.helm | 40 ++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 doc/orchestration/openness-emco-images/openness-emco-arch.png create mode 100644 doc/orchestration/openness-emco.helm diff --git a/doc/orchestration/openness-emco-images/openness-emco-arch.png b/doc/orchestration/openness-emco-images/openness-emco-arch.png new file mode 100644 index 0000000000000000000000000000000000000000..977c16c4baf2d1b98c68e41f426c8a256769b9fe GIT binary patch literal 55506 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 **NOTE**: Composite application is combination of multiple applications. Based on the deployment intent, various applications of the composite application get deployed at various locations, and get replicated in multiple locations. + +Compared with other multipe-clusters orchestration, EMCO focuses on the below functionalies: +- Enroll multiple geographically distributed OpenNESS Clusters and 3rd party Cloud Clusters. +- Orchestrate composite applications (composed of multiple individual applications) across the edge clusters +- Deploy edge services and network functions on to different nodes spread across these different clusters. +- Monitor the health of the deployed edge services/network functions across these clusters. +- Orchestrate edge services and network functions with deployment intents based on compute, acceleration, and storage requirements. +- Support onboard multiple tenants from different enterprises while ensuring confidentiality and full isolation across the tenants. + +This document aims to familiarize the user with [OpenNESS deployment flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md) for EMCO installation and provsion, and provide instructions accordingly. + +## Overall Architecture +The below figure shows the architecture for the OpenNESS EMCO with an SmartCity applications example in this document. +![OpenNESS EMCO](openness-emco-images/openness-emco-arch.png) + +_Figure - EMCO Architecture in OpenNESS_ + +## Installation for EMCO cluster with OpenNESS Flavor +The first step is to prepare one server envionment which should fulfill the [Preconditions](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#preconditions). + +Then Place the EMCO server hostname in `[controller_group]` group in `inventory.ini` file of openness-experience-kit. `[edgenode_group]` and `[edgenode_vca_group]` are not required for configuration. + +Run script `./deploy_ne.sh -f central_orchestrator`. Deployment should complete successfully. + +## xxx From 85ba6cd72427c4e0385da3a31d6001c81f7195c1 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Wed, 18 Nov 2020 16:35:45 +0800 Subject: [PATCH 027/148] file format error --- doc/orchestration/{openness-emco.helm => openness-emco.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename doc/orchestration/{openness-emco.helm => openness-emco.md} (100%) diff --git a/doc/orchestration/openness-emco.helm b/doc/orchestration/openness-emco.md similarity index 100% rename from doc/orchestration/openness-emco.helm rename to doc/orchestration/openness-emco.md From 063289a2a7557da6886832e5ce12da5419745c3a Mon Sep 17 00:00:00 2001 From: cuizhaoyue Date: Wed, 18 Nov 2020 16:38:18 +0800 Subject: [PATCH 028/148] format --- .../network-edge/controller-edge-node-setup.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index 35a0735c..f1bac12e 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -247,7 +247,7 @@ The detailed setup steps are shown as below: 3. Pull a image from the proxy cache. ```shell - > docker pull /// + > docker pull {Kubernetes_Control_Plane_IP}:30003/{proxy_project_name}/{target_registry_project}/ ``` for example: @@ -258,7 +258,7 @@ The detailed setup steps are shown as below: > The endpoint of deployed registry is `172.16.182.211:30003`. - If you are deploying a pod with a yaml file, configure the `image` field to reference the proxy cache project as `///` format. + If you are deploying a pod with a yaml file, configure the `image` field to reference the proxy cache project as `{Kubernetes_Control_Plane_IP}:30003/{proxy_project_name}/{target_registry_project}/` format. ```yaml spec: From 8f832b48b9e7a341fcce171da0c27801e29b02cc Mon Sep 17 00:00:00 2001 From: cuizhaoyue Date: Wed, 18 Nov 2020 16:45:01 +0800 Subject: [PATCH 029/148] modify docker mirros --- .../network-edge/controller-edge-node-setup.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index f1bac12e..3919c24c 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -266,6 +266,18 @@ The detailed setup steps are shown as below: ... ... image: 172.16.182.211:30003/intel-proxy/cuizy/coredns:1.6.7 ``` + Modify openness-experience-kits/group_vars/all/10-default.yml(Replace with the `{Kubernetes_Control_Plane_IP}:30003/{proxy_project_name}`): + ```yaml + ## Docker registry mirrors + ## https://docs.docker.com/registry/recipes/mirror/ + docker_registry_mirrors: + - "https://{Kubernetes_Control_Plane_IP}:30003/{proxy_project_name}" + + ``` + + + + ## Kubernetes cluster networking plugins (Network Edge) Kubernetes uses 3rd party networking plugins to provide [cluster networking](https://kubernetes.io/docs/concepts/cluster-administration/networking/). From 396152f42ba03f0ae7a7711b4df7480e9ef82464 Mon Sep 17 00:00:00 2001 From: cuizhaoyue Date: Wed, 18 Nov 2020 16:46:39 +0800 Subject: [PATCH 030/148] modify docker mirrors variable --- .../network-edge/controller-edge-node-setup.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index 3919c24c..b515c201 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -266,14 +266,13 @@ The detailed setup steps are shown as below: ... ... image: 172.16.182.211:30003/intel-proxy/cuizy/coredns:1.6.7 ``` - Modify openness-experience-kits/group_vars/all/10-default.yml(Replace with the `{Kubernetes_Control_Plane_IP}:30003/{proxy_project_name}`): - ```yaml - ## Docker registry mirrors - ## https://docs.docker.com/registry/recipes/mirror/ - docker_registry_mirrors: - - "https://{Kubernetes_Control_Plane_IP}:30003/{proxy_project_name}" - - ``` + Modify openness-experience-kits/group_vars/all/10-default.yml(Replace with the `{Kubernetes_Control_Plane_IP}:30003/{proxy_project_name}`): + ```yaml + ## Docker registry mirrors + ## https://docs.docker.com/registry/recipes/mirror/ + docker_registry_mirrors: + - "https://{Kubernetes_Control_Plane_IP}:30003/{proxy_project_name}" + ``` From 61c897efd193eaa57d2e002e5fc260d09d36e2e6 Mon Sep 17 00:00:00 2001 From: cuizhaoyue Date: Wed, 18 Nov 2020 16:47:33 +0800 Subject: [PATCH 031/148] indent --- doc/getting-started/network-edge/controller-edge-node-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index b515c201..84437318 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -271,7 +271,7 @@ The detailed setup steps are shown as below: ## Docker registry mirrors ## https://docs.docker.com/registry/recipes/mirror/ docker_registry_mirrors: - - "https://{Kubernetes_Control_Plane_IP}:30003/{proxy_project_name}" + - "https://{Kubernetes_Control_Plane_IP}:30003/{proxy_project_name}" ``` From 10dbb7a7b29fe534cf19c6852345c1ff94bfa27c Mon Sep 17 00:00:00 2001 From: cuizhaoyue Date: Wed, 18 Nov 2020 16:50:52 +0800 Subject: [PATCH 032/148] change docker mirrors --- doc/getting-started/network-edge/controller-edge-node-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index 84437318..b4dec321 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -266,7 +266,7 @@ The detailed setup steps are shown as below: ... ... image: 172.16.182.211:30003/intel-proxy/cuizy/coredns:1.6.7 ``` - Modify openness-experience-kits/group_vars/all/10-default.yml(Replace with the `{Kubernetes_Control_Plane_IP}:30003/{proxy_project_name}`): + Also you can modify openness-experience-kits/group_vars/all/10-default.yml(Replace with the `{Kubernetes_Control_Plane_IP}:30003/{proxy_project_name}`) to change the docker mirrors: ```yaml ## Docker registry mirrors ## https://docs.docker.com/registry/recipes/mirror/ From cd122bc4c903a45960990a4dbda7503572990e9a Mon Sep 17 00:00:00 2001 From: cuizhaoyue Date: Wed, 18 Nov 2020 16:51:31 +0800 Subject: [PATCH 033/148] change docker registry mirrors --- doc/getting-started/network-edge/controller-edge-node-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index b4dec321..77a2e0df 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -266,7 +266,7 @@ The detailed setup steps are shown as below: ... ... image: 172.16.182.211:30003/intel-proxy/cuizy/coredns:1.6.7 ``` - Also you can modify openness-experience-kits/group_vars/all/10-default.yml(Replace with the `{Kubernetes_Control_Plane_IP}:30003/{proxy_project_name}`) to change the docker mirrors: + Also you can modify openness-experience-kits/group_vars/all/10-default.yml(Replace with the `{Kubernetes_Control_Plane_IP}:30003/{proxy_project_name}`) to change the docker registry mirrors: ```yaml ## Docker registry mirrors ## https://docs.docker.com/registry/recipes/mirror/ From ecd3b87548f0c624ad5385161844ba422260acf8 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Wed, 18 Nov 2020 17:28:26 +0800 Subject: [PATCH 034/148] add cluster registration section --- doc/orchestration/openness-emco.md | 39 ++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/doc/orchestration/openness-emco.md b/doc/orchestration/openness-emco.md index c7d1c94b..8af98eb5 100644 --- a/doc/orchestration/openness-emco.md +++ b/doc/orchestration/openness-emco.md @@ -8,7 +8,7 @@ Copyright (c) 2020 Intel Corporation - [Introduction](#introduction) - [Overall Architecture](#architecture) - [Installation for EMCO cluster with OpenNESS Flavor](#emco-installation) - + - [Cluster Registration with EMCO](#cluster-registration) ## Introduction EMCO(Edge Multiple Clusters Orchestration) is Geo distributed application orchestrator for Kubernetes\*. It acts as a central orchestrator that can manage edge services and network functions across geographically distributed edge clusters from different 3rd parties. Thus it address the need for deploying 'composite applications' in multiple geographical locations. Few industry communities started to use the term 'composite application' to represent these complex applications & deployments. @@ -30,11 +30,40 @@ The below figure shows the architecture for the OpenNESS EMCO with an SmartCity _Figure - EMCO Architecture in OpenNESS_ +All the manged edge clusters and cloud clusters will be connected with EMCO cluster through WAN network. +- The central EMCO cluster installation can use [OpenNESS Central Orchestrator Flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md). The EMCO includes micro services as below: + - 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 edge clusters in the diagram can be installed and provisioned by using [OpenNESS Media Analytics Flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md) +- As for cloud clusters, they can be any types of cloud clusters, for example: Azure Cloud. + +The example composite application - smart city is composed of two parts: edge applications and cloud applications. By using EMCO RESTAPI or CLI , operator can deploy the smart city services across the clusters. Besides that, EMCO supports override values profiles for operator to satisfy the need of deployments. + +For user interaction, EMCO provides [RESTAPI](https://github.com/otcshare/EMCO/blob/main/docs/emco_apis.yaml). Apart from that, EMCO also provides CLI. For the detailed usage, refer to [EMCO CLI](https://github.com/otcshare/EMCO/tree/main/src/tools/emcoctl) +> **NOTE**: The EMCO REST API is the foundation for the other interaction facilities like the EMCO CLI and even EMCO GUI (3rd party developed right now) + ## Installation for EMCO cluster with OpenNESS Flavor -The first step is to prepare one server envionment which should fulfill the [Preconditions](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#preconditions). +The first step is to prepare one server envionment which need to fulfill the [Preconditions](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#preconditions). + +Then Place the EMCO server hostname in `[controller_group]` group in `inventory.ini` file of openness-experience-kit. +> **NOTE**: `[edgenode_group]` and `[edgenode_vca_group]` are not required for configuration, since EMCO micro services just need to deployed on the kubernetes control plane node. + +Run script `./deploy_ne.sh -f central_orchestrator`. Deployment should complete successfully. In the flavor, harbor registry will be deployed to provide images services as well. + +## Cluster Registration with EMCO +After preparation of edge clusters and cloud clusters which can be any kubernetes clusters, user can onboard those clusters to EMCO by creating a Cluster Provider and then adding Clusters to the Cluster Provider. After cluster providers creation, the KubeConfig files of edge and cloud clusters should be provided to EMCO as part of the multi-part POST call to the Cluster API. -Then Place the EMCO server hostname in `[controller_group]` group in `inventory.ini` file of openness-experience-kit. `[edgenode_group]` and `[edgenode_vca_group]` are not required for configuration. +Additionally, once a Cluster is created, labels and key value pairs may be added to the Cluster via the EMCO API. Clusters can be specified by label when preparing placement intents. +> **NOTE**: The cluster provider is somebody who owns clusters and registers them to EMCO. -Run script `./deploy_ne.sh -f central_orchestrator`. Deployment should complete successfully. -## xxx +## + + From ca4570e7abc647352be035de6c4caaef39ce8f55 Mon Sep 17 00:00:00 2001 From: cuizhaoyue Date: Wed, 18 Nov 2020 17:41:57 +0800 Subject: [PATCH 035/148] add proxy cache description --- doc/getting-started/network-edge/controller-edge-node-setup.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index 77a2e0df..de8e31af 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -218,6 +218,8 @@ Open the https://{Kubernetes_Control_Plane_IP}:30003 with login username ```admi You should see the project - ```intel``` on the Web UI and manage the images. ### Harbor Proxy Cache +A proxy cache project is able to use the same features available to a normal Harbor project, except that you are not able to push images to a proxy cache project. + To address the concerns about throughput, performance and even rate limitation of Docker Hub or other public repository, can enable Harbor proxy cache feature. Thus the Harbor deployed in the OpenNESS clusters will play as proxy cache registry as shown as below: ![](controller-edge-node-setup-images/harbor_proxy_setup.png) From 47485b05b4c4c2044aa76a5c298768faca0d3f8f Mon Sep 17 00:00:00 2001 From: cuizhaoyue Date: Thu, 19 Nov 2020 13:57:26 +0800 Subject: [PATCH 036/148] modify harbor proxy cache step1 --- .../harbor-proxy-step2.png | Bin 33728 -> 37750 bytes .../controller-edge-node-setup.md | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup-images/harbor-proxy-step2.png b/doc/getting-started/network-edge/controller-edge-node-setup-images/harbor-proxy-step2.png index ebcfce6c26c146600b447fa3407ee6e9a9c474d5..1365528c250aa62ea2e8cee69baddad3cd2e6fca 100644 GIT binary patch literal 37750 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 literal 33728 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 diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index de8e31af..2d16aca0 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -234,8 +234,8 @@ The detailed setup steps are shown as below: - **Provider**: the type of target registry, for example `Docker Hub`. - **Name**: the name of new registry endpoint and it can be whatever you want. - **Endpoint URL**: the endpoint of target Registry. The endpoint url of Docker Hub is `https://hub.docker.com`. - - **Access ID**: the username of target Registry. Here is a username of Docker Hub. - - **Access Secret**: the password of target Registry. Here is a password of Docker Hub. + - **Access ID**: the username of target Registry. (Optional) + - **Access Secret**: the password of target Registry. (Optional) 2. Create a new project with proxy cache enabled. From 7c269b457574fe64b05a0b2232e8d4fb5d259602 Mon Sep 17 00:00:00 2001 From: Patryk Diak <47568946+PatrykDiak@users.noreply.github.com> Date: Fri, 20 Nov 2020 10:02:46 +0100 Subject: [PATCH 037/148] Update flavors.md (#353) --- doc/applications/openness_service_mesh.md | 4 +++- doc/flavors.md | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/doc/applications/openness_service_mesh.md b/doc/applications/openness_service_mesh.md index df0c592e..0450e3d4 100644 --- a/doc/applications/openness_service_mesh.md +++ b/doc/applications/openness_service_mesh.md @@ -425,9 +425,11 @@ Istio service mesh can be deployed with OpenNESS using the OEK through the pre-d The Istio management console, [Kiali](https://kiali.io/), is deployed alongside Istio with the default credentials: * Username: `admin` -* Password: `admin` * Nodeport set to `30001` +To get the randomly generated password run the following command on Kubernetes controller: +`kubectl get secrets/kiali -n istio-system -o json | jq -r '.data.passphrase' | base64 -d` + Prometheus and Grafana are deployed in the OpenNESS platform as part of the telemetry role and are integrated with the Istio service mesh. To verify if Istio resources are deployed and running, use the following command: diff --git a/doc/flavors.md b/doc/flavors.md index 6a1367ee..4f1eb5fa 100644 --- a/doc/flavors.md +++ b/doc/flavors.md @@ -65,7 +65,7 @@ This deployment flavor enables the following ingredients: * Kiali management console * Telemetry -> **NOTE:** Kiali management console username & password can be changed by editing the variables `istio_kiali_username` & `istio_kiali_password`. +> **NOTE:** Kiali management console username can be changed by editing the variable `istio_kiali_username`. By default `istio_kiali_password` is randomly generated and can be retirieved by running `kubectl get secrets/kiali -n istio-system -o json | jq -r '.data.passphrase' | base64 -d` on the Kubernetes controller. Following parameters in the flavor/all.yaml can be customize for Istio deployment: @@ -75,7 +75,7 @@ istio_deployment_profile: "default" # Kiali istio_kiali_username: "admin" -istio_kiali_password: "admin" +istio_kiali_password: "{{ lookup('password', '/dev/null length=16') }}" istio_kiali_nodeport: 30001 ``` @@ -92,7 +92,7 @@ Steps to install this flavor are as follows: ``` > **NOTE:** The video analytics services integrates with the OpenNESS service mesh when the flag `ne_istio_enable: true` is set. -> **NOTE:** Kiali management console username & password can be changed by editing the variables `istio_kiali_username` & `istio_kiali_password`. +> **NOTE:** Kiali management console username can be changed by editing the variable `istio_kiali_username`. By default `istio_kiali_password` is randomly generated and can be retirieved by running `kubectl get secrets/kiali -n istio-system -o json | jq -r '.data.passphrase' | base64 -d` on the Kubernetes controller. This deployment flavor enables the following ingredients: * Node Feature Discovery From 94153f017719e2e0cd8cfb6d08c172ab5c6b38c2 Mon Sep 17 00:00:00 2001 From: Patryk Diak <47568946+PatrykDiak@users.noreply.github.com> Date: Fri, 20 Nov 2020 12:56:51 +0100 Subject: [PATCH 038/148] Update openness-telemetry.md (#352) --- .../enhanced-platform-awareness/openness-telemetry.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/doc/building-blocks/enhanced-platform-awareness/openness-telemetry.md b/doc/building-blocks/enhanced-platform-awareness/openness-telemetry.md index 52819159..72f57046 100644 --- a/doc/building-blocks/enhanced-platform-awareness/openness-telemetry.md +++ b/doc/building-blocks/enhanced-platform-awareness/openness-telemetry.md @@ -89,7 +89,7 @@ In OpenNESS, Prometheus is deployed as a K8s Deployment with a single pod/replic ### Grafana -Grafana is an open-source visualization and analytics software. It takes the data provided from external sources and displays relevant data to the user via dashboards. It enables the user to create customized dashboards based on the information the user wants to monitor and allows for the provision of additional data sources. In OpenNESS, the Grafana pod is deployed on a control plane as a K8s `Deployment` type and is by default provisioned with data from Prometheus. It is enabled by default in OEK and can be enabled/disabled by changing the `telemetry_grafana_enable` flag. The password to gain access to the dashboard can be altered with the `telemetry_grafana_pass` flag. +Grafana is an open-source visualization and analytics software. It takes the data provided from external sources and displays relevant data to the user via dashboards. It enables the user to create customized dashboards based on the information the user wants to monitor and allows for the provision of additional data sources. In OpenNESS, the Grafana pod is deployed on a control plane as a K8s `Deployment` type and is by default provisioned with data from Prometheus. It is enabled by default in OEK and can be enabled/disabled by changing the `telemetry_grafana_enable` flag. #### Usage @@ -100,8 +100,11 @@ Grafana is an open-source visualization and analytics software. It takes the dat http://:32000 ``` -2. Log in to the dashboard using the default credentials (login: admin, password: grafana) - ![Grafana login](telemetry-images/grafana_login.png) +2. Access the dashboard + 1. Extract grafana password by running the following command on Kubernetes controller: + ```kubectl get secrets/grafana -n telemetry -o json | jq -r '.data."admin-password"' | base64 -d``` + 2. Log in to the dashboard using the password from the previous step and `admin` login + ![Grafana login](telemetry-images/grafana_login.png) 3. To create a new dashboard, navigate to `http://:32000/dashboards`. ![Grafana dash](telemetry-images/grafana-new-dash.png) 4. Navigate to dashboard settings. From 3c5fc6c841e618ebd291265c1a69a61d87abf480 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Mon, 23 Nov 2020 15:36:42 +0800 Subject: [PATCH 039/148] add harbor curl commands --- .../controller-edge-node-setup.md | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index 2d16aca0..43cc47f7 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -21,6 +21,7 @@ Copyright (c) 2019-2020 Intel Corporation - [Harbor registry image push](#harbor-registry-image-push) - [Harbor registry image pull](#harbor-registry-image-pull) - [Harbor UI](#harbor-ui) + - [Harbor CLI](#harbor-registry-CLI) - [Harbor Proxy Cache](#harbor-proxy-cache) - [Kubernetes cluster networking plugins (Network Edge)](#kubernetes-cluster-networking-plugins-network-edge) - [Selecting cluster networking plugins (CNI)](#selecting-cluster-networking-plugins-cni) @@ -198,7 +199,7 @@ harborAdminPassword: Harbor12345(default) ### Harbor registry image push Use the Docker tag to create an alias of the image with the fully qualified path to your Harbor registry after the tag successfully pushes the image to the Harbor registry. - ```ini + ```shell docker tag nginx:latest {Kubernetes_Control_Plane_IP}:30003/intel/nginx:latest docker push {Kubernetes_Control_Plane_IP}:30003/intel/nginx:latest ``` @@ -207,16 +208,35 @@ Now image the tag with the fully qualified path to your private registry. You ca ### Harbor registry image pull Use the `docker pull` command to pull the image from Harbor registry: - ```ini + ```shell docker pull {Kubernetes_Control_Plane_IP}:30003/intel/nginx:latest ``` + + ### Harbor UI Open the https://{Kubernetes_Control_Plane_IP}:30003 with login username ```admin``` and password ```Harbor12345```: ![](controller-edge-node-setup-images/harbor_ui.png) You should see the project - ```intel``` on the Web UI and manage the images. +### Harbor CLI +Apart for Harbor UI, you can also use ```curl``` to check Harbor projects and images. + +Use following example commands to check projects list: + ```shell + # curl -X GET "https://10.240.224.172:30003/api/v2.0/projects?page=1&page_size=10" -H "accept: application/json" -k --cacert /etc/docker/certs.d/10.240.224.172:30003/harbor.crt -u "admin:Harbor12345" + + [{"creation_time":"2020-11-20T05:26:21.760Z","current_user_role_id":1,"current_user_role_ids":[1],"cve_allowlist":{"creation_time":"2020-11-20T05:26:21.762Z","id":1,"items":[],"project_id":2,"update_time":"2020-11-20T05:26:21.762Z"},"metadata":{"public":"true"},"name":"intel","owner_id":1,"owner_name":"admin","project_id":2,"repo_count":5,"update_time":"2020-11-20T05:26:21.760Z"},{"creation_time":"2020-11-20T05:23:30.393Z","current_user_role_id":1,"current_user_role_ids":[1],"cve_allowlist":{"creation_time":"0001-01-01T00:00:00.000Z","items":[],"project_id":1,"update_time":"0001-01-01T00:00:00.000Z"},"metadata":{"public":"true"},"name":"library","owner_id":1,"owner_name":"admin","project_id":1,"update_time":"2020-11-20T05:23:30.393Z"}] + + ``` + +Use following example commands to check images list of project - ```intel```: + ```shell + # curl -X GET "https://10.240.224.172:30003/api/v2.0/projects/intel/repositories?page=1&page_size=10" -H "accept: application/json" -k --cacert /etc/docker/certs.d/10.240.224.172:30003/harbor.crt -u "admin:Harbor12345" +[{"artifact_count":1,"creation_time":"2020-11-20T05:57:18.992Z","id":5,"name":"intel/node-feature-discovery","project_id":2,"pull_count":2,"update_time":"2020-11-23T02:53:32.111Z"},{"artifact_count":1,"creation_time":"2020-11-20T05:56:04.361Z","id":4,"name":"intel/tas-controller","project_id":2,"update_time":"2020-11-20T05:56:04.361Z"},{"artifact_count":1,"creation_time":"2020-11-20T05:56:00.788Z","id":3,"name":"intel/tas-extender","project_id":2,"update_time":"2020-11-20T05:56:00.788Z"},{"artifact_count":1,"creation_time":"2020-11-20T05:33:20.189Z","id":2,"name":"intel/intel-gpu-plugin","project_id":2,"pull_count":1,"update_time":"2020-11-23T03:04:47.051Z"},{"artifact_count":1,"creation_time":"2020-11-20T05:31:05.995Z","id":1,"name":"intel/intel-vpu-plugin","project_id":2,"pull_count":1,"update_time":"2020-11-23T02:43:44.572Z"}] + ``` + ### Harbor Proxy Cache A proxy cache project is able to use the same features available to a normal Harbor project, except that you are not able to push images to a proxy cache project. From 3f423bb2b1fc866ea5022293e575d228a48cca2d Mon Sep 17 00:00:00 2001 From: Amr Mokhtar Date: Mon, 23 Nov 2020 13:14:02 +0000 Subject: [PATCH 040/148] Update Jekyll files according to latest doc structure --- _data/navbars/applications-onboarding.yml | 2 +- _data/navbars/building-blocks.yml | 87 +++++++++++++++++++ _data/navbars/cloud-adapters.yml | 2 +- _data/navbars/core-network-4G-5G.yml | 21 ----- _data/navbars/dataplane.yml | 21 ----- _data/navbars/edge-applications.yml | 2 +- _data/navbars/enhanced-platform-awareness.yml | 66 -------------- _data/navbars/radio-access-network.yml | 11 --- _data/navbars/reference-architectures.yaml | 37 ++++++++ _data/navbars/release-history.yml | 2 +- 10 files changed, 128 insertions(+), 123 deletions(-) create mode 100644 _data/navbars/building-blocks.yml delete mode 100644 _data/navbars/core-network-4G-5G.yml delete mode 100644 _data/navbars/dataplane.yml delete mode 100644 _data/navbars/enhanced-platform-awareness.yml delete mode 100644 _data/navbars/radio-access-network.yml create mode 100644 _data/navbars/reference-architectures.yaml diff --git a/_data/navbars/applications-onboarding.yml b/_data/navbars/applications-onboarding.yml index 85e0e9c2..2d58682a 100644 --- a/_data/navbars/applications-onboarding.yml +++ b/_data/navbars/applications-onboarding.yml @@ -3,7 +3,7 @@ title: "Application Onboarding" path: /applications-onboard/ -order: 2 +order: 3 section: - title: Network Edge Applications Onboarding path: /doc/applications-onboard/network-edge-applications-onboarding diff --git a/_data/navbars/building-blocks.yml b/_data/navbars/building-blocks.yml new file mode 100644 index 00000000..b97fe0d7 --- /dev/null +++ b/_data/navbars/building-blocks.yml @@ -0,0 +1,87 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright (c) 2020 Intel Corporation + +title: "Building Blocks" +path: /building-blocks/ +order: 2 +section: + - title: Data Plane + path: + section: + - title: Inter-App Communication + path: /doc/building-blocks/dataplane/openness-interapp + meta_title: Inter-App Communication Support in OpenNESS + meta_description: OpenNESS provides Inter-App Communication support for Network edge modes of OpenNESS. + + - title: OVN/OVS + path: /doc/building-blocks/dataplane/openness-ovn + meta_title: OpenNESS Support for OVS as Dataplane with OVN + meta_description: The primary objective of supporting OVN/OVS in OpenNESS is to demonstrate the capability of using a standard dataplane like OVS for an Edge Compute platform. + + - title: Userspace CNI + path: /doc/building-blocks/dataplane/openness-userspace-cni + meta_title: OpenNESS Userspace CNI, Setup Userspace CNI + meta_description: Userspace CNI is a Container Network Interface Kubernetes plugin that was designed to simplify the process of deployment of DPDK based applications in Kubernetes pods. + + - title: "Enhanced Platform Awareness" + path: + section: + - title: Hugepage Support + path: /doc/building-blocks/enhanced-platform-awareness/openness-hugepage + meta_title: OpenNESS Enhanced Platform Awareness - Hugepage Support on OpenNESS + meta_description: Huge page support openness, added to Kubernetes v1.8, enables the discovery, scheduling, and allocation of huge pages as a native first-class resource. + + - title: Node Feature Discovery Support + path: /doc/building-blocks/enhanced-platform-awareness/openness-node-feature-discovery + meta_title: Enhanced Platform Awareness - Node Feature Discovery Support in OpenNESS + meta_description: OpenNESS Node Feature Discovery is one of the Intel technologies that supports targeting of intelligent configuration and capacity consumption of platform capabilities. + + - title: Multiple Interface And PCIe SRIOV Support + path: /doc/building-blocks/enhanced-platform-awareness/openness-sriov-multiple-interfaces + meta_title: Enhanced Platform Awareness - Multiple Interface And PCIe SRIOV Support in OpenNESS + meta_description: Multiple Interface and PCIe SRIOV support in OpenNESS, OpenNESS Network Edge uses the Multus container network interface is a container network interface plugin for Kubernetes. + + - title: Dedicated CPU Core + path: /doc/building-blocks/enhanced-platform-awareness/openness-dedicated-core + meta_title: Enhanced Platform Awareness - Dedicated CPU Core for Workload Support in OpenNESS + meta_description: Multi-core COTS platforms are typical in any cloud or Cloudnative deployment. Parallel processing on multiple cores helps achieve better density. + + - title: BIOS and Firmware Configuration + path: /doc/building-blocks/enhanced-platform-awareness/openness-bios + meta_title: BIOS and Firmware Configuration on OpenNESS Platform + meta_description: BIOS and Firmware are the fundamental platform configurations of a typical Commercial off-the-shelf (COTS) platform. + + - title: FPGA Support + path: /doc/building-blocks/enhanced-platform-awareness/openness-fpga + meta_title: FPGA in OpenNESS - Programming, Resource Allocation and Configuration + meta_description: The FPGA Programmable acceleration card plays a key role in accelerating certain types of workloads which in-turn increases the overall compute capacity of a COTS platform. + + - title: Intel® Movidius™ Myriad™ X HDDL Support + path: /doc/building-blocks/enhanced-platform-awareness/openness_hddl + meta_title: Intel® Movidius™ Myriad™ X HDDL Solution in OpenNESS + meta_description: Intel® Movidius™ Myriad™ X HDDL solution integrates multiple Myriad™ X SoCs in a PCIe add-in card form factor or a module form factor to build a scalable, high capacity deep learning solution. + + - title: Visual Compute Accelerator Card - Analytics (VCAC-A) + path: /doc/building-blocks/enhanced-platform-awareness/openness-vcac-a + meta_title: Visual Compute Accelerator Card - Analytics (VCAC-A) + meta_description: The Visual Cloud Accelerator Card - Analytics (VCAC-A) equips Intel® Xeon® Scalable Processor based platforms and Intel Movidius™ VPU to enhance the video codec, computer vision, and inference capabilities. + + - title: Topology Manager Support + path: /doc/building-blocks/enhanced-platform-awareness/openness-topology-manager + meta_title: Topology Manager Support in OpenNESS, Resource Locality Awareness + meta_description: Topology Manager is a solution permitting k8s components like CPU Manager and Device Manager, to coordinate the resources allocated to a workload. + + - title: Resource Management Daemon + path: /doc/building-blocks/enhanced-platform-awareness/openness-rmd + meta_title: Cache Allocation for Containers with Resource Management Daemon (RMD) + meta_description: Intel® Resource Director Technology (Intel® RDT) provides visibility and control over how shared resources such as last-level cache (LLC) and memory bandwidth are used by applications, virtual machines (VMs), and containers. + + - title: Telemetry support in OpenNESS + path: /doc/building-blocks/enhanced-platform-awareness/openness-telemetry + meta_title: Telemetry support in OpenNESS + meta_description: OpenNESS supports platform and application telemetry allowing users to retrieve information about the platform, the underlying hardware, cluster and applications deployed. + + - title: Kubernetes Dashboard in OpenNESS + path: /doc/building-blocks/enhanced-platform-awareness/openness-kubernetes-dashboard + meta_title: Kubernetes Dashboard in OpenNESS + meta_description: OpenNESS supports Kubernetes Dashboard that can be used to inspect and manage Kubernetes cluster. diff --git a/_data/navbars/cloud-adapters.yml b/_data/navbars/cloud-adapters.yml index 12b7f045..0a5d465b 100644 --- a/_data/navbars/cloud-adapters.yml +++ b/_data/navbars/cloud-adapters.yml @@ -3,7 +3,7 @@ title: "Cloud Adapters" path: /cloud-adapters/ -order: 8 +order: 6 section: - title: AWS Greengrass path: /doc/cloud-adapters/openness_awsgreengrass diff --git a/_data/navbars/core-network-4G-5G.yml b/_data/navbars/core-network-4G-5G.yml deleted file mode 100644 index 4e119d09..00000000 --- a/_data/navbars/core-network-4G-5G.yml +++ /dev/null @@ -1,21 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 -# Copyright (c) 2020 Intel Corporation - -title: "Core Network - 4G and 5G" -path: /core-network/ -order: 4 -section: - - title: Evolved Packet Core (EPC) - path: /doc/core-network/openness_epc - meta_title: Edge Cloud Deployment with 3GPP 4G LTE CUPS of EPC - meta_description: OpenNESS is an open source edge computing platform that enables Service Providers and Enterprises to deploy applications and services on a network edge. - - - title: Next-Gen Core (NGC) - path: /doc/core-network/openness_ngc - meta_title: Edge Cloud Deployment with 3GPP 5G Stand Alone - meta_description: OpenNESS NGC provides reference REST-based APIs along with 3GPP standard traffic influencing APIs to address some of these major challenges in 5G edge deployments. - - - title: User Plane Function (UPF) - path: /doc/core-network/openness_upf - meta_title: User Plane Function (UPF) - meta_description: User Plane Function is the evolution of Control and User Plane Separation which part of the Rel.14 in Evolved Packet core. CUPS enabled PGW to be split into PGW-C and PGW-U. diff --git a/_data/navbars/dataplane.yml b/_data/navbars/dataplane.yml deleted file mode 100644 index faa9540e..00000000 --- a/_data/navbars/dataplane.yml +++ /dev/null @@ -1,21 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 -# Copyright (c) 2020 Intel Corporation - -title: "Dataplane" -path: /dataplane/ -order: 6 -section: - - title: Inter-App Communication - path: /doc/dataplane/openness-interapp - meta_title: Inter-App Communication Support in OpenNESS - meta_description: OpenNESS provides Inter-App Communication support for Network edge modes of OpenNESS. - - - title: OVN/OVS - path: /doc/dataplane/openness-ovn - meta_title: OpenNESS Support for OVS as Dataplane with OVN - meta_description: The primary objective of supporting OVN/OVS in OpenNESS is to demonstrate the capability of using a standard dataplane like OVS for an Edge Compute platform. - - - title: Userspace CNI - path: /doc/dataplane/openness-userspace-cni - meta_title: OpenNESS Userspace CNI, Setup Userspace CNI - meta_description: Userspace CNI is a Container Network Interface Kubernetes plugin that was designed to simplify the process of deployment of DPDK based applications in Kubernetes pods. diff --git a/_data/navbars/edge-applications.yml b/_data/navbars/edge-applications.yml index 362124b1..9c00dae3 100644 --- a/_data/navbars/edge-applications.yml +++ b/_data/navbars/edge-applications.yml @@ -3,7 +3,7 @@ title: "Edge Applications" path: /applications/ -order: 7 +order: 5 section: - title: Application Development & Porting Guide path: /doc/applications/openness_appguide diff --git a/_data/navbars/enhanced-platform-awareness.yml b/_data/navbars/enhanced-platform-awareness.yml deleted file mode 100644 index f4170f59..00000000 --- a/_data/navbars/enhanced-platform-awareness.yml +++ /dev/null @@ -1,66 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 -# Copyright (c) 2020 Intel Corporation - -title: "Enhanced Platform Awareness" -path: /enhanced-platform-awareness/ -order: 5 -section: - - title: Hugepage Support - path: /doc/enhanced-platform-awareness/openness-hugepage - meta_title: OpenNESS Enhanced Platform Awareness - Hugepage Support on OpenNESS - meta_description: Huge page support openness, added to Kubernetes v1.8, enables the discovery, scheduling, and allocation of huge pages as a native first-class resource. - - - title: Node Feature Discovery Support - path: /doc/enhanced-platform-awareness/openness-node-feature-discovery - meta_title: Enhanced Platform Awareness - Node Feature Discovery Support in OpenNESS - meta_description: OpenNESS Node Feature Discovery is one of the Intel technologies that supports targeting of intelligent configuration and capacity consumption of platform capabilities. - - - title: Multiple Interface And PCIe SRIOV Support - path: /doc/enhanced-platform-awareness/openness-sriov-multiple-interfaces - meta_title: Enhanced Platform Awareness - Multiple Interface And PCIe SRIOV Support in OpenNESS - meta_description: Multiple Interface and PCIe SRIOV support in OpenNESS, OpenNESS Network Edge uses the Multus container network interface is a container network interface plugin for Kubernetes. - - - title: Dedicated CPU Core - path: /doc/enhanced-platform-awareness/openness-dedicated-core - meta_title: Enhanced Platform Awareness - Dedicated CPU Core for Workload Support in OpenNESS - meta_description: Multi-core COTS platforms are typical in any cloud or Cloudnative deployment. Parallel processing on multiple cores helps achieve better density. - - - title: BIOS and Firmware Configuration - path: /doc/enhanced-platform-awareness/openness-bios - meta_title: BIOS and Firmware Configuration on OpenNESS Platform - meta_description: BIOS and Firmware are the fundamental platform configurations of a typical Commercial off-the-shelf (COTS) platform. - - - title: FPGA Support - path: /doc/enhanced-platform-awareness/openness-fpga - meta_title: FPGA in OpenNESS - Programming, Resource Allocation and Configuration - meta_description: The FPGA Programmable acceleration card plays a key role in accelerating certain types of workloads which in-turn increases the overall compute capacity of a COTS platform. - - - title: Intel® Movidius™ Myriad™ X HDDL Support - path: /doc/enhanced-platform-awareness/openness_hddl - meta_title: Intel® Movidius™ Myriad™ X HDDL Solution in OpenNESS - meta_description: Intel® Movidius™ Myriad™ X HDDL solution integrates multiple Myriad™ X SoCs in a PCIe add-in card form factor or a module form factor to build a scalable, high capacity deep learning solution. - - - title: Visual Compute Accelerator Card - Analytics (VCAC-A) - path: /doc/enhanced-platform-awareness/openness-vcac-a - meta_title: Visual Compute Accelerator Card - Analytics (VCAC-A) - meta_description: The Visual Cloud Accelerator Card - Analytics (VCAC-A) equips Intel® Xeon® Scalable Processor based platforms and Intel Movidius™ VPU to enhance the video codec, computer vision, and inference capabilities. - - - title: Topology Manager Support - path: /doc/enhanced-platform-awareness/openness-topology-manager - meta_title: Topology Manager Support in OpenNESS, Resource Locality Awareness - meta_description: Topology Manager is a solution permitting k8s components like CPU Manager and Device Manager, to coordinate the resources allocated to a workload. - - - title: Resource Management Daemon - path: /doc/enhanced-platform-awareness/openness-rmd - meta_title: Cache Allocation for Containers with Resource Management Daemon (RMD) - meta_description: Intel® Resource Director Technology (Intel® RDT) provides visibility and control over how shared resources such as last-level cache (LLC) and memory bandwidth are used by applications, virtual machines (VMs), and containers. - - - title: Telemetry support in OpenNESS - path: /doc/enhanced-platform-awareness/openness-telemetry - meta_title: Telemetry support in OpenNESS - meta_description: OpenNESS supports platform and application telemetry allowing users to retrieve information about the platform, the underlying hardware, cluster and applications deployed. - - - title: Kubernetes Dashboard in OpenNESS - path: /doc/enhanced-platform-awareness/openness-kubernetes-dashboard - meta_title: Kubernetes Dashboard in OpenNESS - meta_description: OpenNESS supports Kubernetes Dashboard that can be used to inspect and manage Kubernetes cluster. diff --git a/_data/navbars/radio-access-network.yml b/_data/navbars/radio-access-network.yml deleted file mode 100644 index f5db3a36..00000000 --- a/_data/navbars/radio-access-network.yml +++ /dev/null @@ -1,11 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 -# Copyright (c) 2020 Intel Corporation - -title: "Radio Access Network (RAN)" -path: /ran/ -order: 3 -section: - - title: OpenNESS Radio Access Network - path: /doc/ran/openness_ran - meta_title: OpenNESS Radio Access Network is the Edge of Wireless Network - meta_description: OpenNESS Radio Access Network is the edge of the wireless network. OpenNESS Intel FlexRAN uses as a reference 4G and 5G base station for 4G and 5G end-to-end testing. diff --git a/_data/navbars/reference-architectures.yaml b/_data/navbars/reference-architectures.yaml new file mode 100644 index 00000000..0a768832 --- /dev/null +++ b/_data/navbars/reference-architectures.yaml @@ -0,0 +1,37 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright (c) 2020 Intel Corporation + +title: "Reference Architectures" +path: /reference-architectures/ +order: 4 +section: + - title: Core Network + path: + section: + - title: Evolved Packet Core (EPC) + path: /doc/reference-architectures/core-network/openness_epc + meta_title: Edge Cloud Deployment with 3GPP 4G LTE CUPS of EPC + meta_description: OpenNESS is an open source edge computing platform that enables Service Providers and Enterprises to deploy applications and services on a network edge. + + - title: Next-Gen Core (NGC) + path: /doc/reference-architectures/core-network/openness_ngc + meta_title: Edge Cloud Deployment with 3GPP 5G Stand Alone + meta_description: OpenNESS NGC provides reference REST-based APIs along with 3GPP standard traffic influencing APIs to address some of these major challenges in 5G edge deployments. + + - title: User Plane Function (UPF) + path: /doc/reference-architectures/core-network/openness_upf + meta_title: User Plane Function (UPF) + meta_description: User Plane Function is the evolution of Control and User Plane Separation which part of the Rel.14 in Evolved Packet core. CUPS enabled PGW to be split into PGW-C and PGW-U. + + - title: Radio Access Network + path: + section: + - title: OpenNESS Radio Access Network + path: /doc/reference-architectures/ran/openness_ran + meta_title: OpenNESS Radio Access Network is the Edge of Wireless Network + meta_description: OpenNESS Radio Access Network is the edge of the wireless network. OpenNESS Intel FlexRAN uses as a reference 4G and 5G base station for 4G and 5G end-to-end testing. + + - title: O-RAN Front Haul Sample Application in OpenNESS + path: /doc/reference-architectures/ran/openness_xran + meta_title: 5GNR FlexRAN Front Haul functional units deployment with OpenNESS based on O-RAN specifications at the Network Edge + meta_description: 5GNR FlexRAN Front Haul functional units deployment with OpenNESS based on O-RAN specifications at the Network Edge. diff --git a/_data/navbars/release-history.yml b/_data/navbars/release-history.yml index c9fd9649..e211318d 100644 --- a/_data/navbars/release-history.yml +++ b/_data/navbars/release-history.yml @@ -3,7 +3,7 @@ title: "Release history" path: /openness_releasenotes/ -order: 9 +order: 7 section: - title: Release Notes path: /openness_releasenotes From 316a4f59eefe31e5a2e7eba6968d14a89e2f2d26 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Tue, 24 Nov 2020 16:55:02 +0800 Subject: [PATCH 041/148] correct some typo --- .../enhanced-platform-awareness/openness-telemetry.md | 2 +- doc/reference-architectures/ran/openness_xran.md | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/building-blocks/enhanced-platform-awareness/openness-telemetry.md b/doc/building-blocks/enhanced-platform-awareness/openness-telemetry.md index 49d97ee5..18254093 100644 --- a/doc/building-blocks/enhanced-platform-awareness/openness-telemetry.md +++ b/doc/building-blocks/enhanced-platform-awareness/openness-telemetry.md @@ -225,7 +225,7 @@ OpenCensus exporter/receiver is used in the default OpenNESS configuration for a ```shell cd edgeapps/applications/telemetry-sample-app/image/ - ./build.sh push + ./build.sh push ``` 3. Create a secret using a root-ca created as part of OEK telemetry deployment (this will authorize against the Collector certificates). diff --git a/doc/reference-architectures/ran/openness_xran.md b/doc/reference-architectures/ran/openness_xran.md index dcb3d1b2..44d618e3 100644 --- a/doc/reference-architectures/ran/openness_xran.md +++ b/doc/reference-architectures/ran/openness_xran.md @@ -774,7 +774,6 @@ Sample output: kubevirt virt-handler-j9wcf 1/1 Running 7 2d13h kubevirt virt-operator-559b8d88b7-4m99h 1/1 Running 7 2d13h kubevirt virt-operator-559b8d88b7-l9djj 1/1 Running 7 2d13h - openness docker-registry-deployment-6ff9f68454-w286l 1/1 Running 0 2d13h openness eaa-759fcc549-vhlwd 1/1 Running 7 2d13h openness edgedns-swpk4 1/1 Running 7 2d13h openness interfaceservice-ws8mn 1/1 Running 7 2d13h From 6f5c4540d0a8ea248b258bb15daf3bdf9026086e Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Tue, 24 Nov 2020 17:03:53 +0800 Subject: [PATCH 042/148] add projects decription --- .../network-edge/controller-edge-node-setup.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index 43cc47f7..02b74f24 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -173,10 +173,13 @@ On the OpenNESS edge nodes, openness-experience-kits will conduct the following * The IP address of the Harbor registry will be: "Kubernetes_Control_Plane_IP" * The port number of the Harbor registry will be: 30003 +Two Harbor projects will be created by OEK as below: +- ```library``` The registry project can be used by application developer to push and tag images +- ```intel``` The registry project contains OpenNESS microservices and relevant kubernetes addon images. Can also be used for OpenNESS sample application images. + ### Harbor login For the nodes inside of the OpenNESS cluster, openness-experience-kits ansible playbooks automatically login and prepare harbor CA certifications to access Harbor services. - For the host outside of the OpenNESS cluster, can use following commands to access the Harbor Registry: @@ -212,8 +215,6 @@ Use the `docker pull` command to pull the image from Harbor registry: docker pull {Kubernetes_Control_Plane_IP}:30003/intel/nginx:latest ``` - - ### Harbor UI Open the https://{Kubernetes_Control_Plane_IP}:30003 with login username ```admin``` and password ```Harbor12345```: ![](controller-edge-node-setup-images/harbor_ui.png) From 614cb5333de328544048d8549f726e07390a17b2 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Wed, 25 Nov 2020 15:41:52 +0800 Subject: [PATCH 043/148] add delete cli --- .../network-edge/controller-edge-node-setup.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index 02b74f24..b305b1b3 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -232,12 +232,18 @@ Use following example commands to check projects list: ``` -Use following example commands to check images list of project - ```intel```: +Use following example commands to check images repository list of project - ```intel```: ```shell # curl -X GET "https://10.240.224.172:30003/api/v2.0/projects/intel/repositories?page=1&page_size=10" -H "accept: application/json" -k --cacert /etc/docker/certs.d/10.240.224.172:30003/harbor.crt -u "admin:Harbor12345" [{"artifact_count":1,"creation_time":"2020-11-20T05:57:18.992Z","id":5,"name":"intel/node-feature-discovery","project_id":2,"pull_count":2,"update_time":"2020-11-23T02:53:32.111Z"},{"artifact_count":1,"creation_time":"2020-11-20T05:56:04.361Z","id":4,"name":"intel/tas-controller","project_id":2,"update_time":"2020-11-20T05:56:04.361Z"},{"artifact_count":1,"creation_time":"2020-11-20T05:56:00.788Z","id":3,"name":"intel/tas-extender","project_id":2,"update_time":"2020-11-20T05:56:00.788Z"},{"artifact_count":1,"creation_time":"2020-11-20T05:33:20.189Z","id":2,"name":"intel/intel-gpu-plugin","project_id":2,"pull_count":1,"update_time":"2020-11-23T03:04:47.051Z"},{"artifact_count":1,"creation_time":"2020-11-20T05:31:05.995Z","id":1,"name":"intel/intel-vpu-plugin","project_id":2,"pull_count":1,"update_time":"2020-11-23T02:43:44.572Z"}] ``` + +Use following example commands to delete the image repository of project - ```intel```, for example: + ```shell + # curl -X DELETE "https://10.240.224.172:30003/api/v2.0/projects/intel/repositories/nginx" -H "accept: application/json" -k --cacert /etc/docker/certs.d/10.240.224.147:30003/harbor.crt -u "admin:Harbor12345" + ``` + ### Harbor Proxy Cache A proxy cache project is able to use the same features available to a normal Harbor project, except that you are not able to push images to a proxy cache project. From 7f32204f5abc91464dc76fffaac81f3aa1566a0d Mon Sep 17 00:00:00 2001 From: cuizhaoyue Date: Wed, 25 Nov 2020 18:16:44 +0800 Subject: [PATCH 044/148] add a operation for deleting images --- .../network-edge/controller-edge-node-setup.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index b305b1b3..7361f4b8 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -237,6 +237,11 @@ Use following example commands to check images repository list of project - ```i # curl -X GET "https://10.240.224.172:30003/api/v2.0/projects/intel/repositories?page=1&page_size=10" -H "accept: application/json" -k --cacert /etc/docker/certs.d/10.240.224.172:30003/harbor.crt -u "admin:Harbor12345" [{"artifact_count":1,"creation_time":"2020-11-20T05:57:18.992Z","id":5,"name":"intel/node-feature-discovery","project_id":2,"pull_count":2,"update_time":"2020-11-23T02:53:32.111Z"},{"artifact_count":1,"creation_time":"2020-11-20T05:56:04.361Z","id":4,"name":"intel/tas-controller","project_id":2,"update_time":"2020-11-20T05:56:04.361Z"},{"artifact_count":1,"creation_time":"2020-11-20T05:56:00.788Z","id":3,"name":"intel/tas-extender","project_id":2,"update_time":"2020-11-20T05:56:00.788Z"},{"artifact_count":1,"creation_time":"2020-11-20T05:33:20.189Z","id":2,"name":"intel/intel-gpu-plugin","project_id":2,"pull_count":1,"update_time":"2020-11-23T03:04:47.051Z"},{"artifact_count":1,"creation_time":"2020-11-20T05:31:05.995Z","id":1,"name":"intel/intel-vpu-plugin","project_id":2,"pull_count":1,"update_time":"2020-11-23T02:43:44.572Z"}] ``` + + Use following example commands to delete a specific image: + ```sh + # curl -X DELETE "https://172.16.182.211:30003/api/v2.0/projects/intel/repositories/nginx/artifacts/1.14.2" -H "accept: application/json" -k --cacert /etc/docker/certs.d/10.240.224.172:30003/harbor.crt -u "admin:Harbor12345" + ``` Use following example commands to delete the image repository of project - ```intel```, for example: From 324ebad77d5977fac6fe84e87face24c86d445ca Mon Sep 17 00:00:00 2001 From: cuizhaoyue Date: Wed, 25 Nov 2020 18:20:00 +0800 Subject: [PATCH 045/148] change a operation order --- .../network-edge/controller-edge-node-setup.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index 7361f4b8..8eb02ff9 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -237,17 +237,16 @@ Use following example commands to check images repository list of project - ```i # curl -X GET "https://10.240.224.172:30003/api/v2.0/projects/intel/repositories?page=1&page_size=10" -H "accept: application/json" -k --cacert /etc/docker/certs.d/10.240.224.172:30003/harbor.crt -u "admin:Harbor12345" [{"artifact_count":1,"creation_time":"2020-11-20T05:57:18.992Z","id":5,"name":"intel/node-feature-discovery","project_id":2,"pull_count":2,"update_time":"2020-11-23T02:53:32.111Z"},{"artifact_count":1,"creation_time":"2020-11-20T05:56:04.361Z","id":4,"name":"intel/tas-controller","project_id":2,"update_time":"2020-11-20T05:56:04.361Z"},{"artifact_count":1,"creation_time":"2020-11-20T05:56:00.788Z","id":3,"name":"intel/tas-extender","project_id":2,"update_time":"2020-11-20T05:56:00.788Z"},{"artifact_count":1,"creation_time":"2020-11-20T05:33:20.189Z","id":2,"name":"intel/intel-gpu-plugin","project_id":2,"pull_count":1,"update_time":"2020-11-23T03:04:47.051Z"},{"artifact_count":1,"creation_time":"2020-11-20T05:31:05.995Z","id":1,"name":"intel/intel-vpu-plugin","project_id":2,"pull_count":1,"update_time":"2020-11-23T02:43:44.572Z"}] ``` - - Use following example commands to delete a specific image: - ```sh - # curl -X DELETE "https://172.16.182.211:30003/api/v2.0/projects/intel/repositories/nginx/artifacts/1.14.2" -H "accept: application/json" -k --cacert /etc/docker/certs.d/10.240.224.172:30003/harbor.crt -u "admin:Harbor12345" - ``` - Use following example commands to delete the image repository of project - ```intel```, for example: ```shell # curl -X DELETE "https://10.240.224.172:30003/api/v2.0/projects/intel/repositories/nginx" -H "accept: application/json" -k --cacert /etc/docker/certs.d/10.240.224.147:30003/harbor.crt -u "admin:Harbor12345" ``` + +Use following example commands to delete a specific image: + ```sh + # curl -X DELETE "https://172.16.182.211:30003/api/v2.0/projects/intel/repositories/nginx/artifacts/1.14.2" -H "accept: application/json" -k --cacert /etc/docker/certs.d/10.240.224.172:30003/harbor.crt -u "admin:Harbor12345" + ``` ### Harbor Proxy Cache A proxy cache project is able to use the same features available to a normal Harbor project, except that you are not able to push images to a proxy cache project. From a4ad55582de04a8eff22b0b0c8e4511a49954da1 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Thu, 26 Nov 2020 14:19:14 +0800 Subject: [PATCH 046/148] add system prerequisite --- .../controller-edge-node-setup.md | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index 8eb02ff9..89870eb0 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -148,6 +148,11 @@ Harbor registry is an open source cloud native registry which can support images ### Deploy Harbor registry +#### System Prerequisite +* The available system disk should be reserved at least 20G for Harbor PV/PVC usage. The defaut disk PV/PVC total size is 20G. The values can be configurable in the ```roles/harbor_registry/controlplane/defaults/main.yaml```. +* If huge pages enabled, need 1G(hugepage size 1G) or 300M(hugepage size 2M) to be reserved for Harbor usage. + +#### Ansible Playbooks Ansible "harbor_registry" roles created on openness-experience-kits. For deploying a Harbor registry on Kubernetes, control plane roles are enabled on the openness-experience-kits "network_edge.yml" file. ```ini @@ -159,7 +164,7 @@ The following steps are processed by openness-experience-kits during the Harbor * Download Harbor Helm Charts on the Kubernetes Control plane Node. * Check whether huge pages is enabled and templates values.yaml file accordingly. -* Create namespace and disk PV for Harbor Services (The defaut disk PV/PVC total size is 30G. The values can be configurable in the ```roles/harbor_registry/controlplane/defaults/main.yaml```). +* Create namespace and disk PV for Harbor Services (The defaut disk PV/PVC total size is 20G. The values can be configurable in the ```roles/harbor_registry/controlplane/defaults/main.yaml```). * Install Harbor on the control plane node using the Helm Charts (The CA crt will be generated by Harbor itself). * Create the new project - ```intel``` for OpenNESS microservices, Kurbernetes enhanced add-on images storage. * Docker login the Harbor Registry, thus enable pulling, pushing and tag images with the Harbor Registry @@ -173,9 +178,11 @@ On the OpenNESS edge nodes, openness-experience-kits will conduct the following * The IP address of the Harbor registry will be: "Kubernetes_Control_Plane_IP" * The port number of the Harbor registry will be: 30003 + +#### Projects Two Harbor projects will be created by OEK as below: -- ```library``` The registry project can be used by application developer to push and tag images -- ```intel``` The registry project contains OpenNESS microservices and relevant kubernetes addon images. Can also be used for OpenNESS sample application images. +- ```library``` The registry project can be used by edge application developer as default images registries. +- ```intel``` The registry project contains the registries for the OpenNESS microservices and relevant kubernetes addon images. Can also be used for OpenNESS sample application images. ### Harbor login @@ -222,7 +229,9 @@ Open the https://{Kubernetes_Control_Plane_IP}:30003 with login username ```admi You should see the project - ```intel``` on the Web UI and manage the images. ### Harbor CLI -Apart for Harbor UI, you can also use ```curl``` to check Harbor projects and images. +Apart for Harbor UI, you can also use ```curl``` to check Harbor projects and images. The examples will be shown as below. +>**NOTE**: In the examples, 10.240.224.172 is IP address of {Kubernetes_Control_Plane_IP} +>**NOTE**: If there is proxy connection issue with ```curl``` command, can add ```--proxy``` into the command options. Use following example commands to check projects list: ```shell @@ -240,19 +249,19 @@ Use following example commands to check images repository list of project - ```i Use following example commands to delete the image repository of project - ```intel```, for example: ```shell - # curl -X DELETE "https://10.240.224.172:30003/api/v2.0/projects/intel/repositories/nginx" -H "accept: application/json" -k --cacert /etc/docker/certs.d/10.240.224.147:30003/harbor.crt -u "admin:Harbor12345" + # curl -X DELETE "https://10.240.224.172:30003/api/v2.0/projects/intel/repositories/nginx" -H "accept: application/json" -k --cacert /etc/docker/certs.d/10.240.224.172:30003/harbor.crt -u "admin:Harbor12345" ``` -Use following example commands to delete a specific image: +Use following example commands to delete a specific image version: ```sh - # curl -X DELETE "https://172.16.182.211:30003/api/v2.0/projects/intel/repositories/nginx/artifacts/1.14.2" -H "accept: application/json" -k --cacert /etc/docker/certs.d/10.240.224.172:30003/harbor.crt -u "admin:Harbor12345" + # curl -X DELETE "https://10.240.224.172:30003/api/v2.0/projects/intel/repositories/nginx/artifacts/1.14.2" -H "accept: application/json" -k --cacert /etc/docker/certs.d/10.240.224.172:30003/harbor.crt -u "admin:Harbor12345" ``` ### Harbor Proxy Cache A proxy cache project is able to use the same features available to a normal Harbor project, except that you are not able to push images to a proxy cache project. - To address the concerns about throughput, performance and even rate limitation of Docker Hub or other public repository, can enable Harbor proxy cache feature. -Thus the Harbor deployed in the OpenNESS clusters will play as proxy cache registry as shown as below: + +The Harbor deployed in the OpenNESS clusters can also be used by customer as proxy cache registry with manually setting as shown as below: ![](controller-edge-node-setup-images/harbor_proxy_setup.png) The detailed setup steps are shown as below: From dc000898bc56222882b9279ca84aed8d6b1b9035 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Thu, 26 Nov 2020 14:26:11 +0800 Subject: [PATCH 047/148] reformat --- .../network-edge/controller-edge-node-setup.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index 89870eb0..0e2c863b 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -188,7 +188,7 @@ Two Harbor projects will be created by OEK as below: ### Harbor login For the nodes inside of the OpenNESS cluster, openness-experience-kits ansible playbooks automatically login and prepare harbor CA certifications to access Harbor services. -For the host outside of the OpenNESS cluster, can use following commands to access the Harbor Registry: +For the external host outside of the OpenNESS cluster, can use following commands to access the Harbor Registry: ```shell # create directory for harbor's CA crt @@ -233,6 +233,7 @@ Apart for Harbor UI, you can also use ```curl``` to check Harbor projects and im >**NOTE**: In the examples, 10.240.224.172 is IP address of {Kubernetes_Control_Plane_IP} >**NOTE**: If there is proxy connection issue with ```curl``` command, can add ```--proxy``` into the command options. +#### CLI - List Project Use following example commands to check projects list: ```shell # curl -X GET "https://10.240.224.172:30003/api/v2.0/projects?page=1&page_size=10" -H "accept: application/json" -k --cacert /etc/docker/certs.d/10.240.224.172:30003/harbor.crt -u "admin:Harbor12345" @@ -241,12 +242,14 @@ Use following example commands to check projects list: ``` +#### CLI - List Image Repositories Use following example commands to check images repository list of project - ```intel```: ```shell # curl -X GET "https://10.240.224.172:30003/api/v2.0/projects/intel/repositories?page=1&page_size=10" -H "accept: application/json" -k --cacert /etc/docker/certs.d/10.240.224.172:30003/harbor.crt -u "admin:Harbor12345" [{"artifact_count":1,"creation_time":"2020-11-20T05:57:18.992Z","id":5,"name":"intel/node-feature-discovery","project_id":2,"pull_count":2,"update_time":"2020-11-23T02:53:32.111Z"},{"artifact_count":1,"creation_time":"2020-11-20T05:56:04.361Z","id":4,"name":"intel/tas-controller","project_id":2,"update_time":"2020-11-20T05:56:04.361Z"},{"artifact_count":1,"creation_time":"2020-11-20T05:56:00.788Z","id":3,"name":"intel/tas-extender","project_id":2,"update_time":"2020-11-20T05:56:00.788Z"},{"artifact_count":1,"creation_time":"2020-11-20T05:33:20.189Z","id":2,"name":"intel/intel-gpu-plugin","project_id":2,"pull_count":1,"update_time":"2020-11-23T03:04:47.051Z"},{"artifact_count":1,"creation_time":"2020-11-20T05:31:05.995Z","id":1,"name":"intel/intel-vpu-plugin","project_id":2,"pull_count":1,"update_time":"2020-11-23T02:43:44.572Z"}] ``` +#### CLI - Delete Image Use following example commands to delete the image repository of project - ```intel```, for example: ```shell # curl -X DELETE "https://10.240.224.172:30003/api/v2.0/projects/intel/repositories/nginx" -H "accept: application/json" -k --cacert /etc/docker/certs.d/10.240.224.172:30003/harbor.crt -u "admin:Harbor12345" From 62600742f3b286852eda795b033b7c4c0c5029a2 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Fri, 27 Nov 2020 10:29:22 +0800 Subject: [PATCH 048/148] correct release notes typo --- .../controller-edge-node-setup.md | 81 +++++++++++++++++-- 1 file changed, 76 insertions(+), 5 deletions(-) diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index 0e2c863b..ada884ca 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -236,17 +236,88 @@ Apart for Harbor UI, you can also use ```curl``` to check Harbor projects and im #### CLI - List Project Use following example commands to check projects list: ```shell - # curl -X GET "https://10.240.224.172:30003/api/v2.0/projects?page=1&page_size=10" -H "accept: application/json" -k --cacert /etc/docker/certs.d/10.240.224.172:30003/harbor.crt -u "admin:Harbor12345" - - [{"creation_time":"2020-11-20T05:26:21.760Z","current_user_role_id":1,"current_user_role_ids":[1],"cve_allowlist":{"creation_time":"2020-11-20T05:26:21.762Z","id":1,"items":[],"project_id":2,"update_time":"2020-11-20T05:26:21.762Z"},"metadata":{"public":"true"},"name":"intel","owner_id":1,"owner_name":"admin","project_id":2,"repo_count":5,"update_time":"2020-11-20T05:26:21.760Z"},{"creation_time":"2020-11-20T05:23:30.393Z","current_user_role_id":1,"current_user_role_ids":[1],"cve_allowlist":{"creation_time":"0001-01-01T00:00:00.000Z","items":[],"project_id":1,"update_time":"0001-01-01T00:00:00.000Z"},"metadata":{"public":"true"},"name":"library","owner_id":1,"owner_name":"admin","project_id":1,"update_time":"2020-11-20T05:23:30.393Z"}] + # curl -X GET "https://10.240.224.172:30003/api/v2.0/projects" -H "accept: application/json" -k --cacert /etc/docker/certs.d/10.240.224.172:30003/harbor.crt -u "admin:Harbor12345 | jq" + [ + { + "creation_time": "2020-11-26T08:47:31.626Z", + "current_user_role_id": 1, + "current_user_role_ids": [ + 1 + ], + "cve_allowlist": { + "creation_time": "2020-11-26T08:47:31.628Z", + "id": 1, + "items": [], + "project_id": 2, + "update_time": "2020-11-26T08:47:31.628Z" + }, + "metadata": { + "public": "true" + }, + "name": "intel", + "owner_id": 1, + "owner_name": "admin", + "project_id": 2, + "repo_count": 3, + "update_time": "2020-11-26T08:47:31.626Z" + }, + { + "creation_time": "2020-11-26T08:39:13.707Z", + "current_user_role_id": 1, + "current_user_role_ids": [ + 1 + ], + "cve_allowlist": { + "creation_time": "0001-01-01T00:00:00.000Z", + "items": [], + "project_id": 1, + "update_time": "0001-01-01T00:00:00.000Z" + }, + "metadata": { + "public": "true" + }, + "name": "library", + "owner_id": 1, + "owner_name": "admin", + "project_id": 1, + "update_time": "2020-11-26T08:39:13.707Z" + } + ] ``` #### CLI - List Image Repositories Use following example commands to check images repository list of project - ```intel```: ```shell - # curl -X GET "https://10.240.224.172:30003/api/v2.0/projects/intel/repositories?page=1&page_size=10" -H "accept: application/json" -k --cacert /etc/docker/certs.d/10.240.224.172:30003/harbor.crt -u "admin:Harbor12345" -[{"artifact_count":1,"creation_time":"2020-11-20T05:57:18.992Z","id":5,"name":"intel/node-feature-discovery","project_id":2,"pull_count":2,"update_time":"2020-11-23T02:53:32.111Z"},{"artifact_count":1,"creation_time":"2020-11-20T05:56:04.361Z","id":4,"name":"intel/tas-controller","project_id":2,"update_time":"2020-11-20T05:56:04.361Z"},{"artifact_count":1,"creation_time":"2020-11-20T05:56:00.788Z","id":3,"name":"intel/tas-extender","project_id":2,"update_time":"2020-11-20T05:56:00.788Z"},{"artifact_count":1,"creation_time":"2020-11-20T05:33:20.189Z","id":2,"name":"intel/intel-gpu-plugin","project_id":2,"pull_count":1,"update_time":"2020-11-23T03:04:47.051Z"},{"artifact_count":1,"creation_time":"2020-11-20T05:31:05.995Z","id":1,"name":"intel/intel-vpu-plugin","project_id":2,"pull_count":1,"update_time":"2020-11-23T02:43:44.572Z"}] + # curl -X GET "https://10.240.224.172:30003/api/v2.0/projects/intel/repositories" -H "accept: application/json" -k --cacert /etc/docker/certs.d/10.240.224.172:30003/harbor.crt -u "admin:Harbor12345" | jq + [ + { + "artifact_count": 1, + "creation_time": "2020-11-26T08:57:43.690Z", + "id": 3, + "name": "intel/sriov-device-plugin", + "project_id": 2, + "pull_count": 1, + "update_time": "2020-11-26T08:57:55.240Z" + }, + { + "artifact_count": 1, + "creation_time": "2020-11-26T08:56:16.565Z", + "id": 2, + "name": "intel/sriov-cni", + "project_id": 2, + "update_time": "2020-11-26T08:56:16.565Z" + }, + { + "artifact_count": 1, + "creation_time": "2020-11-26T08:49:25.453Z", + "id": 1, + "name": "intel/multus", + "project_id": 2, + "update_time": "2020-11-26T08:49:25.453Z" + } + ] + ``` #### CLI - Delete Image From adbd775db8cd69bdd68846633e463bbdbec91305 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Fri, 27 Nov 2020 10:33:33 +0800 Subject: [PATCH 049/148] correct ran harbor --- doc/reference-architectures/ran/openness_ran.md | 6 +++--- openness_releasenotes.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/reference-architectures/ran/openness_ran.md b/doc/reference-architectures/ran/openness_ran.md index 036c5bf3..8631c8c2 100644 --- a/doc/reference-architectures/ran/openness_ran.md +++ b/doc/reference-architectures/ran/openness_ran.md @@ -76,9 +76,9 @@ The following example reflects the Docker image [expected by Helm chart](https:/ 7. Tag the image and push to a local Harbor registry (Harbor registry deployed as part of OpenNESS Experience Kit) ```shell - docker tag flexran5g :/intel/flexran5g:3.10.0-1062.12.1.rt56 + docker tag flexran5g :/intel/flexran5g:3.10.0-1062.12.1.rt56 - docker push :/intel/flexran5g:3.10.0-1062.12.1.rt56 + docker push :/intel/flexran5g:3.10.0-1062.12.1.rt56 ``` By the end of step 7, the FlexRAN Docker image is created and available in the Harbor registry. This image is copied to the edge node where FlexRAN will be deployed and that is installed with OpenNESS Network edge with all the required EPA features including Intel® FPGA Programmable Acceleration Card (Intel® FPGA PAC) N3000. Please refer to the document [Using FPGA in OpenNESS: Programming, Resource Allocation, and Configuration](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-fpga.md) for details on setting up Intel® FPGA PAC N3000 with vRAN FPGA image. @@ -327,4 +327,4 @@ SR-IOV Support=Enabled - FlexRAN 5G NR Reference Solution L1 User Guide - Document ID:603576 - FlexRAN Reference Solution L1 XML Configuration User Guide - Document ID:571741 - FlexRAN 5G New Radio FPGA User Guide - Document ID:603578 -- FlexRAN Reference Solution xRAN FrontHaul SAS - Document ID:611268 \ No newline at end of file +- FlexRAN Reference Solution xRAN FrontHaul SAS - Document ID:611268 diff --git a/openness_releasenotes.md b/openness_releasenotes.md index f45d4b81..85663827 100644 --- a/openness_releasenotes.md +++ b/openness_releasenotes.md @@ -181,7 +181,7 @@ This document provides high level system features, issues and limitations inform - xRAN Fronthaul with Helm CHart (xRAN app not part of the release) - Helm Chart for Kubernetes enhancements - NFD, CMK, SRIOV-Device plugin and Multus - - Support for local Harbor registry setup + - Support for local Docker registry setup - Support for deployment specific Flavors - Minimal - RAN - 4G and 5G From 98501c27757814ca52f87ece0227285a43a0d336 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Fri, 27 Nov 2020 12:56:07 +0800 Subject: [PATCH 050/148] remove harbor proxy to avoid confusion with docker registry mirror --- .../harbor-proxy-step1.png | Bin 53253 -> 0 bytes .../harbor-proxy-step2.png | Bin 37750 -> 0 bytes .../harbor-proxy-step3.png | Bin 39177 -> 0 bytes .../harbor-proxy-step4.png | Bin 30104 -> 0 bytes .../controller-edge-node-setup.md | 72 ++---------------- 5 files changed, 5 insertions(+), 67 deletions(-) delete mode 100644 doc/getting-started/network-edge/controller-edge-node-setup-images/harbor-proxy-step1.png delete mode 100644 doc/getting-started/network-edge/controller-edge-node-setup-images/harbor-proxy-step2.png delete mode 100644 doc/getting-started/network-edge/controller-edge-node-setup-images/harbor-proxy-step3.png delete mode 100644 doc/getting-started/network-edge/controller-edge-node-setup-images/harbor-proxy-step4.png diff --git a/doc/getting-started/network-edge/controller-edge-node-setup-images/harbor-proxy-step1.png b/doc/getting-started/network-edge/controller-edge-node-setup-images/harbor-proxy-step1.png deleted file mode 100644 index 4861207c52f58214735ff9e03f87b007a57b890c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53253 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 diff --git a/doc/getting-started/network-edge/controller-edge-node-setup-images/harbor-proxy-step3.png b/doc/getting-started/network-edge/controller-edge-node-setup-images/harbor-proxy-step3.png deleted file mode 100644 index b898c87acf6d1b743e531361ffc05ac28b3e37f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39177 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: In the examples, 10.240.224.172 is IP address of {Kubernetes_Control_Plane_IP} ->**NOTE**: If there is proxy connection issue with ```curl``` command, can add ```--proxy``` into the command options. +```text +In the examples, 10.240.224.172 is IP address of {Kubernetes_Control_Plane_IP} +If there is proxy connection issue with ```curl``` command, can add ```--proxy``` into the command options. +``` #### CLI - List Project Use following example commands to check projects list: @@ -331,68 +331,6 @@ Use following example commands to delete a specific image version: # curl -X DELETE "https://10.240.224.172:30003/api/v2.0/projects/intel/repositories/nginx/artifacts/1.14.2" -H "accept: application/json" -k --cacert /etc/docker/certs.d/10.240.224.172:30003/harbor.crt -u "admin:Harbor12345" ``` -### Harbor Proxy Cache -A proxy cache project is able to use the same features available to a normal Harbor project, except that you are not able to push images to a proxy cache project. -To address the concerns about throughput, performance and even rate limitation of Docker Hub or other public repository, can enable Harbor proxy cache feature. - -The Harbor deployed in the OpenNESS clusters can also be used by customer as proxy cache registry with manually setting as shown as below: -![](controller-edge-node-setup-images/harbor_proxy_setup.png) - -The detailed setup steps are shown as below: -1. Create a new registry endpoint - - ![](controller-edge-node-setup-images/harbor-proxy-step1.png) - - ![](controller-edge-node-setup-images/harbor-proxy-step2.png) - - - **Provider**: the type of target registry, for example `Docker Hub`. - - **Name**: the name of new registry endpoint and it can be whatever you want. - - **Endpoint URL**: the endpoint of target Registry. The endpoint url of Docker Hub is `https://hub.docker.com`. - - **Access ID**: the username of target Registry. (Optional) - - **Access Secret**: the password of target Registry. (Optional) - -2. Create a new project with proxy cache enabled. - - ![](controller-edge-node-setup-images/harbor-proxy-step3.png) - - ![](controller-edge-node-setup-images/harbor-proxy-step4.png) - - - **Project Name**: the name of new Project and it can be whatever you want. - - **Proxy Cache**: select the target registry endpoint created in the previous step. - -3. Pull a image from the proxy cache. - - ```shell - > docker pull {Kubernetes_Control_Plane_IP}:30003/{proxy_project_name}/{target_registry_project}/ - ``` - - for example: - - ```sh - > docker pull 172.16.182.211:30003/intel-proxy/cuizy/coredns:1.6.7 - ``` - - > The endpoint of deployed registry is `172.16.182.211:30003`. - - If you are deploying a pod with a yaml file, configure the `image` field to reference the proxy cache project as `{Kubernetes_Control_Plane_IP}:30003/{proxy_project_name}/{target_registry_project}/` format. - - ```yaml - spec: - containers: - ... ... - image: 172.16.182.211:30003/intel-proxy/cuizy/coredns:1.6.7 - ``` - Also you can modify openness-experience-kits/group_vars/all/10-default.yml(Replace with the `{Kubernetes_Control_Plane_IP}:30003/{proxy_project_name}`) to change the docker registry mirrors: - ```yaml - ## Docker registry mirrors - ## https://docs.docker.com/registry/recipes/mirror/ - docker_registry_mirrors: - - "https://{Kubernetes_Control_Plane_IP}:30003/{proxy_project_name}" - ``` - - - - ## Kubernetes cluster networking plugins (Network Edge) Kubernetes uses 3rd party networking plugins to provide [cluster networking](https://kubernetes.io/docs/concepts/cluster-administration/networking/). From a917031446d405fc24345af7ef31172f9c5ad1f7 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Mon, 30 Nov 2020 13:28:51 +0800 Subject: [PATCH 051/148] update arch and flavor docs with emco update --- doc/architecture.md | 5 +++++ doc/flavors.md | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/doc/architecture.md b/doc/architecture.md index 3b74421f..d7f3c913 100644 --- a/doc/architecture.md +++ b/doc/architecture.md @@ -23,6 +23,7 @@ Copyright (c) 2019-2020 Intel Corporation - [Minimal flavor](#minimal-flavor) - [RAN node flavor](#ran-node-flavor) - [Application node flavor](#application-node-flavor) + - [Orchestration node flavor](#orchestration-node-flavor) - [Microsoft Azure OpenNESS](#microsoft-azure-openness) - [Converged Edge Reference Architecture (CERA) Flavor](#converged-edge-reference-architecture-cera-flavor) - [Other References](#other-references) @@ -227,6 +228,10 @@ Under the application node, the following flavors are supported: ![Application node flavor](arch-images/openness-ovc.png) +### Orchestration node flavor +Orchestration node here typically refers to central orchestration node deployed on the central cloud. It can orchestrate applications across edge clusters and cloud clusters with different locations. +More details refer to [EMCO White Paper](https://github.com/otcshare/specs/blob/master/doc/orchestration/openness-emco.md). + ### Microsoft Azure OpenNESS This flavor supports the installation of an OpenNESS Kubernetes cluster on a Microsoft\* Azure\* VM. This is typically used by a customer who requires the same Kubernetes cluster service on multiple clouds. diff --git a/doc/flavors.md b/doc/flavors.md index 4f1eb5fa..60f5ceb7 100644 --- a/doc/flavors.md +++ b/doc/flavors.md @@ -12,6 +12,7 @@ This document introduces the supported deployment flavors that are deployable th - [Media Analytics Flavor with VCAC-A](#media-analytics-flavor-with-vcac-a) - [CDN Transcode Flavor](#cdn-transcode-flavor) - [CDN Caching Flavor](#cdn-caching-flavor) +- [EMCO Flavor](#emco-flavor) ## Minimal Flavor The pre-defined *minimal* deployment flavor provisions the minimal set of configurations for bringing up the OpenNESS network edge deployment. @@ -159,3 +160,19 @@ This deployment flavor enables the following ingredients: * The `kube-ovn` and `sriov` Kubernetes CNI * Telemetry * Kubernetes Topology Manager policy: `single-numa-node` + + +## EMCO Flavor +The pre-defined *emco* deployment flavor provisions an optimized system configuration for emco(central orchestrator) workloads on Intel Xeon servers. It also provisions a set of central orchestrator services for [edge, multiple clusters orchestration](https://github.com/otcshare/specs/blob/master/doc/orchestration/openness-emco.md). + +Steps to install this flavor are as follows: +1. Configure OEK as described in the [OpenNESS Getting Started Guide for Network Edge](getting-started/network-edge/controller-edge-node-setup.md). +2. Run OEK deployment script: + ```shell + $ deploy_ne.sh -f central_orchestrator + ``` + +This deployment flavor enables the following ingredients: +* Harbor Registry +* The default Kubernetes CNI: `kube-ovn` +* EMCO services From a0afa42ce20302fa3211c9793e23c4ec31cad548 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Mon, 30 Nov 2020 13:41:18 +0800 Subject: [PATCH 052/148] correct flavor name --- doc/flavors.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/flavors.md b/doc/flavors.md index 60f5ceb7..4c2e073f 100644 --- a/doc/flavors.md +++ b/doc/flavors.md @@ -12,7 +12,7 @@ This document introduces the supported deployment flavors that are deployable th - [Media Analytics Flavor with VCAC-A](#media-analytics-flavor-with-vcac-a) - [CDN Transcode Flavor](#cdn-transcode-flavor) - [CDN Caching Flavor](#cdn-caching-flavor) -- [EMCO Flavor](#emco-flavor) +- [Orchestration Flavor](#emco-flavor) ## Minimal Flavor The pre-defined *minimal* deployment flavor provisions the minimal set of configurations for bringing up the OpenNESS network edge deployment. @@ -162,8 +162,8 @@ This deployment flavor enables the following ingredients: * Kubernetes Topology Manager policy: `single-numa-node` -## EMCO Flavor -The pre-defined *emco* deployment flavor provisions an optimized system configuration for emco(central orchestrator) workloads on Intel Xeon servers. It also provisions a set of central orchestrator services for [edge, multiple clusters orchestration](https://github.com/otcshare/specs/blob/master/doc/orchestration/openness-emco.md). +## Orchestration Flavor +The pre-defined *orchestration* deployment flavor provisions an optimized system configuration for emco (central orchestrator) workloads on Intel Xeon servers. It also provisions a set of central orchestrator services for [edge, multiple clusters orchestration](https://github.com/otcshare/specs/blob/master/doc/orchestration/openness-emco.md). Steps to install this flavor are as follows: 1. Configure OEK as described in the [OpenNESS Getting Started Guide for Network Edge](getting-started/network-edge/controller-edge-node-setup.md). From 297e4f6abf88894f7a840b1ca4bd0f12105c594f Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Mon, 30 Nov 2020 16:45:35 +0800 Subject: [PATCH 053/148] add emco introduction --- .../openness-emco-arch.png | Bin 55506 -> 36894 bytes .../openness-emco-topology.png | Bin 0 -> 55506 bytes doc/orchestration/openness-emco.md | 85 ++++++++++++------ 3 files changed, 58 insertions(+), 27 deletions(-) create mode 100644 doc/orchestration/openness-emco-images/openness-emco-topology.png diff --git a/doc/orchestration/openness-emco-images/openness-emco-arch.png b/doc/orchestration/openness-emco-images/openness-emco-arch.png index 977c16c4baf2d1b98c68e41f426c8a256769b9fe..b995316c48058695fc8ba1d123bc98b48627290a 100644 GIT binary patch literal 36894 zcmY&f%b~v6%-T{nv|rd5)>2+7zzs776}3JpVw4H9Z*nYP*S48 zAHP5!w1mxRi6t6DLcKnPL zPJm2QHUujKlM)k^2@T;bwWLpokSR0{51(IXb6_{MK$esM((MGP&*R2jUP_JH#`UTTg3qH3Hk z=&=8{4P-Z8Yu(iVrnJ1b8UCzet;jSLODJ!&0wt*_lG~w}p-`b<|M>{VN1)wnI8M{X~&<~qOWSUs=SYB9(=8v4IQ zpkT4|R%!OROiQm?KGm5YIj?2?*kkJ(rT2*W=J}M>I_sK90j>tc0j#ut-YZL_W##)$ zn_|jfTKwl26hdQ!Z-n4-ajWYx+TPE&v4KtR3q>G91^v0IB+%>?|M7bV{dTTpdtOOn zQJZ&w)n$^^ancLKfBnEDL@>?eiTdL8P;P*GsPOS(F3xt6i2wD51SiJrw4GZcAE$37 zKOpCSJ)ic6{!E?BwG85Yb9pyJ1;(96jTsrs0De#R*fSI5z?y;kH)H=KP8XF$Xl3uF zLy~9ZYuD3!`a(#MsO*dtQsw@S*h2Hd@{7HFGQ9$kTB1 zhc%{>$-x&KZac8#cYDoYFv6)U(Z2tKi+mE;x?im-o~Cyu#J{CTV}reZ(24-f_TLK1 zN`F_TEp!tT&W)z~FXWE+u-_$V;29qUgKd=n(<>%%t12`7Yg=L zPxnbI$;2<=$qf{2J4v0++9;J;zYhET4j1l3r1rmnFuwwv)XDMOg_-aQgJghaD3ns1 zy8w4fea!GqG9gkQgTJ}T)J7eTdcNUP66a=EyU0$h9>b1TF0&`o>BsvEawr6Gc-ZRH z7|OI4tiSdQ2YIL1wmuA6fDlBvpq~_>1@EBgVgH&qqPsfLm)`GD^VC0|LW=+kWsmTGS@2ct^l77epi=eVr2?A_H}sQ(!;%=g9CFCpDQfvx7s z6D%psn>KR*dB4v=!>~RmI#JZ$+Clln{=ZQNpu$!sY)N47FOa8=SuW@1PT+~ghEAfN zVxH-K2wEcJ`s*|l0N{c;%ySJBtih;ZSCvxxJC~FP&+L5E4iEPZ!vOkkIYFwbT^CRf zsTTCQX5EQT<^&8|@mQla+Agq2G_w|eitf(`YJe~A?5}lOnY)4^v!|z2E9{bNkO&{cLLMD>`lCSUvHjk-M z(aP�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 literal 55506 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 **NOTE**: Composite application is combination of multiple applications. Based on the deployment intent, various applications of the composite application get deployed at various locations, and get replicated in multiple locations. @@ -22,34 +25,69 @@ Compared with other multipe-clusters orchestration, EMCO focuses on the below fu - Orchestrate edge services and network functions with deployment intents based on compute, acceleration, and storage requirements. - Support onboard multiple tenants from different enterprises while ensuring confidentiality and full isolation across the tenants. -This document aims to familiarize the user with [OpenNESS deployment flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md) for EMCO installation and provsion, and provide instructions accordingly. -## Overall Architecture -The below figure shows the architecture for the OpenNESS EMCO with an SmartCity applications example in this document. -![OpenNESS EMCO](openness-emco-images/openness-emco-arch.png) +The below figure shows the topology overview for the OpenNESS EMCO orchestration with edge and multiple clusters . +![OpenNESS EMCO](openness-emco-images/openness-emco-topology.png) -_Figure - EMCO Architecture in OpenNESS_ +_Figure - Topology Overview with OpenNESS EMCO_ All the manged edge clusters and cloud clusters will be connected with EMCO cluster through WAN network. -- The central EMCO cluster installation can use [OpenNESS Central Orchestrator Flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md). The EMCO includes micro services as below: +- The central orchestration (EMCO) cluster installation can use [OpenNESS Central Orchestrator Flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md). +- The edge clusters in the diagram can be installed and provisioned by using [OpenNESS Media Analytics Flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md) +- The cloud cluster in the diagram can be any types of cloud clusters, for example: Azure Cloud. +- The composite application - SmartCity is composed of two parts: edge applications and web applications. + - The edge application executes media processing and analytics on the multiple edge clusters to reduce latency. + - The web application is kinds of cloud application for additional post-processing such as calculating statistics and display/visualization on the cloud cluster side. + - EMCO user can deploy the smart city applications across the clusters. Besides that, EMCO supports override values profiles for operator to satisfy the need of deployments. + - More details about refer to [SmartCity Deployment Practise with EMCO](#smartcity-deployment-with-emco). + +This document aims to familiarize the user with [OpenNESS deployment flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md) for EMCO installation and provsion, and provide instructions accordingly. +## EMCO Introduction +### EMCO Architecture +The following diagram depicts a high level overview of the EMCO architecture. +![OpenNESS EMCO](openness-emco-images/openness-emco-arch.png) - 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. + - Network Configuration Management handles creation/management of virtual and provider networks. - 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 edge clusters in the diagram can be installed and provisioned by using [OpenNESS Media Analytics Flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md) -- As for cloud clusters, they can be any types of cloud clusters, for example: Azure Cloud. - -The example composite application - smart city is composed of two parts: edge applications and cloud applications. By using EMCO RESTAPI or CLI , operator can deploy the smart city services across the clusters. Besides that, EMCO supports override values profiles for operator to satisfy the need of deployments. + +#### Cluster Registration +After preparation of edge clusters and cloud clusters which can be any kubernetes clusters, user can onboard those clusters to EMCO by creating a Cluster Provider and then adding Clusters to the Cluster Provider. After cluster providers creation, the KubeConfig files of edge and cloud clusters should be provided to EMCO as part of the multi-part POST call to the Cluster API. +Additionally, once a Cluster is created, labels and key value pairs may be added to the Cluster via the EMCO API. Clusters can be specified by label when preparing placement intents. +> **NOTE**: The cluster provider is somebody who owns clusters and registers them to EMCO. + +#### Distributed Application Scheduler +The distrbuted application scheduler microservice provides functionalities: +- Project Management provides multi-tenancy in the application from a user perspective +- Composite App Management  manages composite apps that are collections of Helm Charts one per application +- Composite Profile Management  manages composite profiles that are collections of profile one per application +- Deployment Intent Group Management manages Intents for composite Applications +- Controller Registration manages placement and action controller registration, priorities etc. +- Status Notifier framework allows user to get on-demand status updates or notifications on status updates +- Scheduler + - Placement Controllers: Generic Placement Controller + - Action Controllers + +#### Network Configuration Management +The network configuratin mangement(NCM) microservice provdes functionalities: +- Provider Network Management to create provider networks +- Virtual Network Management to create dynamic virtual networks +- Controller Registration manages network plugin controllers, priorities etc. +- Status Notifier framework allows user to get on-demand status updates or notifications on status updates +- Scheduler with Built in Controller - OVN-for-K8s-NFV Plugin Controller + + +### EMCO API For user interaction, EMCO provides [RESTAPI](https://github.com/otcshare/EMCO/blob/main/docs/emco_apis.yaml). Apart from that, EMCO also provides CLI. For the detailed usage, refer to [EMCO CLI](https://github.com/otcshare/EMCO/tree/main/src/tools/emcoctl) > **NOTE**: The EMCO REST API is the foundation for the other interaction facilities like the EMCO CLI and even EMCO GUI (3rd party developed right now) -## Installation for EMCO cluster with OpenNESS Flavor +### EMCO Installation The first step is to prepare one server envionment which need to fulfill the [Preconditions](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#preconditions). Then Place the EMCO server hostname in `[controller_group]` group in `inventory.ini` file of openness-experience-kit. @@ -57,13 +95,6 @@ Then Place the EMCO server hostname in `[controller_group]` group in `inventory. Run script `./deploy_ne.sh -f central_orchestrator`. Deployment should complete successfully. In the flavor, harbor registry will be deployed to provide images services as well. -## Cluster Registration with EMCO -After preparation of edge clusters and cloud clusters which can be any kubernetes clusters, user can onboard those clusters to EMCO by creating a Cluster Provider and then adding Clusters to the Cluster Provider. After cluster providers creation, the KubeConfig files of edge and cloud clusters should be provided to EMCO as part of the multi-part POST call to the Cluster API. - -Additionally, once a Cluster is created, labels and key value pairs may be added to the Cluster via the EMCO API. Clusters can be specified by label when preparing placement intents. -> **NOTE**: The cluster provider is somebody who owns clusters and registers them to EMCO. - - -## - +## Practise with EMCO: SmartCityp Deployment +Smart City application is a sample application that is built on top of the OpenVINO & Open Visual Cloud software stacks for media processing and analytics. The whole application is composed of two parts: EdgeApp(multiple OpenNESS edge clusters) and WebApp(cloud application for additional post-processing such as calculating statistics and display/visualization). From a18ebb097a5c5b46cbae1496ad6877de7f89b24a Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Mon, 30 Nov 2020 18:38:14 +0800 Subject: [PATCH 054/148] add helm configuration section --- doc/orchestration/openness-emco.md | 63 ++++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 3 deletions(-) diff --git a/doc/orchestration/openness-emco.md b/doc/orchestration/openness-emco.md index ed9ba019..c1afdbe7 100644 --- a/doc/orchestration/openness-emco.md +++ b/doc/orchestration/openness-emco.md @@ -8,7 +8,6 @@ Copyright (c) 2020 Intel Corporation - [Background](#background) - [EMCO Introduction](#emco-introduction) - [EMCO Architecture](#emco-architecture) - - [Cluster Registration with EMCO](#cluster-registration) - [EMCO API](#emco-api) - [EMCO Installation](#emco-installation) - [Practise with EMCO: SmartCityp Deployment](#smartcity-deployment-with-emco) @@ -96,5 +95,63 @@ Then Place the EMCO server hostname in `[controller_group]` group in `inventory. Run script `./deploy_ne.sh -f central_orchestrator`. Deployment should complete successfully. In the flavor, harbor registry will be deployed to provide images services as well. ## Practise with EMCO: SmartCityp Deployment -Smart City application is a sample application that is built on top of the OpenVINO & Open Visual Cloud software stacks for media processing and analytics. The whole application is composed of two parts: EdgeApp(multiple OpenNESS edge clusters) and WebApp(cloud application for additional post-processing such as calculating statistics and display/visualization). - +One OpenNESS edge nodes (representing regional office) and One legacy K8s Cluster (repsenting cloud) are connected to the OpenNESS EMCO cluster. Smart City application is a sample application that is built on top of the OpenVINO & Open Visual Cloud software stacks for media processing and analytics. The whole application is composed of two parts: EdgeApp(multiple OpenNESS edge clusters) and WebApp(cloud application for additional post-processing such as calculating statistics and display/visualization) as shown as below diagram. + +The following are the typical steps involved in the cluster registration and deployment of the application using OpenNESS EMCO. +- Prerequisites + - Make One OpenNESS Edge Cluster Ready with any OpenNESS Flavor (OpenNESS Application Node Flavor is proposed) + - Make One Legacy K8s Cluster Ready (Simualte cloud cluster) + - Prepare One Server with a Vanilla CentOS for EMCO (Only one server is required for EMCO cluster) +- EMCO Configuration +- Create Cluster Provider +- Clusters Registration +- Create Project +- DeploySmartCity Application + +### EMCO Configuration +After [EMCO Installation](#emco-installation), logon the EMCO server, and prepare EMCO CLI `local-cfg.yaml` file as below +```yaml + orchestrator: + host: localhost + port: 31298 + clm: + host: localhost + port: 31856 + ncm: + host: localhost + port: 32737 + ovnaction: + host: localhost + port: 31072 + dcm: + host: localhost + port: 31877 +``` + +Prepared EMCO controller resource files for resource synchronization - 'controller.yaml' file as below +```yaml +--- +version: emco/v2 +resourceContext: + anchor: controllers +metadata : + name: rsync +spec: + host: "192.168.121.103" + port: 30546 +``` +> **NOTE**: `192.168.121.103` is example IP address of EMCO server. + +Use EMCO CLI to create the controller entry with expected result as below: +```shell +# /opt/emco/bin/emcoctl/emcoctl --config local-cfg.yaml apply -f controllers.yaml +Using config file: local-cfg.yaml +http://192.168.121.103:31298/v2URL: controllers Response Code: 201 +``` + +### Create Cluster Provider +Prepare + + + + From 14222b17756e985c5f7c93a58c928e8422bc97d4 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Mon, 30 Nov 2020 19:29:39 +0800 Subject: [PATCH 055/148] add diagram for emco smtc --- .../openness-emco-smtc.png | Bin 0 -> 73242 bytes doc/orchestration/openness-emco.md | 22 ++++++++++-------- 2 files changed, 12 insertions(+), 10 deletions(-) create mode 100644 doc/orchestration/openness-emco-images/openness-emco-smtc.png diff --git a/doc/orchestration/openness-emco-images/openness-emco-smtc.png b/doc/orchestration/openness-emco-images/openness-emco-smtc.png new file mode 100644 index 0000000000000000000000000000000000000000..090b2ab1854c0c732ff1f21d8ea88a8194132f39 GIT binary patch literal 73242 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%0A~O;WA3l7_T*|Cv5fF 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 **NOTE**: Composite application is combination of multiple applications. Based on the deployment intent, various applications of the composite application get deployed at various locations, and get replicated in multiple locations. Compared with other multipe-clusters orchestration, EMCO focuses on the below functionalies: @@ -56,10 +58,10 @@ The following diagram depicts a high level overview of the EMCO architecture. - Monitoring covers distributed application. #### Cluster Registration -After preparation of edge clusters and cloud clusters which can be any kubernetes clusters, user can onboard those clusters to EMCO by creating a Cluster Provider and then adding Clusters to the Cluster Provider. After cluster providers creation, the KubeConfig files of edge and cloud clusters should be provided to EMCO as part of the multi-part POST call to the Cluster API. +s micro-service exposes RESTful API. One can register Cluster providers and clusters of those providers via these APIs. After preparation of edge clusters and cloud clusters which can be any kubernetes clusters, user can onboard those clusters to EMCO by creating a Cluster Provider and then adding Clusters to the Cluster Provider. After cluster providers creation, the KubeConfig files of edge and cloud clusters should be provided to EMCO as part of the multi-part POST call to the Cluster API. Additionally, once a Cluster is created, labels and key value pairs may be added to the Cluster via the EMCO API. Clusters can be specified by label when preparing placement intents. -> **NOTE**: The cluster provider is somebody who owns clusters and registers them to EMCO. +> **NOTE**: The cluster provider is somebody who owns clusters and registers them to EMCO. If an Enterprise has clusters from say AWS, then the cluster provider for those clusters from AWS is still considered as from that Enterprise. AWS is not the provider. Here, the provider is somebody who owns clusters and registers them here. Since, AWS does not register their clusters here, AWS is not considered as Cluster provider in this context. #### Distributed Application Scheduler The distrbuted application scheduler microservice provides functionalities: @@ -82,6 +84,10 @@ The network configuratin mangement(NCM) microservice provdes functionalities: - Scheduler with Built in Controller - OVN-for-K8s-NFV Plugin Controller +#### Resource Syncronizer +This micro-services is the one which deploys the resources in edge/cloud clusters. 'Resource contexts' created by various micro-services are used by this micro-service. It will take care of retrying in case the remote clusters are not reachable temporarily. + + ### EMCO API For user interaction, EMCO provides [RESTAPI](https://github.com/otcshare/EMCO/blob/main/docs/emco_apis.yaml). Apart from that, EMCO also provides CLI. For the detailed usage, refer to [EMCO CLI](https://github.com/otcshare/EMCO/tree/main/src/tools/emcoctl) > **NOTE**: The EMCO REST API is the foundation for the other interaction facilities like the EMCO CLI and even EMCO GUI (3rd party developed right now) @@ -94,8 +100,9 @@ Then Place the EMCO server hostname in `[controller_group]` group in `inventory. Run script `./deploy_ne.sh -f central_orchestrator`. Deployment should complete successfully. In the flavor, harbor registry will be deployed to provide images services as well. -## Practise with EMCO: SmartCityp Deployment +## Practice with EMCO: SmartCityp Deployment One OpenNESS edge nodes (representing regional office) and One legacy K8s Cluster (repsenting cloud) are connected to the OpenNESS EMCO cluster. Smart City application is a sample application that is built on top of the OpenVINO & Open Visual Cloud software stacks for media processing and analytics. The whole application is composed of two parts: EdgeApp(multiple OpenNESS edge clusters) and WebApp(cloud application for additional post-processing such as calculating statistics and display/visualization) as shown as below diagram. +![OpenNESS EMCO](openness-emco-images/openness-emco-smtc.png) The following are the typical steps involved in the cluster registration and deployment of the application using OpenNESS EMCO. - Prerequisites @@ -150,8 +157,3 @@ http://192.168.121.103:31298/v2URL: controllers Response Code: 201 ``` ### Create Cluster Provider -Prepare - - - - From da665873ec1200767aff1349b9d971b27e1d6060 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Tue, 1 Dec 2020 12:38:22 +0800 Subject: [PATCH 056/148] move emco into building block and addressed several typo error --- .../openness-emco-images/openness-emco-arch.png | Bin .../openness-emco-images/openness-emco-smtc.png | Bin .../openness-emco-images/openness-emco-topology.png | Bin .../emco}/openness-emco.md | 8 ++++---- 4 files changed, 4 insertions(+), 4 deletions(-) rename doc/{orchestration => building-blocks/emco}/openness-emco-images/openness-emco-arch.png (100%) rename doc/{orchestration => building-blocks/emco}/openness-emco-images/openness-emco-smtc.png (100%) rename doc/{orchestration => building-blocks/emco}/openness-emco-images/openness-emco-topology.png (100%) rename doc/{orchestration => building-blocks/emco}/openness-emco.md (95%) diff --git a/doc/orchestration/openness-emco-images/openness-emco-arch.png b/doc/building-blocks/emco/openness-emco-images/openness-emco-arch.png similarity index 100% rename from doc/orchestration/openness-emco-images/openness-emco-arch.png rename to doc/building-blocks/emco/openness-emco-images/openness-emco-arch.png diff --git a/doc/orchestration/openness-emco-images/openness-emco-smtc.png b/doc/building-blocks/emco/openness-emco-images/openness-emco-smtc.png similarity index 100% rename from doc/orchestration/openness-emco-images/openness-emco-smtc.png rename to doc/building-blocks/emco/openness-emco-images/openness-emco-smtc.png diff --git a/doc/orchestration/openness-emco-images/openness-emco-topology.png b/doc/building-blocks/emco/openness-emco-images/openness-emco-topology.png similarity index 100% rename from doc/orchestration/openness-emco-images/openness-emco-topology.png rename to doc/building-blocks/emco/openness-emco-images/openness-emco-topology.png diff --git a/doc/orchestration/openness-emco.md b/doc/building-blocks/emco/openness-emco.md similarity index 95% rename from doc/orchestration/openness-emco.md rename to doc/building-blocks/emco/openness-emco.md index ff10457b..f06bea42 100644 --- a/doc/orchestration/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -64,7 +64,7 @@ Additionally, once a Cluster is created, labels and key value pairs may be added > **NOTE**: The cluster provider is somebody who owns clusters and registers them to EMCO. If an Enterprise has clusters from say AWS, then the cluster provider for those clusters from AWS is still considered as from that Enterprise. AWS is not the provider. Here, the provider is somebody who owns clusters and registers them here. Since, AWS does not register their clusters here, AWS is not considered as Cluster provider in this context. #### Distributed Application Scheduler -The distrbuted application scheduler microservice provides functionalities: +The distributed application scheduler microservice provides functionalities: - Project Management provides multi-tenancy in the application from a user perspective - Composite App Management  manages composite apps that are collections of Helm Charts one per application - Composite Profile Management  manages composite profiles that are collections of profile one per application @@ -76,7 +76,7 @@ The distrbuted application scheduler microservice provides functionalities: - Action Controllers #### Network Configuration Management -The network configuratin mangement(NCM) microservice provdes functionalities: +The network configuratin management (NCM) microservice provides functionalities: - Provider Network Management to create provider networks - Virtual Network Management to create dynamic virtual networks - Controller Registration manages network plugin controllers, priorities etc. @@ -85,7 +85,7 @@ The network configuratin mangement(NCM) microservice provdes functionalities: #### Resource Syncronizer -This micro-services is the one which deploys the resources in edge/cloud clusters. 'Resource contexts' created by various micro-services are used by this micro-service. It will take care of retrying in case the remote clusters are not reachable temporarily. +This micro-service is the one which deploys the resources in edge/cloud clusters. 'Resource contexts' created by various micro-services are used by this micro-service. It will take care of retrying in case the remote clusters are not reachable temporarily. ### EMCO API @@ -100,7 +100,7 @@ Then Place the EMCO server hostname in `[controller_group]` group in `inventory. Run script `./deploy_ne.sh -f central_orchestrator`. Deployment should complete successfully. In the flavor, harbor registry will be deployed to provide images services as well. -## Practice with EMCO: SmartCityp Deployment +## Practice with EMCO: SmartCity Deployment One OpenNESS edge nodes (representing regional office) and One legacy K8s Cluster (repsenting cloud) are connected to the OpenNESS EMCO cluster. Smart City application is a sample application that is built on top of the OpenVINO & Open Visual Cloud software stacks for media processing and analytics. The whole application is composed of two parts: EdgeApp(multiple OpenNESS edge clusters) and WebApp(cloud application for additional post-processing such as calculating statistics and display/visualization) as shown as below diagram. ![OpenNESS EMCO](openness-emco-images/openness-emco-smtc.png) From 716fe8c8eee95c3596c7d51fb7881fbc09e8fb14 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Tue, 1 Dec 2020 13:18:26 +0800 Subject: [PATCH 057/148] add titles and initial content for smartcity deployment --- doc/building-blocks/emco/openness-emco.md | 112 +++++++++++++++++++++- 1 file changed, 109 insertions(+), 3 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index f06bea42..8d40d634 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -9,6 +9,7 @@ Copyright (c) 2020 Intel Corporation - [EMCO Introduction](#emco-introduction) - [EMCO Architecture](#emco-architecture) - [EMCO API](#emco-api) + - [EMCO Authentication](#emco-auth) - [EMCO Installation](#emco-installation) - [Practice with EMCO: SmartCityp Deployment](#smartcity-deployment-with-emco) @@ -36,9 +37,9 @@ All the manged edge clusters and cloud clusters will be connected with EMCO clus - The central orchestration (EMCO) cluster installation can use [OpenNESS Central Orchestrator Flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md). - The edge clusters in the diagram can be installed and provisioned by using [OpenNESS Media Analytics Flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md) - The cloud cluster in the diagram can be any types of cloud clusters, for example: Azure Cloud. -- The composite application - SmartCity is composed of two parts: edge applications and web applications. +- The composite application - SmartCity is composed of two parts: edge applications and cloud (web) applications. - The edge application executes media processing and analytics on the multiple edge clusters to reduce latency. - - The web application is kinds of cloud application for additional post-processing such as calculating statistics and display/visualization on the cloud cluster side. + - The cloud application is kind of web application for additional post-processing such as calculating statistics and display/visualization on the cloud cluster side. - EMCO user can deploy the smart city applications across the clusters. Besides that, EMCO supports override values profiles for operator to satisfy the need of deployments. - More details about refer to [SmartCity Deployment Practise with EMCO](#smartcity-deployment-with-emco). @@ -92,6 +93,16 @@ This micro-service is the one which deploys the resources in edge/cloud clusters For user interaction, EMCO provides [RESTAPI](https://github.com/otcshare/EMCO/blob/main/docs/emco_apis.yaml). Apart from that, EMCO also provides CLI. For the detailed usage, refer to [EMCO CLI](https://github.com/otcshare/EMCO/tree/main/src/tools/emcoctl) > **NOTE**: The EMCO REST API is the foundation for the other interaction facilities like the EMCO CLI and even EMCO GUI (3rd party developed right now) +### EMCO Authentication (FFS - Ritu) +EMCO uses Istio and other open source solutions to provide Multi-tenancy solution leveraging Istio Authorization and Authentication frameworks. This is achieved without adding any logic in EMCO microservices. +- Authentication for the EMCO users are done at the Isito Gateway, where all the traffic enters the cluster. +- Istio along with autherservice (istio ecosystem project) enables request-level authentication with JSON Web Token (JWT) validation. +- This can be achieved using a custom authentication provider or any OpenID Connect providers like KeyCloak, Auth0 etc. + +Steps for EMCO Authentication Setup: +- step1 FFS +- step2 FFS + ### EMCO Installation The first step is to prepare one server envionment which need to fulfill the [Preconditions](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#preconditions). @@ -156,4 +167,99 @@ Using config file: local-cfg.yaml http://192.168.121.103:31298/v2URL: controllers Response Code: 201 ``` -### Create Cluster Provider +### Cluster Provider Creation and Clusters Registration + + + +### SmartCity Application Deployment +#### Step1: Prepare SmartCity Images, Helm Chart and Override Profiles +On the OpenNESS EMCO cluster. follow the guidance and commands as below: + ```shell + #Install cmake and m4 tools if not installed already + yum install cmake m4 -y + + #On the OpenNESS EMCO cluster, clone the Smart City Reference Pipeline source code from GitHub and checkout the 577d483635856c1fa3ff0fbc051c6408af725712 commits + git clone https://github.com/OpenVisualCloud/Smart-City-Sample.git + cd Smart-City-Sample + git checkout 577d483635856c1fa3ff0fbc051c6408af725712 + + #build the SmartCity images + mkdir build + cd build + cmake -DNOFFICES=2 -DREGISTRY=/library # if you leave DREGISTRY empty, you need to follow the tag and push steps below + ../deployment/kubernetes/helm/build.sh + make + make tunnels + + # docker tag above image and push them to harbor registry(manually push images to registry when DREGISTRY empty) + docker tag smtc_database_tunnelled:latest /library/smtc_database_tunnelled:latest + docker tag smtc_storage_manager_tunnelled:latest /library/smtc_storage_manager_tunnelled:latest + docker tag smtc_smart_upload_tunnelled:latest /library/smtc_smart_upload_tunnelled:latest + docker tag smtc_sensor_simulation:latest /library/smtc_sensor_simulation:latest + docker tag smtc_onvif_discovery:latest /library/smtc_onvif_discovery:latest + docker tag smtc_db_init:latest /library/smtc_db_init:latest + docker tag smtc_alert:latest /library/smtc_alert:latest + docker tag smtc_analytics_object_xeon_gst:latest /library/smtc_analytics_object_xeon_gst:latest + docker tag smtc_mqtt2db:latest /library/smtc_mqtt2db:latest + docker tag smtc_certificate:latest /library/smtc_certificate:latest + docker tag smtc_web_cloud_tunnelled:latest /library/smtc_web_cloud_tunnelled:latest + docker tag smtc_common:latest /library/smtc_common:latest + docker tag eclipse-mosquitto:1.5.8 /library/eclipse-mosquitto:1.5.8 + # push all images to harbor registry after tagging them with 'docker push' command, as follows: + docker push /library/ + ``` + +Make sure the following images list exsiting in the harbor registry project - `library` + ```text + - smtc_database_tunnelled:latest + - smtc_storage_manager_tunnelled:latest + - smtc_smart_upload_tunnelled:latest + - smtc_sensor_simulation:latest + - smtc_onvif_discovery:latest + - smtc_db_init:latest + - smtc_alert:latest + - smtc_analytics_object_xeon_gst:latest + - smtc_mqtt2db:latest + - smtc_certificate:latest + - smtc_web_cloud_tunnelled:latest + - smtc_common:latest + - eclipse-mosquitto:1.5.8 + ``` + +Packing the helm chart files used by SmartCity `edge` application and put them under `/opt`. + ```shell + cd Smart-City-Sample/deployment/kubernetes/helm + cp -r smtc smtc_edge_helmchart + rm smtc_edge_helmchart/templates/cloud* -rf + tar -zcvf smtc_edge_helmchart.tar.gz smtc_edge_helmchart + mv smtc_edge_helmchart.tar.gz /opt + ``` + +Packing the helm chart files used by SmartCity `cloud` application and put them under `/opt`. + ```shell + cp -r smtc smtc_cloud_helmchart + rm smtc_cloud_helmchart/templates/* -rf + cp smtc/templates/*.tpl smtc_cloud_helmchart/templates/ + cp smtc/templates/cloud* smtc_cloud_helmchart/templates/ + tar -zcvf smtc_cloud_helmchart.tar.gz smtc_cloud_helmchart + mv smtc_cloud_helmchart.tar.gz /opt + ``` + +Prepare Override Profiles - `manifest.yaml` file as below: +```yaml +--- +version: v1 +type: + values: "override_values.yaml" +``` + +Prepare Override Profiles - `override_values.yaml` file with empty content, +Pack the two files together as two tarball: `smtc_edge_profile.tar.gz` and `smtc_cloud_profile.tar.gz`. + + +#### Step2: Onboard Helm Chart and Override Profiles + + +#### Step3: Set Deployment Intent + +#### Step4: Approve and Instantiate From 68e9b7916ad0e0e23f48f262ae4f483ada6b57c1 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Tue, 1 Dec 2020 20:56:57 +0800 Subject: [PATCH 058/148] update navbars accordinglly --- _data/navbars/building-blocks.yml | 10 +++++++++- doc/building-blocks/emco/openness-emco.md | 7 ++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/_data/navbars/building-blocks.yml b/_data/navbars/building-blocks.yml index b97fe0d7..41eb937a 100644 --- a/_data/navbars/building-blocks.yml +++ b/_data/navbars/building-blocks.yml @@ -3,7 +3,7 @@ title: "Building Blocks" path: /building-blocks/ -order: 2 +order: 3 section: - title: Data Plane path: @@ -23,6 +23,14 @@ section: meta_title: OpenNESS Userspace CNI, Setup Userspace CNI meta_description: Userspace CNI is a Container Network Interface Kubernetes plugin that was designed to simplify the process of deployment of DPDK based applications in Kubernetes pods. + - title: "Edge Multiple Clusters Orchestration" + path: + section: + - title: EMCO Support + path: /doc/building-blocks/emco/openness-emco + meta_title: Edge Multiple Clusters Orchestration Support in OpenNESS + meta_description: OpenNESS provides applications orchestration for geo-distributed multiple clusters. + - title: "Enhanced Platform Awareness" path: section: diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 8d40d634..11b21afb 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -112,7 +112,12 @@ Then Place the EMCO server hostname in `[controller_group]` group in `inventory. Run script `./deploy_ne.sh -f central_orchestrator`. Deployment should complete successfully. In the flavor, harbor registry will be deployed to provide images services as well. ## Practice with EMCO: SmartCity Deployment -One OpenNESS edge nodes (representing regional office) and One legacy K8s Cluster (repsenting cloud) are connected to the OpenNESS EMCO cluster. Smart City application is a sample application that is built on top of the OpenVINO & Open Visual Cloud software stacks for media processing and analytics. The whole application is composed of two parts: EdgeApp(multiple OpenNESS edge clusters) and WebApp(cloud application for additional post-processing such as calculating statistics and display/visualization) as shown as below diagram. +- One OpenNESS edge cluster (representing regional office) and One legacy K8s Cluster (representing cloud) are connected to the OpenNESS EMCO cluster. +- Smart City application is a sample application that is built on top of the OpenVINO & Open Visual Cloud software stacks for media processing and analytics. + - The whole application is composed of two parts: + - EdgeApp (multiple OpenNESS edge clusters) + - WebApp (cloud application for additional post-processing such as calculating statistics and display/visualization) +- The whole deployment architecture diagram is shown as below: ![OpenNESS EMCO](openness-emco-images/openness-emco-smtc.png) The following are the typical steps involved in the cluster registration and deployment of the application using OpenNESS EMCO. From b710226ef5c38581eb6c9d3eb587d8cb58b5edc1 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Tue, 1 Dec 2020 22:52:35 +0800 Subject: [PATCH 059/148] add figure captions and update docs link with relative link --- _data/navbars/building-blocks.yml | 18 +++++++++--------- doc/architecture.md | 2 +- doc/building-blocks/emco/openness-emco.md | 11 +++++++---- doc/flavors.md | 2 +- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/_data/navbars/building-blocks.yml b/_data/navbars/building-blocks.yml index 41eb937a..4bbb3d8c 100644 --- a/_data/navbars/building-blocks.yml +++ b/_data/navbars/building-blocks.yml @@ -3,7 +3,7 @@ title: "Building Blocks" path: /building-blocks/ -order: 3 +order: 2 section: - title: Data Plane path: @@ -23,14 +23,6 @@ section: meta_title: OpenNESS Userspace CNI, Setup Userspace CNI meta_description: Userspace CNI is a Container Network Interface Kubernetes plugin that was designed to simplify the process of deployment of DPDK based applications in Kubernetes pods. - - title: "Edge Multiple Clusters Orchestration" - path: - section: - - title: EMCO Support - path: /doc/building-blocks/emco/openness-emco - meta_title: Edge Multiple Clusters Orchestration Support in OpenNESS - meta_description: OpenNESS provides applications orchestration for geo-distributed multiple clusters. - - title: "Enhanced Platform Awareness" path: section: @@ -93,3 +85,11 @@ section: path: /doc/building-blocks/enhanced-platform-awareness/openness-kubernetes-dashboard meta_title: Kubernetes Dashboard in OpenNESS meta_description: OpenNESS supports Kubernetes Dashboard that can be used to inspect and manage Kubernetes cluster. + + - title: "Edge Multiple Clusters Orchestration" + path: + section: + - title: EMCO Support + path: /doc/building-blocks/emco/openness-emco + meta_title: Edge Multiple Clusters Orchestration Support in OpenNESS + meta_description: OpenNESS provides applications orchestration for geo-distributed multiple clusters. diff --git a/doc/architecture.md b/doc/architecture.md index d7f3c913..403d7b08 100644 --- a/doc/architecture.md +++ b/doc/architecture.md @@ -230,7 +230,7 @@ Under the application node, the following flavors are supported: ### Orchestration node flavor Orchestration node here typically refers to central orchestration node deployed on the central cloud. It can orchestrate applications across edge clusters and cloud clusters with different locations. -More details refer to [EMCO White Paper](https://github.com/otcshare/specs/blob/master/doc/orchestration/openness-emco.md). +More details refer to [EMCO White Paper](building-blocks/emco/openness-emco.md). ### Microsoft Azure OpenNESS This flavor supports the installation of an OpenNESS Kubernetes cluster on a Microsoft\* Azure\* VM. This is typically used by a customer who requires the same Kubernetes cluster service on multiple clouds. diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 11b21afb..017b5699 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -34,8 +34,8 @@ The below figure shows the topology overview for the OpenNESS EMCO orchestration _Figure - Topology Overview with OpenNESS EMCO_ All the manged edge clusters and cloud clusters will be connected with EMCO cluster through WAN network. -- The central orchestration (EMCO) cluster installation can use [OpenNESS Central Orchestrator Flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md). -- The edge clusters in the diagram can be installed and provisioned by using [OpenNESS Media Analytics Flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md) +- The central orchestration (EMCO) cluster installation can use [OpenNESS Central Orchestrator Flavor](../../flavors.md). +- The edge clusters in the diagram can be installed and provisioned by using [OpenNESS Media Analytics Flavor](../../flavors.md) - The cloud cluster in the diagram can be any types of cloud clusters, for example: Azure Cloud. - The composite application - SmartCity is composed of two parts: edge applications and cloud (web) applications. - The edge application executes media processing and analytics on the multiple edge clusters to reduce latency. @@ -43,11 +43,12 @@ All the manged edge clusters and cloud clusters will be connected with EMCO clus - EMCO user can deploy the smart city applications across the clusters. Besides that, EMCO supports override values profiles for operator to satisfy the need of deployments. - More details about refer to [SmartCity Deployment Practise with EMCO](#smartcity-deployment-with-emco). -This document aims to familiarize the user with [OpenNESS deployment flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md) for EMCO installation and provsion, and provide instructions accordingly. +This document aims to familiarize the user with [OpenNESS deployment flavor](../../flavors.md) for EMCO installation and provsion, and provide instructions accordingly. ## EMCO Introduction ### EMCO Architecture The following diagram depicts a high level overview of the EMCO architecture. ![OpenNESS EMCO](openness-emco-images/openness-emco-arch.png) +_Figure - EMCO Architecture_ - Cluster Registration Controller registers clusters by cluster owners. - Distributed Application Scheduler provides simplified, and extensible placement. - Network Configuration Management handles creation/management of virtual and provider networks. @@ -104,7 +105,7 @@ Steps for EMCO Authentication Setup: - step2 FFS ### EMCO Installation -The first step is to prepare one server envionment which need to fulfill the [Preconditions](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#preconditions). +The first step is to prepare one server envionment which need to fulfill the [Preconditions](../../getting-started/network-edge/controller-edge-node-setup.md#preconditions). Then Place the EMCO server hostname in `[controller_group]` group in `inventory.ini` file of openness-experience-kit. > **NOTE**: `[edgenode_group]` and `[edgenode_vca_group]` are not required for configuration, since EMCO micro services just need to deployed on the kubernetes control plane node. @@ -120,6 +121,8 @@ Run script `./deploy_ne.sh -f central_orchestrator`. Deployment should complete - The whole deployment architecture diagram is shown as below: ![OpenNESS EMCO](openness-emco-images/openness-emco-smtc.png) +_Figure - SmartCity Deployment Architecture Overview_ + The following are the typical steps involved in the cluster registration and deployment of the application using OpenNESS EMCO. - Prerequisites - Make One OpenNESS Edge Cluster Ready with any OpenNESS Flavor (OpenNESS Application Node Flavor is proposed) diff --git a/doc/flavors.md b/doc/flavors.md index 4c2e073f..b4f46947 100644 --- a/doc/flavors.md +++ b/doc/flavors.md @@ -163,7 +163,7 @@ This deployment flavor enables the following ingredients: ## Orchestration Flavor -The pre-defined *orchestration* deployment flavor provisions an optimized system configuration for emco (central orchestrator) workloads on Intel Xeon servers. It also provisions a set of central orchestrator services for [edge, multiple clusters orchestration](https://github.com/otcshare/specs/blob/master/doc/orchestration/openness-emco.md). +The pre-defined *orchestration* deployment flavor provisions an optimized system configuration for emco (central orchestrator) workloads on Intel Xeon servers. It also provisions a set of central orchestrator services for [edge, multiple clusters orchestration](building-blocks/emco/openness-emco.md). Steps to install this flavor are as follows: 1. Configure OEK as described in the [OpenNESS Getting Started Guide for Network Edge](getting-started/network-edge/controller-edge-node-setup.md). From f8502c79475c7e46a2ba5006ee4923a4f504b748 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Wed, 2 Dec 2020 09:31:34 +0800 Subject: [PATCH 060/148] EMCO should be edge multi-cloud orchestrator --- _data/navbars/building-blocks.yml | 8 ++++---- doc/building-blocks/emco/openness-emco.md | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/_data/navbars/building-blocks.yml b/_data/navbars/building-blocks.yml index 4bbb3d8c..2defe73b 100644 --- a/_data/navbars/building-blocks.yml +++ b/_data/navbars/building-blocks.yml @@ -86,10 +86,10 @@ section: meta_title: Kubernetes Dashboard in OpenNESS meta_description: OpenNESS supports Kubernetes Dashboard that can be used to inspect and manage Kubernetes cluster. - - title: "Edge Multiple Clusters Orchestration" + - title: "Edge Multi-Cloud Orchestrator" path: section: - - title: EMCO Support + - title: EMCO White Paper path: /doc/building-blocks/emco/openness-emco - meta_title: Edge Multiple Clusters Orchestration Support in OpenNESS - meta_description: OpenNESS provides applications orchestration for geo-distributed multiple clusters. + meta_title: Edge Multi-Cloud Orchestrator Support in OpenNESS + meta_description: OpenNESS provides Geo-Distributed multiple clusters application orchestration. diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 017b5699..7e15755d 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -2,9 +2,9 @@ SPDX-License-Identifier: Apache-2.0 Copyright (c) 2020 Intel Corporation ``` -# Multiple Clusters Orchestration(EMCO) support in OpenNESS +# Edge Multi-Cloud Orchestrator (EMCO) support in OpenNESS -- [Multiple Clusters Orchestration(EMCO) support in OpenNESS](#emco-support-in-openness) +- [Edge Multi-Clould Orchestrator (EMCO) support in OpenNESS](#emco-support-in-openness) - [Background](#background) - [EMCO Introduction](#emco-introduction) - [EMCO Architecture](#emco-architecture) @@ -14,7 +14,7 @@ Copyright (c) 2020 Intel Corporation - [Practice with EMCO: SmartCityp Deployment](#smartcity-deployment-with-emco) ## Background -EMCO(Edge Multiple Clusters Orchestration) is Geo distributed application orchestrator for Kubernetes\*. The main objective of EMCO is automation of the deployment of applications and services across clusters. It acts as a central orchestrator that can manage edge services and network functions across geographically distributed edge clusters from different 3rd parties. Finally, the resource orchestration within a cluster of nodes will leverage Kubernetes and Helm charts. +EMCO(Edge Multi-Cloud Orchestration) is Geo distributed application orchestrator for Kubernetes\*. The main objective of EMCO is automation of the deployment of applications and services across clusters. It acts as a central orchestrator that can manage edge services and network functions across geographically distributed edge clusters from different 3rd parties. Finally, the resource orchestration within a cluster of nodes will leverage Kubernetes and Helm charts. It address the need for deploying 'composite applications' in multiple geographical locations. Few industry communities started to use the term 'composite application' to represent these complex applications & deployments. > **NOTE**: Composite application is combination of multiple applications. Based on the deployment intent, various applications of the composite application get deployed at various locations, and get replicated in multiple locations. From b783a8caa9b22b796add3e1f64ef22d016e127b4 Mon Sep 17 00:00:00 2001 From: Karina Murawko-Wisniewska <48431435+i-karina@users.noreply.github.com> Date: Thu, 3 Dec 2020 16:06:30 +0100 Subject: [PATCH 061/148] Path update (#362) --- .../openness-network-edge-vm-support.md | 20 +++++++++---------- .../using-openness-cnca.md | 4 ++-- .../openness-fpga.md | 6 +++--- doc/orchestration/openness-helm.md | 4 ++-- .../core-network/openness_upf.md | 4 ++-- .../ran/openness_xran.md | 2 +- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/doc/applications-onboard/openness-network-edge-vm-support.md b/doc/applications-onboard/openness-network-edge-vm-support.md index b7bf3102..9bdf094f 100644 --- a/doc/applications-onboard/openness-network-edge-vm-support.md +++ b/doc/applications-onboard/openness-network-edge-vm-support.md @@ -139,7 +139,7 @@ To deploy a sample stateless VM with containerDisk storage: 1. Deploy the VM: ```shell - [root@controller ~]# kubectl create -f /opt/edgenode/edgecontroller/kubevirt/examples/statelessVM.yaml + [root@controller ~]# kubectl create -f /opt/openness/edgenode/edgecontroller/kubevirt/examples/statelessVM.yaml ``` 2. Start the VM: ```shell @@ -168,7 +168,7 @@ To deploy a sample stateful VM with persistent storage and additionally use a Ge - Edit the sample yaml with the hostname of the node: ```yaml - # /opt/edgenode/edgecontroller/kubevirt/examples/persistentLocalVolume.yaml + # /opt/openness/edgenode/edgecontroller/kubevirt/examples/persistentLocalVolume.yaml # For both kv-pv0 and kv-pv1, enter the correct hostname: - key: kubernetes.io/hostname operator: In @@ -177,7 +177,7 @@ To deploy a sample stateful VM with persistent storage and additionally use a Ge ``` - Create the PV: ```shell - [root@controller ~]# kubectl create -f /opt/edgenode/edgecontroller/kubevirt/examples/persistentLocalVolume.yaml + [root@controller ~]# kubectl create -f /opt/openness/edgenode/edgecontroller/kubevirt/examples/persistentLocalVolume.yaml ``` - Check that PV is created: ```shell @@ -230,7 +230,7 @@ To deploy a sample stateful VM with persistent storage and additionally use a Ge ``` 8. Edit the .yaml file for the VM with the updated public key: ```yaml - # /opt/edgenode/edgecontroller/kubevirt/examples/cloudGenericVM.yaml + # /opt/openness/edgenode/edgecontroller/kubevirt/examples/cloudGenericVM.yaml users: - name: root password: root @@ -240,7 +240,7 @@ To deploy a sample stateful VM with persistent storage and additionally use a Ge ``` 9. Deploy the VM: ```shell - [root@controller ~]# kubectl create -f /opt/edgenode/edgecontroller/kubevirt/examples/cloudGenericVM.yaml + [root@controller ~]# kubectl create -f /opt/openness/edgenode/edgecontroller/kubevirt/examples/cloudGenericVM.yaml ``` 10. Start the VM: ```shell @@ -264,7 +264,7 @@ To deploy a sample stateful VM with persistent storage and additionally use a Ge To deploy a VM requesting SRIOV VF of NIC: 1. Bind the SRIOV interface to the VFIO driver on Edge Node: ```shell - [root@node ~]# /opt/dpdk-18.11.6/usertools/dpdk-devbind.py --bind=vfio-pci + [root@node ~]# /opt/openness/dpdk-18.11.6/usertools/dpdk-devbind.py --bind=vfio-pci ``` 2. Delete/Restart SRIOV device plugin on the node: ```shell @@ -290,7 +290,7 @@ To deploy a VM requesting SRIOV VF of NIC: ``` 4. Deploy the VM requesting the SRIOV device (if a smaller amount is available on the platform, adjust the number of HugePages required in the .yaml file): ```shell - [root@controller ~]# kubectl create -f /opt/edgenode/edgecontroller/kubevirt/examples/sriovVM.yaml + [root@controller ~]# kubectl create -f /opt/openness/edgenode/edgecontroller/kubevirt/examples/sriovVM.yaml ``` 5. Start the VM: ```shell @@ -396,7 +396,7 @@ kubectl apply -f cdiUploadCentosDvToleration.yaml sleep 5 -kubectl create -f /opt/edgenode/edgecontroller/kubevirt/examples/persistentLocalVolume.yaml +kubectl create -f /opt/openness/edgenode/edgecontroller/kubevirt/examples/persistentLocalVolume.yaml ``` ## Useful Commands and Troubleshooting @@ -427,9 +427,9 @@ Check that the IP address of the `cdi-upload-proxy` is correct and that the Netw ``` 2. Cannot SSH to stateful VM with Cloud Generic Image due to the public key being denied. -Confirm that the public key provided in `/opt/edgenode/edgecontroller/kubevirt/examples/cloudGenericVM.yaml` is valid and in a correct format. Example of a correct format: +Confirm that the public key provided in `/opt/openness/edgenode/edgecontroller/kubevirt/examples/cloudGenericVM.yaml` is valid and in a correct format. Example of a correct format: ```yaml - # /opt/edgenode/edgecontroller/kubevirt/examples/cloudGenericVM.yaml + # /opt/openness/edgenode/edgecontroller/kubevirt/examples/cloudGenericVM.yaml users: - name: root password: root diff --git a/doc/applications-onboard/using-openness-cnca.md b/doc/applications-onboard/using-openness-cnca.md index ce3063e2..eb4ec045 100644 --- a/doc/applications-onboard/using-openness-cnca.md +++ b/doc/applications-onboard/using-openness-cnca.md @@ -139,7 +139,7 @@ OpenNESS provides ansible scripts for setting up NGC components for two scenario 4. After all the PODs are successfully up and running, few AF and OAM configuration parameters need to be updated (as per your deployment configuration) and then re-start the AF. - * Open the file `/etc/openness/configs/ngc/af.json` and modify the below parameters. + * Open the file `/opt/openness/configs/ngc/af.json` and modify the below parameters. * `"UIEndpoint": "http://localhost:3020"` : Replace the `localhost` with `IP Address` of edge-controller, and no change to port number. * `"NEFHostname": "localhost"` : Replace the `localhost` with `nefservice` ie., service name NEF POD. * Save and exit. @@ -151,7 +151,7 @@ OpenNESS provides ansible scripts for setting up NGC components for two scenario ![NGC list of PODS](using-openness-cnca-images/ngc_af_service_config_log.png) 5. To update OAM configuration and restart OAM micro service: - * Open the file `/etc/openness/configs/ngc/oam.json` and modify the below parameters. + * Open the file `/opt/openness/configs/ngc/oam.json` and modify the below parameters. * `"UIEndpoint": "http://localhost:3020"` : Replace the `localhost` with `IP Address` of edge-controller, and no change to port number. * Save and exit. * Now restart OAM POD using the below command: diff --git a/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md b/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md index 831a7408..228a68a6 100644 --- a/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md +++ b/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md @@ -248,11 +248,11 @@ spec: ![PACN3000 telemetry](fpga-images/openness-fpga4.png) ### FEC VF configuration for OpenNESS Network Edge -To configure the VFs with the necessary number of queues for the vRAN workload the BBDEV configuration utility is run as a job within a privileged container. The configuration utility is available to run as a Helm chart available from `/opt/openness-helm-charts/fpga_config`. +To configure the VFs with the necessary number of queues for the vRAN workload the BBDEV configuration utility is run as a job within a privileged container. The configuration utility is available to run as a Helm chart available from `/opt/openness/helm-chartss/fpga_config`. -Sample configMap, which can be configured by changing values if other than typical config is required, with a profile for the queue configuration is provided as part of Helm chart template `/opt/openness-helm-charts/fpga_config/templates/fpga-config.yaml` populated with values from `/opt/openness-helm-charts/fpga_config/values.yaml`. Helm chart installation requires a provision of hostname for the target node during job deployment. +Sample configMap, which can be configured by changing values if other than typical config is required, with a profile for the queue configuration is provided as part of Helm chart template `/opt/openness/helm-chartss/fpga_config/templates/fpga-config.yaml` populated with values from `/opt/openness/helm-chartss/fpga_config/values.yaml`. Helm chart installation requires a provision of hostname for the target node during job deployment. -Install the Helm chart by providing configmap and BBDEV config utility job with the following command from `/opt/openness-helm-charts/` on Edge Controller: +Install the Helm chart by providing configmap and BBDEV config utility job with the following command from `/opt/openness/helm-chartss/` on Edge Controller: ```shell helm install --set nodeName= intel-fpga-cfg fpga_config diff --git a/doc/orchestration/openness-helm.md b/doc/orchestration/openness-helm.md index f12acb7f..d5a5ec07 100644 --- a/doc/orchestration/openness-helm.md +++ b/doc/orchestration/openness-helm.md @@ -55,12 +55,12 @@ OpenNESS provides the following helm charts: The EPA, Telemetry, and k8s plugins helm chart files will be saved in a specific directory on the OpenNESS controller. To modify the directory, change the following variable `ne_helm_charts_default_dir` in the `group_vars/all/10-default.yml` file: ```yaml - ne_helm_charts_default_dir: /opt/openness-helm-charts/ + ne_helm_charts_default_dir: /opt/openness/helm-chartss/ ``` To check helm charts files, run the following command on the OpenNESS controller: ```bash - $ ls /opt/openness-helm-charts/ + $ ls /opt/openness/helm-chartss/ vpu-plugin gpu-plugin node-feature-discovery prometheus ``` diff --git a/doc/reference-architectures/core-network/openness_upf.md b/doc/reference-architectures/core-network/openness_upf.md index ab538e61..83058f29 100644 --- a/doc/reference-architectures/core-network/openness_upf.md +++ b/doc/reference-architectures/core-network/openness_upf.md @@ -139,9 +139,9 @@ Below is a list of minimal configuration parameters for VPP-based applications s 3. Enable the vfio-pci/igb-uio driver on the node. The below example shows the enabling of the `igb_uio` driver: ```bash - ne-node# /opt/dpdk-18.11.6/usertools/dpdk-devbind.py -b igb_uio 0000:af:0a.0 + ne-node# /opt/openness/dpdk-18.11.6/usertools/dpdk-devbind.py -b igb_uio 0000:af:0a.0 - ne-node# /opt/dpdk-18.11.6/usertools/dpdk-devbind.py --status + ne-node# /opt/openness/dpdk-18.11.6/usertools/dpdk-devbind.py --status Network devices using DPDK-compatible driver ============================================ 0000:af:0a.0 'Ethernet Virtual Function 700 Series 154c' drv=igb_uio unused=i40evf,vfio-pci diff --git a/doc/reference-architectures/ran/openness_xran.md b/doc/reference-architectures/ran/openness_xran.md index 44d618e3..dd2f4966 100644 --- a/doc/reference-architectures/ran/openness_xran.md +++ b/doc/reference-architectures/ran/openness_xran.md @@ -597,7 +597,7 @@ Next, the VFs need to be manually bound to the `vfio-pci` driver using the follo Example: ```shell - /opt/dpdk-19.11/usertools/dpdk-devbind.py --bind=vfio_pci 0000:86:0a.1 + /opt/openness/dpdk-19.11/usertools/dpdk-devbind.py --bind=vfio_pci 0000:86:0a.1 ``` Restart the SRIOV device plugin pods from the K8s control plane. From 7f79887dbe0bdbfa83287ce2e7371c521dab53a1 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Sat, 5 Dec 2020 14:15:00 +0800 Subject: [PATCH 062/148] add more content about smtc deploy --- doc/building-blocks/emco/openness-emco.md | 351 ++++++++++++++++++++-- 1 file changed, 326 insertions(+), 25 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 7e15755d..0a4b0b09 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -134,8 +134,20 @@ The following are the typical steps involved in the cluster registration and dep - Create Project - DeploySmartCity Application -### EMCO Configuration -After [EMCO Installation](#emco-installation), logon the EMCO server, and prepare EMCO CLI `local-cfg.yaml` file as below +### EMCO Configuration (SunHui TBD) + +1. After [EMCO Installation](#emco-installation), logon the EMCO server. And check ports used by EMCO micro services as below (SunHui TBD): +```shell + +``` + +2. To allow EMCO CLI communicate with EMCO microservices, need to open firewall port for the EMCO micro services as below (SunHui TBD, can it be automated by emco flavor??): +```shell +firewall-cmd --zone=public --permanent --add-port xxx/tcp +firewall-cmd --reload +``` + +3. Prepare EMCO CLI configuration file - `remote.yaml` file as below: ```yaml orchestrator: host: localhost @@ -148,39 +160,171 @@ After [EMCO Installation](#emco-installation), logon the EMCO server, and prepar port: 32737 ovnaction: host: localhost - port: 31072 + port: 31181 dcm: host: localhost port: 31877 ``` -Prepared EMCO controller resource files for resource synchronization - 'controller.yaml' file as below +4. Prepare EMCO CLI values file - `values.yaml` file as below: +```yaml +ProjectName: project_smtc +ClusterProvider: smartcity-cluster-provider +ClusterEdge: edge01 +ClusterCloud: cloud01 +ClusterLogicEdge: lc-edge01 +ClusterLogicCloud: lc-cloud01 +AdminCloud: default +ComposteApp: composite_smtc +AppEdge: smtc_edge +AppCloud: smtc_cloud +KubeConfigEdge: /opt/clusters_config/edgecluster_config +KubeConfigCloud: /opt/clusters_config/cloudcluster_config +HelmEdgeApp: /opt/smtc_edge_helmchart.tar.gz +HelmCloudApp: /opt/smtc_cloud_helmchart.tar.gz +ProfileEdgeApp: /opt/smtc_edge_profile.tar.gz +ProfileCloudApp: /opt/smtc_cloud_profile.tar.gz +DeploymentIntent: smtc-deployment-intent-group +RsyncHost: 192.168.121.103 +RsyncPort: 32389 +``` +> **NOTE:** RsyncHost IP address should be real IP address of EMCO host server. + + +5. Prepared EMCO controller resource files for resource synchronization - 'controllers_template.yaml' file as below: ```yaml --- version: emco/v2 resourceContext: anchor: controllers -metadata : +metadata: name: rsync spec: - host: "192.168.121.103" - port: 30546 + host: {{ .RsyncHost }} + port: {{ .RsyncPort }} ``` -> **NOTE**: `192.168.121.103` is example IP address of EMCO server. -Use EMCO CLI to create the controller entry with expected result as below: +6. Use EMCO CLI to create the controller entry with expected result as below: ```shell -# /opt/emco/bin/emcoctl/emcoctl --config local-cfg.yaml apply -f controllers.yaml -Using config file: local-cfg.yaml +# /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f controllers_template.yaml +Using config file: remote.yaml http://192.168.121.103:31298/v2URL: controllers Response Code: 201 ``` ### Cluster Provider Creation and Clusters Registration +Prepare resource yaml file - `clusters_template.yaml` as below: +```yaml +--- +#clusters provider +version: emco/v2 +resourceContext: + anchor: cluster-providers +metadata: + name: {{ .ClusterProvider }} + +--- +#edge cluster +version: emco/v2 +resourceContext: + anchor: cluster-providers/{{ .ClusterProvider }}/clusters +metadata: + name: {{ .ClusterEdge }} +file: {{ .KubeConfigEdge }} + +--- +#Add label to the edge cluster +version: emco/v2 +resourceContext: + anchor: cluster-providers/{{ .ClusterProvider }}/clusters/{{ .ClusterEdge }}/labels +label-name: LabelSmartCityEdge + +--- +#cloud cluster +version: emco/v2 +resourceContext: + anchor: cluster-providers/{{ .ClusterProvider }}/clusters +metadata: + name: {{ .ClusterCloud }} +file: {{ .KubeConfigCloud }} + +--- +#Add label to the cloud cluster +version: emco/v2 +resourceContext: + anchor: cluster-providers/{{ .ClusterProvider }}/clusters/{{ .ClusterCloud }}/labels +label-name: LabelSmartCityCloud + +``` + +Use EMCO CLI to apply the resource yaml file with expected result as below: +```shell +# /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f clusters_template.yaml + +``` + +### SmartCity Projects and Logical Clouds Creation +Prepare resource yaml file - `projects_template.yaml` and apply it as below: +```yaml +#create project +version: emco/v2 +resourceContext: + anchor: projects +metadata: + name: {{ .ProjectName }} + +#create default logical cloud with admin permissions +--- +version: emco/v2 +resourceContext: + anchor: projects/{{ .ProjectName }}/logical-clouds +metadata: + name: {{ .AdminCloud }} +spec: + level: "0" + +#add cluster reference to logical cloud +--- +version: emco/v2 +resourceContext: + anchor: projects/{{ .ProjectName }}/logical-clouds/{{ .AdminCloud }}/cluster-references +metadata: + name: {{ .ClusterLogicEdge }} +spec: + cluster-provider: {{ .ClusterProvider }} + cluster-name: {{ .ClusterEdge }} + loadbalancer-ip: "0.0.0.0" + +#instantiate logical cloud +--- +version: emco/v2 +resourceContext: + anchor: projects/{{ .ProjectName }}/logical-clouds/{{ .AdminCloud }}/instantiate + +``` + +```shell +# /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f projects_template.yaml + +``` + +### SmartCity Composite Application Entry Creation +Prepare resource yaml file - `composite_apps_template.yaml` and apply it as below: +```yaml +#creating smartcity composite app entry +--- +version: emco/v2 +resourceContext: + anchor: projects/{{ .ProjectName }}/composite-apps +metadata: + name: {{ .ComposteApp }} +spec: + version: v1 +``` ### SmartCity Application Deployment -#### Step1: Prepare SmartCity Images, Helm Chart and Override Profiles +#### Prepare SmartCity Images, Helm Chart and Override Profiles On the OpenNESS EMCO cluster. follow the guidance and commands as below: ```shell #Install cmake and m4 tools if not installed already @@ -237,20 +381,20 @@ Make sure the following images list exsiting in the harbor registry project - `l Packing the helm chart files used by SmartCity `edge` application and put them under `/opt`. ```shell cd Smart-City-Sample/deployment/kubernetes/helm - cp -r smtc smtc_edge_helmchart - rm smtc_edge_helmchart/templates/cloud* -rf - tar -zcvf smtc_edge_helmchart.tar.gz smtc_edge_helmchart - mv smtc_edge_helmchart.tar.gz /opt + cp -r smtc smtc_edge + rm smtc_edge/templates/cloud* -rf + tar -zcvf smtc_edge.tar.gz smtc_edge + mv smtc_edge.tar.gz /opt ``` Packing the helm chart files used by SmartCity `cloud` application and put them under `/opt`. ```shell - cp -r smtc smtc_cloud_helmchart - rm smtc_cloud_helmchart/templates/* -rf - cp smtc/templates/*.tpl smtc_cloud_helmchart/templates/ - cp smtc/templates/cloud* smtc_cloud_helmchart/templates/ - tar -zcvf smtc_cloud_helmchart.tar.gz smtc_cloud_helmchart - mv smtc_cloud_helmchart.tar.gz /opt + cp -r smtc smtc_cloud + rm smtc_cloud/templates/* -rf + cp smtc/templates/*.tpl smtc_cloud/templates/ + cp smtc/templates/cloud* smtc_cloud/templates/ + tar -zcvf smtc_cloud.tar.gz smtc_cloud + mv smtc_cloud.tar.gz /opt ``` Prepare Override Profiles - `manifest.yaml` file as below: @@ -265,9 +409,166 @@ Prepare Override Profiles - `override_values.yaml` file with empty content, Pack the two files together as two tarball: `smtc_edge_profile.tar.gz` and `smtc_cloud_profile.tar.gz`. -#### Step2: Onboard Helm Chart and Override Profiles +#### Onboard Helm Chart and Override Profiles +Prepare resource - `helmcharts_profiles_template.yaml` file and apply it as below: +```yaml +--- +version: emco/v2 +resourceContext: + anchor: projects/{{ .ProjectName }}/composite-apps/{{ .ComposteApp }}/v1/apps +metadata: + name: smtc_edge +file: {{ .HelmEdgeApp }} + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{ .ProjectName }}/composite-apps/{{ .ComposteApp }}/v1/apps +metadata: + name: smtc_cloud +file: {{ .HelmCloudApp }} + +#creating smtc composite profile entry +# version: emco/v2 +# resourceContext: +# anchor: projects/project_smtc/composite-apps/composite_smtc/v1/composite-profiles +# metadata : +# name: smtc_composite-profile +--- +version: emco/v2 +resourceContext: + anchor: projects/{{ .ProjectName }}/composite-apps/{{ .ComposteApp }}/v1/composite-profiles +metadata: + name: smtc_composite-profile + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{ .ProjectName }}/composite-apps/{{ .ComposteApp }}/v1/composite-profiles/smtc_composite-profile/profiles +metadata: + name: smtc_edge-profile +spec: + app-name: {{ .AppEdge }} +file: {{ .ProfileEdgeApp }} + +--- +version: emco/v2 +resourceContext: + anchor: projects/{{ .ProjectName }}/composite-apps/{{ .ComposteApp }}/v1/composite-profiles/smtc_composite-profile/profiles +metadata: + name: smtc_cloud-profile +spec: + app-name: {{ .AppCloud }} +file: {{ .ProfileCloudApp }} + +``` + +```shell +# /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f projects_template.yaml + +``` + +#### Set Deployment Intent + +Prepare resource - `intents_template.yaml` file and apply it as below: +```yaml +#create the deployment intent group +--- +version: emco/v2 +resourceContext: + anchor: projects/{{ .ProjectName }}/composite-apps/{{ .ComposteApp }}/v1/deployment-intent-groups +metadata: + name: {{ .DeploymentIntent }} + description: "smtc deployment intent group" + userData1: test1 + userData2: test2 +spec: + profile: smtc_composite-profile + version: r1 + logical-cloud: {{ .AdminCloud }} + override-values: [] -#### Step3: Set Deployment Intent +#create the intent in deployment intent group +--- +version: emco/v2 +resourceContext: + anchor: projects/{{.ProjectName}}/composite-apps/{{.ComposteApp}}/v1/deployment-intent-groups/{{.DeploymentIntent}}/intents +metadata: + name: {{ .DeploymentIntent }} + description: "smtc deployment intent" + userData1: test1 + userData2: test2 +spec: + intent: + genericPlacementIntent: smtc-placement-intent + +# generic placement intent +--- +version: emco/v2 +resourceContext: + anchor: projects/{{ .ProjectName }}/composite-apps/{{ .ComposteApp }}/v1/deployment-intent-groups/{{ .DeploymentIntent }}/generic-placement-intents +metadata: + name: smtc-placement-intent + description: "smtc generic placement intent" + userData1: test1 + userData2: test2 + +#add edge app placement intent +--- +version: emco/v2 +resourceContext: + anchor: projects/{{ .ProjectName }}/composite-apps/{{ .ComposteApp }}/v1/deployment-intent-groups/{{ .DeploymentIntent }}/generic-placement-intents/smtc-placement-intent/app-intents +metadata: + name: smtcedge-placement-intent + description: "smtc edge app placement intent" + userData1: test1 + userData2: test2 +spec: + app-name: smtc_edge + intent: + allOf: + - provider-name: {{ .ClusterProvider }} + cluster-label-name: LabelSmartCityEdge + +#add cloud app placement intent +--- +version: emco/v2 +resourceContext: + anchor: projects/{{ .ProjectName }}/composite-apps/{{ .ComposteApp }}/v1/deployment-intent-groups/{{ .DeploymentIntent }}/generic-placement-intents/smtc-placement-intent/app-intents +metadata: + name: smtccloud-placement-intent + description: "smtc cloud app placement intent" + userData1: test1 + userData2: test2 +spec: + app-name: smtc_cloud + intent: + allOf: + - provider-name: {{ .ClusterProvider }} + cluster-label-name: LabelSmartCityCloud -#### Step4: Approve and Instantiate +``` + +```shell +# /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f projects_template.yaml + +``` + +#### Approve and Instantiate +Prepare resource - `instantiate_template.yaml` file and apply it as below: + +```yaml +#Approve +--- +version: emco/v2 +resourceContext: + anchor: projects/{{ .ProjectName }}/composite-apps/{{ .ComposteApp }}/v1/deployment-intent-groups/{{ .DeploymentIntent }}/approve + +#Instantiate +--- +version: emco/v2 +resourceContext: + anchor: projects/{{ .ProjectName }}/composite-apps/{{ .ComposteApp }}/v1/deployment-intent-groups/{{ .DeploymentIntent }}/instantiate + +``` From 41c39b09ad2193616543a502db72035396ed39cf Mon Sep 17 00:00:00 2001 From: konradja <48330825+konradja@users.noreply.github.com> Date: Tue, 8 Dec 2020 12:33:19 +0000 Subject: [PATCH 063/148] Documentation update for the rmd-operator 0.2 / RMD 0.3 upgrade (#363) * Remove the pcm section, we now use PQOS with the kernel interface so it's not needed. * Shortening the pqos section as we have pqos already installed by ansible. * Update the example RMD workload for the new version. --- .../openness-rmd.md | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/doc/building-blocks/enhanced-platform-awareness/openness-rmd.md b/doc/building-blocks/enhanced-platform-awareness/openness-rmd.md index c4e7e202..2a0242a8 100644 --- a/doc/building-blocks/enhanced-platform-awareness/openness-rmd.md +++ b/doc/building-blocks/enhanced-platform-awareness/openness-rmd.md @@ -133,9 +133,10 @@ metadata: spec: # Add fields here coreIds: ["INFERRED_CORE_ID"] - cache: - max: 6 - min: 6 + rdt: + cache: + max: 6 + min: 6 nodes: ["YOUR_WORKER_NODE_HERE"] ``` Apply and validate it: @@ -161,19 +162,10 @@ Events: ``` ### Start monitoring the cache usage with the PQOS tool ```bash -# Install - once off -git clone https://github.com/intel/intel-cmt-cat.git -make install # Run it -pqos +pqos -I ``` -If the PQOS tool fails to start, download the following tool: -```bash -git clone https://github.com/opcm/pcm.git -make install -pcm # run it for a second, then ctrl-c -``` -After you start and stop pcm, you should be able to run the pqos tool without a further problem. Look especially at the cores your pods got assigned. The LLC column (last level cache / L3 cache) should change after you run the `stress-ng` commands below. +Look especially at the cores your pods got assigned. The LLC column (last level cache / L3 cache) should change after you run the `stress-ng` commands below. ### Starting the stress-ng command on the prepared pods Pod1 From 95a0af600a8f1de485cdde7027665fadc35d7d7b Mon Sep 17 00:00:00 2001 From: Preeti4x <75366059+Preeti4x@users.noreply.github.com> Date: Wed, 9 Dec 2020 15:24:39 +0530 Subject: [PATCH 064/148] Update openness-emco.md Editorial review completed for existing content. Expecting more information for this document; will review the updates. --- doc/building-blocks/emco/openness-emco.md | 138 +++++++++++----------- 1 file changed, 70 insertions(+), 68 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 0a4b0b09..8765b5c2 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -2,55 +2,55 @@ SPDX-License-Identifier: Apache-2.0 Copyright (c) 2020 Intel Corporation ``` -# Edge Multi-Cloud Orchestrator (EMCO) support in OpenNESS +# Edge Multi-Cloud Orchestrator (EMCO) Support in OpenNESS -- [Edge Multi-Clould Orchestrator (EMCO) support in OpenNESS](#emco-support-in-openness) +- [Edge Multi-Cloud Orchestrator (EMCO) Support in OpenNESS](#edge-multi-cloud-orchestrator-emco-support-in-openness) - [Background](#background) - [EMCO Introduction](#emco-introduction) - [EMCO Architecture](#emco-architecture) - [EMCO API](#emco-api) - - [EMCO Authentication](#emco-auth) + - [EMCO Authentication](#emco-authentication) - [EMCO Installation](#emco-installation) - - [Practice with EMCO: SmartCityp Deployment](#smartcity-deployment-with-emco) + - [Practise with EMCO: SmartCity Deployment](#practise-with-emco-smartcity-deployment) ## Background -EMCO(Edge Multi-Cloud Orchestration) is Geo distributed application orchestrator for Kubernetes\*. The main objective of EMCO is automation of the deployment of applications and services across clusters. It acts as a central orchestrator that can manage edge services and network functions across geographically distributed edge clusters from different 3rd parties. Finally, the resource orchestration within a cluster of nodes will leverage Kubernetes and Helm charts. +EMCO (Edge Multi-Cloud Orchestration) is a Geo-distributed application orchestrator for Kubernetes\*. The main objective of EMCO is automation of the deployment of applications and services across clusters. It acts as a central orchestrator that can manage edge services and network functions across geographically distributed edge clusters from different third parties. Finally, the resource orchestration within a cluster of nodes will leverage Kubernetes* and Helm charts. -It address the need for deploying 'composite applications' in multiple geographical locations. Few industry communities started to use the term 'composite application' to represent these complex applications & deployments. -> **NOTE**: Composite application is combination of multiple applications. Based on the deployment intent, various applications of the composite application get deployed at various locations, and get replicated in multiple locations. +EMCO addresses the need for deploying 'composite applications' in multiple geographical locations. Few industry communities started to use the term 'composite application' to represent these complex applications and deployments. +> **NOTE**: A 'composite application' is a combination of multiple applications. Based on the deployment intent, various applications of the composite application get deployed at various locations, and get replicated in multiple locations. -Compared with other multipe-clusters orchestration, EMCO focuses on the below functionalies: -- Enroll multiple geographically distributed OpenNESS Clusters and 3rd party Cloud Clusters. -- Orchestrate composite applications (composed of multiple individual applications) across the edge clusters -- Deploy edge services and network functions on to different nodes spread across these different clusters. -- Monitor the health of the deployed edge services/network functions across these clusters. -- Orchestrate edge services and network functions with deployment intents based on compute, acceleration, and storage requirements. -- Support onboard multiple tenants from different enterprises while ensuring confidentiality and full isolation across the tenants. +Compared with the other multipe-clusters orchestration, EMCO focuses on the following functionalies: +- Enrolling multiple geographically distributed OpenNESS Clusters and third party Cloud Clusters. +- Orchestrating composite applications (composed of multiple individual applications) across the edge clusters. +- Deploying edge services and network functions on to different nodes spread across the different clusters. +- Monitoring the health of the deployed edge services/network functions across the clusters. +- Orchestrating edge services and network functions with deployment intents based on compute, acceleration, and storage requirements. +- Supporting onboard for multiple tenants from different enterprises while ensuring confidentiality and full isolation across the tenants. -The below figure shows the topology overview for the OpenNESS EMCO orchestration with edge and multiple clusters . +The following figure shows the topology overview for the OpenNESS EMCO orchestration with edge and multiple clusters. ![OpenNESS EMCO](openness-emco-images/openness-emco-topology.png) _Figure - Topology Overview with OpenNESS EMCO_ -All the manged edge clusters and cloud clusters will be connected with EMCO cluster through WAN network. +All the managed edge clusters and cloud clusters are connected with EMCO cluster through the WAN network. - The central orchestration (EMCO) cluster installation can use [OpenNESS Central Orchestrator Flavor](../../flavors.md). -- The edge clusters in the diagram can be installed and provisioned by using [OpenNESS Media Analytics Flavor](../../flavors.md) -- The cloud cluster in the diagram can be any types of cloud clusters, for example: Azure Cloud. +- The edge clusters in the diagram can be installed and provisioned by using [OpenNESS Media Analytics Flavor](../../flavors.md). +- The cloud cluster in the diagram can be any type of cloud cluster, for example: Azure Cloud. - The composite application - SmartCity is composed of two parts: edge applications and cloud (web) applications. - The edge application executes media processing and analytics on the multiple edge clusters to reduce latency. - - The cloud application is kind of web application for additional post-processing such as calculating statistics and display/visualization on the cloud cluster side. - - EMCO user can deploy the smart city applications across the clusters. Besides that, EMCO supports override values profiles for operator to satisfy the need of deployments. - - More details about refer to [SmartCity Deployment Practise with EMCO](#smartcity-deployment-with-emco). + - The cloud application is like a web application for additional post-processing, such as calculating statistics and display/visualization on the cloud cluster side. + - EMCO user can deploy the SmartCity applications across the clusters. Besides that, EMCO supports override values, profiles for operator to satisfy the need of deployments. + - For more details, refer to [SmartCity Deployment Practise with EMCO](#smartcity-deployment-practise-with-emco). -This document aims to familiarize the user with [OpenNESS deployment flavor](../../flavors.md) for EMCO installation and provsion, and provide instructions accordingly. +This document aims to familiarize the user with [OpenNESS deployment flavor](../../flavors.md) for EMCO installation and provision, and provide instructions accordingly. ## EMCO Introduction ### EMCO Architecture The following diagram depicts a high level overview of the EMCO architecture. ![OpenNESS EMCO](openness-emco-images/openness-emco-arch.png) _Figure - EMCO Architecture_ - Cluster Registration Controller registers clusters by cluster owners. - - Distributed Application Scheduler provides simplified, and extensible placement. + - Distributed Application Scheduler provides a simplified and extensible placement. - Network Configuration Management handles creation/management of virtual and provider networks. - Hardware Platform Aware Controller enables scheduling with auto-discovery of platform features/ capabilities. - Distributed Cloud Manager presents a single logical cloud from multiple edges. @@ -60,25 +60,25 @@ _Figure - EMCO Architecture_ - Monitoring covers distributed application. #### Cluster Registration -s micro-service exposes RESTful API. One can register Cluster providers and clusters of those providers via these APIs. After preparation of edge clusters and cloud clusters which can be any kubernetes clusters, user can onboard those clusters to EMCO by creating a Cluster Provider and then adding Clusters to the Cluster Provider. After cluster providers creation, the KubeConfig files of edge and cloud clusters should be provided to EMCO as part of the multi-part POST call to the Cluster API. +A micro-service exposes RESTful API. User can register Cluster providers and clusters of those providers via these APIs. After preparing edge clusters and cloud clusters, which can be any kubernetes* clusters, user can onboard those clusters to EMCO by creating a Cluster Provider and then adding Clusters to the Cluster Provider. After cluster providers are created, the KubeConfig files of edge and cloud clusters should be provided to EMCO as part of the multi-part POST call to the Cluster API. -Additionally, once a Cluster is created, labels and key value pairs may be added to the Cluster via the EMCO API. Clusters can be specified by label when preparing placement intents. -> **NOTE**: The cluster provider is somebody who owns clusters and registers them to EMCO. If an Enterprise has clusters from say AWS, then the cluster provider for those clusters from AWS is still considered as from that Enterprise. AWS is not the provider. Here, the provider is somebody who owns clusters and registers them here. Since, AWS does not register their clusters here, AWS is not considered as Cluster provider in this context. +Additionally, after a Cluster is created, labels and key value pairs can be added to the Cluster via the EMCO API. Clusters can be specified by label when preparing placement intents. +> **NOTE**: The cluster provider is someone who owns clusters and registers them to EMCO. If an Enterprise has clusters, for example from AWS, then the cluster provider for those clusters from AWS is still considered as from that Enterprise. AWS is not the provider. Here, the provider is someone who owns clusters and registers them here. Since, AWS does not register their clusters here, AWS is not considered as Cluster provider in this context. #### Distributed Application Scheduler The distributed application scheduler microservice provides functionalities: -- Project Management provides multi-tenancy in the application from a user perspective -- Composite App Management  manages composite apps that are collections of Helm Charts one per application -- Composite Profile Management  manages composite profiles that are collections of profile one per application -- Deployment Intent Group Management manages Intents for composite Applications +- Project Management provides multi-tenancy in the application from a user perspective. +- Composite App Management manages composite apps that are collections of Helm Charts, one per application. +- Composite Profile Management manages composite profiles that are collections of profile, one per application. +- Deployment Intent Group Management manages Intents for composite applications. - Controller Registration manages placement and action controller registration, priorities etc. -- Status Notifier framework allows user to get on-demand status updates or notifications on status updates -- Scheduler - - Placement Controllers: Generic Placement Controller - - Action Controllers +- Status Notifier framework allows user to get on-demand status updates or notifications on status updates. +- Scheduler: + - Placement Controllers: Generic Placement Controller. + - Action Controllers. #### Network Configuration Management -The network configuratin management (NCM) microservice provides functionalities: +The network configuration management (NCM) microservice provides functionalities: - Provider Network Management to create provider networks - Virtual Network Management to create dynamic virtual networks - Controller Registration manages network plugin controllers, priorities etc. @@ -87,14 +87,15 @@ The network configuratin management (NCM) microservice provides functionalities: #### Resource Syncronizer -This micro-service is the one which deploys the resources in edge/cloud clusters. 'Resource contexts' created by various micro-services are used by this micro-service. It will take care of retrying in case the remote clusters are not reachable temporarily. +This micro-service is the one which deploys the resources in edge/cloud clusters. 'Resource contexts' created by various micro-services are used by this micro-service. It takes care of retrying in case the remote clusters are not reachable temporarily. ### EMCO API For user interaction, EMCO provides [RESTAPI](https://github.com/otcshare/EMCO/blob/main/docs/emco_apis.yaml). Apart from that, EMCO also provides CLI. For the detailed usage, refer to [EMCO CLI](https://github.com/otcshare/EMCO/tree/main/src/tools/emcoctl) -> **NOTE**: The EMCO REST API is the foundation for the other interaction facilities like the EMCO CLI and even EMCO GUI (3rd party developed right now) +> **NOTE**: The EMCO REST API is the foundation for the other interaction facilities like the EMCO CLI and even EMCO GUI (third party developed right now) -### EMCO Authentication (FFS - Ritu) +### EMCO Authentication +(FFS - Ritu) EMCO uses Istio and other open source solutions to provide Multi-tenancy solution leveraging Istio Authorization and Authentication frameworks. This is achieved without adding any logic in EMCO microservices. - Authentication for the EMCO users are done at the Isito Gateway, where all the traffic enters the cluster. - Istio along with autherservice (istio ecosystem project) enables request-level authentication with JSON Web Token (JWT) validation. @@ -105,25 +106,25 @@ Steps for EMCO Authentication Setup: - step2 FFS ### EMCO Installation -The first step is to prepare one server envionment which need to fulfill the [Preconditions](../../getting-started/network-edge/controller-edge-node-setup.md#preconditions). +The first step is to prepare one server environment which needs to fulfill the [Preconditions](../../getting-started/network-edge/controller-edge-node-setup.md#preconditions). Then Place the EMCO server hostname in `[controller_group]` group in `inventory.ini` file of openness-experience-kit. -> **NOTE**: `[edgenode_group]` and `[edgenode_vca_group]` are not required for configuration, since EMCO micro services just need to deployed on the kubernetes control plane node. +> **NOTE**: `[edgenode_group]` and `[edgenode_vca_group]` are not required for configuration, since EMCO micro services just need to be deployed on the kubernetes* control plane node. -Run script `./deploy_ne.sh -f central_orchestrator`. Deployment should complete successfully. In the flavor, harbor registry will be deployed to provide images services as well. +Run script `./deploy_ne.sh -f central_orchestrator`. Deployment should complete successfully. In the flavor, harbor registry is deployed to provide images services as well. -## Practice with EMCO: SmartCity Deployment +## Practise with EMCO: SmartCity Deployment - One OpenNESS edge cluster (representing regional office) and One legacy K8s Cluster (representing cloud) are connected to the OpenNESS EMCO cluster. -- Smart City application is a sample application that is built on top of the OpenVINO & Open Visual Cloud software stacks for media processing and analytics. +- SmartCity application is a sample application that is built on top of the OpenVINO™ and Open Visual Cloud software stacks for media processing and analytics. - The whole application is composed of two parts: - EdgeApp (multiple OpenNESS edge clusters) - WebApp (cloud application for additional post-processing such as calculating statistics and display/visualization) -- The whole deployment architecture diagram is shown as below: +- The whole deployment architecture diagram is as shown below: ![OpenNESS EMCO](openness-emco-images/openness-emco-smtc.png) _Figure - SmartCity Deployment Architecture Overview_ -The following are the typical steps involved in the cluster registration and deployment of the application using OpenNESS EMCO. +The typical steps involved in the cluster registration and deployment of the application using OpenNESS EMCO are as following: - Prerequisites - Make One OpenNESS Edge Cluster Ready with any OpenNESS Flavor (OpenNESS Application Node Flavor is proposed) - Make One Legacy K8s Cluster Ready (Simualte cloud cluster) @@ -132,22 +133,23 @@ The following are the typical steps involved in the cluster registration and dep - Create Cluster Provider - Clusters Registration - Create Project -- DeploySmartCity Application +- Deploy SmartCity Application -### EMCO Configuration (SunHui TBD) +### EMCO Configuration +(SunHui TBD) -1. After [EMCO Installation](#emco-installation), logon the EMCO server. And check ports used by EMCO micro services as below (SunHui TBD): +1. After [EMCO Installation](#emco-installation), logon to the EMCO server, and check ports used by EMCO micro services(SunHui TBD): ```shell ``` -2. To allow EMCO CLI communicate with EMCO microservices, need to open firewall port for the EMCO micro services as below (SunHui TBD, can it be automated by emco flavor??): +2. To allow EMCO CLI to communicate with EMCO microservices, open firewall port for the EMCO micro services(SunHui TBD, can it be automated by emco flavor??): ```shell firewall-cmd --zone=public --permanent --add-port xxx/tcp firewall-cmd --reload ``` -3. Prepare EMCO CLI configuration file - `remote.yaml` file as below: +3. Prepare EMCO CLI configuration file - `remote.yaml` file: ```yaml orchestrator: host: localhost @@ -166,7 +168,7 @@ firewall-cmd --reload port: 31877 ``` -4. Prepare EMCO CLI values file - `values.yaml` file as below: +4. Prepare EMCO CLI values file - `values.yaml` file: ```yaml ProjectName: project_smtc ClusterProvider: smartcity-cluster-provider @@ -191,7 +193,7 @@ RsyncPort: 32389 > **NOTE:** RsyncHost IP address should be real IP address of EMCO host server. -5. Prepared EMCO controller resource files for resource synchronization - 'controllers_template.yaml' file as below: +5. Prepare EMCO controller resource files for resource synchronization - 'controllers_template.yaml' file: ```yaml --- version: emco/v2 @@ -204,15 +206,15 @@ spec: port: {{ .RsyncPort }} ``` -6. Use EMCO CLI to create the controller entry with expected result as below: +6. Use EMCO CLI to create the controller entry with expected result: ```shell # /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f controllers_template.yaml Using config file: remote.yaml http://192.168.121.103:31298/v2URL: controllers Response Code: 201 ``` -### Cluster Provider Creation and Clusters Registration -Prepare resource yaml file - `clusters_template.yaml` as below: +### Creating Cluster Provider and Registering Clusters +Prepare resource yaml file - `clusters_template.yaml`: ```yaml --- #clusters provider @@ -256,15 +258,15 @@ label-name: LabelSmartCityCloud ``` -Use EMCO CLI to apply the resource yaml file with expected result as below: +Use EMCO CLI to apply the resource yaml file with expected result: ```shell # /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f clusters_template.yaml ``` -### SmartCity Projects and Logical Clouds Creation -Prepare resource yaml file - `projects_template.yaml` and apply it as below: +### SmartCity Projects and Creating Logical Clouds +Prepare resource yaml file - `projects_template.yaml` and apply it as mentioned below: ```yaml #create project version: emco/v2 @@ -308,8 +310,8 @@ resourceContext: ``` -### SmartCity Composite Application Entry Creation -Prepare resource yaml file - `composite_apps_template.yaml` and apply it as below: +### Creating SmartCity Composite Application Entry +Prepare resource yaml file - `composite_apps_template.yaml` and apply it as mentioned below: ```yaml #creating smartcity composite app entry --- @@ -324,8 +326,8 @@ spec: ### SmartCity Application Deployment -#### Prepare SmartCity Images, Helm Chart and Override Profiles -On the OpenNESS EMCO cluster. follow the guidance and commands as below: +#### Preparing SmartCity Images, Helm Chart and Overriding Profiles +On the OpenNESS EMCO cluster. follow the guidance and commands as mentioned below: ```shell #Install cmake and m4 tools if not installed already yum install cmake m4 -y @@ -361,7 +363,7 @@ On the OpenNESS EMCO cluster. follow the guidance and commands as below: docker push /library/ ``` -Make sure the following images list exsiting in the harbor registry project - `library` +Make sure the following images list is existing in the harbor registry project - `library` ```text - smtc_database_tunnelled:latest - smtc_storage_manager_tunnelled:latest @@ -378,7 +380,7 @@ Make sure the following images list exsiting in the harbor registry project - `l - eclipse-mosquitto:1.5.8 ``` -Packing the helm chart files used by SmartCity `edge` application and put them under `/opt`. +Pack the helm chart files used by SmartCity `edge` application and put them under `/opt`. ```shell cd Smart-City-Sample/deployment/kubernetes/helm cp -r smtc smtc_edge @@ -387,7 +389,7 @@ Packing the helm chart files used by SmartCity `edge` application and put them u mv smtc_edge.tar.gz /opt ``` -Packing the helm chart files used by SmartCity `cloud` application and put them under `/opt`. +Pack the helm chart files used by SmartCity `cloud` application and put them under `/opt`. ```shell cp -r smtc smtc_cloud rm smtc_cloud/templates/* -rf @@ -409,7 +411,7 @@ Prepare Override Profiles - `override_values.yaml` file with empty content, Pack the two files together as two tarball: `smtc_edge_profile.tar.gz` and `smtc_cloud_profile.tar.gz`. -#### Onboard Helm Chart and Override Profiles +#### Onboarding Helm Chart and Overriding Profiles Prepare resource - `helmcharts_profiles_template.yaml` file and apply it as below: ```yaml @@ -469,7 +471,7 @@ file: {{ .ProfileCloudApp }} ``` -#### Set Deployment Intent +#### Setting Deployment Intent Prepare resource - `intents_template.yaml` file and apply it as below: ```yaml @@ -555,7 +557,7 @@ spec: ``` -#### Approve and Instantiate +#### Approving and Instantiating Prepare resource - `instantiate_template.yaml` file and apply it as below: ```yaml From bfac20ce9f4b76b5719964680cec96a14b057b0c Mon Sep 17 00:00:00 2001 From: altafahx <75365608+altafahx@users.noreply.github.com> Date: Wed, 9 Dec 2020 18:15:00 +0530 Subject: [PATCH 065/148] Update openness-emco.md Minor change --- doc/building-blocks/emco/openness-emco.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 8765b5c2..8b0f618b 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -19,7 +19,7 @@ EMCO (Edge Multi-Cloud Orchestration) is a Geo-distributed application orchestra EMCO addresses the need for deploying 'composite applications' in multiple geographical locations. Few industry communities started to use the term 'composite application' to represent these complex applications and deployments. > **NOTE**: A 'composite application' is a combination of multiple applications. Based on the deployment intent, various applications of the composite application get deployed at various locations, and get replicated in multiple locations. -Compared with the other multipe-clusters orchestration, EMCO focuses on the following functionalies: +Compared with other multipe-clusters orchestration, EMCO focuses on the following functionalies: - Enrolling multiple geographically distributed OpenNESS Clusters and third party Cloud Clusters. - Orchestrating composite applications (composed of multiple individual applications) across the edge clusters. - Deploying edge services and network functions on to different nodes spread across the different clusters. From 2376ae75f7740b32072d295956515071f9176155 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Thu, 10 Dec 2020 17:23:25 +0800 Subject: [PATCH 066/148] merge EMCO team new content to the branch --- .../openness-emco-images/emco-istio-arch.png | Bin 0 -> 53626 bytes .../openness-emco-images/emco-istio-auth.png | Bin 0 -> 39172 bytes .../openness-emco-lccl.png | Bin 0 -> 2370 bytes doc/building-blocks/emco/openness-emco.md | 204 ++++++++++++++++-- 4 files changed, 186 insertions(+), 18 deletions(-) create mode 100644 doc/building-blocks/emco/openness-emco-images/emco-istio-arch.png create mode 100644 doc/building-blocks/emco/openness-emco-images/emco-istio-auth.png create mode 100644 doc/building-blocks/emco/openness-emco-images/openness-emco-lccl.png diff --git a/doc/building-blocks/emco/openness-emco-images/emco-istio-arch.png b/doc/building-blocks/emco/openness-emco-images/emco-istio-arch.png new file mode 100644 index 0000000000000000000000000000000000000000..ef39920848f86441d5ca1be9b11d2793310189a1 GIT binary patch literal 53626 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 QcsWQ)TwV-y*TDDx04g%_!T@11 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 literal 0 HcmV?d00001 diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 8b0f618b..54db0e50 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -2,19 +2,20 @@ SPDX-License-Identifier: Apache-2.0 Copyright (c) 2020 Intel Corporation ``` -# Edge Multi-Cloud Orchestrator (EMCO) Support in OpenNESS +# Edge Multi-Cluster Orchestrator (EMCO) Support in OpenNESS -- [Edge Multi-Cloud Orchestrator (EMCO) Support in OpenNESS](#edge-multi-cloud-orchestrator-emco-support-in-openness) +- [Edge Multi-Cluster Orchestrator (EMCO) Support in OpenNESS](#edge-multi-cluster-orchestrator-emco-support-in-openness) - [Background](#background) - [EMCO Introduction](#emco-introduction) - [EMCO Architecture](#emco-architecture) + - [EMCO Terminology](#emco-terminology) - [EMCO API](#emco-api) - [EMCO Authentication](#emco-authentication) - [EMCO Installation](#emco-installation) - [Practise with EMCO: SmartCity Deployment](#practise-with-emco-smartcity-deployment) ## Background -EMCO (Edge Multi-Cloud Orchestration) is a Geo-distributed application orchestrator for Kubernetes\*. The main objective of EMCO is automation of the deployment of applications and services across clusters. It acts as a central orchestrator that can manage edge services and network functions across geographically distributed edge clusters from different third parties. Finally, the resource orchestration within a cluster of nodes will leverage Kubernetes* and Helm charts. +EMCO (Edge Multi-Cluster Orchestration) is a Geo-distributed application orchestrator for Kubernetes\*. The main objective of EMCO is automation of the deployment of applications and services across clusters. It acts as a central orchestrator that can manage edge services and network functions across geographically distributed edge clusters from different third parties. Finally, the resource orchestration within a cluster of nodes will leverage Kubernetes* and Helm charts. EMCO addresses the need for deploying 'composite applications' in multiple geographical locations. Few industry communities started to use the term 'composite application' to represent these complex applications and deployments. > **NOTE**: A 'composite application' is a combination of multiple applications. Based on the deployment intent, various applications of the composite application get deployed at various locations, and get replicated in multiple locations. @@ -77,6 +78,13 @@ The distributed application scheduler microservice provides functionalities: - Placement Controllers: Generic Placement Controller. - Action Controllers. +##### Lifecycle Operations +The distributed application scheduler supports operations on a deployment intent group resource to instantiate the associated composite application with any placement and action intents performed by the registered placement and action controllers. The basic flow of lifecycle operations on a deployment intent group after all the supporting resources have been created via the APIs are: +- approve: marks the deployment intent group has being approved and ready for instantiation +- instantiate: the Distributed Application Scheduler will prepare the application resourcs for deployment and apply placement and action intents before invoking the Resource Synchronizer to deploy them to the intended remote clusters. +- status: (may be invoked at any step) will provide information on the status of the deployment intent group +- terminate: terminates the application resources of an instantiated application from all of the clusters to which it was deployed. In some cases, if a remote cluster is intermittently unreachable, the instantiate operation may still be retrying the instantiate operation for that cluster. The terminate operation will cause the instantiate operation to complete (i.e. fail), before the termination operation is performed. +- stop: In some cases, if the remote cluster is intermittently unreachable, the Resource Synchronizer will continue retrying an instantiate or terminate operation. The stop operation can be used to force the retry operation to stop and the instantate or terminate operation will be completed (with a failed status). In the case of terminate, this allows the deployment intent group resource to be deleted via the API since deletion is prevented until a deployment intent group resource has reached a completed terminate operation status. #### Network Configuration Management The network configuration management (NCM) microservice provides functionalities: - Provider Network Management to create provider networks @@ -85,27 +93,131 @@ The network configuration management (NCM) microservice provides functionalities - Status Notifier framework allows user to get on-demand status updates or notifications on status updates - Scheduler with Built in Controller - OVN-for-K8s-NFV Plugin Controller +##### Lifecycle Operations +The Network Configuration Management microservice supports operations on a the network intents of a cluster resource to instantiate the associated provider and virtual networks that have been defined via the API for the cluster. The basic flow of lifecycle operations on a cluster after all the supporting netowrk resources have been created via the APIs are: +- apply: the Network Configuration Management microservice will prepare the network resources and invoke the Resource Synchronizer to deploy them to the designated cluster. +- status: (may be invoked at any step) will provide information on the status of the cluster networks. +- terminate: terminates the network resources from the cluster to which they were deployed. In some cases, if a remote cluster is intermittently unreachable, the Resource Synchronizer may still be retrying the instantiate operation for that cluster. The terminate operation will cause the instantiate operation to complete (i.e. fail), before the termination operation is performed. +- stop: In some cases, if the remote cluster is intermittently unreachable, the Resource Synchronizer will continue retrying an instantiate or terminate operation. The stop operation can be used to force the retry operation to stop and the instantate or terminate operation will be completed (with a failed status). In the case of terminate, this allows the deployment intent group resource to be deleted via the API since deletion is prevented until a deployment intent group resource has reached a completed terminate operation status. +#### Distributed Cloud Manager +The Distributed Cloud Manager (DCM) provides the Logical Cloud abstraction and effectively completes the concept of "multi-cloud". One Logical Cloud is a grouping of one or many clusters, each with their own control plane, specific configurations and geo-location, which get partitioned for a particular EMCO project. This partitioning is made via the creation of distinct, isolated namespaces in each of the (Kubernetes) clusters that thus make up the Logical Cloud. + +A Logical Cloud is the overall target of a Deployment Intent Group and is a mandatory parameter (the specific applications under it further refine what gets run and where). A Logical Cloud must be explicitly created and instantiated before a Deployment Intent Group can be instantiated. + +Due to the close relationship with Clusters, which are provided by Cluster Registration (clm) above, it's important to understand the mapping between the two. A Logical Cloud groups many Clusters together but a Cluster may also be grouped by multiple Logical Clouds, effectively turning the cluster multi-tenant. The partitioning/multi-tenancy of a particular Cluster, via the different Logical Clouds, is done today at the namespace level (different Logical Clouds access different namespace names, and the name is consistent across the multiple clusters of the Logical Cloud). + +![Mapping between Logical Clouds and Clusters](openness-emco-images/openness-emco-lccl.png) + +##### Lifecycle Operations +Prerequisites to using Logical Clouds: +* with the project-less Cluster Registration API, create the cluster providers, clusters and optionally cluster labels +* with the Distributed Application Scheduler API, create a project which acts as a tenant in EMCO + +The basic flow of lifecycle operations to get a Logical Cloud up and running via the Distributed Cloud Manager API is: +* Create a Logical Cloud specifying the following attributes: + - Level: either 1 or 0, depending on whether an admin or a custom/user cloud is sought - more on the differences below. + - (*for Level-1 only*) Namespace name - the namespace to use in all of the Clusters of the Logical Cloud. + - (*for Level-1 only*) User name - the name of the user that will be authenticating to the Kubernetes APIs to access the namespaces created + - (*for Level-1 only*) User permissions - permissions that the user specified will have in the namespace specified, in all of the clusters. +* (*for Level-1 only*) Create resource quotas and assign them to the Logical Cloud created: this will specify what quotas/limits the user will face in the Logical Cloud, for each of the Clusters. +* Assign the Clusters previously created with the project-less Cluster Registration API to the newly-created Logical Cloud. +* Instantiate the Logical Cloud. All of the clusters assigned to the Logical Cloud will be automatically setup to join the Logical Cloud. One this operation is finished, the Distributed Application Scheduler's lifecycle operations can be followed to deploy applications on top of the Logical Cloud. + +Apart from the creation/instantiation of Logical Clouds, the following operations are also available: +* Terminate a Logical Cloud, which will remove all of the Logical Cloud -related resources from all of the respective Clusters. +* Delete a Logical Cloud, which will eliminate all traces of the Logical Cloud in EMCO. + + +##### Level-1 Logical Clouds +Logical Clouds were introduced to group and partition clusters in a multi-tenant way and across boundaries, improving flexibility and scalability. A Level-1 Logical Cloud is the default type of Logical Cloud providing just that. When projects request a Logical Cloud to be created, they will be providing what permissions are available, resource quotas and clusters that compose it. The Distributed Cloud Manager, alongside the Resource Synchronizer, will setup all the clusters accordingly, with the necessary credentials, namespace/resources, and finally generating the kubeconfig files used to authenticate/reach each of those clusters in the context of the Logical Cloud. + +##### Level-0 Logical Clouds +In some use cases, and in the administrative domains where it makes sense, a project may want to access raw, unmodified, administrator-level clusters. For such cases, no namespaces need to be created and no new users need to be created or authenticated in the API. To solve this, the Distributed Cloud Manager introduces Level-0 Logical Clouds, which offer the same consistent interface as Level-1 Logical Clouds to the Distributed Application Scheduler. Being of type Level-0 means "the lowest-level", or the administrator level. As such, no changes will be made to the clusters themselves. Instead, the only operation that takes place is the reuse of credentials already provided via the Cluster Registration API for the clusters assigned to the Logical Cloud (instead of generating new credentials, namespace/resources and kubeconfig files). + +#### OVN Action Controller +The OVN Action Controller (ovnaction) microservice is an action controller which may be registered and added to a deployment intent group to apply specific network intents to resources in the composite application. It provides functionalities: +- Network intent APIs which allow specification of network connection intents for resources with in applications. +- On instantiation of a deployment intent group configured to utilize the ovnaction controller, network interface annotations will be added to the pod template of identified application resources. +- ovnaction supports specifying interfaces which attach to networks created by the Network Configuration Management microservice. + +#### Traffic Controller +The traffic controller micro-service provides a way to create network policy resources across edge clusters. Provides inbound RESTful API’s to create intents to open the traffic from clients. Also provides change and delete API’s for update and deletion of traffic intents. Using the provided information through intents, creates a network policy resource for each of the application servers on the corresponding edge cluster. +> **NOTE**:For network policy to work, edge cluster must have network policy support using CNI such as calico. #### Resource Syncronizer This micro-service is the one which deploys the resources in edge/cloud clusters. 'Resource contexts' created by various micro-services are used by this micro-service. It takes care of retrying in case the remote clusters are not reachable temporarily. +#### Generic Action Controller + +The generic action controller microservice is an action controller which may be registered with the central orchestrator. It can acheive the following usecases: + +- Create a new kubernetes object and deploy that along with a specific application which is part of the composite Application. There are two variations here: + + - Default : Apply the new object to every instance of the app in every cluster where the app is deployed. + - Cluster-Specific : Apply the new object only where the app is deployed to a specific cluster, denoted by a cluster-name or a list of clusters denoted by a cluster-label + +- Modify an existing kubernetes object which may have been deployed using the helm chart for an app or may have been newly created by the above mentioned usecase. Modification may correspond to specific fields in the YAML definition of the object. + +To acheive both the usecases, the controller exposes REST APIs to create, update and delete the following : + +- Resource - Specifies the newly defined object or an existing object. +- Customization - Specifies the modifications(using JSON Patching) to be applied on the objects. + +### EMCO Terminology +| | | +|------------------------|----------------------------------------------------------------------------------------------------------------------------------| +| Cluster Provider | The provider is somebody who owns clusters and registers them. | +| Projects | The projects resource provides means for a collection of application to be grouped. | +| | Several applications can exist under a specific project. | +| | Projects allows for grouping of applications under a common tenant to be defined. | +| Composite application | Composite application is combination of multiple applications. | +| | Based on the deployment intent, various applications of the composite application get deployed at various locations. | +| | Also, some applications of the composite application get replicated in multiple locations. | +| Deployment Intent | EMCO does not expect the editing of helm charts provided by application/Network-function vendors by DevOps admins. | +| | Any customization and additional K8s resources that need to be present with the application are specified as deployment intents. | +| Placement Intent | EMCO supports to create generic placement intents for a given composite application. | +| | Normally, EMCO scheduler calls placement controllers first to figure out the edge/cloud locations for a given application. | +| | Finally works with 'resource synchronizer & status collector' to deploy K8s resources on various Edge/Cloud clusters. | ### EMCO API For user interaction, EMCO provides [RESTAPI](https://github.com/otcshare/EMCO/blob/main/docs/emco_apis.yaml). Apart from that, EMCO also provides CLI. For the detailed usage, refer to [EMCO CLI](https://github.com/otcshare/EMCO/tree/main/src/tools/emcoctl) > **NOTE**: The EMCO REST API is the foundation for the other interaction facilities like the EMCO CLI and even EMCO GUI (third party developed right now) -### EMCO Authentication -(FFS - Ritu) +### EMCO Authentication and Authorization EMCO uses Istio and other open source solutions to provide Multi-tenancy solution leveraging Istio Authorization and Authentication frameworks. This is achieved without adding any logic in EMCO microservices. -- Authentication for the EMCO users are done at the Isito Gateway, where all the traffic enters the cluster. -- Istio along with autherservice (istio ecosystem project) enables request-level authentication with JSON Web Token (JWT) validation. -- This can be achieved using a custom authentication provider or any OpenID Connect providers like KeyCloak, Auth0 etc. +- Authentication and Authorization for the EMCO users is done at the Isito Ingress Gateway, where all the traffic enters the cluster. + +- Istio along with autherservice (istio ecosystem project) enables request-level authentication with JSON Web Token (JWT) validation. Authservice is an entity that works along side with Envoy proxy. It is used to work with external IAM systems (OAUTH2). Many Enterprises have their own OAUTH2 server for authenticating users and provide roles. + +- Authservice and ISTIO can be configured to talk to multiple OAUTH2 servers. Using this capability EMCO can support multiple tenants. (For example one tenant belonging to one project). + +- Using Istio AuthorizationPolicy access to different EMCO resources can be controlled based on roles defined for the users. + +The following figure shows various Emco services running in a cluster with Istio. + +![OpenNESS EMCO](openness-emco-images/emco-istio-arch.png) +_Figure - EMCO setup with Istio and Authservice_ -Steps for EMCO Authentication Setup: -- step1 FFS -- step2 FFS +The following figure shows the authentication flow with EMCO, Istio and Authservice -### EMCO Installation +![OpenNESS EMCO](openness-emco-images/emco-istio-auth.png) +_Figure - EMCO Authenication with external OATH2 Server_ + +Detail steps for configuring EMCO with Istio can be found in [Emco Integrity and Access Management](https://github.com/otcshare/EMCO/tree/main/docs/user/Emco_Integrity_Access_Management.md) document. + +Steps for EMCO Authentication and Authorization Setup: +- Install and Configure Keycloak Server to be used in the setup. This server runs outside EMCO cluster + - Create a new realm, add users and roles to Keycloak +- Install Istio in the Kubernetes cluster where EMCO is running +- Enable Sidecar Injection in EMCO namesapce +- Install EMCO in EMCO namespace (with Istio sidecars) +- Configure Istio Ingress gateway resources for Emco Services +- Configure Istio Ingess gateway to enable running along with Authservice +- Apply EnvoyFilter for Authservice +- Apply Authenication and Authorization Policies + +### EMCO Installation With OpenNESS Flavor +EMCO supports [multiple deployment options](https://github.com/otcshare/EMCO/tree/main/deployments). OpenNESS offers the `central_orchestrator` to automate EMCO build and deployment as below. The first step is to prepare one server environment which needs to fulfill the [Preconditions](../../getting-started/network-edge/controller-edge-node-setup.md#preconditions). Then Place the EMCO server hostname in `[controller_group]` group in `inventory.ini` file of openness-experience-kit. @@ -113,7 +225,45 @@ Then Place the EMCO server hostname in `[controller_group]` group in `inventory. Run script `./deploy_ne.sh -f central_orchestrator`. Deployment should complete successfully. In the flavor, harbor registry is deployed to provide images services as well. -## Practise with EMCO: SmartCity Deployment +```shell +# kubectl get pods -A +NAMESPACE NAME READY STATUS RESTARTS AGE +emco clm-6979f6c886-tjfrv 1/1 Running 0 104m +emco dcm-549974b6fc-42fbm 1/1 Running 0 104m +emco etcd-5f646586cb-p7ctj 1/1 Running 0 104m +emco mongo-5f7d44fbc5-n74lm 1/1 Running 0 104m +emco ncm-58b85b4688-tshmc 1/1 Running 0 104m +emco orchestrator-78b76cb547-xrvz5 1/1 Running 0 104m +emco ovnaction-5d8d4447f9-nn7l6 1/1 Running 0 104m +emco rsync-58b75849dd-99z6t 1/1 Running 0 104m +harbor harbor-app-harbor-chartmuseum-78c8d5567c-zfm68 1/1 Running 0 125m +harbor harbor-app-harbor-clair-779df4555b-bc4xv 2/2 Running 1 125m +harbor harbor-app-harbor-core-86745c7fdd-rqfl8 1/1 Running 0 125m +harbor harbor-app-harbor-database-0 1/1 Running 0 125m +harbor harbor-app-harbor-jobservice-b44ffbcdd-kxxbm 1/1 Running 0 125m +harbor harbor-app-harbor-nginx-8f4b9595-mthng 1/1 Running 0 125m +harbor harbor-app-harbor-notary-server-64c6df8547-w6zxt 1/1 Running 0 125m +harbor harbor-app-harbor-notary-signer-68cf88854b-h97mk 1/1 Running 0 125m +harbor harbor-app-harbor-portal-fd5ff4bc9-qn9hq 1/1 Running 0 125m +harbor harbor-app-harbor-redis-0 1/1 Running 0 125m +harbor harbor-app-harbor-registry-68699595cb-cdddd 2/2 Running 0 125m +harbor harbor-app-harbor-trivy-0 1/1 Running 0 125m +kube-system coredns-f9fd979d6-j4j2m 1/1 Running 0 125m +kube-system coredns-f9fd979d6-x546t 1/1 Running 0 125m +kube-system etcd-211node 1/1 Running 0 128m +kube-system kube-apiserver-211node 1/1 Running 0 128m +kube-system kube-controller-manager-211node 1/1 Running 0 128m +kube-system kube-ovn-cni-pvbfl 1/1 Running 0 125m +kube-system kube-ovn-controller-54d8c5d5ff-jjgk6 1/1 Running 0 125m +kube-system kube-ovn-pinger-tst92 1/1 Running 0 125m +kube-system kube-proxy-llqzr 1/1 Running 0 128m +kube-system kube-scheduler-211node 1/1 Running 0 128m +kube-system ovn-central-54f768b868-vtmjl 1/1 Running 0 127m +kube-system ovs-ovn-jq6dn 1/1 Running 0 127m + +``` + +## Practice with EMCO: SmartCity Deployment - One OpenNESS edge cluster (representing regional office) and One legacy K8s Cluster (representing cloud) are connected to the OpenNESS EMCO cluster. - SmartCity application is a sample application that is built on top of the OpenVINO™ and Open Visual Cloud software stacks for media processing and analytics. - The whole application is composed of two parts: @@ -136,16 +286,34 @@ The typical steps involved in the cluster registration and deployment of the app - Deploy SmartCity Application ### EMCO Configuration -(SunHui TBD) -1. After [EMCO Installation](#emco-installation), logon to the EMCO server, and check ports used by EMCO micro services(SunHui TBD): +1. After [EMCO Installation With OpenNESS Flavor](#emco-installation), logon to the EMCO server, and check ports used by EMCO micro services(SunHui TBD): ```shell +# kubectl get svc -n emco +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +clm NodePort 10.97.14.239 9061:31856/TCP 125m +dcm NodePort 10.107.241.154 9077:31877/TCP 125m +dtc NodePort 10.110.138.168 9053:32733/TCP,9018:31182/TCP 125m +etcd ClusterIP 10.97.101.134 2379/TCP,2380/TCP 125m +mongo ClusterIP 10.104.168.175 27017/TCP 125m +ncm NodePort 10.103.52.184 9081:32737/TCP 125m +orchestrator NodePort 10.106.133.59 9015:31298/TCP 125m +ovnaction NodePort 10.110.224.77 9032:30916/TCP,9051:31181/TCP 125m +rsync NodePort 10.106.10.79 9031:31405/TCP 125m ``` 2. To allow EMCO CLI to communicate with EMCO microservices, open firewall port for the EMCO micro services(SunHui TBD, can it be automated by emco flavor??): ```shell -firewall-cmd --zone=public --permanent --add-port xxx/tcp +firewall-cmd --zone=public --permanent --add-port 31856/tcp +firewall-cmd --zone=public --permanent --add-port 31877/tcp +firewall-cmd --zone=public --permanent --add-port 32733/tcp +firewall-cmd --zone=public --permanent --add-port 31182/tcp +firewall-cmd --zone=public --permanent --add-port 32737/tcp +firewall-cmd --zone=public --permanent --add-port 31298/tcp +firewall-cmd --zone=public --permanent --add-port 30916/tcp +firewall-cmd --zone=public --permanent --add-port 31181/tcp +firewall-cmd --zone=public --permanent --add-port 31405/tcp firewall-cmd --reload ``` @@ -188,9 +356,9 @@ ProfileEdgeApp: /opt/smtc_edge_profile.tar.gz ProfileCloudApp: /opt/smtc_cloud_profile.tar.gz DeploymentIntent: smtc-deployment-intent-group RsyncHost: 192.168.121.103 -RsyncPort: 32389 +RsyncPort: 31405 ``` -> **NOTE:** RsyncHost IP address should be real IP address of EMCO host server. +> **NOTE:** RsyncHost IP address should be real IP address of EMCO host server. RsyncPort is dynamically allocated by EMCO as shown as above. 5. Prepare EMCO controller resource files for resource synchronization - 'controllers_template.yaml' file: From 5cf83594e3bb865257a8f78e35fbb34fd18d93a4 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Thu, 10 Dec 2020 18:08:36 +0800 Subject: [PATCH 067/148] correct shell commands --- doc/building-blocks/emco/openness-emco.md | 341 ++++------------------ 1 file changed, 57 insertions(+), 284 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 54db0e50..6d558f51 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -11,7 +11,7 @@ Copyright (c) 2020 Intel Corporation - [EMCO Terminology](#emco-terminology) - [EMCO API](#emco-api) - [EMCO Authentication](#emco-authentication) - - [EMCO Installation](#emco-installation) + - [EMCO Installation With OpenNESS Flavor](#emco-installation-with-openness-flavor) - [Practise with EMCO: SmartCity Deployment](#practise-with-emco-smartcity-deployment) ## Background @@ -303,7 +303,7 @@ rsync NodePort 10.106.10.79 9031:31405/TCP ``` -2. To allow EMCO CLI to communicate with EMCO microservices, open firewall port for the EMCO micro services(SunHui TBD, can it be automated by emco flavor??): +2. To allow EMCO CLI to communicate with EMCO microservices, open firewall port for the EMCO micro services: ```shell firewall-cmd --zone=public --permanent --add-port 31856/tcp firewall-cmd --zone=public --permanent --add-port 31877/tcp @@ -334,6 +334,9 @@ firewall-cmd --reload dcm: host: localhost port: 31877 + gac: + host: localhost + port: 31280 ``` 4. Prepare EMCO CLI values file - `values.yaml` file: @@ -345,34 +348,41 @@ ClusterCloud: cloud01 ClusterLogicEdge: lc-edge01 ClusterLogicCloud: lc-cloud01 AdminCloud: default -ComposteApp: composite_smtc +CompositeApp: composite_smtc AppEdge: smtc_edge AppCloud: smtc_cloud KubeConfigEdge: /opt/clusters_config/edgecluster_config KubeConfigCloud: /opt/clusters_config/cloudcluster_config +EdgeClusterLabel: LabelSmartCityEdge +CloudClusterLabel: LabelSmartCityCloud HelmEdgeApp: /opt/smtc_edge_helmchart.tar.gz HelmCloudApp: /opt/smtc_cloud_helmchart.tar.gz +ProfileEdgeAppName: smtc_edge-profile +ProfileCloudAppName: smtc_cloud-profile ProfileEdgeApp: /opt/smtc_edge_profile.tar.gz ProfileCloudApp: /opt/smtc_cloud_profile.tar.gz DeploymentIntent: smtc-deployment-intent-group -RsyncHost: 192.168.121.103 -RsyncPort: 31405 +CompositeProfile: smtc_composite-profile +GenericPlacementIntent: smtc-placement-intent +AppEdgePlacementIntent: smtcedge-placement-intent +AppCloudPlacementIntent: smtccloud-placement-intent +GenericK8sIntent: smtc-k8s-intent +SmtcEdgeResources: smtcSensorConfig-edge-resources +SmtcCloudResources: smtcSensorConfig-cloud-resources +ResourceName: sensor-info +SmtcEdgeCustomizations: smtcSensorConfig-edge-customizations +SmtcCloudCustomizations: smtcSensorConfig-cloud-customizations +ConfigMapFile: /opt/sensor-info.json +RsyncHost: 172.16.182.96 +RsyncPort: 31048 +GacIP: 172.16.182.96 +GacPort: 31261 ``` > **NOTE:** RsyncHost IP address should be real IP address of EMCO host server. RsyncPort is dynamically allocated by EMCO as shown as above. +> **NOTE:** GAC IP address should be real IP address of EMCO host server. GacPort is dynamically allocated by EMCO as shown as above. +For Helm Charts, Profiles and ConfigMap json files , can get from [SmartCity EMCO Artifacts](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco). - -5. Prepare EMCO controller resource files for resource synchronization - 'controllers_template.yaml' file: -```yaml ---- -version: emco/v2 -resourceContext: - anchor: controllers -metadata: - name: rsync -spec: - host: {{ .RsyncHost }} - port: {{ .RsyncPort }} -``` +5. Download [controllers_template file](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/01_controllers_template.yaml) 6. Use EMCO CLI to create the controller entry with expected result: ```shell @@ -382,117 +392,25 @@ http://192.168.121.103:31298/v2URL: controllers Response Code: 201 ``` ### Creating Cluster Provider and Registering Clusters -Prepare resource yaml file - `clusters_template.yaml`: -```yaml ---- -#clusters provider -version: emco/v2 -resourceContext: - anchor: cluster-providers -metadata: - name: {{ .ClusterProvider }} - ---- -#edge cluster -version: emco/v2 -resourceContext: - anchor: cluster-providers/{{ .ClusterProvider }}/clusters -metadata: - name: {{ .ClusterEdge }} -file: {{ .KubeConfigEdge }} - ---- -#Add label to the edge cluster -version: emco/v2 -resourceContext: - anchor: cluster-providers/{{ .ClusterProvider }}/clusters/{{ .ClusterEdge }}/labels -label-name: LabelSmartCityEdge - ---- -#cloud cluster -version: emco/v2 -resourceContext: - anchor: cluster-providers/{{ .ClusterProvider }}/clusters -metadata: - name: {{ .ClusterCloud }} -file: {{ .KubeConfigCloud }} - ---- -#Add label to the cloud cluster -version: emco/v2 -resourceContext: - anchor: cluster-providers/{{ .ClusterProvider }}/clusters/{{ .ClusterCloud }}/labels -label-name: LabelSmartCityCloud - -``` +Download [clusters_template.yaml file](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/02_cluster-provider_template.yaml). Use EMCO CLI to apply the resource yaml file with expected result: ```shell -# /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f clusters_template.yaml +# /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f 02_cluster-provider_template.yaml ``` ### SmartCity Projects and Creating Logical Clouds -Prepare resource yaml file - `projects_template.yaml` and apply it as mentioned below: -```yaml -#create project -version: emco/v2 -resourceContext: - anchor: projects -metadata: - name: {{ .ProjectName }} - -#create default logical cloud with admin permissions ---- -version: emco/v2 -resourceContext: - anchor: projects/{{ .ProjectName }}/logical-clouds -metadata: - name: {{ .AdminCloud }} -spec: - level: "0" - -#add cluster reference to logical cloud ---- -version: emco/v2 -resourceContext: - anchor: projects/{{ .ProjectName }}/logical-clouds/{{ .AdminCloud }}/cluster-references -metadata: - name: {{ .ClusterLogicEdge }} -spec: - cluster-provider: {{ .ClusterProvider }} - cluster-name: {{ .ClusterEdge }} - loadbalancer-ip: "0.0.0.0" - -#instantiate logical cloud ---- -version: emco/v2 -resourceContext: - anchor: projects/{{ .ProjectName }}/logical-clouds/{{ .AdminCloud }}/instantiate +Download [projects_template.yaml file](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/04_projects_template.yaml) -``` +Use EMCO CLI to apply the resource yaml file with expected result: ```shell -# /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f projects_template.yaml +# /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f 04_projects_template.yaml ``` -### Creating SmartCity Composite Application Entry -Prepare resource yaml file - `composite_apps_template.yaml` and apply it as mentioned below: -```yaml -#creating smartcity composite app entry ---- -version: emco/v2 -resourceContext: - anchor: projects/{{ .ProjectName }}/composite-apps -metadata: - name: {{ .ComposteApp }} -spec: - version: v1 -``` - - ### SmartCity Application Deployment #### Preparing SmartCity Images, Helm Chart and Overriding Profiles On the OpenNESS EMCO cluster. follow the guidance and commands as mentioned below: @@ -548,197 +466,52 @@ Make sure the following images list is existing in the harbor registry project - - eclipse-mosquitto:1.5.8 ``` -Pack the helm chart files used by SmartCity `edge` application and put them under `/opt`. - ```shell - cd Smart-City-Sample/deployment/kubernetes/helm - cp -r smtc smtc_edge - rm smtc_edge/templates/cloud* -rf - tar -zcvf smtc_edge.tar.gz smtc_edge - mv smtc_edge.tar.gz /opt - ``` +Download SmartCity `edge` application [helm chart tarball](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/smtc_edge_helmchart.tar.gz) and put it under `/opt`. -Pack the helm chart files used by SmartCity `cloud` application and put them under `/opt`. - ```shell - cp -r smtc smtc_cloud - rm smtc_cloud/templates/* -rf - cp smtc/templates/*.tpl smtc_cloud/templates/ - cp smtc/templates/cloud* smtc_cloud/templates/ - tar -zcvf smtc_cloud.tar.gz smtc_cloud - mv smtc_cloud.tar.gz /opt - ``` +Download SmartCity `cloud` application [helm chart tarball](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/smtc_cloud_helmchart.tar.gz) and put it under `/opt`. -Prepare Override Profiles - `manifest.yaml` file as below: -```yaml ---- -version: v1 -type: - values: "override_values.yaml" -``` +Download SmartCity `edge` application [profile tarball](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/smtc_edge_profile.tar.gz) and put it under `/opt`. -Prepare Override Profiles - `override_values.yaml` file with empty content, -Pack the two files together as two tarball: `smtc_edge_profile.tar.gz` and `smtc_cloud_profile.tar.gz`. +Download SmartCity `cloud` application [profile tarball](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/smtc_cloud_profile.tar.gz) and put it under `/opt`. #### Onboarding Helm Chart and Overriding Profiles -Prepare resource - `helmcharts_profiles_template.yaml` file and apply it as below: -```yaml ---- -version: emco/v2 -resourceContext: - anchor: projects/{{ .ProjectName }}/composite-apps/{{ .ComposteApp }}/v1/apps -metadata: - name: smtc_edge -file: {{ .HelmEdgeApp }} - ---- -version: emco/v2 -resourceContext: - anchor: projects/{{ .ProjectName }}/composite-apps/{{ .ComposteApp }}/v1/apps -metadata: - name: smtc_cloud -file: {{ .HelmCloudApp }} - -#creating smtc composite profile entry -# version: emco/v2 -# resourceContext: -# anchor: projects/project_smtc/composite-apps/composite_smtc/v1/composite-profiles -# metadata : -# name: smtc_composite-profile ---- -version: emco/v2 -resourceContext: - anchor: projects/{{ .ProjectName }}/composite-apps/{{ .ComposteApp }}/v1/composite-profiles -metadata: - name: smtc_composite-profile - ---- -version: emco/v2 -resourceContext: - anchor: projects/{{ .ProjectName }}/composite-apps/{{ .ComposteApp }}/v1/composite-profiles/smtc_composite-profile/profiles -metadata: - name: smtc_edge-profile -spec: - app-name: {{ .AppEdge }} -file: {{ .ProfileEdgeApp }} - ---- -version: emco/v2 -resourceContext: - anchor: projects/{{ .ProjectName }}/composite-apps/{{ .ComposteApp }}/v1/composite-profiles/smtc_composite-profile/profiles -metadata: - name: smtc_cloud-profile -spec: - app-name: {{ .AppCloud }} -file: {{ .ProfileCloudApp }} +Download [composite_apps_template.yaml file](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/06_composite-apps_template.yaml) -``` +Use EMCO CLI to apply the resource yaml file with expected result: ```shell -# /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f projects_template.yaml +# /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f 06_composite-apps_template.yaml ``` #### Setting Deployment Intent -Prepare resource - `intents_template.yaml` file and apply it as below: -```yaml -#create the deployment intent group ---- -version: emco/v2 -resourceContext: - anchor: projects/{{ .ProjectName }}/composite-apps/{{ .ComposteApp }}/v1/deployment-intent-groups -metadata: - name: {{ .DeploymentIntent }} - description: "smtc deployment intent group" - userData1: test1 - userData2: test2 -spec: - profile: smtc_composite-profile - version: r1 - logical-cloud: {{ .AdminCloud }} - override-values: [] - -#create the intent in deployment intent group ---- -version: emco/v2 -resourceContext: - anchor: projects/{{.ProjectName}}/composite-apps/{{.ComposteApp}}/v1/deployment-intent-groups/{{.DeploymentIntent}}/intents -metadata: - name: {{ .DeploymentIntent }} - description: "smtc deployment intent" - userData1: test1 - userData2: test2 -spec: - intent: - genericPlacementIntent: smtc-placement-intent - -# generic placement intent ---- -version: emco/v2 -resourceContext: - anchor: projects/{{ .ProjectName }}/composite-apps/{{ .ComposteApp }}/v1/deployment-intent-groups/{{ .DeploymentIntent }}/generic-placement-intents -metadata: - name: smtc-placement-intent - description: "smtc generic placement intent" - userData1: test1 - userData2: test2 - -#add edge app placement intent ---- -version: emco/v2 -resourceContext: - anchor: projects/{{ .ProjectName }}/composite-apps/{{ .ComposteApp }}/v1/deployment-intent-groups/{{ .DeploymentIntent }}/generic-placement-intents/smtc-placement-intent/app-intents -metadata: - name: smtcedge-placement-intent - description: "smtc edge app placement intent" - userData1: test1 - userData2: test2 -spec: - app-name: smtc_edge - intent: - allOf: - - provider-name: {{ .ClusterProvider }} - cluster-label-name: LabelSmartCityEdge - -#add cloud app placement intent ---- -version: emco/v2 -resourceContext: - anchor: projects/{{ .ProjectName }}/composite-apps/{{ .ComposteApp }}/v1/deployment-intent-groups/{{ .DeploymentIntent }}/generic-placement-intents/smtc-placement-intent/app-intents -metadata: - name: smtccloud-placement-intent - description: "smtc cloud app placement intent" - userData1: test1 - userData2: test2 -spec: - app-name: smtc_cloud - intent: - allOf: - - provider-name: {{ .ClusterProvider }} - cluster-label-name: LabelSmartCityCloud -``` +Download [intent_template.yaml file](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/09_apps_intent_group_template.yaml) + +Use EMCO CLI to apply the resource yaml file with expected result: ```shell -# /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f projects_template.yaml +# /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f 09_apps_intent_group_template.yaml ``` #### Approving and Instantiating -Prepare resource - `instantiate_template.yaml` file and apply it as below: +Download [approve_template.yaml file](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/12_apps_approve_template.yaml) -```yaml -#Approve ---- -version: emco/v2 -resourceContext: - anchor: projects/{{ .ProjectName }}/composite-apps/{{ .ComposteApp }}/v1/deployment-intent-groups/{{ .DeploymentIntent }}/approve - -#Instantiate ---- -version: emco/v2 -resourceContext: - anchor: projects/{{ .ProjectName }}/composite-apps/{{ .ComposteApp }}/v1/deployment-intent-groups/{{ .DeploymentIntent }}/instantiate +Use EMCO CLI to apply the resource yaml file with expected result: + +```shell +# /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f 12_apps_approve_template.yaml + +``` +Download [instantiate_template.yaml file](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/13_apps_instantiate_template.yaml) + +Use EMCO CLI to apply the resource yaml file with expected result: + +```shell +# /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f 13_apps_instantiate_template.yaml ``` From 68a2126c519275e547252b0ea472202d5187260e Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Thu, 10 Dec 2020 18:11:08 +0800 Subject: [PATCH 068/148] remove firewall section --- doc/building-blocks/emco/openness-emco.md | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 6d558f51..0244beb6 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -303,21 +303,7 @@ rsync NodePort 10.106.10.79 9031:31405/TCP ``` -2. To allow EMCO CLI to communicate with EMCO microservices, open firewall port for the EMCO micro services: -```shell -firewall-cmd --zone=public --permanent --add-port 31856/tcp -firewall-cmd --zone=public --permanent --add-port 31877/tcp -firewall-cmd --zone=public --permanent --add-port 32733/tcp -firewall-cmd --zone=public --permanent --add-port 31182/tcp -firewall-cmd --zone=public --permanent --add-port 32737/tcp -firewall-cmd --zone=public --permanent --add-port 31298/tcp -firewall-cmd --zone=public --permanent --add-port 30916/tcp -firewall-cmd --zone=public --permanent --add-port 31181/tcp -firewall-cmd --zone=public --permanent --add-port 31405/tcp -firewall-cmd --reload -``` - -3. Prepare EMCO CLI configuration file - `remote.yaml` file: +2. Prepare EMCO CLI configuration file - `remote.yaml` file: ```yaml orchestrator: host: localhost @@ -339,7 +325,7 @@ firewall-cmd --reload port: 31280 ``` -4. Prepare EMCO CLI values file - `values.yaml` file: +3. Prepare EMCO CLI values file - `values.yaml` file: ```yaml ProjectName: project_smtc ClusterProvider: smartcity-cluster-provider @@ -382,9 +368,9 @@ GacPort: 31261 > **NOTE:** GAC IP address should be real IP address of EMCO host server. GacPort is dynamically allocated by EMCO as shown as above. For Helm Charts, Profiles and ConfigMap json files , can get from [SmartCity EMCO Artifacts](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco). -5. Download [controllers_template file](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/01_controllers_template.yaml) +4. Download [controllers_template file](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/01_controllers_template.yaml) -6. Use EMCO CLI to create the controller entry with expected result: +5. Use EMCO CLI to create the controller entry with expected result: ```shell # /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f controllers_template.yaml Using config file: remote.yaml From d0d043e559fd96412d060b9a8e105e8e8943cef8 Mon Sep 17 00:00:00 2001 From: Preeti4x <75366059+Preeti4x@users.noreply.github.com> Date: Thu, 10 Dec 2020 18:08:25 +0530 Subject: [PATCH 069/148] Update openness-emco.md Editorial review of newly added content is complete. Kindly approve the PR and merge with Master. --- doc/building-blocks/emco/openness-emco.md | 92 +++++++++++------------ 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 0244beb6..4e3b0a52 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -10,7 +10,7 @@ Copyright (c) 2020 Intel Corporation - [EMCO Architecture](#emco-architecture) - [EMCO Terminology](#emco-terminology) - [EMCO API](#emco-api) - - [EMCO Authentication](#emco-authentication) + - [EMCO Authentication and Authorization](#emco-authentication-and-authorization) - [EMCO Installation With OpenNESS Flavor](#emco-installation-with-openness-flavor) - [Practise with EMCO: SmartCity Deployment](#practise-with-emco-smartcity-deployment) @@ -79,86 +79,86 @@ The distributed application scheduler microservice provides functionalities: - Action Controllers. ##### Lifecycle Operations -The distributed application scheduler supports operations on a deployment intent group resource to instantiate the associated composite application with any placement and action intents performed by the registered placement and action controllers. The basic flow of lifecycle operations on a deployment intent group after all the supporting resources have been created via the APIs are: -- approve: marks the deployment intent group has being approved and ready for instantiation -- instantiate: the Distributed Application Scheduler will prepare the application resourcs for deployment and apply placement and action intents before invoking the Resource Synchronizer to deploy them to the intended remote clusters. -- status: (may be invoked at any step) will provide information on the status of the deployment intent group -- terminate: terminates the application resources of an instantiated application from all of the clusters to which it was deployed. In some cases, if a remote cluster is intermittently unreachable, the instantiate operation may still be retrying the instantiate operation for that cluster. The terminate operation will cause the instantiate operation to complete (i.e. fail), before the termination operation is performed. -- stop: In some cases, if the remote cluster is intermittently unreachable, the Resource Synchronizer will continue retrying an instantiate or terminate operation. The stop operation can be used to force the retry operation to stop and the instantate or terminate operation will be completed (with a failed status). In the case of terminate, this allows the deployment intent group resource to be deleted via the API since deletion is prevented until a deployment intent group resource has reached a completed terminate operation status. +The Distributed Application Scheduler supports operations on a deployment intent group resource to instantiate the associated composite application with any placement, and action intents performed by the registered placement and action controllers. The basic flow of lifecycle operations on a deployment intent group after all the supporting resources have been created via the APIs are: +- approve: marks that the deployment intent group has been approved and is ready for instantiation. +- instantiate: the Distributed Application Scheduler prepares the application resourcs for deployment, and applies placement and action intents before invoking the Resource Synchronizer to deploy them to the intended remote clusters. +- status: (may be invoked at any step) provides information on the status of the deployment intent group. +- terminate: terminates the application resources of an instantiated application from all of the clusters to which it was deployed. In some cases, if a remote cluster is intermittently unreachable, the instantiate operation may still retry the instantiate operation for that cluster. The terminate operation will cause the instantiate operation to complete (i.e. fail), before the termination operation is performed. +- stop: In some cases, if the remote cluster is intermittently unreachable, the Resource Synchronizer will continue retrying an instantiate or terminate operation. The stop operation can be used to force the retry operation to stop, and the instantiate or terminate operation will complete (with a failed status). In the case of terminate, this allows the deployment intent group resource to be deleted via the API, since deletion is prevented until a deployment intent group resource has reached a completed terminate operation status. #### Network Configuration Management -The network configuration management (NCM) microservice provides functionalities: -- Provider Network Management to create provider networks -- Virtual Network Management to create dynamic virtual networks +The network configuration management (NCM) microservice provides the following functionalities: +- Provider Network Management to create provider networks. +- Virtual Network Management to create dynamic virtual networks. - Controller Registration manages network plugin controllers, priorities etc. -- Status Notifier framework allows user to get on-demand status updates or notifications on status updates -- Scheduler with Built in Controller - OVN-for-K8s-NFV Plugin Controller +- Status Notifier framework allows user to get on-demand status updates or notifications on status updates. +- Scheduler with Built in Controller - OVN-for-K8s-NFV Plugin Controller. ##### Lifecycle Operations -The Network Configuration Management microservice supports operations on a the network intents of a cluster resource to instantiate the associated provider and virtual networks that have been defined via the API for the cluster. The basic flow of lifecycle operations on a cluster after all the supporting netowrk resources have been created via the APIs are: -- apply: the Network Configuration Management microservice will prepare the network resources and invoke the Resource Synchronizer to deploy them to the designated cluster. -- status: (may be invoked at any step) will provide information on the status of the cluster networks. -- terminate: terminates the network resources from the cluster to which they were deployed. In some cases, if a remote cluster is intermittently unreachable, the Resource Synchronizer may still be retrying the instantiate operation for that cluster. The terminate operation will cause the instantiate operation to complete (i.e. fail), before the termination operation is performed. -- stop: In some cases, if the remote cluster is intermittently unreachable, the Resource Synchronizer will continue retrying an instantiate or terminate operation. The stop operation can be used to force the retry operation to stop and the instantate or terminate operation will be completed (with a failed status). In the case of terminate, this allows the deployment intent group resource to be deleted via the API since deletion is prevented until a deployment intent group resource has reached a completed terminate operation status. +The Network Configuration Management microservice supports operations on the network intents of a cluster resource to instantiate the associated provider and virtual networks that have been defined via the API for the cluster. The basic flow of lifecycle operations on a cluster, after all the supporting network resources have been created via the APIs are: +- apply: the Network Configuration Management microservice prepares the network resources and invokes the Resource Synchronizer to deploy them to the designated cluster. +- status: (may be invoked at any step) provides information on the status of the cluster networks. +- terminate: terminates the network resources from the cluster to which they were deployed. In some cases, if a remote cluster is intermittently unreachable, the Resource Synchronizer may still retry the instantiate operation for that cluster. The terminate operation will cause the instantiate operation to complete (i.e. fail), before the termination operation is performed. +- stop: In some cases, if the remote cluster is intermittently unreachable, the Resource Synchronizer will continue retrying an instantiate or terminate operation. The stop operation can be used to force the retry operation to stop, and the instantate or terminate operation will be completed (with a failed status). In the case of terminate, this allows the deployment intent group resource to be deleted via the API, since deletion is prevented until a deployment intent group resource has reached a completed terminate operation status. #### Distributed Cloud Manager -The Distributed Cloud Manager (DCM) provides the Logical Cloud abstraction and effectively completes the concept of "multi-cloud". One Logical Cloud is a grouping of one or many clusters, each with their own control plane, specific configurations and geo-location, which get partitioned for a particular EMCO project. This partitioning is made via the creation of distinct, isolated namespaces in each of the (Kubernetes) clusters that thus make up the Logical Cloud. +The Distributed Cloud Manager (DCM) provides the Logical Cloud abstraction and effectively completes the concept of "multi-cloud". One Logical Cloud is a grouping of one or many clusters, each with their own control plane, specific configurations and geo-location, which get partitioned for a particular EMCO project. This partitioning is made via the creation of distinct, isolated namespaces in each of the (Kubernetes*) clusters that thus make up the Logical Cloud. -A Logical Cloud is the overall target of a Deployment Intent Group and is a mandatory parameter (the specific applications under it further refine what gets run and where). A Logical Cloud must be explicitly created and instantiated before a Deployment Intent Group can be instantiated. +A Logical Cloud is the overall target of a Deployment Intent Group and is a mandatory parameter (the specific applications under it further refine what gets run and in which location). A Logical Cloud must be explicitly created and instantiated before a Deployment Intent Group can be instantiated. -Due to the close relationship with Clusters, which are provided by Cluster Registration (clm) above, it's important to understand the mapping between the two. A Logical Cloud groups many Clusters together but a Cluster may also be grouped by multiple Logical Clouds, effectively turning the cluster multi-tenant. The partitioning/multi-tenancy of a particular Cluster, via the different Logical Clouds, is done today at the namespace level (different Logical Clouds access different namespace names, and the name is consistent across the multiple clusters of the Logical Cloud). +Due to the close relationship with Clusters, which are provided by Cluster Registration (clm) above, it is important to understand the mapping between the two. A Logical Cloud groups many Clusters together but a Cluster may also be grouped by multiple Logical Clouds, effectively turning the cluster multi-tenant. The partitioning/multi-tenancy of a particular Cluster, via the different Logical Clouds, is done today at the namespace level (different Logical Clouds access different namespace names, and the name is consistent across the multiple clusters of the Logical Cloud). ![Mapping between Logical Clouds and Clusters](openness-emco-images/openness-emco-lccl.png) ##### Lifecycle Operations Prerequisites to using Logical Clouds: -* with the project-less Cluster Registration API, create the cluster providers, clusters and optionally cluster labels -* with the Distributed Application Scheduler API, create a project which acts as a tenant in EMCO +* with the project-less Cluster Registration API, create the cluster providers, clusters and optionally cluster labels. +* with the Distributed Application Scheduler API, create a project which acts as a tenant in EMCO. The basic flow of lifecycle operations to get a Logical Cloud up and running via the Distributed Cloud Manager API is: * Create a Logical Cloud specifying the following attributes: - Level: either 1 or 0, depending on whether an admin or a custom/user cloud is sought - more on the differences below. - (*for Level-1 only*) Namespace name - the namespace to use in all of the Clusters of the Logical Cloud. - - (*for Level-1 only*) User name - the name of the user that will be authenticating to the Kubernetes APIs to access the namespaces created + - (*for Level-1 only*) User name - the name of the user that will be authenticating to the Kubernetes* APIs to access the namespaces created. - (*for Level-1 only*) User permissions - permissions that the user specified will have in the namespace specified, in all of the clusters. -* (*for Level-1 only*) Create resource quotas and assign them to the Logical Cloud created: this will specify what quotas/limits the user will face in the Logical Cloud, for each of the Clusters. +* (*for Level-1 only*) Create resource quotas and assign them to the Logical Cloud created: this specifies what quotas/limits the user will face in the Logical Cloud, for each of the Clusters. * Assign the Clusters previously created with the project-less Cluster Registration API to the newly-created Logical Cloud. -* Instantiate the Logical Cloud. All of the clusters assigned to the Logical Cloud will be automatically setup to join the Logical Cloud. One this operation is finished, the Distributed Application Scheduler's lifecycle operations can be followed to deploy applications on top of the Logical Cloud. +* Instantiate the Logical Cloud. All of the clusters assigned to the Logical Cloud are automatically set up to join the Logical Cloud. Once this operation is complete, the Distributed Application Scheduler's lifecycle operations can be followed to deploy applications on top of the Logical Cloud. Apart from the creation/instantiation of Logical Clouds, the following operations are also available: -* Terminate a Logical Cloud, which will remove all of the Logical Cloud -related resources from all of the respective Clusters. -* Delete a Logical Cloud, which will eliminate all traces of the Logical Cloud in EMCO. +* Terminate a Logical Cloud - this removes all of the Logical Cloud -related resources from all of the respective Clusters. +* Delete a Logical Cloud - this eliminates all traces of the Logical Cloud in EMCO. ##### Level-1 Logical Clouds -Logical Clouds were introduced to group and partition clusters in a multi-tenant way and across boundaries, improving flexibility and scalability. A Level-1 Logical Cloud is the default type of Logical Cloud providing just that. When projects request a Logical Cloud to be created, they will be providing what permissions are available, resource quotas and clusters that compose it. The Distributed Cloud Manager, alongside the Resource Synchronizer, will setup all the clusters accordingly, with the necessary credentials, namespace/resources, and finally generating the kubeconfig files used to authenticate/reach each of those clusters in the context of the Logical Cloud. +Logical Clouds were introduced to group and partition clusters in a multi-tenant way and across boundaries, improving flexibility and scalability. A Level-1 Logical Cloud is the default type of Logical Cloud providing just that much. When projects request a Logical Cloud to be created, they provide what permissions are available, resource quotas and clusters that compose it. The Distributed Cloud Manager, alongside the Resource Synchronizer, sets up all the clusters accordingly, with the necessary credentials, namespace/resources, and finally generating the kubeconfig files used to authenticate/reach each of those clusters in the context of the Logical Cloud. ##### Level-0 Logical Clouds In some use cases, and in the administrative domains where it makes sense, a project may want to access raw, unmodified, administrator-level clusters. For such cases, no namespaces need to be created and no new users need to be created or authenticated in the API. To solve this, the Distributed Cloud Manager introduces Level-0 Logical Clouds, which offer the same consistent interface as Level-1 Logical Clouds to the Distributed Application Scheduler. Being of type Level-0 means "the lowest-level", or the administrator level. As such, no changes will be made to the clusters themselves. Instead, the only operation that takes place is the reuse of credentials already provided via the Cluster Registration API for the clusters assigned to the Logical Cloud (instead of generating new credentials, namespace/resources and kubeconfig files). #### OVN Action Controller -The OVN Action Controller (ovnaction) microservice is an action controller which may be registered and added to a deployment intent group to apply specific network intents to resources in the composite application. It provides functionalities: -- Network intent APIs which allow specification of network connection intents for resources with in applications. -- On instantiation of a deployment intent group configured to utilize the ovnaction controller, network interface annotations will be added to the pod template of identified application resources. +The OVN Action Controller (ovnaction) microservice is an action controller which may be registered and added to a deployment intent group to apply specific network intents to resources in the composite application. It provides the following functionalities: +- Network intent APIs which allow specification of network connection intents for resources within applications. +- On instantiation of a deployment intent group configured to utilize the ovnaction controller, network interface annotations will be added to the pod template of the identified application resources. - ovnaction supports specifying interfaces which attach to networks created by the Network Configuration Management microservice. #### Traffic Controller -The traffic controller micro-service provides a way to create network policy resources across edge clusters. Provides inbound RESTful API’s to create intents to open the traffic from clients. Also provides change and delete API’s for update and deletion of traffic intents. Using the provided information through intents, creates a network policy resource for each of the application servers on the corresponding edge cluster. +The traffic controller micro-service provides a way to create network policy resources across edge clusters. It provides inbound RESTful APIs to create intents to open the traffic from clients, and provides change and delete APIs for update and deletion of traffic intents. Using the information provided through intents, it also creates a network policy resource for each of the application servers on the corresponding edge cluster. > **NOTE**:For network policy to work, edge cluster must have network policy support using CNI such as calico. #### Resource Syncronizer -This micro-service is the one which deploys the resources in edge/cloud clusters. 'Resource contexts' created by various micro-services are used by this micro-service. It takes care of retrying in case the remote clusters are not reachable temporarily. +This micro-service is the one which deploys the resources in edge/cloud clusters. 'Resource contexts' created by various micro-services are used by this micro-service. It takes care of retrying, in case the remote clusters are not reachable temporarily. #### Generic Action Controller The generic action controller microservice is an action controller which may be registered with the central orchestrator. It can acheive the following usecases: -- Create a new kubernetes object and deploy that along with a specific application which is part of the composite Application. There are two variations here: +- Create a new kubernetes* object and deploy that along with a specific application which is part of the composite Application. There are two variations here: - Default : Apply the new object to every instance of the app in every cluster where the app is deployed. - - Cluster-Specific : Apply the new object only where the app is deployed to a specific cluster, denoted by a cluster-name or a list of clusters denoted by a cluster-label + - Cluster-Specific : Apply the new object only where the app is deployed to a specific cluster, denoted by a cluster-name or a list of clusters denoted by a cluster-label. -- Modify an existing kubernetes object which may have been deployed using the helm chart for an app or may have been newly created by the above mentioned usecase. Modification may correspond to specific fields in the YAML definition of the object. +- Modify an existing kubernetes* object which may have been deployed using the helm chart for an app, or may have been newly created by the above mentioned usecase. Modification may correspond to specific fields in the YAML definition of the object. -To acheive both the usecases, the controller exposes REST APIs to create, update and delete the following : +To acheive both the usecases, the controller exposes REST APIs to create, update and delete the following: - Resource - Specifies the newly defined object or an existing object. - Customization - Specifies the modifications(using JSON Patching) to be applied on the objects. @@ -166,7 +166,7 @@ To acheive both the usecases, the controller exposes REST APIs to create, update ### EMCO Terminology | | | |------------------------|----------------------------------------------------------------------------------------------------------------------------------| -| Cluster Provider | The provider is somebody who owns clusters and registers them. | +| Cluster Provider | The provider is someone who owns clusters and registers them. | | Projects | The projects resource provides means for a collection of application to be grouped. | | | Several applications can exist under a specific project. | | | Projects allows for grouping of applications under a common tenant to be defined. | @@ -187,9 +187,9 @@ For user interaction, EMCO provides [RESTAPI](https://github.com/otcshare/EMCO/b EMCO uses Istio and other open source solutions to provide Multi-tenancy solution leveraging Istio Authorization and Authentication frameworks. This is achieved without adding any logic in EMCO microservices. - Authentication and Authorization for the EMCO users is done at the Isito Ingress Gateway, where all the traffic enters the cluster. -- Istio along with autherservice (istio ecosystem project) enables request-level authentication with JSON Web Token (JWT) validation. Authservice is an entity that works along side with Envoy proxy. It is used to work with external IAM systems (OAUTH2). Many Enterprises have their own OAUTH2 server for authenticating users and provide roles. +- Istio alongwith autherservice (istio ecosystem project) enables request-level authentication with JSON Web Token (JWT) validation. Authservice is an entity that works along side with Envoy proxy. It is used to work with external IAM systems (OAUTH2). Many Enterprises have their own OAUTH2 server for authenticating users and provide roles. -- Authservice and ISTIO can be configured to talk to multiple OAUTH2 servers. Using this capability EMCO can support multiple tenants. (For example one tenant belonging to one project). +- Authservice and ISTIO can be configured to talk to multiple OAUTH2 servers. Using this capability EMCO can support multiple tenants, for example one tenant belonging to one project. - Using Istio AuthorizationPolicy access to different EMCO resources can be controlled based on roles defined for the users. @@ -203,12 +203,12 @@ The following figure shows the authentication flow with EMCO, Istio and Authserv ![OpenNESS EMCO](openness-emco-images/emco-istio-auth.png) _Figure - EMCO Authenication with external OATH2 Server_ -Detail steps for configuring EMCO with Istio can be found in [Emco Integrity and Access Management](https://github.com/otcshare/EMCO/tree/main/docs/user/Emco_Integrity_Access_Management.md) document. +Detailed steps for configuring EMCO with Istio can be found in [Emco Integrity and Access Management](https://github.com/otcshare/EMCO/tree/main/docs/user/Emco_Integrity_Access_Management.md) document. Steps for EMCO Authentication and Authorization Setup: - Install and Configure Keycloak Server to be used in the setup. This server runs outside EMCO cluster - Create a new realm, add users and roles to Keycloak -- Install Istio in the Kubernetes cluster where EMCO is running +- Install Istio in the Kubernetes* cluster where EMCO is running - Enable Sidecar Injection in EMCO namesapce - Install EMCO in EMCO namespace (with Istio sidecars) - Configure Istio Ingress gateway resources for Emco Services @@ -217,7 +217,7 @@ Steps for EMCO Authentication and Authorization Setup: - Apply Authenication and Authorization Policies ### EMCO Installation With OpenNESS Flavor -EMCO supports [multiple deployment options](https://github.com/otcshare/EMCO/tree/main/deployments). OpenNESS offers the `central_orchestrator` to automate EMCO build and deployment as below. +EMCO supports [multiple deployment options](https://github.com/otcshare/EMCO/tree/main/deployments). OpenNESS offers the `central_orchestrator` to automate EMCO build and deployment as mentioned below. The first step is to prepare one server environment which needs to fulfill the [Preconditions](../../getting-started/network-edge/controller-edge-node-setup.md#preconditions). Then Place the EMCO server hostname in `[controller_group]` group in `inventory.ini` file of openness-experience-kit. @@ -263,7 +263,7 @@ kube-system ovs-ovn-jq6dn 1/1 Running ``` -## Practice with EMCO: SmartCity Deployment +## Practise with EMCO: SmartCity Deployment - One OpenNESS edge cluster (representing regional office) and One legacy K8s Cluster (representing cloud) are connected to the OpenNESS EMCO cluster. - SmartCity application is a sample application that is built on top of the OpenVINO™ and Open Visual Cloud software stacks for media processing and analytics. - The whole application is composed of two parts: @@ -364,8 +364,8 @@ RsyncPort: 31048 GacIP: 172.16.182.96 GacPort: 31261 ``` -> **NOTE:** RsyncHost IP address should be real IP address of EMCO host server. RsyncPort is dynamically allocated by EMCO as shown as above. -> **NOTE:** GAC IP address should be real IP address of EMCO host server. GacPort is dynamically allocated by EMCO as shown as above. +> **NOTE:** RsyncHost IP address should be real IP address of EMCO host server. RsyncPort is dynamically allocated by EMCO as shown above. +> **NOTE:** GAC IP address should be real IP address of EMCO host server. GacPort is dynamically allocated by EMCO as shown above. For Helm Charts, Profiles and ConfigMap json files , can get from [SmartCity EMCO Artifacts](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco). 4. Download [controllers_template file](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/01_controllers_template.yaml) From 7d9fc10e3be6cb12d86bf26abd508ae38a063ffe Mon Sep 17 00:00:00 2001 From: Preeti4x <75366059+Preeti4x@users.noreply.github.com> Date: Thu, 10 Dec 2020 18:33:40 +0530 Subject: [PATCH 070/148] Update openness-emco.md Made minor change. Please review and approve PR, and merge with Master. --- doc/building-blocks/emco/openness-emco.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 4e3b0a52..b2bf2213 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -167,7 +167,7 @@ To acheive both the usecases, the controller exposes REST APIs to create, update | | | |------------------------|----------------------------------------------------------------------------------------------------------------------------------| | Cluster Provider | The provider is someone who owns clusters and registers them. | -| Projects | The projects resource provides means for a collection of application to be grouped. | +| Projects | The project resource provides means for a collection of applications to be grouped. | | | Several applications can exist under a specific project. | | | Projects allows for grouping of applications under a common tenant to be defined. | | Composite application | Composite application is combination of multiple applications. | From 8a9162503bf0ec4f9de2a5e2905e0d313c45de62 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Thu, 10 Dec 2020 21:00:12 +0800 Subject: [PATCH 071/148] remove TBD from docs --- _data/navbars/building-blocks.yml | 4 ++-- doc/building-blocks/emco/openness-emco.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/_data/navbars/building-blocks.yml b/_data/navbars/building-blocks.yml index 2defe73b..4243346a 100644 --- a/_data/navbars/building-blocks.yml +++ b/_data/navbars/building-blocks.yml @@ -86,10 +86,10 @@ section: meta_title: Kubernetes Dashboard in OpenNESS meta_description: OpenNESS supports Kubernetes Dashboard that can be used to inspect and manage Kubernetes cluster. - - title: "Edge Multi-Cloud Orchestrator" + - title: "Edge Multi-Cluster Orchestrator" path: section: - title: EMCO White Paper path: /doc/building-blocks/emco/openness-emco - meta_title: Edge Multi-Cloud Orchestrator Support in OpenNESS + meta_title: Edge Multi-Cluster Orchestrator Support in OpenNESS meta_description: OpenNESS provides Geo-Distributed multiple clusters application orchestration. diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index b2bf2213..3b05a357 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -287,7 +287,7 @@ The typical steps involved in the cluster registration and deployment of the app ### EMCO Configuration -1. After [EMCO Installation With OpenNESS Flavor](#emco-installation), logon to the EMCO server, and check ports used by EMCO micro services(SunHui TBD): +1. After [EMCO Installation With OpenNESS Flavor](#emco-installation), logon to the EMCO server, and check ports used by EMCO micro services: ```shell # kubectl get svc -n emco NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE From 4fba2fbcdeb450675fe75c5f0205e890e3f11f55 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Fri, 11 Dec 2020 23:55:26 +0800 Subject: [PATCH 072/148] update openvino exec flow for CSR --- .../app-guide/openness_openvinoexecflow.png | Bin 77579 -> 109999 bytes doc/applications/openness_openvino.md | 10 +++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/doc/applications/app-guide/openness_openvinoexecflow.png b/doc/applications/app-guide/openness_openvinoexecflow.png index e62a78d722e489bd8d412b5df085046bf54dc3db..2871fb36fe60565ccf3cd546c1f95baee31e490c 100644 GIT binary patch literal 109999 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 #z=Qf_fd>PIQC=Cv->wSTBGbepa%qn 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 Date: Sat, 12 Dec 2020 00:07:27 +0800 Subject: [PATCH 073/148] update openvino section in network-edge-applications-onboarding.md --- .../network-edge-applications-onboarding.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/applications-onboard/network-edge-applications-onboarding.md b/doc/applications-onboard/network-edge-applications-onboarding.md index 01fb921f..13f4ed1e 100644 --- a/doc/applications-onboard/network-edge-applications-onboarding.md +++ b/doc/applications-onboard/network-edge-applications-onboarding.md @@ -300,10 +300,12 @@ This section guides users through the complete process of onboarding the OpenVIN 1. An application `yaml` specification file for the OpenVINO producer that is used to deploy the K8s pod can be found in the Edge Apps repository at [./applications/openvino/producer/openvino-prod-app.yaml](https://github.com/otcshare/edgeapps/blob/master/applications/openvino/producer/openvino-prod-app.yaml). The pod will use the Docker image, which must be [built](#building-openvino-application-images) and available on the platform. Deploy the producer application by running: ``` kubectl apply -f openvino-prod-app.yaml + kubectl certificate approve openvino-prod-app ``` 2. An application `yaml` specification file for the OpenVINO consumer that is used to deploy K8s pod can be found in the Edge Apps repository at [./applications/openvino/consumer/openvino-cons-app.yaml](https://github.com/otcshare/edgeapps/blob/master/applications/openvino/consumer/openvino-cons-app.yaml). The pod will use the Docker image, which must be [built](#building-openvino-application-images) and available on the platform. Deploy the consumer application by running: ``` kubectl apply -f openvino-cons-app.yaml + kubectl certificate approve openvino-cons-app ``` 3. Verify that no errors show up in the logs of the OpenVINO consumer application: ``` From 9f68e49802b7c6c9e4fba725f539d8c9a5eeeec0 Mon Sep 17 00:00:00 2001 From: Amr Mokhtar Date: Fri, 11 Dec 2020 17:13:59 +0000 Subject: [PATCH 074/148] Update app onboarding guide with the new CSR method --- doc/applications/openness_appguide.md | 139 ++++++++++++++++---------- 1 file changed, 86 insertions(+), 53 deletions(-) diff --git a/doc/applications/openness_appguide.md b/doc/applications/openness_appguide.md index 5f29d076..e472b57e 100644 --- a/doc/applications/openness_appguide.md +++ b/doc/applications/openness_appguide.md @@ -14,8 +14,8 @@ Copyright (c) 2019 Intel Corporation - [Execution Flow Between EAA, Producer, and Consumer](#execution-flow-between-eaa-producer-and-consumer) - [Cloud Adapter Edge compute Application](#cloud-adapter-edge-compute-application) - [Application On-boarding](#application-on-boarding) + - [Authentication](#authentication) - [OpenNESS-aware Applications](#openness-aware-applications) - - [Authentication](#authentication) - [Service Activation](#service-activation) - [Service Discovery and Subscription](#service-discovery-and-subscription) - [Service Notifications](#service-notifications) @@ -56,13 +56,13 @@ OpenNESS application can be categorized in different ways depending on the scena ### Producer Application OpenNESS Producer applications are edge compute applications that provide services to other applications running on the edge compute platform. Producer applications do not serve end users traffic directly. They are sometimes referred to as Edge services. The following are some characteristics of a producer app: -- All producer apps must authenticate and acquire TLS. +- All producer apps must be TLS-capable and communicate through HTTPS. - All producer apps need to activate if the service provided by them needs to be discoverable by other edge applications. - A producer apps can have one or more fields for which it will provide notification updates. ### Consumer Application OpenNESS Consumer applications are edge compute applications that serve end users traffic directly. Consumer applications may or may not subscribe to the services from other producer applications on the edge node. The following are some characteristics of a consumer app: -- It is not mandatory for consumer apps to authenticate if they don't wish to call EAA APIs. +- It is not mandatory for consumer apps to be TLS-capable if they don't wish to call EAA APIs. - A consumer application can subscribe to any number of services from producer apps. Future extensions can implement entitlements to consumer apps to create access control lists. - Producer to Consumer update will use a web socket for notification. If there is further data to be shared between producer and consumer, other NFVi components such as OVS/VPP/NIC-VF can be used for data transfer. @@ -84,7 +84,7 @@ The consumer application is based on OpenVINO™ [OpenVINO] (https://software.in The OpenVINO producer application is responsible for activating a service in OpenNESS Edge Node. This service is simply a publication of the inference model name that can be used by the OpenVINO consumer application(s). This service involves sending periodic `openvino-model` notifications (its interval is defined by `NotificationInterval`), which in turn is absorbed by the consumer application(s). -The producer application commences publishing notifications after it handshakes with the Edge Application Agent (EAA) over HTTPS REST API. This handshake involves authentication and service activation. +The producer application commences publishing notifications after registration with the Edge Application Agent (EAA) over HTTPS REST API. This sample OpenVINO producer application represents a real-world application where city traffic behavior can is monitored by detecting humans and automobiles at different times of the day. @@ -92,12 +92,11 @@ This sample OpenVINO producer application represents a real-world application wh The OpenVINO consumer application executes object detection on the received video stream (from the client simulator) using an OpenVINO pre-trained model. The model of use is designated by the model name received in the `openvino-model` notification. The corresponding model file is provided to the integrated OpenVINO C++ application. -When the consumer application commences execution, it handshakes with EAA in a process that involves: -- Authentication -- Websocket connection establishment +When the consumer application commences execution, it communicates with EAA and perform operations involving: +- Websocket connection establishment - Service discovery -- Service subscription - +- Service subscription + Websocket connection retains a channel for EAA to forward notifications to the consumer application whenever a notification is received from the producer application over HTTPS REST API. Only subscribed-to notifications are forwarded on to the websocket. This sample OpenVINO consumer application represents a real-world application and depending on the input object model, it can detect objects in the input video stream and annotate (count if needed). @@ -133,67 +132,101 @@ Applications to be onboarded on the OpenNESS framework must be self-contained in > **NOTE:** Code snippets given in this guide are written in Go language; this is purely for the ease of demonstration. All other programming languages should suffice for the same purposes. -### OpenNESS-aware Applications -Edge applications must introduce themselves to the OpenNESS framework and identify if they would like to activate new edge services or consume an existing service. The Edge Application Agent (EAA) component is the handler of all the edge applications hosted by the OpenNESS edge node and acts as their point of contact. All interactions with EAA are through REST APIs, which are defined in [Edge Application Authentication API](https://www.openness.org/api-documentation/?api=auth) and [Edge Application API](https://www.openness.org/api-documentation/?api=eaa). +### Authentication -OpenNESS-awareness involves (a) authentication, (b) service activation/deactivation, (c) service discovery, (d) service subscription, and (e) Websocket connection establishment. The Websocket connection retains a channel for EAA for notification forwarding to pre-subscribed consumer applications. Notifications are generated by "producer" edge applications and absorbed by "consumer" edge applications. +All communications over EAA REST APIs are secured with HTTPS and TLS (Transport Layer Security). Therefore, all applications that are onboarded on OpenNESS must obtain X.509 certificates from a Certificate Authority (CA). This is performed by [signing a certificate through the Kubernetes* API](https://kubernetes.io/docs/reference/access-authn-authz/certificate-signing-requests/). Each application that requires a certificate should generate it using the Certificate Signer by sending a CSR via Certificate Requester as detailed in [Certificate Signer guide](../applications-onboard/openness-certsigner.md). In brief, the application YAML specs must be extended to: -The sequence of operations for the producer application are: -1. Authenticate with an OpenNESS edge node -2. Activate new service and include the list of notifications involved -3. Send notifications to the OpenNESS edge node, according to business logic +1. Include RBAC Service Account and Cluster Role Binding +2. Include 2 Init Containers +3. Create a ConfigMap with a JSON CSR config -The sequence of operations for the consumer application: -1. Authenticate with an OpenNESS edge node -2. Discover the available services on OpenNESS edge platform -3. Subscribe to services of interest and listen for notifications +The above changes will enabled the application to exercise CSR with Kubernetes* API through the OpenNESS CertSigner service. + +The cluster admin should manually approve the certificate in order to complete the application onboarding: -#### Authentication +```shell +kubectl certificate approve +``` -All communications over EAA REST APIs are secured with HTTPS and TLS (Transport Layer Security). Therefore, the wrapper program must authenticate itself by sending a Certificate Signing Request (CSR) to EAA to receive a digital identity certificate that is used in signing all the forthcoming HTTPS and Websocket communications. CSR is performed through the [Edge Application Authentication API](https://www.openness.org/api-documentation/?api=auth). +> **NOTE:** The authentication steps is required when onboarding OpenNESS-aware and OpenNESS-agnostic applications. -Example of the authentication procedure with EAA is given below: +The below Golang sample represent the logic that the application can use to load the signed certificate and use it for subsequent HTTPS communications. The function `CreateEncryptedClient` loads the certificates from the container local file system and instantiates the Golang's [TLS client](https://golang.org/pkg/net/http/#Client) instance that is subsequently used in further HTTP messaging. ```golang -certTemplate := x509.CertificateRequest{ - Subject: pkix.Name{ - CommonName: "namespace:app-id", - Organization: []string{"OpenNESS Organization"}, - }, - SignatureAlgorithm: x509.ECDSAWithSHA256, - EmailAddresses: []string{"hello@openness.org"}, +func CreateEncryptedClient() (*http.Client, error) { + + cert, err := tls.LoadX509KeyPair(Cfg.CertPath, Cfg.KeyPath) + if err != nil { + return nil, errors.Wrap(err, "Failed to load client certificate") + } + + certPool := x509.NewCertPool() + caCert, err := ioutil.ReadFile(Cfg.RootCAPath) + if err != nil { + return nil, errors.Wrap(err, "Failed to load CA Cert") + } + certPool.AppendCertsFromPEM(caCert) + + client := &http.Client{ + Transport: &http.Transport{ + TLSClientConfig: &tls.Config{RootCAs: certPool, + Certificates: []tls.Certificate{cert}, + ServerName: Cfg.EaaCommonName, + }, + }} + + log.Printf("%#v", client) + + tlsResp, err := client.Get("https://" + "https://eaa.openness:443") + if err != nil { + return nil, errors.Wrap(err, "Encrypted connection failure") + } + defer func() { + if e := tlsResp.Body.Close(); e != nil { + log.Println("Failed to close response body " + e.Error()) + } + }() + return client, nil } -conCsrBytes, _ := x509.CreateCertificateRequest(rand.Reader, - &certTemplate, prvKey) +func main() { + ... -csrMem := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE REQUEST", - Bytes: conCsrBytes}) + client, err := CreateEncryptedClient() + if err != nil { + log.Fatal(err) + return + } -conID := AuthIdentity{ - Csr: string(csrMem), -} + req, err := http.NewRequest("POST", "https://eaa.openness:443/services", + bytes.NewReader(payload)) + if err != nil { + log.Fatal(err) + return + } -conIdBytes, _ := json.Marshal(conID) + resp, err := client.Do(req) + if err != nil { + log.Fatal(err) + return + } -resp, _ := http.Post("http://eaa.openness:80/auth", - bytes.NewBuffer(conIdBytes)) + ... +} +``` -var conCreds AuthCredentials -json.NewDecoder(resp.Body).Decode(&conCreds) +### OpenNESS-aware Applications +Edge applications must introduce themselves to the OpenNESS framework and identify if they would like to activate new edge services or consume an existing service. The Edge Application Agent (EAA) component is the handler of all the edge applications hosted by the OpenNESS edge node and acts as their point of contact. All interactions with EAA are through REST APIs, which are defined in [Edge Application API](https://www.openness.org/api-documentation/?api=eaa). -x509Encoded, _ := x509.MarshalECPrivateKey(prvKey) +OpenNESS-awareness involves (a) service activation/deactivation, (b) service discovery, (c) service subscription, and (c) Websocket connection establishment. The Websocket connection retains a channel for EAA for notification forwarding to pre-subscribed consumer applications. Notifications are generated by "producer" edge applications and absorbed by "consumer" edge applications. -pemEncoded := pem.EncodeToMemory(&pem.Block{Type: "PRIVATE KEY", - Bytes: x509Encoded}) -conCert, _ := tls.X509KeyPair([]byte(conCreds.Certificate), - pemEncoded) +The sequence of operations for the producer application are: +1. Activate new service and include the list of notifications involved +2. Send notifications to the OpenNESS edge node, according to business logic -conCertPool := x509.NewCertPool() -for _, cert := range conCreds.CaPool { - ok := conCertPool.AppendCertsFromPEM([]byte(cert)) -} -``` +The sequence of operations for the consumer application: +1. Discover the available services on OpenNESS edge platform +2. Subscribe to services of interest and listen for notifications #### Service Activation @@ -344,7 +377,7 @@ In a situation where the developer has a legacy, pre-compiled or binary applicat Legacy, pre-compiled, or binary applications can be made OpenNESS-aware by following few steps without editing their code. This can be done by wrapping these applications with a separate program that is written purposefully to (a) communicate with OpenNESS Edge Node and (b) execute the legacy application. -The wrapper program interacts with EAA for (a) authentication, (b) Websocket connection establishment, (c) service discovery, and (d) service subscription. And call the legacy application with the proper arguments based on the received notifications. Or, if the legacy application is intended to work as a producer application, then the wrapper programmer should activate the edge service with EAA and send the notifications based on the outcomes of the legacy application. +The wrapper program interacts with EAA for (a) Websocket connection establishment, (b) service discovery, and (c) service subscription. And call the legacy application with the proper arguments based on the received notifications. Or, if the legacy application is intended to work as a producer application, then the wrapper programmer should activate the edge service with EAA and send the notifications based on the outcomes of the legacy application. The code below gives an example of an executable application being called at the operating system level when a notification is received from EAA. The executable application is separately compiled and exists on the file system. A similar approach has been followed with the OpenVINO sample application, which was originally written in C++ but is called from a wrapper Go-lang program. From 76c4c8dda7e20fa7f29966b1ee5bafce0e1542bf Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Sat, 12 Dec 2020 10:24:44 +0800 Subject: [PATCH 075/148] address comments on certsigner typo error --- doc/applications/openness_openvino.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/applications/openness_openvino.md b/doc/applications/openness_openvino.md index becf197d..5fa90b36 100644 --- a/doc/applications/openness_openvino.md +++ b/doc/applications/openness_openvino.md @@ -49,7 +49,7 @@ The client simulator is responsible for continuously transmitting a video stream The OpenVINO producer application is responsible for activating a service in OpenNESS Edge Node. This service is simply a publication of the inference model name, which can be used by the OpenVINO consumer application(s). This service involves sending periodic `openvino-inference` notifications, which in turn are absorbed by the consumer application(s). -The producer application commences publishing notifications after it handshakes with the Edge Application Agent (EAA) over HTTPS REST API. This handshaking involves authentication and service activation. The authentication's certificate should be generated with using the Certificate Signer by sending a CSR via Certificate Requester. +The producer application commences publishing notifications after it handshakes with the Edge Application Agent (EAA) over HTTPS REST API. This handshaking involves authentication and service activation. The HTTPS communication requires certificate which should be generated with using the Certificate Signer by sending a CSR via Certificate Requester. The `openvino-inference` provides information about the model name used in video inferencing and the acceleration type. Contents of the notification are defined by the below struct: @@ -79,9 +79,9 @@ By default, the producer Docker image builds with `CPU` only inferencing. OpenVINO consumer application executes object detection on the received video stream (from the client simulator) using an OpenVINO pre-trained model. The model of use is designated by the model name received in the `openvino-inference` notification. The corresponding model file is provided to the integrated OpenVINO C++ application. -When the consumer application commences execution, it handshakes with EAA in a process that involves (a) authentication, (b) WebSocket connection establishment, (c) service discovery, and (d) service subscription. The WebSocket connection retains a channel for EAA to forward notifications to the consumer application whenever a notification is received from the producer application over the HTTPS REST API. Only subscribed-to notifications are forwarded to the WebSocket. +When the consumer application commences execution, it handshakes with EAA in a process that involves (a) WebSocket connection establishment, (b) service discovery, and (c) service subscription. The WebSocket connection retains a channel for EAA to forward notifications to the consumer application whenever a notification is received from the producer application over the HTTPS REST API. Only subscribed-to notifications are forwarded to the WebSocket. -The authentication's certificate should be generated with using the Certificate Signer by sending a CSR via Certificate Requester. +The HTTPS communication requires certificate which should be generated with using the Certificate Signer by sending a CSR via Certificate Requester. ## Execution Flow Between CertSigner, EAA, Producer & Consumer @@ -91,6 +91,7 @@ The simplified execution flow of the consumer and producer applications with EAA ![Figure caption \label{OpenVINO Execution Flow}](app-guide/openness_openvinoexecflow.png) _Figure - OpenVINO Application Execution Flow_ + For more information about CSR, refer to [OpenNESS CertSigner](../applications-onboard/openness-certsigner.md) ## Build & Deployment of OpenVINO Applications From cddfa588b9782400ff4f2d00525346b1a1dace91 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Mon, 14 Dec 2020 14:04:35 +0800 Subject: [PATCH 076/148] address comments from PXT Prakath --- doc/building-blocks/emco/openness-emco.md | 36 +++++++++++------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 3b05a357..3b0ada52 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -2,9 +2,9 @@ SPDX-License-Identifier: Apache-2.0 Copyright (c) 2020 Intel Corporation ``` -# Edge Multi-Cluster Orchestrator (EMCO) Support in OpenNESS +# Edge Multi-Cluster Orchestrator (EMCO) -- [Edge Multi-Cluster Orchestrator (EMCO) Support in OpenNESS](#edge-multi-cluster-orchestrator-emco-support-in-openness) +- [Edge Multi-Cluster Orchestrator (EMCO)](#edge-multi-cluster-orchestrator-emco) - [Background](#background) - [EMCO Introduction](#emco-introduction) - [EMCO Architecture](#emco-architecture) @@ -15,9 +15,9 @@ Copyright (c) 2020 Intel Corporation - [Practise with EMCO: SmartCity Deployment](#practise-with-emco-smartcity-deployment) ## Background -EMCO (Edge Multi-Cluster Orchestration) is a Geo-distributed application orchestrator for Kubernetes\*. The main objective of EMCO is automation of the deployment of applications and services across clusters. It acts as a central orchestrator that can manage edge services and network functions across geographically distributed edge clusters from different third parties. Finally, the resource orchestration within a cluster of nodes will leverage Kubernetes* and Helm charts. +Edge Multi-Cluster Orchestration(EMCO), an OpenNESS Building Block, is a Geo-distributed application orchestrator for Kubernetes\*. The main objective of EMCO is automation of the deployment of applications and services across clusters. It acts as a central orchestrator that can manage edge services and network functions across geographically distributed edge clusters from different third parties. Finally, the resource orchestration within a cluster of nodes will leverage Kubernetes* and Helm charts. -EMCO addresses the need for deploying 'composite applications' in multiple geographical locations. Few industry communities started to use the term 'composite application' to represent these complex applications and deployments. +EMCO addresses the need for deploying 'composite applications' in multiple geographical locations. > **NOTE**: A 'composite application' is a combination of multiple applications. Based on the deployment intent, various applications of the composite application get deployed at various locations, and get replicated in multiple locations. Compared with other multipe-clusters orchestration, EMCO focuses on the following functionalies: @@ -26,7 +26,7 @@ Compared with other multipe-clusters orchestration, EMCO focuses on the followin - Deploying edge services and network functions on to different nodes spread across the different clusters. - Monitoring the health of the deployed edge services/network functions across the clusters. - Orchestrating edge services and network functions with deployment intents based on compute, acceleration, and storage requirements. -- Supporting onboard for multiple tenants from different enterprises while ensuring confidentiality and full isolation across the tenants. +- Supporting onboarding of multiple tenants from different enterprises while ensuring confidentiality and full isolation across the tenants. The following figure shows the topology overview for the OpenNESS EMCO orchestration with edge and multiple clusters. @@ -39,9 +39,9 @@ All the managed edge clusters and cloud clusters are connected with EMCO cluster - The edge clusters in the diagram can be installed and provisioned by using [OpenNESS Media Analytics Flavor](../../flavors.md). - The cloud cluster in the diagram can be any type of cloud cluster, for example: Azure Cloud. - The composite application - SmartCity is composed of two parts: edge applications and cloud (web) applications. - - The edge application executes media processing and analytics on the multiple edge clusters to reduce latency. + - The edge application executes media processing and analytics on multiple edge clusters to reduce latency. - The cloud application is like a web application for additional post-processing, such as calculating statistics and display/visualization on the cloud cluster side. - - EMCO user can deploy the SmartCity applications across the clusters. Besides that, EMCO supports override values, profiles for operator to satisfy the need of deployments. + - An EMCO user can deploy the SmartCity applications across the clusters. Besides that, EMCO supports override values, profiles for the operator to satisfy the need of deployments. - For more details, refer to [SmartCity Deployment Practise with EMCO](#smartcity-deployment-practise-with-emco). This document aims to familiarize the user with [OpenNESS deployment flavor](../../flavors.md) for EMCO installation and provision, and provide instructions accordingly. @@ -61,13 +61,13 @@ _Figure - EMCO Architecture_ - Monitoring covers distributed application. #### Cluster Registration -A micro-service exposes RESTful API. User can register Cluster providers and clusters of those providers via these APIs. After preparing edge clusters and cloud clusters, which can be any kubernetes* clusters, user can onboard those clusters to EMCO by creating a Cluster Provider and then adding Clusters to the Cluster Provider. After cluster providers are created, the KubeConfig files of edge and cloud clusters should be provided to EMCO as part of the multi-part POST call to the Cluster API. +A microservice exposes RESTful API. User can register cluster providers and clusters of those providers via these APIs. After preparing edge clusters and cloud clusters, which can be any Kubernetes* cluster, user can onboard those clusters to EMCO by creating a cluster provider and then adding clusters to the cluster provider. After cluster providers are created, the KubeConfig files of edge and cloud clusters should be provided to EMCO as part of the multi-part POST call to the Cluster API. -Additionally, after a Cluster is created, labels and key value pairs can be added to the Cluster via the EMCO API. Clusters can be specified by label when preparing placement intents. -> **NOTE**: The cluster provider is someone who owns clusters and registers them to EMCO. If an Enterprise has clusters, for example from AWS, then the cluster provider for those clusters from AWS is still considered as from that Enterprise. AWS is not the provider. Here, the provider is someone who owns clusters and registers them here. Since, AWS does not register their clusters here, AWS is not considered as Cluster provider in this context. +Additionally, after a cluster is created, labels and key value pairs can be added to the cluster via the EMCO API. Clusters can be specified by label when preparing placement intents. +> **NOTE**: The cluster provider is someone who owns clusters and registers them to EMCO. If an Enterprise has clusters, for example from AWS, then the cluster provider for those clusters from AWS is still considered as from that Enterprise. AWS is not the provider. Here, the provider is someone who owns clusters and registers them here. Since, AWS does not register their clusters here, AWS is not considered as cluster provider in this context. #### Distributed Application Scheduler -The distributed application scheduler microservice provides functionalities: +The distributed application scheduler microservice provides the following functionalities: - Project Management provides multi-tenancy in the application from a user perspective. - Composite App Management manages composite apps that are collections of Helm Charts, one per application. - Composite Profile Management manages composite profiles that are collections of profile, one per application. @@ -85,6 +85,7 @@ The Distributed Application Scheduler supports operations on a deployment intent - status: (may be invoked at any step) provides information on the status of the deployment intent group. - terminate: terminates the application resources of an instantiated application from all of the clusters to which it was deployed. In some cases, if a remote cluster is intermittently unreachable, the instantiate operation may still retry the instantiate operation for that cluster. The terminate operation will cause the instantiate operation to complete (i.e. fail), before the termination operation is performed. - stop: In some cases, if the remote cluster is intermittently unreachable, the Resource Synchronizer will continue retrying an instantiate or terminate operation. The stop operation can be used to force the retry operation to stop, and the instantiate or terminate operation will complete (with a failed status). In the case of terminate, this allows the deployment intent group resource to be deleted via the API, since deletion is prevented until a deployment intent group resource has reached a completed terminate operation status. + #### Network Configuration Management The network configuration management (NCM) microservice provides the following functionalities: - Provider Network Management to create provider networks. @@ -128,7 +129,6 @@ Apart from the creation/instantiation of Logical Clouds, the following operation * Terminate a Logical Cloud - this removes all of the Logical Cloud -related resources from all of the respective Clusters. * Delete a Logical Cloud - this eliminates all traces of the Logical Cloud in EMCO. - ##### Level-1 Logical Clouds Logical Clouds were introduced to group and partition clusters in a multi-tenant way and across boundaries, improving flexibility and scalability. A Level-1 Logical Cloud is the default type of Logical Cloud providing just that much. When projects request a Logical Cloud to be created, they provide what permissions are available, resource quotas and clusters that compose it. The Distributed Cloud Manager, alongside the Resource Synchronizer, sets up all the clusters accordingly, with the necessary credentials, namespace/resources, and finally generating the kubeconfig files used to authenticate/reach each of those clusters in the context of the Logical Cloud. @@ -142,21 +142,21 @@ The OVN Action Controller (ovnaction) microservice is an action controller which - ovnaction supports specifying interfaces which attach to networks created by the Network Configuration Management microservice. #### Traffic Controller -The traffic controller micro-service provides a way to create network policy resources across edge clusters. It provides inbound RESTful APIs to create intents to open the traffic from clients, and provides change and delete APIs for update and deletion of traffic intents. Using the information provided through intents, it also creates a network policy resource for each of the application servers on the corresponding edge cluster. +The traffic controller microservice provides a way to create network policy resources across edge clusters. It provides inbound RESTful APIs to create intents to open the traffic from clients, and provides change and delete APIs for update and deletion of traffic intents. Using the information provided through intents, it also creates a network policy resource for each of the application servers on the corresponding edge cluster. > **NOTE**:For network policy to work, edge cluster must have network policy support using CNI such as calico. + #### Resource Syncronizer -This micro-service is the one which deploys the resources in edge/cloud clusters. 'Resource contexts' created by various micro-services are used by this micro-service. It takes care of retrying, in case the remote clusters are not reachable temporarily. +This microservice is the one which deploys the resources in edge/cloud clusters. 'Resource contexts' created by various microservices are used by this microservice. It takes care of retrying, in case the remote clusters are not reachable temporarily. #### Generic Action Controller - The generic action controller microservice is an action controller which may be registered with the central orchestrator. It can acheive the following usecases: -- Create a new kubernetes* object and deploy that along with a specific application which is part of the composite Application. There are two variations here: +- Create a new Kubernetes* object and deploy that along with a specific application which is part of the composite Application. There are two variations here: - Default : Apply the new object to every instance of the app in every cluster where the app is deployed. - Cluster-Specific : Apply the new object only where the app is deployed to a specific cluster, denoted by a cluster-name or a list of clusters denoted by a cluster-label. -- Modify an existing kubernetes* object which may have been deployed using the helm chart for an app, or may have been newly created by the above mentioned usecase. Modification may correspond to specific fields in the YAML definition of the object. +- Modify an existing Kubernetes* object which may have been deployed using the helm chart for an app, or may have been newly created by the above mentioned usecase. Modification may correspond to specific fields in the YAML definition of the object. To acheive both the usecases, the controller exposes REST APIs to create, update and delete the following: @@ -221,7 +221,7 @@ EMCO supports [multiple deployment options](https://github.com/otcshare/EMCO/tre The first step is to prepare one server environment which needs to fulfill the [Preconditions](../../getting-started/network-edge/controller-edge-node-setup.md#preconditions). Then Place the EMCO server hostname in `[controller_group]` group in `inventory.ini` file of openness-experience-kit. -> **NOTE**: `[edgenode_group]` and `[edgenode_vca_group]` are not required for configuration, since EMCO micro services just need to be deployed on the kubernetes* control plane node. +> **NOTE**: `[edgenode_group]` and `[edgenode_vca_group]` are not required for configuration, since EMCO micro services just need to be deployed on the Kubernetes* control plane node. Run script `./deploy_ne.sh -f central_orchestrator`. Deployment should complete successfully. In the flavor, harbor registry is deployed to provide images services as well. From ab70ebe228d4392a35c68a171bf47c62688d43fa Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Mon, 14 Dec 2020 15:51:18 +0800 Subject: [PATCH 077/148] update emco practise --- _data/navbars/building-blocks.yml | 4 +- .../openness-emco-smtcui.png | Bin 0 -> 549169 bytes doc/building-blocks/emco/openness-emco.md | 295 +++++++----------- 3 files changed, 113 insertions(+), 186 deletions(-) create mode 100644 doc/building-blocks/emco/openness-emco-images/openness-emco-smtcui.png diff --git a/_data/navbars/building-blocks.yml b/_data/navbars/building-blocks.yml index 4243346a..25bbf949 100644 --- a/_data/navbars/building-blocks.yml +++ b/_data/navbars/building-blocks.yml @@ -91,5 +91,5 @@ section: section: - title: EMCO White Paper path: /doc/building-blocks/emco/openness-emco - meta_title: Edge Multi-Cluster Orchestrator Support in OpenNESS - meta_description: OpenNESS provides Geo-Distributed multiple clusters application orchestration. + meta_title: Edge Multi-Cluster Orchestrator + meta_description: Geo-Distributed multiple clusters application orchestration. diff --git a/doc/building-blocks/emco/openness-emco-images/openness-emco-smtcui.png b/doc/building-blocks/emco/openness-emco-images/openness-emco-smtcui.png new file mode 100644 index 0000000000000000000000000000000000000000..8796aa48e86592e7c7df246572ddf9f9a418757e GIT binary patch literal 549169 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≫#zg!Hg{;8I; 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

TTxBax|CPr1mKT>UcrS9e}ITEp7i; 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%0A;-VK!mx0{^dO)mhEjnGoMU}T+M1K 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 9061:31856/TCP 125m -dcm NodePort 10.107.241.154 9077:31877/TCP 125m -dtc NodePort 10.110.138.168 9053:32733/TCP,9018:31182/TCP 125m -etcd ClusterIP 10.97.101.134 2379/TCP,2380/TCP 125m -mongo ClusterIP 10.104.168.175 27017/TCP 125m -ncm NodePort 10.103.52.184 9081:32737/TCP 125m -orchestrator NodePort 10.106.133.59 9015:31298/TCP 125m -ovnaction NodePort 10.110.224.77 9032:30916/TCP,9051:31181/TCP 125m -rsync NodePort 10.106.10.79 9031:31405/TCP 125m +HARBORRHOST= -``` +cd /etc/docker/certs.d/ +mkdir ${HARBORRHOST} +cd ${HARBORRHOST} +echo -n | openssl s_client -showcerts -connect ${HARBORRHOST} 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > harbor.crt -2. Prepare EMCO CLI configuration file - `remote.yaml` file: -```yaml - orchestrator: - host: localhost - port: 31298 - clm: - host: localhost - port: 31856 - ncm: - host: localhost - port: 32737 - ovnaction: - host: localhost - port: 31181 - dcm: - host: localhost - port: 31877 - gac: - host: localhost - port: 31280 +HARBORRPW=Harbor12345 +docker login ${HARBORRHOST} -u admin -p ${HARBORRPW} ``` +> **NOTE**: should be `:30003`. -3. Prepare EMCO CLI values file - `values.yaml` file: -```yaml -ProjectName: project_smtc -ClusterProvider: smartcity-cluster-provider -ClusterEdge: edge01 -ClusterCloud: cloud01 -ClusterLogicEdge: lc-edge01 -ClusterLogicCloud: lc-cloud01 -AdminCloud: default -CompositeApp: composite_smtc -AppEdge: smtc_edge -AppCloud: smtc_cloud -KubeConfigEdge: /opt/clusters_config/edgecluster_config -KubeConfigCloud: /opt/clusters_config/cloudcluster_config -EdgeClusterLabel: LabelSmartCityEdge -CloudClusterLabel: LabelSmartCityCloud -HelmEdgeApp: /opt/smtc_edge_helmchart.tar.gz -HelmCloudApp: /opt/smtc_cloud_helmchart.tar.gz -ProfileEdgeAppName: smtc_edge-profile -ProfileCloudAppName: smtc_cloud-profile -ProfileEdgeApp: /opt/smtc_edge_profile.tar.gz -ProfileCloudApp: /opt/smtc_cloud_profile.tar.gz -DeploymentIntent: smtc-deployment-intent-group -CompositeProfile: smtc_composite-profile -GenericPlacementIntent: smtc-placement-intent -AppEdgePlacementIntent: smtcedge-placement-intent -AppCloudPlacementIntent: smtccloud-placement-intent -GenericK8sIntent: smtc-k8s-intent -SmtcEdgeResources: smtcSensorConfig-edge-resources -SmtcCloudResources: smtcSensorConfig-cloud-resources -ResourceName: sensor-info -SmtcEdgeCustomizations: smtcSensorConfig-edge-customizations -SmtcCloudCustomizations: smtcSensorConfig-cloud-customizations -ConfigMapFile: /opt/sensor-info.json -RsyncHost: 172.16.182.96 -RsyncPort: 31048 -GacIP: 172.16.182.96 -GacPort: 31261 -``` -> **NOTE:** RsyncHost IP address should be real IP address of EMCO host server. RsyncPort is dynamically allocated by EMCO as shown above. -> **NOTE:** GAC IP address should be real IP address of EMCO host server. GacPort is dynamically allocated by EMCO as shown above. -For Helm Charts, Profiles and ConfigMap json files , can get from [SmartCity EMCO Artifacts](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco). +3. On EMCO server, download the [scripts](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco). -4. Download [controllers_template file](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/01_controllers_template.yaml) +4. Run the command for the environment setup with success return as below: +```shell +# cd cli-scripts/ +# ./env_setup.sh +``` -5. Use EMCO CLI to create the controller entry with expected result: +5. Run the command for the clusters setup with expected result as below. ```shell -# /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f controllers_template.yaml -Using config file: remote.yaml -http://192.168.121.103:31298/v2URL: controllers Response Code: 201 -``` +# cd cli-scripts/ +# ./01_apply.sh -### Creating Cluster Provider and Registering Clusters -Download [clusters_template.yaml file](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/02_cluster-provider_template.yaml). +.... +URL: cluster-providers/smartcity-cluster-provider/clusters/edge01/labels Response Code: 201 Response: {"label-name":"LabelSmartCityEdge"} +URL: cluster-providers/smartcity-cluster-provider/clusters/cloud01/labels Response Code: 201 Response: {"label-name":"LabelSmartCityCloud"} +``` -Use EMCO CLI to apply the resource yaml file with expected result: +### Project Setup +Run the command for the project setup with expected result as below. ```shell -# /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f 02_cluster-provider_template.yaml +# cd cli-scripts/ +# ./02_apply.sh +Using config file: emco_cfg.yaml +http://localhost:31298/v2 +URL: projects Response Code: 201 Response: {"metadata":{"name":"project_smtc","description":"","UserData1":"","UserData2":""}} ``` -### SmartCity Projects and Creating Logical Clouds -Download [projects_template.yaml file](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/04_projects_template.yaml) - -Use EMCO CLI to apply the resource yaml file with expected result: +### Logical Cloud Setup +Run the command for the logical cloud setup with expected result as below. ```shell -# /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f 04_projects_template.yaml - +# cd cli-scripts/ +# ./03_apply.sh + +Using config file: emco_cfg.yaml +http://localhost:31877/v2 +URL: projects/project_smtc/logical-clouds Response Code: 201 Response: {"metadata":{"name":"default","description":"","userData1":"","userData2":""},"spec":{"namespace":"","level":"0","user":{"user-name":"","type":"","user-permissions":null}}} +http://localhost:31877/v2 +URL: projects/project_smtc/logical-clouds/default/cluster-references Response Code: 201 Response: {"metadata":{"name":"lc-edge01","description":"","userData1":"","userData2":""},"spec":{"cluster-provider":"smartcity-cluster-provider","cluster-name":"edge01","loadbalancer-ip":"0.0.0.0","certificate":""}} +http://localhost:31877/v2 +URL: projects/project_smtc/logical-clouds/default/instantiate Response Code: 200 Response: ``` -### SmartCity Application Deployment -#### Preparing SmartCity Images, Helm Chart and Overriding Profiles -On the OpenNESS EMCO cluster. follow the guidance and commands as mentioned below: - ```shell - #Install cmake and m4 tools if not installed already - yum install cmake m4 -y - - #On the OpenNESS EMCO cluster, clone the Smart City Reference Pipeline source code from GitHub and checkout the 577d483635856c1fa3ff0fbc051c6408af725712 commits - git clone https://github.com/OpenVisualCloud/Smart-City-Sample.git - cd Smart-City-Sample - git checkout 577d483635856c1fa3ff0fbc051c6408af725712 - - #build the SmartCity images - mkdir build - cd build - cmake -DNOFFICES=2 -DREGISTRY=/library # if you leave DREGISTRY empty, you need to follow the tag and push steps below - ../deployment/kubernetes/helm/build.sh - make - make tunnels - - # docker tag above image and push them to harbor registry(manually push images to registry when DREGISTRY empty) - docker tag smtc_database_tunnelled:latest /library/smtc_database_tunnelled:latest - docker tag smtc_storage_manager_tunnelled:latest /library/smtc_storage_manager_tunnelled:latest - docker tag smtc_smart_upload_tunnelled:latest /library/smtc_smart_upload_tunnelled:latest - docker tag smtc_sensor_simulation:latest /library/smtc_sensor_simulation:latest - docker tag smtc_onvif_discovery:latest /library/smtc_onvif_discovery:latest - docker tag smtc_db_init:latest /library/smtc_db_init:latest - docker tag smtc_alert:latest /library/smtc_alert:latest - docker tag smtc_analytics_object_xeon_gst:latest /library/smtc_analytics_object_xeon_gst:latest - docker tag smtc_mqtt2db:latest /library/smtc_mqtt2db:latest - docker tag smtc_certificate:latest /library/smtc_certificate:latest - docker tag smtc_web_cloud_tunnelled:latest /library/smtc_web_cloud_tunnelled:latest - docker tag smtc_common:latest /library/smtc_common:latest - docker tag eclipse-mosquitto:1.5.8 /library/eclipse-mosquitto:1.5.8 - # push all images to harbor registry after tagging them with 'docker push' command, as follows: - docker push /library/ - ``` - -Make sure the following images list is existing in the harbor registry project - `library` - ```text - - smtc_database_tunnelled:latest - - smtc_storage_manager_tunnelled:latest - - smtc_smart_upload_tunnelled:latest - - smtc_sensor_simulation:latest - - smtc_onvif_discovery:latest - - smtc_db_init:latest - - smtc_alert:latest - - smtc_analytics_object_xeon_gst:latest - - smtc_mqtt2db:latest - - smtc_certificate:latest - - smtc_web_cloud_tunnelled:latest - - smtc_common:latest - - eclipse-mosquitto:1.5.8 - ``` - -Download SmartCity `edge` application [helm chart tarball](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/smtc_edge_helmchart.tar.gz) and put it under `/opt`. - -Download SmartCity `cloud` application [helm chart tarball](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/smtc_cloud_helmchart.tar.gz) and put it under `/opt`. - -Download SmartCity `edge` application [profile tarball](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/smtc_edge_profile.tar.gz) and put it under `/opt`. - -Download SmartCity `cloud` application [profile tarball](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/smtc_cloud_profile.tar.gz) and put it under `/opt`. - - -#### Onboarding Helm Chart and Overriding Profiles - -Download [composite_apps_template.yaml file](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/06_composite-apps_template.yaml) - -Use EMCO CLI to apply the resource yaml file with expected result: +### Deploy SmartCity Application +1. Run the command for the SmartCity application deployment with expected result as below. ```shell -# /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f 06_composite-apps_template.yaml +# cd cli-scripts/ +# ./04_apply.sh +http://localhost:31298/v2 +URL: projects/project_smtc/composite-apps/composite_smtc/v1/deployment-intent-groups/smtc-deployment-intent-group/approve Response Code: 202 Response: +http://localhost:31298/v2 +URL: projects/project_smtc/composite-apps/composite_smtc/v1/deployment-intent-groups/smtc-deployment-intent-group/instantiate Response Code: 202 Response: ``` -#### Setting Deployment Intent - - -Download [intent_template.yaml file](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/09_apps_intent_group_template.yaml) +2. Manually create specific secrets rquired by SmartCity +On both edge cluster and cloud cluster, create `tunnel_secret` as below: +```shell +#!/usr/bin/env bash +PRIKEY=/root/tunnel_secret/id_rsa +PUBKEY=/root/tunnel_secret/id_rsa.pub +KNOWHOSTS=/root/tunnel_secret/known_hosts +kubectl create secret generic tunnel-secret --from-file=${PRIKEY} --from-file=${PUBKEY} --from-file=${KNOWHOSTS} +``` -Use EMCO CLI to apply the resource yaml file with expected result: +On the cloud cluster, creat `self-signed-certificate` as below: +```shell +#!/usr/bin/env bash +CRT=/root/tunnel_secret/self.crt +SELFKEY=/root//tunnel_secret/self.key +kubectl create secret generic self-signed-certificate --from-file=${CRT} --from-file=${SELFKEY} +```shell +3. Verify SmartCity Application Deployment Information. +The pods status on the edge cluster are in the running status: ```shell -# /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f 09_apps_intent_group_template.yaml +# kubectl get pods +NAME READY STATUS RESTARTS AGE +traffic-office1-alert-5b56f5464c-ldwrf 1/1 Running 0 20h +traffic-office1-analytics-traffic-6b995d4d6-nhf2p 1/1 Running 0 20h +traffic-office1-camera-discovery-78bccbdb44-k2ffx 1/1 Running 0 20h +traffic-office1-cameras-6cb67ccc84-8zkjg 1/1 Running 0 20h +traffic-office1-db-84bcfd54cd-ht52s 1/1 Running 1 20h +traffic-office1-db-init-64fb9db988-jwjv9 1/1 Running 0 20h +traffic-office1-mqtt-f9449d49c-dwv6l 1/1 Running 0 20h +traffic-office1-mqtt2db-5649c4778f-vpxhq 1/1 Running 0 20h +traffic-office1-smart-upload-588d95f78d-8x6dt 1/1 Running 1 19h +traffic-office1-storage-7889c67c57-kbkjd 1/1 Running 1 19h +... +``` +The pods status on the cloud cluster are in the running status: +```shell +# kubectl get pods +NAME READY STATUS RESTARTS AGE +cloud-db-5d6b57f947-qhjz6 1/1 Running 0 20h +cloud-storage-5658847d79-66bxz 1/1 Running 0 96m +cloud-web-64fb95884f-m9fns 1/1 Running 0 20h + ``` -#### Approving and Instantiating -Download [approve_template.yaml file](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/12_apps_approve_template.yaml) +4. Verfiy Smart City GUI +From a web browser, launch the Smart City web UI at URL https://. The GUI shows like: +![OpenNESS EMCO](openness-emco-images/openness-emco-smtcui.png) -Use EMCO CLI to apply the resource yaml file with expected result: +_Figure - SmartCity UI_ +### SmartCity Termination +Run the command for the project setup with expected result as below. ```shell -# /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f 12_apps_approve_template.yaml +# cd cli-scripts/ +# ./88_terminate.sh +Using config file: emco_cfg.yaml +http://localhost:31298/v2 +URL: projects/project_smtc/composite-apps/composite_smtc/v1/deployment-intent-groups/smtc-deployment-intent-group/terminate Response Code: 202 Response: ``` -Download [instantiate_template.yaml file](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco/13_apps_instantiate_template.yaml) -Use EMCO CLI to apply the resource yaml file with expected result: +After termination, SmartCity Application will be deleted from the clusters. -```shell -# /opt/emco/bin/emcoctl/emcoctl --config remote.yaml apply -v values.yaml -f 13_apps_instantiate_template.yaml - -``` From ed0c25feeef109c0db893f859b64a67c205c1140 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Mon, 14 Dec 2020 15:59:15 +0800 Subject: [PATCH 078/148] fix URL display issue --- doc/building-blocks/emco/openness-emco.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index f12f3d06..0f4f65da 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -410,7 +410,7 @@ cloud-web-64fb95884f-m9fns 1/1 Running 0 20h ``` 4. Verfiy Smart City GUI -From a web browser, launch the Smart City web UI at URL https://. The GUI shows like: +From a web browser, launch the Smart City web UI at URL `https://`. The GUI shows like: ![OpenNESS EMCO](openness-emco-images/openness-emco-smtcui.png) _Figure - SmartCity UI_ From 4cebe7656272b3c8e685b5abd2b957c7f5403d46 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Mon, 14 Dec 2020 16:04:43 +0800 Subject: [PATCH 079/148] update diagram title --- doc/building-blocks/emco/openness-emco.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 0f4f65da..095e15f3 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -21,8 +21,8 @@ EMCO addresses the need for deploying 'composite applications' in multiple geogr > **NOTE**: A 'composite application' is a combination of multiple applications. Based on the deployment intent, various applications of the composite application get deployed at various locations, and get replicated in multiple locations. Compared with other multipe-clusters orchestration, EMCO focuses on the following functionalies: -- Enrolling multiple geographically distributed OpenNESS Clusters and third party Cloud Clusters. -- Orchestrating composite applications (composed of multiple individual applications) across the edge clusters. +- Enrolling multiple geographically distributed OpenNESS clusters and third party cloud clusters. +- Orchestrating composite applications (composed of multiple individual applications) across the clusters. - Deploying edge services and network functions on to different nodes spread across the different clusters. - Monitoring the health of the deployed edge services/network functions across the clusters. - Orchestrating edge services and network functions with deployment intents based on compute, acceleration, and storage requirements. @@ -31,7 +31,6 @@ Compared with other multipe-clusters orchestration, EMCO focuses on the followin The following figure shows the topology overview for the OpenNESS EMCO orchestration with edge and multiple clusters. ![OpenNESS EMCO](openness-emco-images/openness-emco-topology.png) - _Figure - Topology Overview with OpenNESS EMCO_ All the managed edge clusters and cloud clusters are connected with EMCO cluster through the WAN network. @@ -109,6 +108,7 @@ A Logical Cloud is the overall target of a Deployment Intent Group and is a mand Due to the close relationship with Clusters, which are provided by Cluster Registration (clm) above, it is important to understand the mapping between the two. A Logical Cloud groups many Clusters together but a Cluster may also be grouped by multiple Logical Clouds, effectively turning the cluster multi-tenant. The partitioning/multi-tenancy of a particular Cluster, via the different Logical Clouds, is done today at the namespace level (different Logical Clouds access different namespace names, and the name is consistent across the multiple clusters of the Logical Cloud). ![Mapping between Logical Clouds and Clusters](openness-emco-images/openness-emco-lccl.png) +_Figure - Mapping between Logical Clouds and Clusters_ ##### Lifecycle Operations Prerequisites to using Logical Clouds: @@ -271,7 +271,6 @@ kube-system ovs-ovn-jq6dn 1/1 Running - WebApp (cloud application for additional post-processing such as calculating statistics and display/visualization) - The whole deployment architecture diagram is as shown below: ![OpenNESS EMCO](openness-emco-images/openness-emco-smtc.png) - _Figure - SmartCity Deployment Architecture Overview_ The typical steps involved in the cluster registration and deployment of the application using OpenNESS EMCO are as following: @@ -412,7 +411,6 @@ cloud-web-64fb95884f-m9fns 1/1 Running 0 20h 4. Verfiy Smart City GUI From a web browser, launch the Smart City web UI at URL `https://`. The GUI shows like: ![OpenNESS EMCO](openness-emco-images/openness-emco-smtcui.png) - _Figure - SmartCity UI_ ### SmartCity Termination From 12dfaf4941efbfdb327c7bb18c43541bc5acb53c Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Mon, 14 Dec 2020 16:06:58 +0800 Subject: [PATCH 080/148] correct figure display --- doc/building-blocks/emco/openness-emco.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 095e15f3..c2ff03d0 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -31,6 +31,7 @@ Compared with other multipe-clusters orchestration, EMCO focuses on the followin The following figure shows the topology overview for the OpenNESS EMCO orchestration with edge and multiple clusters. ![OpenNESS EMCO](openness-emco-images/openness-emco-topology.png) + _Figure - Topology Overview with OpenNESS EMCO_ All the managed edge clusters and cloud clusters are connected with EMCO cluster through the WAN network. @@ -48,6 +49,7 @@ This document aims to familiarize the user with [OpenNESS deployment flavor](../ ### EMCO Architecture The following diagram depicts a high level overview of the EMCO architecture. ![OpenNESS EMCO](openness-emco-images/openness-emco-arch.png) + _Figure - EMCO Architecture_ - Cluster Registration Controller registers clusters by cluster owners. - Distributed Application Scheduler provides a simplified and extensible placement. @@ -108,6 +110,7 @@ A Logical Cloud is the overall target of a Deployment Intent Group and is a mand Due to the close relationship with Clusters, which are provided by Cluster Registration (clm) above, it is important to understand the mapping between the two. A Logical Cloud groups many Clusters together but a Cluster may also be grouped by multiple Logical Clouds, effectively turning the cluster multi-tenant. The partitioning/multi-tenancy of a particular Cluster, via the different Logical Clouds, is done today at the namespace level (different Logical Clouds access different namespace names, and the name is consistent across the multiple clusters of the Logical Cloud). ![Mapping between Logical Clouds and Clusters](openness-emco-images/openness-emco-lccl.png) + _Figure - Mapping between Logical Clouds and Clusters_ ##### Lifecycle Operations @@ -196,11 +199,13 @@ EMCO uses Istio and other open source solutions to provide Multi-tenancy solutio The following figure shows various Emco services running in a cluster with Istio. ![OpenNESS EMCO](openness-emco-images/emco-istio-arch.png) + _Figure - EMCO setup with Istio and Authservice_ The following figure shows the authentication flow with EMCO, Istio and Authservice ![OpenNESS EMCO](openness-emco-images/emco-istio-auth.png) + _Figure - EMCO Authenication with external OATH2 Server_ Detailed steps for configuring EMCO with Istio can be found in [Emco Integrity and Access Management](https://github.com/otcshare/EMCO/tree/main/docs/user/Emco_Integrity_Access_Management.md) document. @@ -271,6 +276,7 @@ kube-system ovs-ovn-jq6dn 1/1 Running - WebApp (cloud application for additional post-processing such as calculating statistics and display/visualization) - The whole deployment architecture diagram is as shown below: ![OpenNESS EMCO](openness-emco-images/openness-emco-smtc.png) + _Figure - SmartCity Deployment Architecture Overview_ The typical steps involved in the cluster registration and deployment of the application using OpenNESS EMCO are as following: @@ -411,7 +417,9 @@ cloud-web-64fb95884f-m9fns 1/1 Running 0 20h 4. Verfiy Smart City GUI From a web browser, launch the Smart City web UI at URL `https://`. The GUI shows like: ![OpenNESS EMCO](openness-emco-images/openness-emco-smtcui.png) + _Figure - SmartCity UI_ + ### SmartCity Termination Run the command for the project setup with expected result as below. From 12e2a533312b4c638c6d7720c16becfe9401b323 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Mon, 14 Dec 2020 16:12:04 +0800 Subject: [PATCH 081/148] correct typo --- doc/building-blocks/emco/openness-emco.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index c2ff03d0..43f2136f 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -317,7 +317,7 @@ docker login ${HARBORRHOST} -u admin -p ${HARBORRPW} # ./env_setup.sh ``` -5. Run the command for the clusters setup with expected result as below. +5. Run the command for the clusters setup with expected result as below: ```shell # cd cli-scripts/ # ./01_apply.sh @@ -329,7 +329,7 @@ URL: cluster-providers/smartcity-cluster-provider/clusters/cloud01/labels Respon ### Project Setup -Run the command for the project setup with expected result as below. +Run the command for the project setup with expected result as below: ```shell # cd cli-scripts/ # ./02_apply.sh @@ -341,7 +341,7 @@ URL: projects Response Code: 201 Response: {"metadata":{"name":"project_smtc","d ### Logical Cloud Setup -Run the command for the logical cloud setup with expected result as below. +Run the command for the logical cloud setup with expected result as below: ```shell # cd cli-scripts/ # ./03_apply.sh @@ -357,7 +357,7 @@ URL: projects/project_smtc/logical-clouds/default/instantiate Response Code: 200 ### Deploy SmartCity Application -1. Run the command for the SmartCity application deployment with expected result as below. +1. Run the command for the SmartCity application deployment with expected result as below: ```shell # cd cli-scripts/ # ./04_apply.sh @@ -422,7 +422,7 @@ _Figure - SmartCity UI_ ### SmartCity Termination -Run the command for the project setup with expected result as below. +Run the command for the project setup with expected result as below: ```shell # cd cli-scripts/ # ./88_terminate.sh From 0864c8c9c68f40b19452189e9c836f5def4c38e3 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Mon, 14 Dec 2020 16:17:28 +0800 Subject: [PATCH 082/148] correct typo for register --- doc/building-blocks/emco/openness-emco.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 43f2136f..4bba6c73 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -291,7 +291,7 @@ The typical steps involved in the cluster registration and deployment of the app - Deploy SmartCity Application ### Clusters Setup -In the step, cluster provider will be created and clusters will be registred in the EMCO. +In the step, cluster provider will be created and clusters will be registered in the EMCO. 1. After [EMCO Installation With OpenNESS Flavor](#emco-installation), logon to the EMCO server and maker sure that Harbor and EMCO microservices are in running status. @@ -387,7 +387,7 @@ kubectl create secret generic self-signed-certificate --from-file=${CRT} --from ```shell 3. Verify SmartCity Application Deployment Information. -The pods status on the edge cluster are in the running status: +The pods on the edge cluster are in the running status as shown as below: ```shell # kubectl get pods NAME READY STATUS RESTARTS AGE @@ -404,7 +404,7 @@ traffic-office1-storage-7889c67c57-kbkjd 1/1 Running 1 ... ``` -The pods status on the cloud cluster are in the running status: +The pods on the cloud cluster are in the running status as shown as below: ```shell # kubectl get pods NAME READY STATUS RESTARTS AGE From fe39d9e61d7f7db0eb3d4caae262a7b3f654351a Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Mon, 14 Dec 2020 16:19:07 +0800 Subject: [PATCH 083/148] correct shell issue --- doc/building-blocks/emco/openness-emco.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 4bba6c73..aa1486ff 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -384,7 +384,7 @@ On the cloud cluster, creat `self-signed-certificate` as below: CRT=/root/tunnel_secret/self.crt SELFKEY=/root//tunnel_secret/self.key kubectl create secret generic self-signed-certificate --from-file=${CRT} --from-file=${SELFKEY} -```shell +``` 3. Verify SmartCity Application Deployment Information. The pods on the edge cluster are in the running status as shown as below: From 11af090c95818a20529d85743522a9df69229c53 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Mon, 14 Dec 2020 16:36:06 +0800 Subject: [PATCH 084/148] fix issue for shell commands --- doc/building-blocks/emco/openness-emco.md | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index aa1486ff..181c06e4 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -60,13 +60,13 @@ _Figure - EMCO Architecture_ - Secure WAN Controller automates secure overlays across edge groups. - Resource Syncronizer manages instantiation of resources to clusters. - Monitoring covers distributed application. - + #### Cluster Registration A microservice exposes RESTful API. User can register cluster providers and clusters of those providers via these APIs. After preparing edge clusters and cloud clusters, which can be any Kubernetes* cluster, user can onboard those clusters to EMCO by creating a cluster provider and then adding clusters to the cluster provider. After cluster providers are created, the KubeConfig files of edge and cloud clusters should be provided to EMCO as part of the multi-part POST call to the Cluster API. Additionally, after a cluster is created, labels and key value pairs can be added to the cluster via the EMCO API. Clusters can be specified by label when preparing placement intents. > **NOTE**: The cluster provider is someone who owns clusters and registers them to EMCO. If an Enterprise has clusters, for example from AWS, then the cluster provider for those clusters from AWS is still considered as from that Enterprise. AWS is not the provider. Here, the provider is someone who owns clusters and registers them here. Since, AWS does not register their clusters here, AWS is not considered as cluster provider in this context. - + #### Distributed Application Scheduler The distributed application scheduler microservice provides the following functionalities: - Project Management provides multi-tenancy in the application from a user perspective. @@ -292,7 +292,7 @@ The typical steps involved in the cluster registration and deployment of the app ### Clusters Setup In the step, cluster provider will be created and clusters will be registered in the EMCO. - + 1. After [EMCO Installation With OpenNESS Flavor](#emco-installation), logon to the EMCO server and maker sure that Harbor and EMCO microservices are in running status. 2. On the edge and cloud cluster, run the following command to make Docker logon the Harbor deployed on the EMCO server: @@ -341,7 +341,7 @@ URL: projects Response Code: 201 Response: {"metadata":{"name":"project_smtc","d ### Logical Cloud Setup -Run the command for the logical cloud setup with expected result as below: +Run the command for the logical cloud setup with expected result as below. ```shell # cd cli-scripts/ # ./03_apply.sh @@ -368,8 +368,7 @@ http://localhost:31298/v2 URL: projects/project_smtc/composite-apps/composite_smtc/v1/deployment-intent-groups/smtc-deployment-intent-group/instantiate Response Code: 202 Response: ``` -2. Manually create specific secrets rquired by SmartCity -On both edge cluster and cloud cluster, create `tunnel_secret` as below: +2. On both edge cluster and cloud cluster, manually create `tunnel_secret` as below: ```shell #!/usr/bin/env bash PRIKEY=/root/tunnel_secret/id_rsa @@ -378,7 +377,7 @@ KNOWHOSTS=/root/tunnel_secret/known_hosts kubectl create secret generic tunnel-secret --from-file=${PRIKEY} --from-file=${PUBKEY} --from-file=${KNOWHOSTS} ``` -On the cloud cluster, creat `self-signed-certificate` as below: +3. On the cloud cluster, manually create `self-signed-certificate` as below: ```shell #!/usr/bin/env bash CRT=/root/tunnel_secret/self.crt @@ -386,8 +385,9 @@ SELFKEY=/root//tunnel_secret/self.key kubectl create secret generic self-signed-certificate --from-file=${CRT} --from-file=${SELFKEY} ``` -3. Verify SmartCity Application Deployment Information. +4. Verify SmartCity Application Deployment Information. The pods on the edge cluster are in the running status as shown as below: + ```shell # kubectl get pods NAME READY STATUS RESTARTS AGE @@ -401,7 +401,6 @@ traffic-office1-mqtt-f9449d49c-dwv6l 1/1 Running 0 traffic-office1-mqtt2db-5649c4778f-vpxhq 1/1 Running 0 20h traffic-office1-smart-upload-588d95f78d-8x6dt 1/1 Running 1 19h traffic-office1-storage-7889c67c57-kbkjd 1/1 Running 1 19h -... ``` The pods on the cloud cluster are in the running status as shown as below: @@ -411,10 +410,9 @@ NAME READY STATUS RESTARTS AGE cloud-db-5d6b57f947-qhjz6 1/1 Running 0 20h cloud-storage-5658847d79-66bxz 1/1 Running 0 96m cloud-web-64fb95884f-m9fns 1/1 Running 0 20h - ``` -4. Verfiy Smart City GUI +5. Verify Smart City GUI From a web browser, launch the Smart City web UI at URL `https://`. The GUI shows like: ![OpenNESS EMCO](openness-emco-images/openness-emco-smtcui.png) @@ -422,7 +420,7 @@ _Figure - SmartCity UI_ ### SmartCity Termination -Run the command for the project setup with expected result as below: +Run the command for the SmartCity termination with expected result as below: ```shell # cd cli-scripts/ # ./88_terminate.sh From 9039591dde60dddcaf2ee2d9d515d61bf84a7f53 Mon Sep 17 00:00:00 2001 From: Amr Mokhtar Date: Mon, 14 Dec 2020 12:22:52 +0000 Subject: [PATCH 085/148] Update release notes for 20.12 --- openness_releasenotes.md | 643 ++++++++++++++++++++++----------------- 1 file changed, 368 insertions(+), 275 deletions(-) diff --git a/openness_releasenotes.md b/openness_releasenotes.md index 85663827..1236c0f7 100644 --- a/openness_releasenotes.md +++ b/openness_releasenotes.md @@ -6,19 +6,54 @@ Copyright (c) 2019-2020 Intel Corporation # Release Notes This document provides high level system features, issues and limitations information for OpenNESS. - [Release history](#release-history) -- [Features for Release](#features-for-release) + - [OpenNESS - 19.06](#openness---1906) + - [OpenNESS - 19.09](#openness---1909) + - [OpenNESS - 19.12](#openness---1912) + - [OpenNESS - 20.03](#openness---2003) + - [OpenNESS - 20.06](#openness---2006) + - [OpenNESS - 20.09](#openness---2009) + - [OpenNESS - 20.12](#openness---2012) - [Changes to Existing Features](#changes-to-existing-features) + - [OpenNESS - 19.06](#openness---1906-1) + - [OpenNESS - 19.06.01](#openness---190601) + - [OpenNESS - 19.09](#openness---1909-1) + - [OpenNESS - 19.12](#openness---1912-1) + - [OpenNESS - 20.03](#openness---2003-1) + - [OpenNESS - 20.06](#openness---2006-1) + - [OpenNESS - 20.09](#openness---2009-1) - [Fixed Issues](#fixed-issues) + - [OpenNESS - 19.06](#openness---1906-2) + - [OpenNESS - 19.06.01](#openness---190601-1) + - [OpenNESS - 19.06.01](#openness---190601-2) + - [OpenNESS - 19.12](#openness---1912-2) + - [OpenNESS - 20.03](#openness---2003-2) + - [OpenNESS - 20.06](#openness---2006-2) + - [OpenNESS - 20.09](#openness---2009-2) - [Known Issues and Limitations](#known-issues-and-limitations) + - [OpenNESS - 19.06](#openness---1906-3) + - [OpenNESS - 19.06.01](#openness---190601-3) + - [OpenNESS - 19.09](#openness---1909-2) + - [OpenNESS - 19.12](#openness---1912-3) + - [OpenNESS - 20.03](#openness---2003-3) + - [OpenNESS - 20.06](#openness---2006-3) + - [OpenNESS - 20.09](#openness---2009-3) + - [OpenNESS - 20.09](#openness---2009-4) - [Release Content](#release-content) + - [OpenNESS - 19.06](#openness---1906-4) + - [OpenNESS - 19.06.01](#openness---190601-4) + - [OpenNESS 19.09](#openness-1909) + - [OpenNESS - 19.12](#openness---1912-4) + - [OpenNESS - 20.03](#openness---2003-4) + - [OpenNESS - 20.06](#openness---2006-4) + - [OpenNESS - 20.09](#openness---2009-5) - [Hardware and Software Compatibility](#hardware-and-software-compatibility) - - [Intel® Xeon® D Processor](#intel-xeon-d-processor) - - [2nd Generation Intel® Xeon® Scalable Processors](#2nd-generation-intel-xeon-scalable-processors) - - [Intel® Xeon® Scalable Processors](#intel-xeon-scalable-processors) + - [Intel® Xeon® D Processor](#intel%c2%ae-xeon%c2%ae-d-processor) + - [2nd Generation Intel® Xeon® Scalable Processors](#2nd-generation-intel%c2%ae-xeon%c2%ae-scalable-processors) + - [Intel® Xeon® Scalable Processors](#intel%c2%ae-xeon%c2%ae-scalable-processors) - [Supported Operating Systems](#supported-operating-systems) - [Package Versions](#package-versions) -# Release history +# Release history 1. OpenNESS - 19.06 2. OpenNESS - 19.06.01 3. OpenNESS - 19.09 @@ -26,288 +61,346 @@ This document provides high level system features, issues and limitations inform 5. OpenNESS - 20.03 6. OpenNESS - 20.06 7. OpenNESS - 20.09 - -# Features for Release -1. OpenNESS - 19.06 - - Edge Cloud Deployment options - - Controller based deployment of Applications in Docker Containers/VM–using-Libvirt - - Controller + Kubernetes based deployment of Applications in Docker Containers - - OpenNESS Controller - - Support for Edge Node Orchestration - - Support for Web UI front end - - OpenNESS APIs - - Edge Application APIs - - Edge Virtualization Infrastructure APIs - - Edge Application life cycle APIs - - Core Network Configuration APIs - - Edge Application authentication APIs - - OpenNESS Controller APIs - - Platform Features - - Microservices based Appliance and Controller agent deployment - - Support for DNS for the edge - - CentOS 7.6 / CentOS 7.6 + RT kernel - - Basic telemetry support - - Sample Reference Applications - - OpenVino based Consumer Application - - Producer Application supporting OpenVino - - Dataplane - - DPDK/KNI based Dataplane – NTS - - Support for deployment on IP, LTE (S1, SGi and LTE CUPS) - - Cloud Adapters - - Support for running Amazon Green grass cores as an OpenNESS application - - Support for running Baidu Cloud as an OpenNESS application - - Documentation - - User Guide Enterprise and Operator Edge - - OpenNESS Architecture - - Swagger/Proto buff External API Guide - - 4G/CUPS API whitepaper - - Cloud Connector App note - - Openvino on OpenNESS App note -2. OpenNESS - 19.09 - - Edge Cloud Deployment options - - Asyn method for image download to avoid timeout. - - Dataplane - - Support for OVN/OVS based Dataplane and network overlay for Network Edge (based on Kubernetes) - - Cloud Adapters - - Support for running Amazon Green grass cores as an OpenNESS application with OVN/OVS as Dataplane and network overlay - - Support for Inter-App comms - - Support for OVS-DPDK or Linux bridge or Default interface for inter-Apps communication for OnPrem deployment - - Accelerator support - - Support for HDDL-R acclerator for interference in container environment for OnPrem deployment - - Edge Applications - - Early Access Support for Open Visual Cloud (OVC) based Smart City App on OpenNESS OnPrem - - Support for Dynamic use of VPU or CPU for Inference - - Gateway - - Support for Edge node and OpenNESS Controller gate way to support route-ability - - Documentation - - OpenNESS Architecture (update) - - OpenNESS Support for OVS as dataplane with OVN - - Open Visual Cloud Smart City Application on OpenNESS - Solution Overview - - Using Intel® Movidius™ Myriad™ X High Density Deep Learning (HDDL) solution in OpenNESS - - OpenNESS How-to Guide (update) -3. OpenNESS – 19.12 - - Hardware - - Support for Cascade lake 6252N - - Support for Intel FPGA PAC N3000 - - Edge Application - - Fully Cloudnative Open Visual Cloud Smart City Application pipeline on OpenNESS Network edge. - - Edge cloud - - EAA and CNCA microservice as native Kubernetes managed services - - Support for Kubernetes version 1.16.2 - - Edge Compute EPA features support for Network Edge - - CPU Manager: Support deployment of POD with dedicated pinning - - SRIOV NIC: Support deployment of POD with dedicated SRIOV VF from NIC - - SRIOV FPGA: Support deployment of POD with dedicated SRIOV VF from FPGA - - Topology Manager: Support k8s to manage the resources allocated to workloads in a NUMA topology-aware manner - - BIOS/FW Configuration service - Intel SysCfg based BIOS/FW management service - - Hugepages: Support for allocation of 1G/2M huge pages to the Pod. - - Multus: Support for Multiple network interface in the PODs deployed by Kubernetes - - Node Feature discovery: Support detection of Silicon and Software features and automation of deployment of CNF and Applications - - FPGA Remote System Update service: Support Intel OPAE (fpgautil) based image update service for FPGA. - - Non-Privileged Container: Support deployment of non-privileged pods (CNFs and Applications as reference) - - Edge Compute EPA features support for OnPremises - - Using Intel® Movidius™ Myriad™ X High Density Deep Learning (HDDL) solution in OpenNESS - - OpenNESS Experience Kit for Network and OnPremises edge - - Offline Release Package: Customers should be able to create an installer package that can be used to install OnPremises version of OpenNESS without the need for Internet access. - - 5G NR Edge Cloud deployment support - - 5G NR edge cloud deployment support with SA mode - - AF: Support for 5G NGC Application function as a microservice - - NEF: Support for 5G NGC Network Exposure function as a microservice - - Support for 5G NR UDM, UPF, AMF, PCF and SCF (not part of the release) - - DNS support - - DNS support for UE - - DNS Support for Edge applications - - Documentation - - Completely reorganized documentation structure for ease of navigation - - 5G NR Edge Cloud deployment Whitepaper - - EPA application note for each of the features -4. OpenNESS – 20.03 - - OVN/OVS-DPDK support for dataplane - - Network Edge: Support for kube-ovn CNI with OVS or OVS-DPDK as dataplane. Support for Calico as CNI. - - OnPremises Edge: Support for OVS-DPDK CNI with OVS-DPDK as dataplane supporting application deployed in containers or VMs - - Support for VM deployments on Kubernetes mode - - Kubevirt based VM deployment support - - EPA Support for SRIOV Virtual function allocation to the VMs deployed using K8s - - EPA support - OnPremises - - Support for dedicated core allocation to application running as VMs or Containers - - Support for dedicated SRIOV VF allocation to application running in VM or containers - - Support for system resource allocation into the application running as container - - Mount point for shared storage - - Pass environment variables - - Configure the port rules - - Core Network Feature (5G) - - PFD Management API support (3GPP 23.502 Sec. 52.6.3 PFD Management service) - - AF: Added support for PFD Northbound API - - NEF: Added support for PFD southbound API, and Stubs to loopback the PCF calls. - - kubectl: Enhanced CNCA kubectl plugin to configure PFD parameters - - WEB UI: Enhanced CNCA WEB UI to configure PFD params in OnPerm mode - - Auth2 based authentication between 5G Network functions: (as per 3GPP Standard) - - Implemented oAuth2 based authentication and validation - - AF and NEF communication channel is updated to authenticated based on oAuth2 JWT token in addition to HTTP2. - - HTTPS support - - Enhanced the 5G OAM, CNCA (web-ui and kube-ctl) to HTTPS interface - - Modular Playbook - - Support for customers to choose real-time or non-realtime kernel for a edge node - - Support for customer to choose CNIs - Validated with Kube-OVN and Calico - - Edge Apps - - FlexRAN: dockerfile and pod specification for deployment of 4G or 5G FlexRAN - - AF: dockerfile and pod specification - - NEF: dockerfile and pod specification - - UPF: dockerfile and pod specification -5. OpenNESS – 20.06 - - OpenNESS is now available in two distributions - - Open source (Apache 2.0 license) - - Intel Distribution of OpenNESS (Intel Proprietary License) - - Includes all the code from the open source distribution plus additional features and enhancements to improve the user experience - - Access requires a signed license. A request for access can be made at openness.org by navigating to the “Products” section and selecting “Intel Distribution of OpenNESS” - - Both distributions are hosted at github.com/open-ness - - On premises configuration now optionally supports Kubernetes - - Dataplane - - Support for Calico eBPF as CNI - - Performance baselining of the CNIs - - Visual Compute and Media Analytics - - Intel Visual Cloud Accelerator Card - Analytics (VCAC-A) Kubernetes deployment support (CPU, GPU and VPU) - - Node feature discovery of VCAC-A - - Telemetry support for VCAC-A - - Provide ansible and Helm -playbook support for OVC codecs Intel Xeon CPU mode - video analytics service (REST API) for developers - - Edge Applications - - Smart City Application Pipeline supporting CPU or VCAC-A mode with Helm chart - - CDN Content Delivery using NGINX with SR-IOV capability for higher performance with Helm chart - - CDN transcode sample application using Intel Xeon CPU optimized media SDK with Helm Chart - - Support for Transcoding Service using Intel Xeon CPU optimized media SDK with Helm chart - - Intel Edge Insights application support with Helm chart - - Edge Network Functions - - FlexRAN DU with Helm Chart (FlexRAN not part of the release) - - xRAN Fronthaul with Helm CHart (xRAN app not part of the release) - - Helm Chart for Kubernetes enhancements - - NFD, CMK, SRIOV-Device plugin and Multus - - Support for local Docker registry setup - - Support for deployment specific Flavors - - Minimal - - RAN - 4G and 5G - - Media Analytics with VCAC-A and with CPU only mode - - CDN - Transcode - - CDN - Content Delivery - - Azure - Deployment of OpenNESS cluster on Microsoft Azure cloud - - Support for OpenNESS on CSP Cloud - - Azure - Deployment of OpenNESS cluster on Microsoft Azure cloud - - Telemetry Support - - Support for Collectd backend with Intel hardware and custom metrics - - Cpu, cpufreq, load, hugepages, intel_pmu, intel_rdt, ipmi, ovs_stats, ovs_pmd_stats - - FPGA – PACN3000 (collectd) - Temp, Power draw - - VPU Device memory, VPU device thermal, VPU Device utilization - - Open Telemetry - Support for collector and exporter for metrics ( e.g. heartbeat from app) - - Support for PCM counter for Prometheus and Grafana - - Telemetry Aware Scheduler - - Early Access support for Resource Management Daemon (RMD) - - RMD for cache allocation to the application Pods - - Ability to deploy OpenNESS Master and Node on same platform -5. OpenNESS – 20.09 - - Native On-premises mode - - Following from the previous release decision of pausing Native on-premises Development the code has been move to a dedicated repository “native-on-prem” - - Kubernetes based solution will now support both Network and on-premises Edge - - Service Mesh support - - Basic support for Service Mesh using istio within an OpenNESS cluster - - Application of Service Mesh openness 5G and Media analytics - A dedicated network for service to service communications - - EAA Update - - EAA microservices has been updated to be more cloud-native friendly - - Edge Insights Application (update) - - Industrial Edge Insights Software update to version 2.3. - - Experience Kit now supports multiple detection video’s – Safety equipment detection, PCB default detection and also supports external video streams. + +## OpenNESS - 19.06 +- Edge Cloud Deployment options + - Controller based deployment of Applications in Docker Containers/VM–using-Libvirt + - Controller + Kubernetes based deployment of Applications in Docker Containers +- OpenNESS Controller + - Support for Edge Node Orchestration + - Support for Web UI front end +- OpenNESS APIs + - Edge Application APIs + - Edge Virtualization Infrastructure APIs + - Edge Application life cycle APIs + - Core Network Configuration APIs + - Edge Application authentication APIs + - OpenNESS Controller APIs +- Platform Features + - Microservices based Appliance and Controller agent deployment + - Support for DNS for the edge + - CentOS 7.6 / CentOS 7.6 + RT kernel + - Basic telemetry support +- Sample Reference Applications + - OpenVino based Consumer Application + - Producer Application supporting OpenVino +- Dataplane + - DPDK/KNI based Dataplane – NTS + - Support for deployment on IP, LTE (S1, SGi and LTE CUPS) +- Cloud Adapters + - Support for running Amazon Green grass cores as an OpenNESS application + - Support for running Baidu Cloud as an OpenNESS application +- Documentation + - User Guide Enterprise and Operator Edge + - OpenNESS Architecture + - Swagger/Proto buff External API Guide + - 4G/CUPS API whitepaper + - Cloud Connector App note + - Openvino on OpenNESS App note +## OpenNESS - 19.09 +- Edge Cloud Deployment options + - Async method for image download to avoid timeout. +- Dataplane + - Support for OVN/OVS based Dataplane and network overlay for Network Edge (based on Kubernetes) +- Cloud Adapters + - Support for running Amazon Green grass cores as an OpenNESS application with OVN/OVS as Dataplane and network overlay +- Support for Inter-App comms + - Support for OVS-DPDK or Linux bridge or Default interface for inter-Apps communication for OnPrem deployment +- Accelerator support + - Support for HDDL-R acclerator for interference in container environment for OnPrem deployment +- Edge Applications + - Early Access Support for Open Visual Cloud (OVC) based Smart City App on OpenNESS OnPrem + - Support for Dynamic use of VPU or CPU for Inference +- Gateway + - Support for Edge node and OpenNESS Controller gate way to support route-ability +- Documentation + - OpenNESS Architecture (update) + - OpenNESS Support for OVS as dataplane with OVN + - Open Visual Cloud Smart City Application on OpenNESS - Solution Overview + - Using Intel® Movidius™ Myriad™ X High Density Deep Learning (HDDL) solution in OpenNESS + - OpenNESS How-to Guide (update) +## OpenNESS - 19.12 +- Hardware + - Support for Cascade lake 6252N + - Support for Intel FPGA PAC N3000 +- Edge Application + - Fully Cloudnative Open Visual Cloud Smart City Application pipeline on OpenNESS Network edge. +- Edge cloud + - EAA and CNCA microservice as native Kubernetes managed services + - Support for Kubernetes version 1.16.2 +- Edge Compute EPA features support for Network Edge + - CPU Manager: Support deployment of POD with dedicated pinning + - SRIOV NIC: Support deployment of POD with dedicated SRIOV VF from NIC + - SRIOV FPGA: Support deployment of POD with dedicated SRIOV VF from FPGA + - Topology Manager: Support k8s to manage the resources allocated to workloads in a NUMA topology-aware manner + - BIOS/FW Configuration service - Intel SysCfg based BIOS/FW management service + - Hugepages: Support for allocation of 1G/2M huge pages to the Pod. + - Multus: Support for Multiple network interface in the PODs deployed by Kubernetes + - Node Feature discovery: Support detection of Silicon and Software features and automation of deployment of CNF and Applications + - FPGA Remote System Update service: Support Intel OPAE (fpgautil) based image update service for FPGA. + - Non-Privileged Container: Support deployment of non-privileged pods (CNFs and Applications as reference) +- Edge Compute EPA features support for OnPremises + - Using Intel® Movidius™ Myriad™ X High Density Deep Learning (HDDL) solution in OpenNESS +- OpenNESS Experience Kit for Network and OnPremises edge + - Offline Release Package: Customers should be able to create an installer package that can be used to install OnPremises version of OpenNESS without the need for Internet access. +- 5G NR Edge Cloud deployment support + - 5G NR edge cloud deployment support with SA mode + - AF: Support for 5G NGC Application function as a microservice + - NEF: Support for 5G NGC Network Exposure function as a microservice + - Support for 5G NR UDM, UPF, AMF, PCF and SCF (not part of the release) +- DNS support + - DNS support for UE + - DNS Support for Edge applications +- Documentation + - Completely reorganized documentation structure for ease of navigation + - 5G NR Edge Cloud deployment Whitepaper + - EPA application note for each of the features + +## OpenNESS - 20.03 +- OVN/OVS-DPDK support for dataplane + - Network Edge: Support for kube-ovn CNI with OVS or OVS-DPDK as dataplane. Support for Calico as CNI. + - OnPremises Edge: Support for OVS-DPDK CNI with OVS-DPDK as dataplane supporting application deployed in containers or VMs +- Support for VM deployments on Kubernetes mode + - Kubevirt based VM deployment support + - EPA Support for SRIOV Virtual function allocation to the VMs deployed using K8s +- EPA support - OnPremises + - Support for dedicated core allocation to application running as VMs or Containers + - Support for dedicated SRIOV VF allocation to application running in VM or containers + - Support for system resource allocation into the application running as container + - Mount point for shared storage + - Pass environment variables + - Configure the port rules +- Core Network Feature (5G) + - PFD Management API support (3GPP 23.502 Sec. 52.6.3 PFD Management service) + - AF: Added support for PFD Northbound API + - NEF: Added support for PFD southbound API, and Stubs to loopback the PCF calls. + - kubectl: Enhanced CNCA kubectl plugin to configure PFD parameters + - WEB UI: Enhanced CNCA WEB UI to configure PFD params in OnPerm mode + - Auth2 based authentication between 5G Network functions: (as per 3GPP Standard) + - Implemented oAuth2 based authentication and validation + - AF and NEF communication channel is updated to authenticated based on oAuth2 JWT token in addition to HTTP2. + - HTTPS support + - Enhanced the 5G OAM, CNCA (web-ui and kube-ctl) to HTTPS interface +- Modular Playbook + - Support for customers to choose real-time or non-realtime kernel for a edge node + - Support for customer to choose CNIs - Validated with Kube-OVN and Calico +- Edge Apps + - FlexRAN: dockerfile and pod specification for deployment of 4G or 5G FlexRAN + - AF: dockerfile and pod specification + - NEF: dockerfile and pod specification + - UPF: dockerfile and pod specification + +## OpenNESS - 20.06 +- OpenNESS is now available in two distributions + - Open source (Apache 2.0 license) + - Intel Distribution of OpenNESS (Intel Proprietary License) + - Includes all the code from the open source distribution plus additional features and enhancements to improve the user experience + - Access requires a signed license. A request for access can be made at openness.org by navigating to the “Products” section and selecting “Intel Distribution of OpenNESS” + - Both distributions are hosted at github.com/open-ness +- On premises configuration now optionally supports Kubernetes +- Dataplane + - Support for Calico eBPF as CNI + - Performance baselining of the CNIs +- Visual Compute and Media Analytics + - Intel Visual Cloud Accelerator Card - Analytics (VCAC-A) Kubernetes deployment support (CPU, GPU and VPU) + - Node feature discovery of VCAC-A + - Telemetry support for VCAC-A + - Provide ansible and Helm -playbook support for OVC codecs Intel Xeon CPU mode - video analytics service (REST API) for developers +- Edge Applications + - Smart City Application Pipeline supporting CPU or VCAC-A mode with Helm chart + - CDN Content Delivery using NGINX with SR-IOV capability for higher performance with Helm chart + - CDN transcode sample application using Intel Xeon CPU optimized media SDK with Helm Chart + - Support for Transcoding Service using Intel Xeon CPU optimized media SDK with Helm chart + - Intel Edge Insights application support with Helm chart +- Edge Network Functions + - FlexRAN DU with Helm Chart (FlexRAN not part of the release) + - xRAN Fronthaul with Helm CHart (xRAN app not part of the release) +- Helm Chart for Kubernetes enhancements + - NFD, CMK, SRIOV-Device plugin and Multus + - Support for local Docker registry setup +- Support for deployment specific Flavors + - Minimal + - RAN - 4G and 5G + - Media Analytics with VCAC-A and with CPU only mode + - CDN - Transcode + - CDN - Content Delivery + - Azure - Deployment of OpenNESS cluster on Microsoft Azure cloud +- Support for OpenNESS on CSP Cloud + - Azure - Deployment of OpenNESS cluster on Microsoft Azure cloud +- Telemetry Support + - Support for Collectd backend with Intel hardware and custom metrics + - Cpu, cpufreq, load, hugepages, intel_pmu, intel_rdt, ipmi, ovs_stats, ovs_pmd_stats + - FPGA – PACN3000 (collectd) - Temp, Power draw + - VPU Device memory, VPU device thermal, VPU Device utilization + - Open Telemetry - Support for collector and exporter for metrics ( e.g. heartbeat from app) + - Support for PCM counter for Prometheus and Grafana + - Telemetry Aware Scheduler +- Early Access support for Resource Management Daemon (RMD) + - RMD for cache allocation to the application Pods +- Ability to deploy OpenNESS Master and Node on same platform + +## OpenNESS - 20.09 +- Native On-premises mode + - Following from the previous release decision of pausing Native on-premises Development the code has been move to a dedicated repository “native-on-prem” + - Kubernetes based solution will now support both Network and on-premises Edge +- Service Mesh support + - Basic support for Service Mesh using istio within an OpenNESS cluster + - Application of Service Mesh openness 5G and Media analytics - A dedicated network for service to service communications +- EAA Update + - EAA microservices has been updated to be more cloud-native friendly +- Edge Insights Application (update) + - Industrial Edge Insights Software update to version 2.3. + - Experience Kit now supports multiple detection video's – Safety equipment detection, PCB default detection and also supports external video streams. + +## OpenNESS - 20.12 +- Multi-Access - N3IWF +- uCPE/SDWAN +- EMCO-OpenNESS +- Operators +- Offline installer +- Application Data delivery Performance +- CERA on-premises (pushed from 20.09 due to CR for EIS support) +- CSP support for Azure (will be released between 20.09 and 20.12) +- Kubernetes certification for 1.19 + # Changes to Existing Features - - **OpenNESS 19.06** There are no unsupported or discontinued features relevant to this release. - - **OpenNESS 19.06.01** There are no unsupported or discontinued features relevant to this release. - - **OpenNESS 19.09** There are no unsupported or discontinued features relevant to this release. - - **OpenNESS 19.12** - - NTS Dataplane support for Network edge is discontinued. - - Controller UI for Network edge has be discontinued except for the CNCA configuration. Customers can optionally leverage Kubernetes dashboard to onboard applications. - - Edge node only supports non-realtime kernel. - - **OpenNESS 20.03** - - Support for HDDL-R only restricted to non-real-time or non-customized CentOS 7.6 default kernel. - - **OpenNESS 20.06** - - Offline install for Native mode OnPremises has be deprecated - - **OpenNESS 20.09** - - Native on-premises is now located in a dedicated repository with no further feature updates from previous release. + +## OpenNESS - 19.06 +There are no unsupported or discontinued features relevant to this release. + +## OpenNESS - 19.06.01 +There are no unsupported or discontinued features relevant to this release. + +## OpenNESS - 19.09 +There are no unsupported or discontinued features relevant to this release. + +## OpenNESS - 19.12 +- NTS Dataplane support for Network edge is discontinued. +- Controller UI for Network edge has be discontinued except for the CNCA configuration. Customers can optionally leverage Kubernetes dashboard to onboard applications. +- Edge node only supports non-realtime kernel. + +## OpenNESS - 20.03 +- Support for HDDL-R only restricted to non-real-time or non-customized CentOS 7.6 default kernel. + +## OpenNESS - 20.06 +- Offline install for Native mode OnPremises has be deprecated + +## OpenNESS - 20.09 +- Native on-premises is now located in a dedicated repository with no further feature updates from previous release. # Fixed Issues -- **OpenNESS 19.06** There are no non-Intel issues relevant to this release. -- **OpenNESS 19.06.01** There are no non-Intel issues relevant to this release. -- **OpenNESS 19.06.01** - - VHOST HugePages dependency - - Bug in getting appId by IP address for container - - Wrong value of appliance verification key printed by ansible script - - NTS is in hanging state when trying to add same traffic policy to multiple interfaces - - Application in VM cannot be started - - Bug in libvirt deployment - - Invalid status after app undeployment - - Application memory field is in MB -- **OpenNESS 19.12** - - Improved usability/automation in Ansible scripts -- **OpenNESS 20.03** - - Realtime Kernel support for network edge with K8s. - - Modular playbooks -- **OpenNESS 20.06** - - Optimized the Kubernetes based deployment by supporting multiple Flavors -- **OpenNESS 20.09** - - Further optimized the Kubernetes based deployment by supporting multiple Flavors - - Network edge installation time is optimized using pre-built docker images - - cAdvisor occasional failure issue is resolved + +## OpenNESS - 19.06 +There are no non-Intel issues relevant to this release. + +## OpenNESS - 19.06.01 +There are no non-Intel issues relevant to this release. + +## OpenNESS - 19.06.01 +- VHOST HugePages dependency +- Bug in getting appId by IP address for container +- Wrong value of appliance verification key printed by ansible script +- NTS is in hanging state when trying to add same traffic policy to multiple interfaces +- Application in VM cannot be started +- Bug in libvirt deployment +- Invalid status after app undeployment +- Application memory field is in MB + +## OpenNESS - 19.12 +- Improved usability/automation in Ansible scripts + +## OpenNESS - 20.03 +- Realtime Kernel support for network edge with K8s. +- Modular playbooks + +## OpenNESS - 20.06 +- Optimized the Kubernetes based deployment by supporting multiple Flavors + +## OpenNESS - 20.09 +- Further optimized the Kubernetes based deployment by supporting multiple Flavors +- Network edge installation time is optimized using pre-built docker images +- cAdvisor occasional failure issue is resolved # Known Issues and Limitations -- **OpenNESS 19.06** There are no issues relevant to this release. -- **OpenNESS 19.06.01** There is one issue relevant to this release: it is not possible to remove application from Edge Node in case of error during application deployment. The issue concerns application in Virtual Machine. -- **OpenNESS 19.09** - - Gateway in multi-node - will not work when few nodes will have the same public IP (they will be behind one common NAT) - - Ansible in K8s can cause problems when rerun on a machine: - - If after running all 3 scripts - - Script 02 will be run again (it will not remove all necessary K8s related artifacts) - - We would recommend cleaning up the installation on the node -- **OpenNESS 19.12** - - Gateway in multi-node - will not work when few nodes will have the same public IP (they will be behind one common NAT) - - OpenNESS OnPremises: Can not remove a failed/disconnected the edge node information/state from the controller - - The CNCA APIs (4G & 5G) supported in this release is an early access reference implementation and does not support authentication - - Realtime kernel support has been temporarily disabled to address the Kubernetes 1.16.2 and Realtime kernel instability. -- **OpenNESS 20.03** - - On-Premises edge installation takes more than 1.5hrs because of docker image build for OVS-DPDK - - Network edge installation takes more than 1.5hrs because of docker image build for OVS-DPDK - - OpenNESS controller allows management NICs to be in the pool of configuration which might allow configuration by mistake there by disconnecting the node from control plane - - When using the SRIOV EPA feature added in 20.03 with OVNCNI, the container cannot access the CNI port. This is due to the SRIOV port being set by changing the network used by the container from default to a custom network, This overwrites the OVNCNI network setting configured prior to this to enable the container to work with OVNCNI. Another issue with the SRIOV, is that this also overwrites the network configuration with the EAA and edgedns, agents, which prevents the SRIOV enabled container from communicating with the agents. - - Cannot remove Edge Node from Controller when its offline and traffic policy is configured or app is deployed. -- **OpenNESS 20.06** - - On-Premises edge installation takes 1.5hrs because of docker image build for OVS-DPDK - - Network edge installation takes 1.5hrs because of docker image build for OVS-DPDK - - OpenNESS controller allows management NICs to be in the pool of configuration which might allow configuration by mistake there by disconnecting the node from control plane - - When using the SRIOV EPA feature added in 20.03 with OVNCNI, the container cannot access the CNI port. This is due to the SRIOV port being set by changing the network used by the container from default to a custom network, This overwrites the OVNCNI network setting configured prior to this to enable the container to work with OVNCNI. Another issue with the SRIOV, is that this also overwrites the network configuration with the EAA and edgedns, agents, which prevents the SRIOV enabled container from communicating with the agents. - - Cannot remove Edge Node from Controller when its offline and traffic policy is configured or app is deployed. - - Legacy OnPremises - Traffic rule creation: cannot parse filled and cleared field - - There is an issue with using CDI when uploading VM images when CMK is enabled due to missing CMK taint toleration. The CDI upload pod does not get deployed and the `virtctl` plugin command times out waiting for the action to complete. A workaround for the issue is to invoke the CDI upload command, edit the taint toleration for the CDI upload to tolerate CMK, update the pod, create the PV and let the pod run to completion. - - There is a known issue with cAdvisor which in certain scenarios occasionally fails to expose the metrics for Prometheus endpoint, see Git Hub: https://github.com/google/cadvisor/issues/2537 -- **OpenNESS 20.09** - - Pod which uses hugepage get stuck in terminating state on deletion. This is a known issue on Kubernetes 1.18.x and is planned to be fixed in 1.19.x - - Calico cannot be used as secondary CNI with Multus in OpenNESS. It will work only as primary CNI. Calico must be the only network provider in each cluster. We do not currently support migrating a cluster with another network provider to use Calico networking. https://docs.projectcalico.org/getting-started/kubernetes/requirements - - collectd Cache telemetry using RDT does not work when RMD is enabled because of resource conflict. Workaround is to disable collectd RDT plugin when using RMD - this by default is implemented globally. With this workaround customers will be able to allocate the Cache but not use Cache related telemetry. In case where RMD is not being enabled customers who desire RDT telemetry can re-enable collectd RDT. - +## OpenNESS - 19.06 +There are no issues relevant to this release. + +## OpenNESS - 19.06.01 +There is one issue relevant to this release: it is not possible to remove application from Edge Node in case of error during application deployment. The issue concerns application in Virtual Machine. + +## OpenNESS - 19.09 +- Gateway in multi-node - will not work when few nodes will have the same public IP (they will be behind one common NAT) +- Ansible in K8s can cause problems when rerun on a machine: + - If after running all 3 scripts + - Script 02 will be run again (it will not remove all necessary K8s related artifacts) + - We would recommend cleaning up the installation on the node + +## OpenNESS - 19.12 +- Gateway in multi-node - will not work when few nodes will have the same public IP (they will be behind one common NAT) +- OpenNESS OnPremises: Can not remove a failed/disconnected the edge node information/state from the controller +- The CNCA APIs (4G & 5G) supported in this release is an early access reference implementation and does not support authentication +- Realtime kernel support has been temporarily disabled to address the Kubernetes 1.16.2 and Realtime kernel instability. + +## OpenNESS - 20.03 +- On-Premises edge installation takes more than 1.5hrs because of docker image build for OVS-DPDK +- Network edge installation takes more than 1.5hrs because of docker image build for OVS-DPDK +- OpenNESS controller allows management NICs to be in the pool of configuration which might allow configuration by mistake there by disconnecting the node from control plane +- When using the SRIOV EPA feature added in 20.03 with OVNCNI, the container cannot access the CNI port. This is due to the SRIOV port being set by changing the network used by the container from default to a custom network, This overwrites the OVNCNI network setting configured prior to this to enable the container to work with OVNCNI. Another issue with the SRIOV, is that this also overwrites the network configuration with the EAA and edgedns, agents, which prevents the SRIOV enabled container from communicating with the agents. +- Cannot remove Edge Node from Controller when its offline and traffic policy is configured or app is deployed. + +## OpenNESS - 20.06 +- On-Premises edge installation takes 1.5hrs because of docker image build for OVS-DPDK +- Network edge installation takes 1.5hrs because of docker image build for OVS-DPDK +- OpenNESS controller allows management NICs to be in the pool of configuration which might allow configuration by mistake there by disconnecting the node from control plane +- When using the SRIOV EPA feature added in 20.03 with OVNCNI, the container cannot access the CNI port. This is due to the SRIOV port being set by changing the network used by the container from default to a custom network, This overwrites the OVNCNI network setting configured prior to this to enable the container to work with OVNCNI. Another issue with the SRIOV, is that this also overwrites the network configuration with the EAA and edgedns, agents, which prevents the SRIOV enabled container from communicating with the agents. +- Cannot remove Edge Node from Controller when its offline and traffic policy is configured or app is deployed. +- Legacy OnPremises - Traffic rule creation: cannot parse filled and cleared field +- There is an issue with using CDI when uploading VM images when CMK is enabled due to missing CMK taint toleration. The CDI upload pod does not get deployed and the `virtctl` plugin command times out waiting for the action to complete. A workaround for the issue is to invoke the CDI upload command, edit the taint toleration for the CDI upload to tolerate CMK, update the pod, create the PV and let the pod run to completion. +- There is a known issue with cAdvisor which in certain scenarios occasionally fails to expose the metrics for Prometheus endpoint, see Git Hub: https://github.com/google/cadvisor/issues/2537 + +## OpenNESS - 20.09 +- Pod which uses hugepage get stuck in terminating state on deletion. This is a known issue on Kubernetes 1.18.x and is planned to be fixed in 1.19.x +- Calico cannot be used as secondary CNI with Multus in OpenNESS. It will work only as primary CNI. Calico must be the only network provider in each cluster. We do not currently support migrating a cluster with another network provider to use Calico networking. https://docs.projectcalico.org/getting-started/kubernetes/requirements +- collectd Cache telemetry using RDT does not work when RMD is enabled because of resource conflict. Workaround is to disable collectd RDT plugin when using RMD - this by default is implemented globally. With this workaround customers will be able to allocate the Cache but not use Cache related telemetry. In case where RMD is not being enabled customers who desire RDT telemetry can re-enable collectd RDT. + +## OpenNESS - 20.09 +- CAdvisor CPU utilization of Edge Node is high and could cause a delay to get an interactive SSH session. A work around is to remove CAdvisor if not needed using `helm uninstall cadvisor -n telemetry` + # Release Content -- **OpenNESS 19.06** OpenNESS Edge node, OpenNESS Controller, Common, Spec and OpenNESS Applications. -- **OpenNESS 19.06.01** OpenNESS Edge node, OpenNESS Controller, Common, Spec and OpenNESS Applications. -- **OpenNESS 19.09** OpenNESS Edge node, OpenNESS Controller, Common, Spec and OpenNESS Applications. -- **OpenNESS 19.12** OpenNESS Edge node, OpenNESS Controller, Common, Spec, OpenNESS Applications and Experience kit. -- **OpenNESS 20.03** OpenNESS Edge node, OpenNESS Controller, Common, Spec, OpenNESS Applications and Experience kit. -- **OpenNESS 20.06** - - Open Source: Edge node, Controller, Epcforedge, Common, Spec, Applications and Experience kit. - - IDO: IDO Edge node, IDO Controller, IDO Epcforedge, IDO Spec and IDO Experience kit. -- **OpenNESS 20.09** - - Open Source: Edge node, Controller, Epcforedge, Common, Spec, Applications and Experience kit. - - IDO: IDO Edge node, IDO Controller, IDO Epcforedge, IDO Spec and IDO Experience kit.> Note: Application repo common to Open Source and IDO + +## OpenNESS - 19.06 +OpenNESS Edge node, OpenNESS Controller, Common, Spec and OpenNESS Applications. + +## OpenNESS - 19.06.01 +OpenNESS Edge node, OpenNESS Controller, Common, Spec and OpenNESS Applications. + +## OpenNESS 19.09 +OpenNESS Edge node, OpenNESS Controller, Common, Spec and OpenNESS Applications. + +## OpenNESS - 19.12 +OpenNESS Edge node, OpenNESS Controller, Common, Spec, OpenNESS Applications and Experience kit. + +## OpenNESS - 20.03 +OpenNESS Edge node, OpenNESS Controller, Common, Spec, OpenNESS Applications and Experience kit. + +## OpenNESS - 20.06 +- Open Source: Edge node, Controller, Epcforedge, Common, Spec, Applications and Experience kit. +- IDO: IDO Edge node, IDO Controller, IDO Epcforedge, IDO Spec and IDO Experience kit. + +## OpenNESS - 20.09 +- Open Source: Edge node, Controller, Epcforedge, Common, Spec, Applications and Experience kit. +- IDO: IDO Edge node, IDO Controller, IDO Epcforedge, IDO Spec and IDO Experience kit. + > **Note:** Application repo common to Open Source and IDO # Hardware and Software Compatibility OpenNESS Edge Node has been tested using the following hardware specification: ## Intel® Xeon® D Processor - - Super Micro 3U form factor chasis server, product SKU code: 835TQ-R920B - - Motherboard type: [X11SDV-16C-TP8F](https://www.supermicro.com/products/motherboard/Xeon/D/X11SDV-16C-TP8F.cfm) - - Intel® Xeon® Processor D-2183IT +- Super Micro 3U form factor chasis server, product SKU code: 835TQ-R920B +- Motherboard type: [X11SDV-16C-TP8F](https://www.supermicro.com/products/motherboard/Xeon/D/X11SDV-16C-TP8F.cfm) +- Intel® Xeon® Processor D-2183IT + ## 2nd Generation Intel® Xeon® Scalable Processors | | | From 41dab165b326c83e5dee38e6124cf0f8b2894c44 Mon Sep 17 00:00:00 2001 From: Amr Mokhtar Date: Mon, 14 Dec 2020 12:26:34 +0000 Subject: [PATCH 086/148] Fixed typos --- openness_releasenotes.md | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/openness_releasenotes.md b/openness_releasenotes.md index 1236c0f7..d8bf9d9f 100644 --- a/openness_releasenotes.md +++ b/openness_releasenotes.md @@ -37,7 +37,7 @@ This document provides high level system features, issues and limitations inform - [OpenNESS - 20.03](#openness---2003-3) - [OpenNESS - 20.06](#openness---2006-3) - [OpenNESS - 20.09](#openness---2009-3) - - [OpenNESS - 20.09](#openness---2009-4) + - [OpenNESS - 20.12](#openness---2012-1) - [Release Content](#release-content) - [OpenNESS - 19.06](#openness---1906-4) - [OpenNESS - 19.06.01](#openness---190601-4) @@ -45,7 +45,7 @@ This document provides high level system features, issues and limitations inform - [OpenNESS - 19.12](#openness---1912-4) - [OpenNESS - 20.03](#openness---2003-4) - [OpenNESS - 20.06](#openness---2006-4) - - [OpenNESS - 20.09](#openness---2009-5) + - [OpenNESS - 20.09](#openness---2009-4) - [Hardware and Software Compatibility](#hardware-and-software-compatibility) - [Intel® Xeon® D Processor](#intel%c2%ae-xeon%c2%ae-d-processor) - [2nd Generation Intel® Xeon® Scalable Processors](#2nd-generation-intel%c2%ae-xeon%c2%ae-scalable-processors) @@ -54,13 +54,6 @@ This document provides high level system features, issues and limitations inform - [Package Versions](#package-versions) # Release history -1. OpenNESS - 19.06 -2. OpenNESS - 19.06.01 -3. OpenNESS - 19.09 -4. OpenNESS - 19.12 -5. OpenNESS - 20.03 -6. OpenNESS - 20.06 -7. OpenNESS - 20.09 ## OpenNESS - 19.06 - Edge Cloud Deployment options @@ -364,7 +357,7 @@ There is one issue relevant to this release: it is not possible to remove applic - Calico cannot be used as secondary CNI with Multus in OpenNESS. It will work only as primary CNI. Calico must be the only network provider in each cluster. We do not currently support migrating a cluster with another network provider to use Calico networking. https://docs.projectcalico.org/getting-started/kubernetes/requirements - collectd Cache telemetry using RDT does not work when RMD is enabled because of resource conflict. Workaround is to disable collectd RDT plugin when using RMD - this by default is implemented globally. With this workaround customers will be able to allocate the Cache but not use Cache related telemetry. In case where RMD is not being enabled customers who desire RDT telemetry can re-enable collectd RDT. -## OpenNESS - 20.09 +## OpenNESS - 20.12 - CAdvisor CPU utilization of Edge Node is high and could cause a delay to get an interactive SSH session. A work around is to remove CAdvisor if not needed using `helm uninstall cadvisor -n telemetry` # Release Content From c5f495a9eff3b6a325850199824d075ec2871c60 Mon Sep 17 00:00:00 2001 From: pkartha <51219905+pkartha@users.noreply.github.com> Date: Mon, 14 Dec 2020 07:13:39 -0600 Subject: [PATCH 087/148] 2012 seg overviewdoc (#358) * Create overview.md --- .gitignore | 2 + doc/arch-images/multi-location-edge.png | Bin 0 -> 51373 bytes doc/overview.md | 106 ++++++++++++++++++++++++ 3 files changed, 108 insertions(+) create mode 100644 doc/arch-images/multi-location-edge.png create mode 100644 doc/overview.md diff --git a/.gitignore b/.gitignore index a0918f83..5fe1ef89 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,5 @@ Gemfile.lock _config.yml _site/ *.pdf +.history/doc/overview_20201212222334.md +.history/doc/overview_20201212223809.md diff --git a/doc/arch-images/multi-location-edge.png b/doc/arch-images/multi-location-edge.png new file mode 100644 index 0000000000000000000000000000000000000000..d1826b743872b9adc9f34b6c100936186fa3abf5 GIT binary patch literal 51373 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 : A full open-source distribution of OpenNESS +2. Intel® Distribution of OpenNESS : A licensed distribution from Intel that includes all the features in OpenNESS along with additional microservices, Kubernetes\* extensions, enhancements, and optimizations for Intel® architecture. + +The Intel Distribution of OpenNESS requires a secure login to the OpenNESS GitHub repository. For access to the Intel Distribution of OpenNESS, contact your Intel support representative. + +## Consumption Models + +OpenNESS can be consumed as a whole or as individual building blocks. Whether you are an infrastructure developer or an app developer, if you are moving your business to the Edge, you may benefit from utilizing OpenNESS in your next project. + +**Building Blocks** + +You can explore the various building blocks packaged as Helm Charts and Kubernetes* Operators via the [OpenNESS github project](https://github.com/open-ness). + +**Converged Edge Reference Architectures (CERA)** + +CERA is a set of pre-integrated and readily deployable HW/SW Reference Architectures powered by OpenNESS to significantly accelerate Edge Platform Development, available via the [OpenNESS github project](https://github.com/open-ness). + +**Cloud Devkits** + +Software toolkits to easily deploy an OpenNESS cluster in a cloud environment such as Azure Cloud, available via the [OpenNESS github project](https://github.com/open-ness). + +**Converged Edge Insights** + +Ready to deploy software packages available via the [Intel® Edge Software Hub](https://www.intel.com/content/www/us/en/edge-computing/edge-software-hub.html), comes with use case specific reference implementations to kick start your next pathfinding effort for the Edge. + +Next explore the [OpenNESS Architecture](architecture.md). From 32c46ff89391082567141ade472e91e6965c1a66 Mon Sep 17 00:00:00 2001 From: Karina Murawko-Wisniewska <48431435+i-karina@users.noreply.github.com> Date: Mon, 14 Dec 2020 20:21:49 +0100 Subject: [PATCH 088/148] versions update (#366) --- openness_releasenotes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openness_releasenotes.md b/openness_releasenotes.md index 85663827..58e59020 100644 --- a/openness_releasenotes.md +++ b/openness_releasenotes.md @@ -349,4 +349,4 @@ OpenNESS Edge Node has been tested using the following hardware specification: > OpenNESS was tested on CentOS Linux release 7.8.2003 (Core) : Note: OpenNESS is tested with CentOS 7.8 Pre-empt RT kernel to ensure VNFs and Applications can co-exist. There is not a requirement from OpenNESS software to run on a Pre-empt RT kernel. # Package Versions -Package: telemetry, cadvisor 0.36.0, grafana 7.0.3, prometheus 2.16.0, prometheus: node exporter 1.0.0-rc.0, golang 1.14.9 docker 19.03.12, kubernetes 1.19.3, dpdk 18.11.6, ovs 2.12.0, ovn 2.12.0, helm 3.0, kubeovn 1.0.1, flannel 0.12.0, calico 3.16.0 , multus 3.6, sriov cni 2.3, nfd 0.6.0, cmk v1.4.1, TAS we build from specific commit “a13708825e854da919c6fdf05d50753113d04831” +Package: telemetry, cadvisor 0.36.0, grafana 7.0.3, prometheus 2.16.0, prometheus: node exporter 1.0.0-rc.0, golang 1.15 docker 19.03.12, kubernetes 1.19.3, dpdk 19.11, ovs 2.14.0, ovn 2.14.0, helm 3.0, kubeovn 1.5.1, flannel 0.12.0, calico 3.16.0 , multus 3.6, sriov cni 2.3, nfd 0.6.0, cmk v1.4.1, TAS we build from specific commit “a13708825e854da919c6fdf05d50753113d04831” From b2cdbaf0e776845e266344bf38a3221b5c6984c1 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Tue, 15 Dec 2020 12:15:10 +0800 Subject: [PATCH 089/148] update topology --- .../openness-emco-topology.png | Bin 55506 -> 58018 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco-images/openness-emco-topology.png b/doc/building-blocks/emco/openness-emco-images/openness-emco-topology.png index 977c16c4baf2d1b98c68e41f426c8a256769b9fe..90b40f748de3a27fd8c2299a02cc37506f9a726b 100644 GIT binary patch literal 58018 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 z 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

_ zRID0D#B1CSdp9pfW6PNaiNd5R7oIFm?p-5;R!7-b4!?iPbhxw(JMm-Dgp>@i`6T2R zekEp_xpyz3@i5&IM2az4eNQG{voIM)oORcHZcWubUsnAxz1S2M`E)&kXkBD@CP+Ip z@r5R>@B_KL7lE`}PA8Yo)@Ucg{e_m^Hp`EL#v}j^u4*l)6Ib7$ZbQ)U&59*Uvd=LZ}(lMx-jB zgSZb(sZR5%x*{Cl_3Lw*v>ulOnrB|s@#1#MlX#1-;CU=hqV=C2$itE7&1X@s`SW4C zN9k#<)E4JO!u5*#ZZ%iRsQT6PudtWkqxX6o6E2b=`P=YSA((YXELpP6;zmdpbJTCe zdD_gNMD!B>4$&do#l$X243>TG)iKV$qE1IiH3$c~+)q-!#?)E@ zxHXIV=pvU)#vmwN9=1qHlEEl%IR5DC%tbVO<#IqOaS0>MT@fUDSu^cDZ;$1Oqj+*0 zr!OY}N1)NA|4l;ew)q&xk>a`=U&G#2A)MZSc6WE9_L9((yg5~UGNmlo7d_U6buf+^WDZ2pF< zJQXgxc4Dj9Etk(`*Se#_`KHC&&ZOXO%Bbm_M0Cz?6>5?_#2zwSKHG7<_WsJZi``gb zX!qB|!4c(GZA#Z4NI)5ION^U7mK(Qb^6*pyHRZ^@wN=1o+^TIS5IgWDKA&EEK(u)I zNrfg}N+&S}+ZM)*kR zt?fXt{KYLaqcSOK$^%4EQB=SB^H;w3^A?!w!XY| z@-_`?RKAG|YKPKOS{g?b)O8A7hi!u88Rjm@=r7KF#sw&*EhP!=%t!Jh(Tr2HiYpvM zlVrU;Z=4u&?IVs9f5K99jih&cSbADSvr(-QXIG7f^EG>V7&CTp;nuf8fT< z*$)2|e#d&oOgsh6D0SYH_nGMUD7NHw+|pn8U(LJDIG@xv-K6^TMIAv7C_e~S8W_1fLSrf+^laB|T)74; zLNVTJ6l?nT74+nG3Nv^oZ7oF3J5BRt3xxDCSKcJwb~A5wWxv>#GFJYAtc*pu4Oejc zkh*rcfEzza&(`bsRnz7q{O;HHUJtx$PM#jk?_63ksk;j(9C7o>wBrSIyOf@$4gbpW zasF!m`qHSRLz8pkztm1kv@Rr-9C@)X)tQ*%SogE5 z;2?8xG_DyqU{uQ(d=Qy=Z-1qoLGn3rYFQC||M11uzTxt=<>;y@m+^W>R|nR0i;tCb z=V8TxFStdcbV6e%n4?7L?oGNO3H=+l3L^(^AV&Qek?B5G!^4G?Kd+O{Po8^x?|D1M z55saaB*Q$P7VATC_KS;VVj#RklVrve9$z8oQEjglI4266S?zhFT-6OB`={@JQdv)S bi_UQw4O%rP$WEz{;Lkl-6`4;`CjS2qT=Rur literal 55506 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 Date: Tue, 15 Dec 2020 13:41:38 +0800 Subject: [PATCH 090/148] address Neal comments --- doc/building-blocks/emco/openness-emco.md | 101 +++++++++++----------- 1 file changed, 52 insertions(+), 49 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 181c06e4..c085055f 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -12,7 +12,7 @@ Copyright (c) 2020 Intel Corporation - [EMCO API](#emco-api) - [EMCO Authentication and Authorization](#emco-authentication-and-authorization) - [EMCO Installation With OpenNESS Flavor](#emco-installation-with-openness-flavor) - - [Practise with EMCO: SmartCity Deployment](#practise-with-emco-smartcity-deployment) + - [Practice with EMCO: SmartCity Deployment](#practice-with-emco-smartcity-deployment) ## Background Edge Multi-Cluster Orchestration(EMCO), an OpenNESS Building Block, is a Geo-distributed application orchestrator for Kubernetes\*. The main objective of EMCO is automation of the deployment of applications and services across clusters. It acts as a central orchestrator that can manage edge services and network functions across geographically distributed edge clusters from different third parties. Finally, the resource orchestration within a cluster of nodes will leverage Kubernetes* and Helm charts. @@ -20,7 +20,7 @@ Edge Multi-Cluster Orchestration(EMCO), an OpenNESS Building Block, is a Geo-dis EMCO addresses the need for deploying 'composite applications' in multiple geographical locations. > **NOTE**: A 'composite application' is a combination of multiple applications. Based on the deployment intent, various applications of the composite application get deployed at various locations, and get replicated in multiple locations. -Compared with other multipe-clusters orchestration, EMCO focuses on the following functionalies: +Compared with other multipe-clusters orchestration, EMCO focuses on the following functionalities: - Enrolling multiple geographically distributed OpenNESS clusters and third party cloud clusters. - Orchestrating composite applications (composed of multiple individual applications) across the clusters. - Deploying edge services and network functions on to different nodes spread across the different clusters. @@ -29,28 +29,29 @@ Compared with other multipe-clusters orchestration, EMCO focuses on the followin - Supporting onboarding of multiple tenants from different enterprises while ensuring confidentiality and full isolation across the tenants. -The following figure shows the topology overview for the OpenNESS EMCO orchestration with edge and multiple clusters. +The following figure shows the topology overview for the OpenNESS EMCO orchestration with edge and multiple clusters. It also shows an example of deploying SmartCity with EMCO. +> **NOTE**: Smart City sample source code and documentation are available on [GitHub](https://github.com/OpenVisualCloud/Smart-City-Sample) ![OpenNESS EMCO](openness-emco-images/openness-emco-topology.png) -_Figure - Topology Overview with OpenNESS EMCO_ +_Figure 1 - Topology Overview with OpenNESS EMCO_ -All the managed edge clusters and cloud clusters are connected with EMCO cluster through the WAN network. -- The central orchestration (EMCO) cluster installation can use [OpenNESS Central Orchestrator Flavor](../../flavors.md). -- The edge clusters in the diagram can be installed and provisioned by using [OpenNESS Media Analytics Flavor](../../flavors.md). +All the managed edge clusters and cloud clusters are connected with the EMCO cluster through the WAN network. +- The central orchestration (EMCO) cluster installation can use the [OpenNESS Central Orchestrator Flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md). +- The edge clusters in the diagram can be installed and provisioned by using the [OpenNESS Media Analytics Flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md). - The cloud cluster in the diagram can be any type of cloud cluster, for example: Azure Cloud. - The composite application - SmartCity is composed of two parts: edge applications and cloud (web) applications. - The edge application executes media processing and analytics on multiple edge clusters to reduce latency. - The cloud application is like a web application for additional post-processing, such as calculating statistics and display/visualization on the cloud cluster side. - - An EMCO user can deploy the SmartCity applications across the clusters. Besides that, EMCO supports override values, profiles for the operator to satisfy the need of deployments. - - For more details, refer to [SmartCity Deployment Practise with EMCO](#smartcity-deployment-practise-with-emco). + - The EMCO user can deploy the SmartCity applications across the clusters. Besides that, EMCO allows the operator to override configurations and profiles to satisfy deployment needs. + - For more details, refer to [Practice with EMCO: SmartCity Deployment](#practice-with-emco-smartcity-deployment). -This document aims to familiarize the user with [OpenNESS deployment flavor](../../flavors.md) for EMCO installation and provision, and provide instructions accordingly. +This document aims to familiarize the user with [OpenNESS deployment flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md) for EMCO installation and provision, and provide instructions accordingly. ## EMCO Introduction ### EMCO Architecture The following diagram depicts a high level overview of the EMCO architecture. ![OpenNESS EMCO](openness-emco-images/openness-emco-arch.png) -_Figure - EMCO Architecture_ +_Figure 2 - EMCO Architecture_ - Cluster Registration Controller registers clusters by cluster owners. - Distributed Application Scheduler provides a simplified and extensible placement. - Network Configuration Management handles creation/management of virtual and provider networks. @@ -111,7 +112,7 @@ Due to the close relationship with Clusters, which are provided by Cluster Regis ![Mapping between Logical Clouds and Clusters](openness-emco-images/openness-emco-lccl.png) -_Figure - Mapping between Logical Clouds and Clusters_ +_Figure 3 - Mapping between Logical Clouds and Clusters_ ##### Lifecycle Operations Prerequisites to using Logical Clouds: @@ -148,49 +149,53 @@ The OVN Action Controller (ovnaction) microservice is an action controller which The traffic controller microservice provides a way to create network policy resources across edge clusters. It provides inbound RESTful APIs to create intents to open the traffic from clients, and provides change and delete APIs for update and deletion of traffic intents. Using the information provided through intents, it also creates a network policy resource for each of the application servers on the corresponding edge cluster. > **NOTE**:For network policy to work, edge cluster must have network policy support using CNI such as calico. -#### Resource Syncronizer +#### Resource Synchronizer This microservice is the one which deploys the resources in edge/cloud clusters. 'Resource contexts' created by various microservices are used by this microservice. It takes care of retrying, in case the remote clusters are not reachable temporarily. #### Generic Action Controller -The generic action controller microservice is an action controller which may be registered with the central orchestrator. It can acheive the following usecases: +The generic action controller microservice is an action controller which may be registered with the central orchestrator. It can achieve the following usecases: - Create a new Kubernetes* object and deploy that along with a specific application which is part of the composite Application. There are two variations here: - Default : Apply the new object to every instance of the app in every cluster where the app is deployed. - Cluster-Specific : Apply the new object only where the app is deployed to a specific cluster, denoted by a cluster-name or a list of clusters denoted by a cluster-label. -- Modify an existing Kubernetes* object which may have been deployed using the helm chart for an app, or may have been newly created by the above mentioned usecase. Modification may correspond to specific fields in the YAML definition of the object. +- Modify an existing Kubernetes* object which may have been deployed using the Helm chart for an app, or may have been newly created by the above mentioned usecase. Modification may correspond to specific fields in the YAML definition of the object. -To acheive both the usecases, the controller exposes REST APIs to create, update and delete the following: +To achieve both the usecases, the controller exposes RESTful APIs to create, update and delete the following: - Resource - Specifies the newly defined object or an existing object. -- Customization - Specifies the modifications(using JSON Patching) to be applied on the objects. +- Customization - Specifies the modifications (using JSON Patching) to be applied on the objects. ### EMCO Terminology | | | |------------------------|----------------------------------------------------------------------------------------------------------------------------------| -| Cluster Provider | The provider is someone who owns clusters and registers them. | -| Projects | The project resource provides means for a collection of applications to be grouped. | +| Cluster Provider | The provider is someone who owns clusters and registers them. | +| Projects | The project resource provides means for a collection of applications to be grouped. | | | Several applications can exist under a specific project. | | | Projects allows for grouping of applications under a common tenant to be defined. | +|------------------------|----------------------------------------------------------------------------------------------------------------------------------| | Composite application | Composite application is combination of multiple applications. | | | Based on the deployment intent, various applications of the composite application get deployed at various locations. | | | Also, some applications of the composite application get replicated in multiple locations. | -| Deployment Intent | EMCO does not expect the editing of helm charts provided by application/Network-function vendors by DevOps admins. | +|------------------------|----------------------------------------------------------------------------------------------------------------------------------| +| Deployment Intent | EMCO does not expect the editing of Helm charts provided by application/Network-function vendors by DevOps admins. | | | Any customization and additional K8s resources that need to be present with the application are specified as deployment intents. | +|------------------------|----------------------------------------------------------------------------------------------------------------------------------| | Placement Intent | EMCO supports to create generic placement intents for a given composite application. | | | Normally, EMCO scheduler calls placement controllers first to figure out the edge/cloud locations for a given application. | | | Finally works with 'resource synchronizer & status collector' to deploy K8s resources on various Edge/Cloud clusters. | +|------------------------|----------------------------------------------------------------------------------------------------------------------------------| ### EMCO API -For user interaction, EMCO provides [RESTAPI](https://github.com/otcshare/EMCO/blob/main/docs/emco_apis.yaml). Apart from that, EMCO also provides CLI. For the detailed usage, refer to [EMCO CLI](https://github.com/otcshare/EMCO/tree/main/src/tools/emcoctl) -> **NOTE**: The EMCO REST API is the foundation for the other interaction facilities like the EMCO CLI and even EMCO GUI (third party developed right now) +For user interaction, EMCO provides [RESTful API](https://github.com/otcshare/EMCO/blob/main/docs/emco_apis.yaml). Apart from that, EMCO also provides CLI. For the detailed usage, refer to [EMCO CLI](https://github.com/otcshare/EMCO/tree/main/src/tools/emcoctl) +> **NOTE**: The EMCO RESTful API is the foundation for the other interaction facilities like the EMCO CLI and even EMCO GUI (third party developed right now) ### EMCO Authentication and Authorization EMCO uses Istio and other open source solutions to provide Multi-tenancy solution leveraging Istio Authorization and Authentication frameworks. This is achieved without adding any logic in EMCO microservices. -- Authentication and Authorization for the EMCO users is done at the Isito Ingress Gateway, where all the traffic enters the cluster. +- Authentication and Authorization for the EMCO users is done at the Istio Ingress Gateway, where all the traffic enters the cluster. -- Istio alongwith autherservice (istio ecosystem project) enables request-level authentication with JSON Web Token (JWT) validation. Authservice is an entity that works along side with Envoy proxy. It is used to work with external IAM systems (OAUTH2). Many Enterprises have their own OAUTH2 server for authenticating users and provide roles. +- Istio along with autherservice (istio ecosystem project) enables request-level authentication with JSON Web Token (JWT) validation. Authservice is an entity that works along side with Envoy proxy. It is used to work with external IAM systems (OAUTH2). Many Enterprises have their own OAUTH2 server for authenticating users and provide roles. - Authservice and ISTIO can be configured to talk to multiple OAUTH2 servers. Using this capability EMCO can support multiple tenants, for example one tenant belonging to one project. @@ -200,13 +205,13 @@ The following figure shows various Emco services running in a cluster with Istio ![OpenNESS EMCO](openness-emco-images/emco-istio-arch.png) -_Figure - EMCO setup with Istio and Authservice_ +_Figure 4 - EMCO setup with Istio and Authservice_ The following figure shows the authentication flow with EMCO, Istio and Authservice ![OpenNESS EMCO](openness-emco-images/emco-istio-auth.png) -_Figure - EMCO Authenication with external OATH2 Server_ +_Figure 5 - EMCO Authenication with external OATH2 Server_ Detailed steps for configuring EMCO with Istio can be found in [Emco Integrity and Access Management](https://github.com/otcshare/EMCO/tree/main/docs/user/Emco_Integrity_Access_Management.md) document. @@ -219,16 +224,14 @@ Steps for EMCO Authentication and Authorization Setup: - Configure Istio Ingress gateway resources for Emco Services - Configure Istio Ingess gateway to enable running along with Authservice - Apply EnvoyFilter for Authservice -- Apply Authenication and Authorization Policies +- Apply Authentication and Authorization Policies ### EMCO Installation With OpenNESS Flavor -EMCO supports [multiple deployment options](https://github.com/otcshare/EMCO/tree/main/deployments). OpenNESS offers the `central_orchestrator` to automate EMCO build and deployment as mentioned below. -The first step is to prepare one server environment which needs to fulfill the [Preconditions](../../getting-started/network-edge/controller-edge-node-setup.md#preconditions). - -Then Place the EMCO server hostname in `[controller_group]` group in `inventory.ini` file of openness-experience-kit. +EMCO supports [multiple deployment options](https://github.com/otcshare/EMCO/tree/main/deployments). [OpenNESS Experience Kit](https://github.com/otcshare/specs/blob/master/doc/getting-started/openness-experience-kits.md) offers the `central_orchestrator` flavor to automate EMCO build and deployment as mentioned below. +- The first step is to prepare one server environment which needs to fulfill the [Preconditions](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#preconditions). +- Then place the EMCO server hostname in `[controller_group]` group in `inventory.ini` file of openness-experience-kit. > **NOTE**: `[edgenode_group]` and `[edgenode_vca_group]` are not required for configuration, since EMCO micro services just need to be deployed on the Kubernetes* control plane node. - -Run script `./deploy_ne.sh -f central_orchestrator`. Deployment should complete successfully. In the flavor, harbor registry is deployed to provide images services as well. +- Run script `./deploy_ne.sh -f central_orchestrator`. Deployment should complete successfully. In the flavor, harbor registry is deployed to provide images services as well. ```shell # kubectl get pods -A @@ -268,30 +271,30 @@ kube-system ovs-ovn-jq6dn 1/1 Running ``` -## Practise with EMCO: SmartCity Deployment -- One OpenNESS edge cluster (representing regional office) and One legacy K8s Cluster (representing cloud) are connected to the OpenNESS EMCO cluster. +## Practice with EMCO: SmartCity Deployment - The SmartCity application is a sample application that is built on top of the OpenVINO™ and Open Visual Cloud software stacks for media processing and analytics. - - The whole application is composed of two parts: + - The composite application is composed of two parts: - EdgeApp (multiple OpenNESS edge clusters) - WebApp (cloud application for additional post-processing such as calculating statistics and display/visualization) +- One OpenNESS edge cluster (representing regional office) and One legacy K8s Cluster (representing cloud) are connected to the OpenNESS EMCO cluster. - The whole deployment architecture diagram is as shown below: ![OpenNESS EMCO](openness-emco-images/openness-emco-smtc.png) -_Figure - SmartCity Deployment Architecture Overview_ +_Figure 6 - SmartCity Deployment Architecture Overview_ -The typical steps involved in the cluster registration and deployment of the application using OpenNESS EMCO are as following: +The typical steps involved in the cluster registration and deployment of the application using OpenNESS EMCO are as follows: - Prerequisites - - Make One OpenNESS Edge Cluster Ready with any OpenNESS Flavor (OpenNESS Application Node Flavor is proposed) - - Make One Legacy K8s Cluster Ready (Simulate cloud cluster) - - Prepare One Server with a Vanilla CentOS for EMCO (Only one server is required for EMCO cluster) + - Make one OpenNESS edge cluster ready. + - Make one legacy K8s cluster ready (Simulate cloud cluster). + - Prepare One server with a vanilla CentOS\* 7.8.2003 for EMCO (Only one server is required for EMCO cluster). - EMCO Installation -- Clusters Setup +- Cluster Setup - Project Setup - Logical Cloud Setup - Deploy SmartCity Application -### Clusters Setup -In the step, cluster provider will be created and clusters will be registered in the EMCO. +### Cluster Setup +In the step, cluster provider will be created. And both the edge cluster and the cloud cluster will be registered in the EMCO. 1. After [EMCO Installation With OpenNESS Flavor](#emco-installation), logon to the EMCO server and maker sure that Harbor and EMCO microservices are in running status. @@ -309,7 +312,7 @@ docker login ${HARBORRHOST} -u admin -p ${HARBORRPW} ``` > **NOTE**: should be `:30003`. -3. On EMCO server, download the [scripts](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco). +3. On the EMCO server, download the [scripts,profiles and configmap JSON files](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco). 4. Run the command for the environment setup with success return as below: ```shell @@ -368,7 +371,7 @@ http://localhost:31298/v2 URL: projects/project_smtc/composite-apps/composite_smtc/v1/deployment-intent-groups/smtc-deployment-intent-group/instantiate Response Code: 202 Response: ``` -2. On both edge cluster and cloud cluster, manually create `tunnel_secret` as below: +2. On both the edge cluster and the cloud cluster, manually create `tunnel_secret` as below: ```shell #!/usr/bin/env bash PRIKEY=/root/tunnel_secret/id_rsa @@ -416,11 +419,11 @@ cloud-web-64fb95884f-m9fns 1/1 Running 0 20h From a web browser, launch the Smart City web UI at URL `https://`. The GUI shows like: ![OpenNESS EMCO](openness-emco-images/openness-emco-smtcui.png) -_Figure - SmartCity UI_ +_Figure 7 - SmartCity UI_ ### SmartCity Termination -Run the command for the SmartCity termination with expected result as below: +Run the command for the SmartCity application termination with expected result as below: ```shell # cd cli-scripts/ # ./88_terminate.sh @@ -430,5 +433,5 @@ http://localhost:31298/v2 URL: projects/project_smtc/composite-apps/composite_smtc/v1/deployment-intent-groups/smtc-deployment-intent-group/terminate Response Code: 202 Response: ``` -After termination, SmartCity Application will be deleted from the clusters. +After termination, the SmartCity application will be deleted from the clusters. From 524e4091f6eb6f46c627ac0efb90bd683e62acf5 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Tue, 15 Dec 2020 13:44:39 +0800 Subject: [PATCH 091/148] correct section link issue --- doc/building-blocks/emco/openness-emco.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index c085055f..49a42629 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -296,7 +296,7 @@ The typical steps involved in the cluster registration and deployment of the app ### Cluster Setup In the step, cluster provider will be created. And both the edge cluster and the cloud cluster will be registered in the EMCO. -1. After [EMCO Installation With OpenNESS Flavor](#emco-installation), logon to the EMCO server and maker sure that Harbor and EMCO microservices are in running status. +1. After [EMCO Installation With OpenNESS Flavor](#emco-installation-with-openness-flavor), logon to the EMCO host server and maker sure that Harbor and EMCO microservices are in running status. 2. On the edge and cloud cluster, run the following command to make Docker logon the Harbor deployed on the EMCO server: ```shell From 0a76b7df0e71daa5674552085604de36d2975209 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Tue, 15 Dec 2020 13:56:51 +0800 Subject: [PATCH 092/148] correct table --- doc/building-blocks/emco/openness-emco.md | 41 +++++++++-------------- 1 file changed, 15 insertions(+), 26 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 49a42629..764cf412 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -15,7 +15,7 @@ Copyright (c) 2020 Intel Corporation - [Practice with EMCO: SmartCity Deployment](#practice-with-emco-smartcity-deployment) ## Background -Edge Multi-Cluster Orchestration(EMCO), an OpenNESS Building Block, is a Geo-distributed application orchestrator for Kubernetes\*. The main objective of EMCO is automation of the deployment of applications and services across clusters. It acts as a central orchestrator that can manage edge services and network functions across geographically distributed edge clusters from different third parties. Finally, the resource orchestration within a cluster of nodes will leverage Kubernetes* and Helm charts. +Edge Multi-Cluster Orchestration(EMCO), an OpenNESS Building Block, is a Geo-distributed application orchestrator for Kubernetes\*. The main objective of EMCO is automation of the deployment of applications and services across clusters. It acts as a central orchestrator that can manage edge services and network functions across geographically distributed edge clusters from different third parties. Finally, the resource orchestration within a cluster of nodes will leverage Kubernetes\* and Helm charts. EMCO addresses the need for deploying 'composite applications' in multiple geographical locations. > **NOTE**: A 'composite application' is a combination of multiple applications. Based on the deployment intent, various applications of the composite application get deployed at various locations, and get replicated in multiple locations. @@ -63,7 +63,7 @@ _Figure 2 - EMCO Architecture_ - Monitoring covers distributed application. #### Cluster Registration -A microservice exposes RESTful API. User can register cluster providers and clusters of those providers via these APIs. After preparing edge clusters and cloud clusters, which can be any Kubernetes* cluster, user can onboard those clusters to EMCO by creating a cluster provider and then adding clusters to the cluster provider. After cluster providers are created, the KubeConfig files of edge and cloud clusters should be provided to EMCO as part of the multi-part POST call to the Cluster API. +A microservice exposes RESTful API. User can register cluster providers and clusters of those providers via these APIs. After preparing edge clusters and cloud clusters, which can be any Kubernetes\* cluster, user can onboard those clusters to EMCO by creating a cluster provider and then adding clusters to the cluster provider. After cluster providers are created, the KubeConfig files of edge and cloud clusters should be provided to EMCO as part of the multi-part POST call to the Cluster API. Additionally, after a cluster is created, labels and key value pairs can be added to the cluster via the EMCO API. Clusters can be specified by label when preparing placement intents. > **NOTE**: The cluster provider is someone who owns clusters and registers them to EMCO. If an Enterprise has clusters, for example from AWS, then the cluster provider for those clusters from AWS is still considered as from that Enterprise. AWS is not the provider. Here, the provider is someone who owns clusters and registers them here. Since, AWS does not register their clusters here, AWS is not considered as cluster provider in this context. @@ -104,7 +104,7 @@ The Network Configuration Management microservice supports operations on the net - stop: In some cases, if the remote cluster is intermittently unreachable, the Resource Synchronizer will continue retrying an instantiate or terminate operation. The stop operation can be used to force the retry operation to stop, and the instantate or terminate operation will be completed (with a failed status). In the case of terminate, this allows the deployment intent group resource to be deleted via the API, since deletion is prevented until a deployment intent group resource has reached a completed terminate operation status. #### Distributed Cloud Manager -The Distributed Cloud Manager (DCM) provides the Logical Cloud abstraction and effectively completes the concept of "multi-cloud". One Logical Cloud is a grouping of one or many clusters, each with their own control plane, specific configurations and geo-location, which get partitioned for a particular EMCO project. This partitioning is made via the creation of distinct, isolated namespaces in each of the (Kubernetes*) clusters that thus make up the Logical Cloud. +The Distributed Cloud Manager (DCM) provides the Logical Cloud abstraction and effectively completes the concept of "multi-cloud". One Logical Cloud is a grouping of one or many clusters, each with their own control plane, specific configurations and geo-location, which get partitioned for a particular EMCO project. This partitioning is made via the creation of distinct, isolated namespaces in each of the Kubernetes\* clusters that thus make up the Logical Cloud. A Logical Cloud is the overall target of a Deployment Intent Group and is a mandatory parameter (the specific applications under it further refine what gets run and in which location). A Logical Cloud must be explicitly created and instantiated before a Deployment Intent Group can be instantiated. @@ -123,7 +123,7 @@ The basic flow of lifecycle operations to get a Logical Cloud up and running via * Create a Logical Cloud specifying the following attributes: - Level: either 1 or 0, depending on whether an admin or a custom/user cloud is sought - more on the differences below. - (*for Level-1 only*) Namespace name - the namespace to use in all of the Clusters of the Logical Cloud. - - (*for Level-1 only*) User name - the name of the user that will be authenticating to the Kubernetes* APIs to access the namespaces created. + - (*for Level-1 only*) User name - the name of the user that will be authenticating to the Kubernetes\* APIs to access the namespaces created. - (*for Level-1 only*) User permissions - permissions that the user specified will have in the namespace specified, in all of the clusters. * (*for Level-1 only*) Create resource quotas and assign them to the Logical Cloud created: this specifies what quotas/limits the user will face in the Logical Cloud, for each of the Clusters. * Assign the Clusters previously created with the project-less Cluster Registration API to the newly-created Logical Cloud. @@ -168,24 +168,13 @@ To achieve both the usecases, the controller exposes RESTful APIs to create, upd - Customization - Specifies the modifications (using JSON Patching) to be applied on the objects. ### EMCO Terminology -| | | -|------------------------|----------------------------------------------------------------------------------------------------------------------------------| -| Cluster Provider | The provider is someone who owns clusters and registers them. | -| Projects | The project resource provides means for a collection of applications to be grouped. | -| | Several applications can exist under a specific project. | -| | Projects allows for grouping of applications under a common tenant to be defined. | -|------------------------|----------------------------------------------------------------------------------------------------------------------------------| -| Composite application | Composite application is combination of multiple applications. | -| | Based on the deployment intent, various applications of the composite application get deployed at various locations. | -| | Also, some applications of the composite application get replicated in multiple locations. | -|------------------------|----------------------------------------------------------------------------------------------------------------------------------| -| Deployment Intent | EMCO does not expect the editing of Helm charts provided by application/Network-function vendors by DevOps admins. | -| | Any customization and additional K8s resources that need to be present with the application are specified as deployment intents. | -|------------------------|----------------------------------------------------------------------------------------------------------------------------------| -| Placement Intent | EMCO supports to create generic placement intents for a given composite application. | -| | Normally, EMCO scheduler calls placement controllers first to figure out the edge/cloud locations for a given application. | -| | Finally works with 'resource synchronizer & status collector' to deploy K8s resources on various Edge/Cloud clusters. | -|------------------------|----------------------------------------------------------------------------------------------------------------------------------| +| Term | Description | +|:-----: | ----- | +| Cluster Provider |

The provider is someone who owns clusters and registers them.

| +| Projects |

The project resource provides means for a collection of applications to be grouped. Several applications can exist under a specific project. Projects allows for grouping of applications under a common tenant to be defined.

| +| Composite application |

Composite application is combination of multiple applications. Based on the deployment intent, various applications of the composite application get deployed at various locations. Also, some applications of the composite application get replicated in multiple locations.

| +| Deployment Intent |

EMCO does not expect the editing of Helm charts provided by application/Network-function vendors by DevOps admins. Any customization and additional K8s resources that need to be present with the application are specified as deployment intents.

| +| Placement Intent |

EMCO supports to create generic placement intents for a given composite application. Normally, EMCO scheduler calls placement controllers first to figure out the edge/cloud locations for a given application. Finally works with 'resource synchronizer & status collector' to deploy K8s resources on various Edge/Cloud clusters.

| ### EMCO API For user interaction, EMCO provides [RESTful API](https://github.com/otcshare/EMCO/blob/main/docs/emco_apis.yaml). Apart from that, EMCO also provides CLI. For the detailed usage, refer to [EMCO CLI](https://github.com/otcshare/EMCO/tree/main/src/tools/emcoctl) @@ -201,7 +190,7 @@ EMCO uses Istio and other open source solutions to provide Multi-tenancy solutio - Using Istio AuthorizationPolicy access to different EMCO resources can be controlled based on roles defined for the users. -The following figure shows various Emco services running in a cluster with Istio. +The following figure shows various EMCO services running in a cluster with Istio. ![OpenNESS EMCO](openness-emco-images/emco-istio-arch.png) @@ -213,7 +202,7 @@ The following figure shows the authentication flow with EMCO, Istio and Authserv _Figure 5 - EMCO Authenication with external OATH2 Server_ -Detailed steps for configuring EMCO with Istio can be found in [Emco Integrity and Access Management](https://github.com/otcshare/EMCO/tree/main/docs/user/Emco_Integrity_Access_Management.md) document. +Detailed steps for configuring EMCO with Istio can be found in [EMCO Integrity and Access Management](https://github.com/otcshare/EMCO/tree/main/docs/user/Emco_Integrity_Access_Management.md) document. Steps for EMCO Authentication and Authorization Setup: - Install and Configure Keycloak Server to be used in the setup. This server runs outside EMCO cluster @@ -221,14 +210,14 @@ Steps for EMCO Authentication and Authorization Setup: - Install Istio in the Kubernetes* cluster where EMCO is running - Enable Sidecar Injection in EMCO namesapce - Install EMCO in EMCO namespace (with Istio sidecars) -- Configure Istio Ingress gateway resources for Emco Services +- Configure Istio Ingress gateway resources for EMCO Services - Configure Istio Ingess gateway to enable running along with Authservice - Apply EnvoyFilter for Authservice - Apply Authentication and Authorization Policies ### EMCO Installation With OpenNESS Flavor EMCO supports [multiple deployment options](https://github.com/otcshare/EMCO/tree/main/deployments). [OpenNESS Experience Kit](https://github.com/otcshare/specs/blob/master/doc/getting-started/openness-experience-kits.md) offers the `central_orchestrator` flavor to automate EMCO build and deployment as mentioned below. -- The first step is to prepare one server environment which needs to fulfill the [Preconditions](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#preconditions). +- The first step is to prepare one server environment which needs to fulfill the [preconditions](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#preconditions). - Then place the EMCO server hostname in `[controller_group]` group in `inventory.ini` file of openness-experience-kit. > **NOTE**: `[edgenode_group]` and `[edgenode_vca_group]` are not required for configuration, since EMCO micro services just need to be deployed on the Kubernetes* control plane node. - Run script `./deploy_ne.sh -f central_orchestrator`. Deployment should complete successfully. In the flavor, harbor registry is deployed to provide images services as well. From c812ca0509ae542be479cac099d77a4a9d840769 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Tue, 15 Dec 2020 14:00:48 +0800 Subject: [PATCH 093/148] correct typo --- doc/building-blocks/emco/openness-emco.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 764cf412..9392bcea 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -172,9 +172,9 @@ To achieve both the usecases, the controller exposes RESTful APIs to create, upd |:-----: | ----- | | Cluster Provider |

The provider is someone who owns clusters and registers them.

| | Projects |

The project resource provides means for a collection of applications to be grouped. Several applications can exist under a specific project. Projects allows for grouping of applications under a common tenant to be defined.

| -| Composite application |

Composite application is combination of multiple applications. Based on the deployment intent, various applications of the composite application get deployed at various locations. Also, some applications of the composite application get replicated in multiple locations.

| +| Composite application |

The composite application is combination of multiple applications. Based on the deployment intent, various applications of the composite application get deployed at various locations. Also, some applications of the composite application get replicated in multiple locations.

| | Deployment Intent |

EMCO does not expect the editing of Helm charts provided by application/Network-function vendors by DevOps admins. Any customization and additional K8s resources that need to be present with the application are specified as deployment intents.

| -| Placement Intent |

EMCO supports to create generic placement intents for a given composite application. Normally, EMCO scheduler calls placement controllers first to figure out the edge/cloud locations for a given application. Finally works with 'resource synchronizer & status collector' to deploy K8s resources on various Edge/Cloud clusters.

| +| Placement |

EMCO supports to create generic placement intents for a given composite application. Normally, EMCO scheduler calls placement controllers first to figure out the edge/cloud locations for a given application. Finally works with 'resource synchronizer & status collector' to deploy K8s resources on various Edge/Cloud clusters.

| ### EMCO API For user interaction, EMCO provides [RESTful API](https://github.com/otcshare/EMCO/blob/main/docs/emco_apis.yaml). Apart from that, EMCO also provides CLI. For the detailed usage, refer to [EMCO CLI](https://github.com/otcshare/EMCO/tree/main/src/tools/emcoctl) From 7de07375e86a085e50e3d6465b8f34a590e1bad0 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Tue, 15 Dec 2020 15:01:42 +0800 Subject: [PATCH 094/148] tune procedure --- doc/building-blocks/emco/openness-emco.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 9392bcea..3006df69 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -294,7 +294,7 @@ HARBORRHOST= cd /etc/docker/certs.d/ mkdir ${HARBORRHOST} cd ${HARBORRHOST} -echo -n | openssl s_client -showcerts -connect ${HARBORRHOST} 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > harbor.crt +curl -sk -X GET https://${HARBORRHOST}/api/v2.0/systeminfo/getcert -H "accept: application/json" -o harbor.crt HARBORRPW=Harbor12345 docker login ${HARBORRHOST} -u admin -p ${HARBORRPW} @@ -306,7 +306,7 @@ docker login ${HARBORRHOST} -u admin -p ${HARBORRPW} 4. Run the command for the environment setup with success return as below: ```shell # cd cli-scripts/ -# ./env_setup.sh +# ./setup_env.sh ``` 5. Run the command for the clusters setup with expected result as below: From 5dbae63e06a8338d9aa0f6c47c9c7c89a19246f8 Mon Sep 17 00:00:00 2001 From: pkartha <51219905+pkartha@users.noreply.github.com> Date: Tue, 15 Dec 2020 06:12:17 -0600 Subject: [PATCH 095/148] Update architecture.md (#359) * Update architecture.md --- doc/arch-images/openness-emco.png | Bin 0 -> 58019 bytes doc/arch-images/openness_overview.png | Bin 78565 -> 78782 bytes doc/arch-images/resource.png | Bin 0 -> 7064 bytes doc/architecture.md | 325 +++++++++++++++----------- 4 files changed, 194 insertions(+), 131 deletions(-) create mode 100644 doc/arch-images/openness-emco.png create mode 100644 doc/arch-images/resource.png diff --git a/doc/arch-images/openness-emco.png b/doc/arch-images/openness-emco.png new file mode 100644 index 0000000000000000000000000000000000000000..1c60d8db63d8c121336d8afb7793e69c3b742a9d GIT binary patch literal 58019 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
oQK3dW`ayktUO^!yq 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 t(9#CDN4+2;f7r#IjN_TW#ak){|^uOotppv literal 0 HcmV?d00001 diff --git a/doc/arch-images/openness_overview.png b/doc/arch-images/openness_overview.png index 8f2a68d9c5c7c4b5a237c30b4e41fc2f452aa7f7..883fbc1f0177afcb270c36e8f54abebade9065d6 100644 GIT binary patch literal 78782 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 + # OpenNESS Architecture and Solution Overview -- [OpenNESS Overview](#openness-overview) -- [OpenNESS Distributions](#openness-distributions) -- [Deployment Based on Location](#deployment-based-on-location) -- [Architecture Overview](#architecture-overview) - - [Logical](#logical) - - [Architecture](#architecture) - - [OpenNESS Kubernetes Control Plane](#openness-kubernetes-control-plane) - - [OpenNESS Edge Node](#openness-edge-node) -- [Microservices, Kubernetes Extensions, and Enhancements](#microservices-kubernetes-extensions-and-enhancements) - - [Platform Pods - Enhanced Platform Awareness](#platform-pods---enhanced-platform-awareness) - - [System Pods](#system-pods) - - [Container Networking](#container-networking) - - [Telemetry](#telemetry) - - [Software Development Kits](#software-development-kits) -- [Edge Services and Network Functions](#edge-services-and-network-functions) -- [OpenNESS Experience Kit](#openness-experience-kit) - - [Minimal flavor](#minimal-flavor) - - [RAN node flavor](#ran-node-flavor) - - [Application node flavor](#application-node-flavor) - - [Orchestration node flavor](#orchestration-node-flavor) - - [Microsoft Azure OpenNESS](#microsoft-azure-openness) - - [Converged Edge Reference Architecture (CERA) Flavor](#converged-edge-reference-architecture-cera-flavor) -- [Other References](#other-references) -- [List of Abbreviations](#list-of-abbreviations) - -## OpenNESS Overview -![](arch-images/modular.png) - -Open Network Edge Services Software (OpenNESS) is a software toolkit that enables highly optimized and performant edge platforms to onboard and manage applications and network functions with cloud-like agility. OpenNESS is a modular, microservice oriented architecture that can be consumed by a customer as a whole solution or in parts. - -OpenNESS is intended for the following types of users: -![](arch-images/customers.png) - -OpenNESS simplifies edge platform development and deployment: -- Abstracts Network Complexity: Users can choose from many data planes, container network interfaces, and access technologies. -- Cloud Native Capabilities: User support of cloud-native ingredients for resource orchestration, telemetry, and service mesh. -- Hardware and Software Optimizations for Best Performance and ROI: Dynamic discovery and optimal placement of apps and services. Users can expose underlying edge hardware and enable the control and management of hardware accelerators. - -OpenNESS provides three easy steps to achieve deployment: -1. Acquire hardware that meets the requirements -2. Meet the prerequisites and use the [Getting Started Guide](https://github.com/otcshare/specs/blob/master/doc/getting-started/openness-experience-kits.md) for deployment -3. Use [Application Onboarding](https://github.com/otcshare/specs/blob/master/doc/applications-onboard/network-edge-applications-onboarding.md) for applications and Cloud-native Network Functions (CNFs) - -![](arch-images/start.png) - - -## OpenNESS Distributions -OpenNESS is released as two distributions: -1. OpenNESS : A full open-source distribution of OpenNESS -2. Intel® Distribution of OpenNESS : A licensed distribution from Intel that includes all the features in OpenNESS along with additional microservices, Kubernetes\* extensions, enhancements, and optimizations for Intel® architecture. - -The Intel Distribution of OpenNESS requires a secure login to the OpenNESS GitHub\* repository. For access to the Intel Distribution of OpenNESS, contact your Intel support representative. - -## Deployment Based on Location -OpenNESS supports the deployment of edge nodes that host applications and network functions at the following locations: -- On-Premises: The Edge Computing resources are located in the customer premises (e.g., industrial, retail, healthcare) and managed by either the Communication Service Provider (CoSP) or the Enterprise customer as a Private network (Private 4G/5G, uCPE/SDWAN). These deployments retain the sensitive data generated on-premises. -- Network Edge: Edge compute resources are often spread across the CoSP network (e.g. Access Edge - Cell site, Near Edge - Aggregation Sites, and Central Office - Regional Data Center) and managed by the CoSP. Adoption of 5G has paved the way for cloud-native, commercial off-the-shelf (COTS) deployments that host network functions and applications. - -Most of these deployments are fully virtualized and moving towards cloud-native platforms for agility and elasticity. -![](arch-images/locations.png) +- [OpenNESS Architecture and Solution Overview](#openness-architecture-and-solution-overview) + - [Architecture Overview](#architecture-overview) + - [Logical](#logical) + - [Architecture](#architecture) + - [OpenNESS Kubernetes Control Plane](#openness-kubernetes-control-plane) + - [OpenNESS Edge Node](#openness-edge-node) + - [Building Blocks, Kubernetes Extensions, and Enhancements](#building-blocks-kubernetes-extensions-and-enhancements) + - [Multi-Access Networking](#multi-access-networking) + - [Edge Multi-Cluster Orchestration](#edge-multi-cluster-orchestration) + - [Resource Management](#resource-management) + - [Resource Identification](#resource-identification) + - [Resource Allocation](#resource-allocation) + - [Resource Monitoring](#resource-monitoring) + - [Accelerators](#accelerators) + - [Dataplane/Container Network Interfaces](#dataplanecontainer-network-interfaces) + - [Edge Aware Service Mesh](#edge-aware-service-mesh) + - [Telemetry and Monitoring](#telemetry-and-monitoring) + - [Edge Services](#edge-services) + - [Software Development Kits](#software-development-kits) + - [Converged Edge Reference Architecture](#converged-edge-reference-architecture) + - [CERA Minimal Flavor](#cera-minimal-flavor) + - [CERA Access Edge Flavor](#cera-access-edge-flavor) + - [CERA Near Edge Flavor](#cera-near-edge-flavor) + - [CERA SD-WAN Edge Flavor](#cera-sd-wan-edge-flavor) + - [CERA SD-WAN Hub Flavor](#cera-sd-wan-hub-flavor) + - [CERA Media Analytics Flavor with VCAC-A](#cera-media-analytics-flavor-with-vcac-a) + - [CERA Media Analytics Flavor](#cera-media-analytics-flavor) + - [CERA CDN Transcode Flavor](#cera-cdn-transcode-flavor) + - [CERA CDN Caching Flavor](#cera-cdn-caching-flavor) + - [CERA Core Control Plane Flavor](#cera-core-control-plane-flavor) + - [CERA Core User Plane Flavor](#cera-core-user-plane-flavor) + - [CERA for Untrusted Non-3GPP Access Flavor](#cera-for-untrusted-non-3gpp-access-flavor) + - [Reference Edge Apps and Network Functions](#reference-edge-apps-and-network-functions) + - [OpenNESS Optimized Commercial Applications](#openness-optimized-commercial-applications) + - [OpenNESS DevKit for Microsoft Azure](#openness-devkit-for-microsoft-azure) + - [Other References](#other-references) + - [List of Abbreviations](#list-of-abbreviations) ## Architecture Overview -Before reviewing the detailed architecture overview of OpenNESS, take a look at the logical overview of how OpenNESS microservices are laid out. + +Before reviewing the detailed architecture overview of OpenNESS, take a look at the logical overview of how the OpenNESS Building Blocks are laid out. ### Logical + The OpenNESS solution is built on top of Kubernetes, which is a production-grade container orchestration environment. A typical OpenNESS-based deployment consists of an **OpenNESS Kubernetes Control Plane** and an **OpenNESS Edge Node**. ![](arch-images/openness_overview.png) @@ -81,12 +62,15 @@ The OpenNESS solution is built on top of Kubernetes, which is a production-grade Another key ingredient is the 4G/5G core network functions that enable a private or public edge. OpenNESS uses reference network functions to validate this end-to-end edge deployment. This is key to understanding and measuring edge Key Performance Indicators (KPIs). ### Architecture + ![](arch-images/openness-arc.png) #### OpenNESS Kubernetes Control Plane + The OpenNESS Kubernetes Control Plane consists of Vanilla Kubernetes Control Plane components along with OpenNESS microservices that interact with the Kubernetes Control Plane using Kubernetes defined APIs. -The following are the high-level features of the OpenNESS Kubernetes Control Plane microservice: +The following are the high-level features of the OpenNESS Kubernetes Control Plane building blocks: + - Configuration of the hardware platform that hosts applications and network functions - Configuration of network functions (4G, 5G, and WiFi\*) - Detection of various hardware and software capabilities of the edge cluster and use for scheduling applications and network functions @@ -94,41 +78,74 @@ The following are the high-level features of the OpenNESS Kubernetes Control Pla - Enable collection of hardware infrastructure, software, and application monitoring - Expose edge cluster capabilities northbound to a controller -#### OpenNESS Edge Node -The OpenNESS Edge Node consists of Vanilla Kubernetes Node components along with OpenNESS microservices that interact with Kubernetes node using Kubernetes defined APIs. +#### OpenNESS Edge Node + +The OpenNESS Edge Node consists of Vanilla Kubernetes Node components along with OpenNESS Building Blocks that interact with Kubernetes node using Kubernetes defined APIs. + +The following are the high-level features of the OpenNESS Kubernetes node building blocks: -The following are the high-level features of the OpenNESS Kubernetes node microservice: - Container runtime (Docker\*) and virtualization infrastructure (libvirt\*, Open vSwitch (OVS)\*, etc.) support - Platform pods consisting of services that enable the configuration of a node for a particular deployment, device plugins enabling hardware resource allocation to an application pod, and detection of interfaces and reporting to the Control Plane. - System pods consisting of services that enable reporting the hardware and software features of each node to the Control Plane, resource isolation service for pods, and providing a DNS service to the cluster - Telemetry consisting of services that enable hardware, operating system, infrastructure, and application-level telemetry for the edge node - Support for real-time kernel for low latency applications and network functions like 4G and 5G base station and non-real-time kernel - + The OpenNESS Network functions are the key 4G and 5G functions that enable edge cloud deployment. OpenNESS provides these key reference network functions and the configuration agent in the Intel Distribution of OpenNESS. The OpenNESS solution validates the functionality and performance of key software development kits used for applications and network functions at the edge. This spans across edge applications that use Intel® Media SDK, OpenVINO™, Intel® Math Kernel Library (Intel® MKL), etc. and network functions that use Data Plane Development Kit (DPDK), Intel® Performance Primitives, Intel® MKL, OpenMP\*, OpenCL\*, etc. -## Microservices, Kubernetes Extensions, and Enhancements +## Building Blocks, Kubernetes Extensions, and Enhancements + +This section provides of an overview of the various OpenNESS Building Blocks, extensions to Kubernetes and enhancements to other open source frameworks required for the development of Edge platforms. These building blocks span across the system and platform pods discussed earlier. Many are provided as Helm charts. + +### Multi-Access Networking + +This building block represents a set of microservices that enables steering of traffic from various access networks to and from edge apps and services. + +- **Application Function (AF):** is a microservice in the OpenNESS Kubernetes Control Plane that supports Traffic Influencing Subscription, Packet Flow Description Management functionality, and Policy Authorization to help steer the Edge-specific traffic in UPF towards the applications deployed on the OpenNESS edge node. AF is developed as per the Rel.15 3gpp specifications. AF is only available in the Intel Distribution of OpenNESS. +- **Network Exposure Function (NEF)**: is a microservice used for validation of AF functionality in OpenNESS before integrating with the 5G Core. The functionality is limited and in line with the AF functional scope. It includes a reference implementation for Traffic influence and PFD management. NEF is developed as per the Rel.15 3gpp specifications. NEF is only available in the Intel Distribution of OpenNESS. +- **Core Network Configuration Agent (CNCA)**: is a microservice that provides an interface for orchestrators that interact with OpenNESS Kubernetes Control Plane to interact with the 5G Core network solution. CNCA provides a CLI (kube-ctl plugin) interface to interact with the AF and OAM services. CNCA is only available in the Intel Distribution of OpenNESS. +- **Edge Application Agent (EAA)**: Edge application APIs are implemented by the EAA. Edge application APIs are important APIs for edge application developers. EAA APIs provide APIs for service discovery, subscription, and update notification. EAA APIs are based on ETSI MEC- MEC11 MP1 APIs specifications. +- **Edge Interface Service**: This service is an application that runs in a Kubernetes pod on each node of the OpenNESS Kubernetes cluster. It allows attachment of additional network interfaces of the node host to provide an OVS bridge, enabling external traffic scenarios for applications deployed in Kubernetes pods. Services on each node can be controlled from the Control Plane using a kubectl plugin. This interface service can attach both kernel and userspace (DPDK) network interfaces to OVS bridges of a suitable type. +- **DNS Service**: Supports DNS resolution and forwarding services for the application deployed on edge computing. The DNS server is implemented based on the DNS library in Go. DNS service supports resolving DNS requests from user equipment (UE) and applications on the edge cloud. + +### Edge Multi-Cluster Orchestration + +Edge Multi-Cluster Orchestration(EMCO), is a Geo-distributed application orchestrator for Kubernetes*. The main objective of EMCO is automation of the deployment of applications and services across clusters. It acts as a central orchestrator that can manage edge services and network functions across geographically distributed edge clusters from different third parties. Finally, the resource orchestration within a cluster of nodes will leverage Kubernetes* and Helm charts. + +![](arch-images/openness-emco.png) + +Link: [EMCO](https://github.com/otcshare/specs/blob/master/doc/building-blocks/emco/openness-emco.md) +### Resource Management + +Resource Management represents a methodology which involves identification of the hardware and software resources on the edge cluster, Configuration and allocation of the resources and continuous monitoring of the resources for any changes. + +![](arch-images/resource.png) + +OpenNESS provides set of enhancements across multiple layers of the orchestration stack, targeting identification of platform capabilities as well as configuration and capacity consumption. -OpenNESS microservices and enhancements can be understood under the following sub-classification: All OpenNESS microservices are provided as Helm charts. +Why should users consider using Resource Management? To achieve optimal performance and efficiency characteristics. Resource Management extensions facilitate the automation of an advanced selection of capabilities and tuning parameters during the deployment of cloud-native solutions. Resource Management also enables service providers to offer differentiating and/or revenue-generating services that require leveraging specific hardware features. -### Platform Pods - Enhanced Platform Awareness -Enhanced Platform Awareness (EPA) represents a methodology and a related set of enhancements across multiple layers of the orchestration stack, targeting intelligent platform capabilities as well as configuration and capacity consumption. +OpenNESS provides a complete solution for users to integrate key resource management features needed for applications (CDN, AI inference, transcoding, gaming, etc.) and CNFs (RAN DU, CU, and Core) to work optimally for edge deployments. -EPA features include: -* HugePages support -* Non-uniform memory access (NUMA) topology awareness -* CPU pinning -* Integration of OVS with DPDK -* Support for I/O Pass-through via SR-IOV -* HDDL support -* FPGA resource allocation support, and many others +#### Resource Identification -Why should users consider using EPA? To achieve optimal performance and efficiency characteristics. EPA extensions facilitate the automation of an advanced selection of capabilities and tuning parameters during the deployment of cloud-native solutions. EPA also enables service providers to offer differentiating and/or revenue-generating services that require leveraging specific hardware features. +Resource identification involves detecting key hardware and software features on the platform that can be used for scheduling of the workload on the cluster. OpenNESS support Node Feature Discovery (NFD) microservices that detects hardware and software features and labels the nodes with relevant features. -OpenNESS provides a complete solution for users to integrate key EPA features needed for applications (CDN, AI inference, transcoding, gaming, etc.) and CNFs (RAN DU, CU, and Core) to work optimally for edge deployments. +#### Resource Allocation + +Resource Allocation involves configuration of the certain hardware resources like CPU, IO devices, GPU, Accelerator devices, Memory (Hugepages) etc.. to the applications and services. OpenNESS provides many Device Plugins, Kubernetes jobs, CRD Operators and Red Hat OpenShift Operator: Special Resource Operators for configuration and resource allocation of VPU, GPU, FPGA, CPU L3 cache, Memory bandwidth resources to applications and services. + +#### Resource Monitoring + +Resource monitoring involves tracking the usage of allocated resources to the applications and services and also tracking the remaining allocatable resources. OpenNESS provides collectors, node exporters using collectd, telegraf and custom exporters as part of telemetry and monitoring of current resource usage. Resource monitoring support is provided for CPU, VPU, FPGA AND Memory. + +Link: [Enhanced Platform Awareness: Documents covering Accelerators and Resource Management](https://github.com/otcshare/specs/tree/master/doc/building-blocks/enhanced-platform-awareness) + +### Accelerators + +OpenNESS supports the following accelerator microservices. -OpenNESS supports the following EPA microservices, which typically span across the system and platform pods discussed earlier in this document. - High-Density Deep Learning (HDDL): Software that enables OpenVINO™-based AI apps to run on Intel® Movidius™ Vision Processing Units (VPUs). It consists of the following components: - HDDL device plugin for K8s - HDDL service for scheduling jobs on VPUs @@ -139,28 +156,19 @@ OpenNESS supports the following EPA microservices, which typically span across t - FPGA/eASIC/NIC: Software that enables AI inferencing for applications, high-performance and low-latency packet pre-processing on network cards, and offloading for network functions such as eNB/gNB offloading Forward Error Correction (FEC). It consists of: - FPGA device plugin for inferencing - SR-IOV device plugin for FPGA/eASIC - - Dynamic Device Profile for Network Interface Cards (NIC) -- Resource Management Daemon (RMD): RMD uses Intel® Resource Director Technology (Intel® RDT) to implement cache allocation and memory bandwidth allocation to the application pods. This is a key technology for achieving resource isolation and determinism on a cloud-native platform. -- Node Feature Discovery (NFD): Software that enables node feature discovery for Kubernetes. It detects hardware features available on each node in a Kubernetes cluster and advertises those features using node labels. -- Topology Manager: This component allows users to align their CPU and peripheral device allocations by NUMA node. -- Kubevirt: Provides support for running legacy applications in VM mode and the allocation of SR-IOV ethernet interfaces to VMs. - -### System Pods -- Edge Interface Service: This service is an application that runs in a Kubernetes pod on each node of the OpenNESS Kubernetes cluster. It allows attachment of additional network interfaces of the node host to provide an OVS bridge, enabling external traffic scenarios for applications deployed in Kubernetes pods. Services on each node can be controlled from the Control Plane using a kubectl plugin. -This interface service can attach both kernel and userspace (DPDK) network interfaces to OVS bridges of a suitable type. -- BIOS/Firmware Configuration Service : Uses Intel's System Configuration Utility (syscfg) tool to build a pod that is scheduled by K8s as a job that configures both BIOS and FW with the given specification. -- DNS Service: Supports DNS resolution and forwarding services for the application deployed on edge computing. The DNS server is implemented based on the DNS library in Go. DNS service supports resolving DNS requests from user equipment (UE) and applications on the edge cloud. -- Video Transcode Service: An application microservice that exposes a REST API for transcoding on CPU or GPU. -- Edge Application Agent (EAA): Edge application APIs are implemented by the EAA. Edge application APIs are important APIs for edge application developers. EAA APIs provide APIs for service discovery, subscription, and update notification. - -### Container Networking + - Dynamic Device Profile for Network Interface Cards (NIC) + +### Dataplane/Container Network Interfaces + OpenNESS provides a flexible and high-performance set of container networking using Container Networking Interfaces (CNIs). Some of the high-performance, open-source CNIs are also supported. Container networking support in OpenNESS addresses the following: + - Highly-coupled, container-to-container communications - Pod-to-pod communications on the same node and across the nodes OpenNESS supports the following CNIs: + - SRIOV CNI: works with the SR-IOV device plugin for VF allocation for a container. - User Space CNI: designed to implement userspace networking (as opposed to kernel space networking). - Bond CNI: provides a method for aggregating multiple network interfaces into a single logical "bonded" interface. @@ -168,23 +176,41 @@ OpenNESS supports the following CNIs: - Weave CNI: creates a virtual network that connects Docker containers across multiple hosts and enables their automatic discovery. - Kube-OVN CNI: integrates the OVN-based network virtualization with Kubernetes. It offers an advanced container network fabric for enterprises with the most functions and the easiest operation. - Calico CNI/eBPF: supports applications with higher performance using eBPF and IPv4/IPv6 dual-stack - -### Telemetry + +Link: [Dataplane and CNI](https://github.com/otcshare/specs/tree/master/doc/building-blocks/dataplane) + +### Edge Aware Service Mesh + +Istio is a feature-rich, cloud-native service mesh platform that provides a collection of key capabilities such as: Traffic Management, Security and Observability uniformly across a network of services. OpenNESS integrates natively with the Istio service mesh to help reduce the complexity of large scale edge applications, services, and network functions. + +Link: [Service Mesh](https://github.com/otcshare/specs/blob/master/doc/applications/openness_service_mesh.md) + +### Telemetry and Monitoring + Edge builders need a comprehensive telemetry framework that combines application telemetry, hardware telemetry, and events to create a heat-map across the edge cluster and enables the orchestrator to make scheduling decisions. Industry-leading, cloud-native telemetry and monitoring frameworks are supported on OpenNESS: + - Prometheus\* and Grafana\*: This is a cloud-native, industry-standard framework that provides a monitoring system and time series database. - Telegraf This is a cloud-native, industry-standard agent for collecting, processing, aggregating, and writing metrics. - Open Telemetry : Open Consensus, Open Tracing - CNCF project that provides the libraries, agents, and other components that you need to capture telemetry from your services so that you can better observe, manage, and debug them. Hardware Telemetry support: + - CPU: Supported metrics - cpu, cpufreq, load, HugePages, intel_pmu, intel_rdt, ipmi - Dataplane: Supported metrics - ovs_stats and ovs_pmd_stats - Accelerator: Supported Metrics from - FPGA–PAC-N3000, VCAC-A, HDDL-R, eASIC, GPU, and NIC OpenNESS also supports a reference application of using telemetry to take actions using Kubernetes APIs. This reference is provided to the Telemetry Aware Scheduler project. +### Edge Services + +These building blocks are included as part of System pods. + +- Video Transcode Service: An application microservice that exposes a REST API for transcoding on CPU or GPU. + ### Software Development Kits + OpenNESS supports leading SDKs for edge services (applications) and network function development. As part of the development of OpenNESS, applications developed using these SDKs are optimized to provide optimal performance. This ensures that when customers develop applications using these SDKs, they can achieve optimal performance. - OpenVINO™ SDK : The OpenVINO™ toolkit is composed of a variety of tools from Intel that work together to provide a complete computer vision pipeline solution that is optimized on Intel® architecture. This article will focus on the Intel® Media SDK component of the toolkit. The Intel Media SDK is a high-level API for specific video processing operations: decode, process, and encode. It supports H.265, H.264, MPEG-2, and more codecs. Video processing can be used to resize, scale, de-interlace, color conversion, de-noise, sharpen, and more. The Intel Media SDK works in the background to leverage hardware acceleration on Intel® architecture with optimized software fallback for each hardware platform. Thus, developers do not need to change the code from platform to platform and can focus more on the application itself rather than on hardware optimization. @@ -193,54 +219,91 @@ OpenNESS supports leading SDKs for edge services (applications) and network func - Intel IPP: Intel® Integrated Performance Primitives (Intel® IPP) is an extensive library of ready-to-use, domain-specific functions that are highly optimized for diverse Intel® architectures. - Intel® MKL: Intel® Math Kernel Library (Intel® MKL) optimizes code with minimal effort for future generations of Intel® processors. It is compatible with your choice of compilers, languages, operating systems, and linking and threading models. -## Edge Services and Network Functions -OpenNESS supports a rich set of reference and commercial real-world edge services (applications) and network functions. These applications and network functions are a vehicle for validating functionality and performance KPIs for Edge. -The following is a subset of supported edge applications: -- Smart city App: This end-to-end sample app implements aspects of smart city sensing, analytics, and management, utilizing CPU or VCA. -- CDN Transcode and Content Delivery App: The CDN Transcode sample app is an Open Visual Cloud software stack with all required open-source ingredients integrated to provide an out-of-the-box CDN media transcode service, including live streaming and video on demand. It provides a Docker-based software development environment for developers to easily build specific applications. -- Edge Insights: The Edge Insights application is designed to enable secure ingestion, processing, storage and management of data, and near real-time (~10ms), event-driven control, across a diverse set of industrial protocols. -The following is a subset of supported reference network functions: -- gNodeB or eNodeB: 5G or 4G base station implementation on Intel architecture based on Intel’s FlexRAN. +## Converged Edge Reference Architecture + +Converged Edge Reference Architecture (CERA) is a set of pre-integrated & readily deployable HW/SW Reference Architectures powered by OpenNESS to significantly accelerate Edge Platform development. -## OpenNESS Experience Kit -The OpenNESS Experience Kit is an Ansible\* playbook that acts as a single interface for users to deploy OpenNESS. The kit organizes all of the above microservices, Kubernetes extensions, enhancements, and optimizations under easy to deploy node types called flavors, implemented as Ansible roles. +OpenNESS includes an Ansible\* playbook that acts as a single interface for users to deploy various types of CERAs. The playbook organizes all of the above microservices, Kubernetes extensions, enhancements, and optimizations under easy to deploy node types called flavors, implemented as Ansible roles. -For example, a user deploying a network edge at a cell site can choose the Radio Access Network (RAN) flavor to deploy a node with all the microservices, Kubernetes extensions, enhancements, and optimizations required for a RAN node. +For example, a user deploying a network edge at a cell site can choose the Access Edge flavor to deploy a node with all the microservices, Kubernetes extensions, enhancements, and optimizations required for a RAN node. + +### CERA Minimal Flavor -### Minimal flavor This flavor supports the installation of the minimal set of components from OpenNESS and, it is typically used as a starting point for creating a custom node. -### RAN node flavor -RAN node typically refers to RAN Distributed Unit (DU) and Centralized Unit (CU) 4G/5G nodes deployed on the edge or far edge. In some cases, DU may be integrated into the radio. The example RAN deployment flavor uses FlexRAN as a reference DU. +### CERA Access Edge Flavor + +This flavor typically refers to RAN Distributed Unit (DU) and Centralized Unit (CU) 4G/5G nodes deployed on the access edge. In some cases, DU may be integrated into the radio. The example RAN deployment flavor uses FlexRAN as a reference DU. + +Link: [CERA Access Edge Overview](reference-architectures/ran/openness_ran.md) + +### CERA Near Edge Flavor + +Available in Intel Distribution of OpenNESS + +### CERA SD-WAN Edge Flavor + +Available in Intel Distribution of OpenNESS + +### CERA SD-WAN Hub Flavor + +Available in Intel Distribution of OpenNESS + +### CERA Media Analytics Flavor with VCAC-A + +CERA Media Analytics Flavor provides Kubernetes enhancements for High performance compute, VPU and GPU offload device plugins for Intel VCAC-A card. This flavor can be tested using the Smart City reference app available in OpenNESS. + +### CERA Media Analytics Flavor -![RAN node flavor](arch-images/openness-flexran.png) +CERA Media Analytics Flavor is similar to the CERA Media Analytics Flavor with VCAC-A except the Analytics pipeline runs on the Intel CPU rather than the Intel VCAC-A card. This flavor can be tested using the Smart City reference app available in OpenNESS. -### Application node flavor -Application nodes typically refer to nodes running edge applications and services. The applications can be Smart City, CDN, AR/VR, Cloud Gaming, etc. In the example flavor below, the Smart City application pipeline is used. +### CERA CDN Transcode Flavor -Under the application node, the following flavors are supported: -- Media Analytics Flavor -- Media Analytics Flavor with VCAC-C -- CDN Transcode -- CDN Content Delivery +CERA for CDN transcode flavor provides key OpenNESS Kubernetes enhancements for high performance compute. The flavor can be tested using the CDN Transcode Sample which is an Open Visual Cloud software stack with all required open source ingredients well integrated to provide out-of-box CDN media transcode service, including live streaming and video on demand. It also provides Docker-based media delivery software development environment upon which developer can easily build their specific applications. -![Application node flavor](arch-images/openness-ovc.png) +### CERA CDN Caching Flavor -### Orchestration node flavor -Orchestration node here typically refers to central orchestration node deployed on the central cloud. It can orchestrate applications across edge clusters and cloud clusters with different locations. -More details refer to [EMCO White Paper](building-blocks/emco/openness-emco.md). +CERA for CDN transcode flavor provides key OpenNESS Kubernetes enhancements for high performance Networking using SR-IOV, NVMe and SSD device support. The flavor can be tested using the CDN Caching sample application in OpenNESS. -### Microsoft Azure OpenNESS -This flavor supports the installation of an OpenNESS Kubernetes cluster on a Microsoft\* Azure\* VM. This is typically used by a customer who requires the same Kubernetes cluster service on multiple clouds. +### CERA Core Control Plane Flavor -### Converged Edge Reference Architecture (CERA) Flavor -CERA from Intel provides foundational recipes that converge IT as well as OT and NT workloads on various on-premise and network edge platforms. +Available in Intel Distribution of OpenNESS -In future OpenNESS releases, various CERA flavors will be available. Each of these recipes would include combinations of other OpenNESS flavors (e.g., RAN + UPF + Apps) +### CERA Core User Plane Flavor + +Available in Intel Distribution of OpenNESS + +### CERA for Untrusted Non-3GPP Access Flavor + +Available in Intel Distribution of OpenNESS + +## Reference Edge Apps and Network Functions + +OpenNESS supports a rich set of reference and commercial real-world edge services (applications) and network functions. These applications and network functions are a vehicle for validating functionality and performance KPIs for Edge. + +The following is a subset of supported edge applications: + +- Smart city App: This end-to-end sample app implements aspects of smart city sensing, analytics, and management, utilizing CPU or VCA. +- CDN Transcode and Content Delivery App: The CDN Transcode sample app is an Open Visual Cloud software stack with all required open-source ingredients integrated to provide an out-of-the-box CDN media transcode service, including live streaming and video on demand. It provides a Docker-based software development environment for developers to easily build specific applications. +- Edge Insights: The Edge Insights application is designed to enable secure ingestion, processing, storage and management of data, and near real-time (~10ms), event-driven control, across a diverse set of industrial protocols. + +The following is a subset of supported reference network functions: + +- gNodeB or eNodeB: 5G or 4G base station implementation on Intel architecture based on Intel’s FlexRAN. + +Link: [Documents covering OpenNESS supported Reference Architectures](https://github.com/otcshare/specs/tree/master/doc/reference-architectures) +## OpenNESS Optimized Commercial Applications + +OpenNESS Optimized Commercial applications are available at [Intel® Network Builders](https://networkbuilders.intel.com/commercial-applications) + +### OpenNESS DevKit for Microsoft Azure + +This devkit supports the installation of an OpenNESS Kubernetes cluster on a Microsoft* Azure* VM. This is typically used by a customer who want to develop applications and services for the edge using OpenNESS building blocks. ## Other References + - [3GPP_23401] 3rd Generation Partnership Project; Technical Specification Group Services and System Aspects; General Packet Radio Service (GPRS) enhancements for Evolved Universal Terrestrial Radio Access Network (E-UTRAN) access. - [3GPP_23214] 3rd Generation Partnership Project; Technical Specification Group Services and System Aspects; Architecture enhancements for control and user plane separation of EPC nodes; Stage 2. - [ETSI_MEC_003] ETSI GS MEC 003 V2.1.1 Multi-access Edge Computing (MEC): Framework and Reference Architecture @@ -255,7 +318,7 @@ In future OpenNESS releases, various CERA flavors will be available. Each of the ## List of Abbreviations | Acronym | Definition | -|----------|-------------------------------------------------| +| -------- | ----------------------------------------------- | | 3GPP | Third Generation Partnership Project | | AF | Application Function | | AMF | Access and Mobility Mgmt Function | @@ -303,4 +366,4 @@ In future OpenNESS releases, various CERA flavors will be available. Each of the | UE | User Equipment (in the context of LTE) | | UPF | User Plane Function | | UUID | Universally Unique IDentifier | -| VIM | Virtual Infrastructure Manager | +| VIM | Virtual Infrastructure Manager | \ No newline at end of file From 198fee49e41801d7da8c3f658c6de2a65cffc1de Mon Sep 17 00:00:00 2001 From: damiankopyto <48013534+damiankopyto@users.noreply.github.com> Date: Tue, 15 Dec 2020 14:08:01 +0000 Subject: [PATCH 096/148] More ran flavor info (#372) Co-authored-by: Krishnamurthy Jambur <47258934+krishnajs@users.noreply.github.com> --- doc/flavors.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/doc/flavors.md b/doc/flavors.md index b4f46947..8ec016e3 100644 --- a/doc/flavors.md +++ b/doc/flavors.md @@ -12,7 +12,7 @@ This document introduces the supported deployment flavors that are deployable th - [Media Analytics Flavor with VCAC-A](#media-analytics-flavor-with-vcac-a) - [CDN Transcode Flavor](#cdn-transcode-flavor) - [CDN Caching Flavor](#cdn-caching-flavor) -- [Orchestration Flavor](#emco-flavor) +- [Orchestration Flavor](#orchestration-flavor) ## Minimal Flavor The pre-defined *minimal* deployment flavor provisions the minimal set of configurations for bringing up the OpenNESS network edge deployment. @@ -34,7 +34,12 @@ The pre-defined *flexran* deployment flavor provisions an optimized system confi Steps to install this flavor are as follows: 1. Configure OEK as described in the [OpenNESS Getting Started Guide for Network Edge](getting-started/network-edge/controller-edge-node-setup.md). -2. Run OEK deployment script: +2. Configure the flavor file to reflect desired deployment. + - Configure the CPUs selected for isolation and OS/K8s processes from command line in files [controller_group.yml](https://github.com/otcshare/openness-experience-kits/blob/master/flavors/flexran/controller_group.yml) and [edgenode_group.yml](https://github.com/otcshare/openness-experience-kits/blob/master/flavors/flexran/edgenode_group.yml) - please note that in single node mode the edgenode_group.yml is used to configure the CPU isolation. + - Configure the amount of CPUs reserved for K8s and OS from K8s level with `reserved_cpu` flag in [all.yml](https://github.com/otcshare/openness-experience-kits/blob/master/flavors/flexran/all.yml) file. + - Configure whether the FPGA or eASIC support for FEC is desired or both in [all.yml](https://github.com/otcshare/openness-experience-kits/blob/master/flavors/flexran/all.yml) file. + +3. Run OEK deployment script: ```shell $ deploy_ne.sh -f flexran ``` @@ -45,6 +50,7 @@ This deployment flavor enables the following ingredients: * Telemetry * FPGA remote system update through OPAE * FPGA configuration +* eASIC ACC100 configuration * RT Kernel * Tapology Manager * RMD operator From 8e0f9e3ad7eac6b3253e13a18204b3c85d7b2b7f Mon Sep 17 00:00:00 2001 From: cjnolan <47635874+cjnolan@users.noreply.github.com> Date: Tue, 15 Dec 2020 17:27:41 +0000 Subject: [PATCH 097/148] Fix documentation links in README (#361) --- README.md | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index f77ea55b..573dda67 100644 --- a/README.md +++ b/README.md @@ -36,36 +36,40 @@ Below is the complete list of OpenNESS solution documentation * [openness-eaa.md: Edge Application Agent: Description of Edge Application APIs and Edge Application Authentication APIs](https://github.com/otcshare/specs/blob/master/doc/applications-onboard/openness-eaa.md) ## Radio Access Network (RAN) -* [ran: Folder containing details of 4G and 5G RAN deployment support](https://github.com/otcshare/specs/tree/master/doc/ran) - * [openness_ran.md: Whitepaper detailing the 4G and 5G RAN deployment support on OpenNESS for Network Edge](https://github.com/otcshare/specs/blob/master/doc/ran/openness_ran.md) +* [ran: Folder containing details of 4G and 5G RAN deployment support](https://github.com/otcshare/specs/tree/master/doc/reference-architectures/ran) + * [openness_ran.md: Whitepaper detailing the 4G and 5G RAN deployment support on OpenNESS for Network Edge](https://github.com/otcshare/specs/blob/master/doc/reference-architectures/ran/openness_ran.md) + * [openness_xran.md: Whitepaper detailing O-RAN Sample Application deployment support on OpenNESS](https://github.com/otcshare/specs/blob/master/doc/reference-architectures/ran/openness_xran.md) ## Core Network - 4G and 5G -* [core-network: Folder containing details of 4G CUPS and 5G edge cloud deployment support](https://github.com/otcshare/specs/tree/master/doc/core-network) - * [openness_epc.md: Whitepaper detailing the 4G CUPS support for Edge cloud deployment in OpenNESS for Network Edge](https://github.com/otcshare/specs/blob/master/doc/core-network/openness_epc.md) - * [openness_ngc.md: Whitepaper detailing the 5G Edge Cloud deployment support in OpenNESS for Network Edge](https://github.com/otcshare/specs/blob/master/doc/core-network/openness_ngc.md) - * [openness_upf.md: Whitepaper detailing the UPF, AF, NEF deployment support on OpenNESS for Network Edge](https://github.com/otcshare/specs/blob/master/doc/core-network/openness_upf.md) +* [core-network: Folder containing details of 4G CUPS and 5G edge cloud deployment support](https://github.com/otcshare/specs/tree/master/doc/reference-architectures/core-network) + * [openness_epc.md: Whitepaper detailing the 4G CUPS support for Edge cloud deployment in OpenNESS for Network Edge](https://github.com/otcshare/specs/blob/master/doc/reference-architectures/core-network/openness_epc.md) + * [openness_ngc.md: Whitepaper detailing the 5G Edge Cloud deployment support in OpenNESS for Network Edge](https://github.com/otcshare/specs/blob/master/doc/reference-architectures/core-network/openness_ngc.md) + * [openness_upf.md: Whitepaper detailing the UPF, AF, NEF deployment support on OpenNESS for Network Edge](https://github.com/otcshare/specs/blob/master/doc/reference-architectures/core-network/openness_upf.md) ## Enhanced Platform Awareness -* [enhanced-platform-awareness: Folder containing individual Silicon and Software EPA that are features that are supported in OpenNESS and Network Edge](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness) - * [openness-hugepage.md: Hugepages support for Edge Applications and Network Functions](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-hugepage.md) - * [openness-node-feature-discovery.md: Edge Node hardware and software feature discovery support in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-node-feature-discovery.md) - * [openness-sriov-multiple-interfaces.md: Dedicated Physical Network interface allocation support for Edge Applications and Network Functions](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-sriov-multiple-interfaces.md) - * [openness-dedicated-core.md: Dedicated CPU core allocation support for Edge Applications and Network Functions](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-dedicated-core.md) - * [openness-bios.md: Edge platform BIOS and Firmware and configuration support in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-bios.md) - * [openness-fpga.md: Dedicated FPGA IP resource allocation support for Edge Applications and Network Functions](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-fpga.md) - * [openness_hddl.md: Using Intel® Movidius™ Myriad™ X High Density Deep Learning (HDDL) solution in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness_hddl.md) - * [openness-topology-manager.md: Resource Locality awareness support through Topology manager in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-topology-manager.md) - * [openness-vca.md: Visual Compute Accelerator Card - Analytics (VCAC-A)](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-vcac-a.md) +* [enhanced-platform-awareness: Folder containing individual Silicon and Software EPA that are features that are supported in OpenNESS and Network Edge](https://github.com/otcshare/specs/tree/master/doc/building-blocks/enhanced-platform-awareness) + * [openness-hugepage.md: Hugepages support for Edge Applications and Network Functions](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-hugepage.md) + * [openness-node-feature-discovery.md: Edge Node hardware and software feature discovery support in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-node-feature-discovery.md) + * [openness-sriov-multiple-interfaces.md: Dedicated Physical Network interface allocation support for Edge Applications and Network Functions](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-sriov-multiple-interfaces.md) + * [openness-dedicated-core.md: Dedicated CPU core allocation support for Edge Applications and Network Functions](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-dedicated-core.md) + * [openness-bios.md: Edge platform BIOS and Firmware and configuration support in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-bios.md) + * [openness-fpga.md: Dedicated FPGA IP resource allocation support for Edge Applications and Network Functions](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md) + * [openness_hddl.md: Using Intel® Movidius™ Myriad™ X High Density Deep Learning (HDDL) solution in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness_hddl.md) + * [openness-topology-manager.md: Resource Locality awareness support through Topology manager in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-topology-manager.md) + * [openness-vca.md: Visual Compute Accelerator Card - Analytics (VCAC-A)](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-vcac-a.md) + * [openness-kubernetes-dashboard.md: Kubernetes Dashboard in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-kubernetes-dashboard.md) + * [openness-rmd.md: Cache Allocation using Resource Management Daemon(RMD) in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-rmd.md) + * [openness-telemetry: Telemetry Support in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-telemetry.md) ## Dataplane -* [dataplane: Folder containing Dataplane and inter-app infrastructure support in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/dataplane) - * [openness-interapp.md: InterApp Communication support in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/dataplane/openness-interapp.md) - * [openness-ovn.md: OpenNESS Support for OVS as dataplane with OVN](https://github.com/otcshare/specs/blob/master/doc/dataplane/openness-ovn.md) - * [openness-userspace-cni.md: Userspace CNI - Container Network Interface Kubernetes plugin](https://github.com/otcshare/specs/blob/master/doc/dataplane/openness-userspace-cni.md) +* [dataplane: Folder containing Dataplane and inter-app infrastructure support in OpenNESS](https://github.com/otcshare/specs/tree/master/doc/building-blocks/dataplane) + * [openness-interapp.md: InterApp Communication support in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/building-blocks/dataplane/openness-interapp.md) + * [openness-ovn.md: OpenNESS Support for OVS as dataplane with OVN](https://github.com/otcshare/specs/blob/master/doc/building-blocks/dataplane/openness-ovn.md) + * [openness-userspace-cni.md: Userspace CNI - Container Network Interface Kubernetes plugin](https://github.com/otcshare/specs/blob/master/doc/building-blocks/dataplane/openness-userspace-cni.md) ## Edge Applications From 91851682f53643b2b4755ecc44df79069d7df1d1 Mon Sep 17 00:00:00 2001 From: damiankopyto <48013534+damiankopyto@users.noreply.github.com> Date: Tue, 15 Dec 2020 20:17:04 +0000 Subject: [PATCH 098/148] Acc100 draft (#379) Please review Co-authored-by: Krishnamurthy Jambur <47258934+krishnajs@users.noreply.github.com> --- .../acc100-images/acc100-diagram.png | Bin 0 -> 86571 bytes .../acc100-images/acc100-k8s.png | Bin 0 -> 83787 bytes .../openness-acc100.md | 300 ++++++++++++++++++ 3 files changed, 300 insertions(+) create mode 100644 doc/building-blocks/enhanced-platform-awareness/acc100-images/acc100-diagram.png create mode 100644 doc/building-blocks/enhanced-platform-awareness/acc100-images/acc100-k8s.png create mode 100644 doc/building-blocks/enhanced-platform-awareness/openness-acc100.md diff --git a/doc/building-blocks/enhanced-platform-awareness/acc100-images/acc100-diagram.png b/doc/building-blocks/enhanced-platform-awareness/acc100-images/acc100-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..44f6609435c94910694b1f7dcf41552d55827bbb GIT binary patch literal 86571 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%0Ad>E|bfx4! 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%0DKSY&l2 zi>QA0in$9N%2d_Q%k82?3dq#cgwT}{|onfbO=RB0<+J=ydx8&!PNpuwcoqH5C!}&tZp`LyBnR% z3~CcoB)-jvYg`8dGV5dUDFV5Y9JPw%@NKMOWsMe)StMkLj^an@gcyE!4C0B|@x!v) zf)1j5=flE_=XwWKrj8VC-ADI*5VlGd!IHBl`N2Lr2jn+G)#8B9u;UD_C{X|DpZg^4DrWacuA3P7^{bp+!#eOu9HDjQ85RJKgi?aR%*0$A z>sp|T>Bz_xsTlLA9A|8{cl9%Mo~n^|-(7KDlYI8N0wkGZHg#}DrHlq`q4xLuE4t|} zbd`GSLcg;QT=L7`<{z(4?k3f2t(R|5F6|k0&S!Y#n**)mXt^Gb-o-3VFz<{DD=<}R=Ai}0oR`WtsxNR={!gJg%Kv{J|??&RO_;t zg$~E#LS8MKvN)qahn33;7=cKD?a#DC1C8csr~8}Mx^i=2A6uUsEqJjP;1JU2F%7hD zhSZJ}$}q)b3Q#_@tLmUamONV57sjWx)ut~GDhDoyyoEP+9OzoxbxHNu&UYXglC7+HQErQj_tBdEpB zB&v%7%k!Lb1xzl&a}vBj9=f4G6{YT2ZtvcB&_=JA=+XQ75@9(Sc3@aDtZjOn9I0^l zM~my9lU+dP$;AQKe-<~qbu#23%s745kpStrb&Q2AA!A?Y603gYQlstj`!I#J!F}5`Xg{ z>JHc)$$$DtQl{+~RWp@v?NlDwAD&X{Qb@#0PyacoBwy6_;%u!KW!`OMlz|I70Ly7> zWiR>1h+;{WC(bwaHb(tl*Il%J6g8DI17YcFw}eM5fGAUgqd^I~(!Ve_my5#l4l&dG zXp>j`@bhPL?2Ss-jfc6XO&`2wfxn0hl-?v16qyTzyc6cVvqC-e%i!B-I^oIOmt`6< zu~2Jht(m)6<>%lq*#`O`EUaFAl3Oq;r+hcBvNFOnV)uC?#@qCE5hLTYR@3Gz@TC-C zBudi^zdKBjo*<~HaB!Ls^vlLc^{(?*w`s3wjX_TZ&inanBjZe8c1lqgozZ6|-&A&) z+aO2My9&pmZN}m}l9Wg=?td0*Fi`eq^eq+*EJL$|jlb?H6=SuLC`BaSv0mz`Rz;z! z%JsBs?*(%XthNA`a_TNc`a6bs{zd!``z{d_8^cyzwy`{gews;N@FRuP{XWvOCEj1` zI#ES!errMLoToo;Wr9OG!6!~{LAs>}y-OXNJ}PM*H?rlYoY8@g?sOY{R=-_S?}zfD z$SCD_^Xk-ZM@w0yH+s;TTP40fud@vI@Q-}Mf9sC^qgx>scKKP`I`$fo?5x}BCumQf z2fYHTr4C)a zL9gjs-bY)}ZD~F#Em$K+_p}DR6;qHqPED_7T5xD2EkGcLwT#b(BE);gqAut=eSG82 z($SVUvenoD#&lZ_%kt_7Ryuw^KX6)|ul4#zE^``vQR98%2jL?Ux%M9Gdx`UCAw$0& z5rgC8sZ0#@AcYqG$R|CoR?ucV*KivSs{DqRPkXM(1{n695 z?SlzI$uGIyW^H4^5)9~pe+WQ6_y=? zAw_=prHlKu5;5ymf}QdnzD2$N$$=1s?b+>TziApaax`tp?=Zr*2rz~J%s@`N13$B< zh$}sM~;nnd# zPwN}V1&9wrH=HlAimcu#gl>^K>>`93$+;qCNJWoSDSda*cFNtNY}VW+ap8gSMzMw! z0i~eeX5T#YetS=eAGS&J-_{ZQ{Cn52eh|ssP8V0(sB{{(#mLv0nhU)*Z_wX4 z=6mQkV5u(nE_ii$tzqYxPw!0qz+tBwWkEpjY!&YM@GnuH@Zj@C*EM#B`t$HQOP`B@ z2Sw~eoU3Lcy7*Vy;yktO%@o(M6X& zw_~m!tEXiCPQXqn`h|TD!iA>sQrgtBJc+|ZM<6AYnMfq$y7yd5eCTWOBHh~X5gM7N z;3US<5xSlmmNyUQnv(>V<)+>K_G#TG1t9W(U~yINlMv(k0K&chPQU zz6HdpSuo`_j1qYmr(o~Z9UW9=f{D96<8evs=37W{%U~83)h#rsXW`ec&B-qw!3<11 z&Br0HlB!$f4Qskp2V2e65F7}Va#1zb5(#|&R2HCTOcYujiD36j+X&e#>$Qt`>d9+Z zWTaTFi>U(VzCUHL*7K-RW)Vh>nlM9cNbgp#z!%&6?k4pu_RJ})bX~1!`xxR@wCm+t z_E4wCsdwBn8iAI^s;{Z=2krD9=Co_DrMb0CVscPe^#w0x9msCdBfE|2z2L(kv}Mlj zM}4r$kMh?O7q;m>v5m7lPG-{1dOYZ2w~W3v{^p`BoQiw8=BO{mDx@J%&^z426Mgrj ziHwG(;QX_%<58VH0j(I)*~lvFR(i*Tr;Ke0kUBaCKmeMY0qh#W_I7Ufa#!MmTKDaK z?&8G6#H25F0mUo`iiGX3ME+X?zofr>$|4!q{p_F=eU3}8o`A6Jo=D~olOWy=+PAA} zDC6$P=?tuIsp2rS?ShRKPLsTxqFN|+s}~`%S9%nDB86j4NMD^riN@zmuv+>J(ZbVm zTFmLM*%tRY9PrXWSR&ZQ0-0MUk{AYG;WLy!F}sO&;EcKntG8?)2*_a$vjE51O+hR4$wU3GH8Q;d`K2$bzJ{}w*kAgM%s?PAU*S2Gwt*3KB0l> zM27G_$)Lz3ulZi34IztVj;H)4fl3)ItztZn!*1+NmwA2&ot*EXV7mzq`lJILGSe=U{#CXqKFgjX9aQE7MiO)p@t7cB zwJGy~)5Zwr<{m;LD9pG{KLe5fK1uVITW-*sXI|>s_0uQ$GlbDg20EdK;;&jsJ+}s% zG@rzQno#_5T*~n4T1fbJaUKPUvlsaaTT_J4AuxU2Gs)={cy=1cCvTPb?acJ@dDZRI zYW08&?J{mTo$`%Rsnin3Ug{hFS#0mX_4sL){Ofz5a|kXTvo<^}%97}iY_k&`FYWVL zKD2UR*_ifQ>N5!c zHfNP4fzkQG@8nTY(FYeqhE*ESbBltnFRF0Tqb~cZ0p&wY<*k|#;h(@{?zjdbh}02zYfAHK8$#T5{UD}0! zE*iXP-S!Hf+DZYSZl`it6Dxq^hrffMFeQ`99{s#0hhE{+MtUm3<4!=4mQD0TnJE+w z*~H(;?p1B0KN0k5_$_Y6=r0!VykNld_+~6MSPHjrDg(UaiYP4%E01!L#oaaQ;Jm&U z8({%u&dV<3RdQOTkD)pwt%z9nEWG$ali^Eu0|`8mbys zvFEeYLLZ#j0g1iZ_`$XxTj9=gN0VMfvGIy)SaruN z;Ud?q-7O8kDTGoeI|=ff+|3ax-=nk&!ihws2za<$a0E#~c=Ugv=-~C4#K$E^V#;d0x;F%XLS8p+ zD_5+Ab>IwMh7LxOIPEf6V9>#n{D)Kbi_y zI%|30&J2HYw5B9gHll1)(XDN2$M@5=cHZMKx}n4;xbh~*XuDx#wnnia4zus1>S2ZN zq)@TBX`)fm#XQ2YGvi4NxY;vfMJ{$#-M?JedCG<1#X{*Pe|?E z;_I|m%1nEXTfCPRw(sZWOBbZC01iEt@-SY=I0EswIqrk?ld$C4SB6$<3uf75D(5e5 z0rC0uE>O-mvwNTF817Af%1jy|h!pb8wj26MH-*kPTnJU~e^;@2%7Hi@qJ|HwNtmaI zO+w77KnMBCM7PlfgJ*VcdwVHa*^D+gO#^9Mq)a6+{Pej|;Y~W^PU#3~`t5`FeiY>@ z4O^8;OC(Gb0|U(DqYOs2JNfpMu5ZPqhhmr!$}Gitw67GP`#c6tV%js)akd9n+3A5R z@b7LKf$!RwmILj3oKg+(%es()o6uJhwgWNvO>4D@~=yYoydb%!K@~z4r>LclqE9U&@ z+|={+AF3+gr+xnWu#Hk!hG1onxZgnn^%L3OJGd0xqm5Mf7}+Y^sn__E5+SYxi#Pj_ zt??d(%kV>|5|>y+SCWo3mg=z5a7L;DIATDcm^NOdCXxIqVPhOis@g)3REb~*o){W> zQI$u2#8tQz_5O@^`eg)qO5&E1P;iV7xi|C^K{O{xx8^5-nn##t&O`^sxEY{>g@L6k zi0Ch5ajPbHPlO~Y8MS}3QBXj3JdwwQpJHNaF*GzX-_puT)ywPMh3%#@YNx&P5&ihM zNK|xmUL$vBFVDn09nSKoF-(!2^iKq3ng;VLQG}VA?cAXHp#~WOG8k6b>sU^)Eu?5$ zlbN5t)0RpRJKY9k^YDSa@pu)qG!zH68DjtJ63||xbaZAn2qRddzrOkP{{8!VAh>nB z^73{5)7r-)1+x(J;pXVk{QSJ?Z^BCm2z|aMRLNN4+xFPd0-VIvsV4$rr>|qvL=O!K ze7xXNQdJ%GHs{JLZ}Y(9_X-H8h0_uCqb&$3&YG`V6WTlC7vkT#6~AbC;d}52Ba;7v z`^E_7|LN8CH)9i?W&IiT+;AA$@3Y!FusQ~G9iK` z+-6{`7@jQRHKbAFhJK1cyiN(pZT7rmR_$gRWZx0e(c6c?HiV9KW^znrF+s0Gm&iAV zLNB@u97TQ`F)`fUz>+Sv8+Tee^md0%)V;-Y1xznz0Oy#EPt_hFdCpO4-K!~WVSnC- zo8HZH;kmcmnbU9aW3aRKM`_q0!uZa8bqsyi;Q+8mK)G5b@CE}ULkVPf4>x-6nCj@1 zsT2dDVMDO-d_>-B|2MOCwmKOhp~iU|yd2g(Eeri$RK9;2WYpu)gY#-)&(cAPwNoMN9*4P_w z)}O<-XT!H2cmWc~b;hLp^gz&7g;|-0axvR2V&bxA-({dXP}y9a>QK`_UdhX*527Q4 zu#qT$KCVr5U0!_OzJ?WO`R(-^_8+N&%Rw+xor(`!0(v&-5`d&TE1Gpw}N9{*E_WOgZBZ)Dk+KRUjKG5)zZuoz!V| zap-luQPX8)O5@PHfH>e#Mg#vBNRYw_El3Gr{`m%6b=C; zN1Bj5%R-w5tAIPQ34MX4Tim`pi$6m*UPiNkQ=isKUDo)Deu?1AG|D|FtZ_l;XXPnav$UBRJoke=ljTh&1s5wPJ zjK(IQaAj@wM+-WfyakVyQETl$Xl4jKny*{i zXV6~%|1zW$wX{mWdfI&Y(7rJS6KWnIzKi5AtwXAnzai>=6TDX;25B=*FDNj(;2|jE zd?^M_1+J=u<{#~SSV=jFpSrJAB&`M6q-?b>fQw{ROLFYKo{$bnmL5_E+*BOT;fL_A>s3v-iN#vP|{aR|=zAV^4is^<{d3CL~kv(B)DHGRAOQKT z+56`ev3)ZT=QT4qdSny1Z$)nX>>0xEov1jGP{Mt!j?J-ZRX{G5Oa8=@v)r7iZ%eqe zrCB(|r*gd@4?H37r&~r1kIvfMy*ZFSCo0!|Oa*(+_7Fl3AoG4!s{IdwuhrNJTM3x( zud7&E#)RW<@`R_fdN`(V4%{&Nf!^QDPRG*}H*okFnVssVphvM+%CbrHCdf!W;f`GQ z3k!A5(NZSFDFNHsD{+S8R}x)T+E8jI5e`=nSc`#GuU^A#pQ%T?;LlwCl8t@XqMUKE zM`jb##~2}z)hI-!c?EWx;tOobB&% zYn8guNZZGQFmGmu`n^JhS6#`1wTNF*F+V}>{bFtSESYVDj(xXr*^rlT)?FKq)vcvX zMn-rs{SrBCPsViZb|ZHh7))7eDOn_K0u|uQveW4Xi)@LXm&otg6J)lVeJ`_QO-)B>lgF0&_m!p(WS6t6M=X@ z_*>y=5L^Pd5uJV5M{VfcdmGW{+UtY(XN#jkj?bfG=!unDRG@?j=J%3PLWw9!vVCw zBb9`Uh`dI6M0$RZ6-?$pzUW_qh_ZAfBIy@^N6wH|7F&> z#=r-;aj`dh*`6-{L3iYrIFb^~zLyLZZQ-S-U#YO3HzC_kcc@Vd-Rpt^vHF9{oH}-p z1EUYzM!7-X8a|(Yk`5Fk!FGKHk&=K7=u8UPO&NeDMN*mVw8G?P@pK1>KZL~8W6cWM zkGgdNyb3xHdZ%kLu)bgP?5uqaU`HuJf4Y=mRDLjnkRY-|;G{jYW6}^ii5V&Xex^>$ z7ozm#Qu*2@VJ@2JM&OV&LMF#I5F9q$?0HZ=dT)PlX0=GRZCiK$lLQE}*Np;sg(|J~ z=DVK~B)engcdkxXCHpSn zN5n~a$nV!SZ-%4=dQeLb1WvIv?;q<9=2F;0lKW;+_Z}=&tHhSS=suEk89>+2IF23$ zKYeO7bB0}FKk24E_txc=5*!B_z?#^uon<>AC`bDFJm`J2&Mzri`lr+lVj!mL?CcB^ zz;CmE_j=ctVVFx{PJiHP%xsOzus40w4<^q2H;ud2A^b?5Jb-v--Io=8B!~D!(;B37 zM~;dfZi47H`^u}Jlm?oWqX)7u7 zu3hnxAomi)srU0fpHb=*vOm2&ori&TCwlIt1bK!7hI{Fq^3F4S`X&S={@R*KvjzS_c_EQ0S+)kdSn%K~_Q0J?Y7uWGo0ZtXqUSXFh z0KH3dCl8ANRR}Wg6 z8|GM`Kg*;bfP7Wt*o~9#{z}+NlN3r#(pT{bF=uz%h=>_7@g z8B8FMnxj=iq8o2qXTCZ{hf>JpNtGmwTD+N(x=Var{TwIl%j@F&(Ex6jtfMAI1_2ay z?l&UC>o=@U-V*vhtY2|D{u;`GM}+L)Z@+ctxM{3rGyar^RugjU3}XJ9kbv&lpP+KE z^`%qw3<#n8$u?B+X0-`~hvTJ##1@I}UPut`7OX%Ie;oyxz_ZxjM{(Uv8QeVDV&^A< zzui#Z&gcfxy`apEekCG>I89RooziY_13ecasz-n>TA(R`ei@S2foh>FA=G?2=B&gs zSWZr6NwOTE#ErD(FSxcmljlx%GHEaUE+$~vnG-+x`+BRZ|M5Z^a)D6t?#K0l{1_HE zqzS=7)Grg#*F?d0IYo`+3epJ@kl`$JTxi?yY^vVjvT6YJ>4>ZMdG|WV=5;8?XQTS- z(sj)B=JK6{5X5=*lO<2zpAz0ZQw)SVoWKv6 zoF&>Uh(4lwa@FDn6B*OpfkJaTAU_QeH=&QI`$gk?>F3w>vbq<|E-xYgaB12G5}PCh zN4}eEB?R)n=l+`GdWVv<5bLI|mxtGv*WVAk9Ta5~3xRm|InB&}BRy>xy?7@U=JCt? zbSmg(B%#F6YVylzKkkG)WlH+`saE($rpeGQc7iEfV%e$&fM787Bt)F7sK#*&`$d`( z_3N={zBTjSUoWswfPWca3S|!A@G4cn7gv>ZS!ZI)B~+xu#-SNpWmC#9EPWC0!P1>c zy#5?cBlI|vcrletw0FYw8z6bTxZ?&^8^8%O|6?hRT$m?KWxbW&W9<7{1q4uFO+O4dWh!GK zm1K>P*JRf#1{!{U9wDMFV;oq^D{2^#G)93AG`nSzkb`DA7*(3?H?-z~uXHekqO+la zZ~3GnZ&*hMpH4!i5s{>tAsvXj;T^XC`gn3m-9o^ya{`WQN#g4nTCs?b)CBgweJds0 zkZRB)aDJ~Tl)yOQYf|I~ToT}*2H=$aQF%Af{5`Z`buSxGw`KmzD_6mBE7?3-sr6_j z)Ml|czCsvzF8bEzAZP73?mhB_U_scIE9g4q=-{|if;DV2o*u!TmYroQ*b_uu!FkA@ZkP=c-C;Qiv>`wq$V`;ZOCj-TkIC-CUvY=sAv`0dKq=ffuiu+N^I7+pq+|p3?V+z% zqz!wryyWE-_-(HZ5XJ0j@sh~Ub={A{RkAQ!5CNh5>ISgngaiZ6%X313fG^fXGt8l3 z0TN;8q*LI#47oq#UvjX5y@`n11_#r)oI`{q(7*R&tUrIx#uv1wVd?}ZXWrU0>g7?y z-p=ZRMvkx%ERL&JDyXg6q&n3UAd%&!N?kVH;J4Tm*7xKa5`(wJS^Nj9(0?^`4H zqINKG#;nXkA4=j+$avkK;!>o3jgES1&kOchgVJaKXP*a|5x63 zhDEV--J&8vgc(rM05X7NL=aGr934P1NDfLIK#(LkM{$rKIcGu10s<05vLwlZ1SJOn zWr#!Y*5FC+Ip=-ukMDc#pUa;HX1c3uS9ewIz1LnV(EM|9%6A9}E~*chaYw-ExByN%1;jiG3XjE#bQSY~`w!BX>|s5U3Szl0 z0-axL!5GLEo~zKTP743r&k2VNS;k`%=+&?E_vRR*!7l#LfC*`P?B1+*eAHbE6ACOS z0>BJCQ6ik+4@j;?Wl^u}DVXB7 zvU^%A^DsddmJq>F{P(a2K7Qk)oz)TjJeBA9y=KQ4Vh$12`I#87np$&|U{x~!UesE% z4S>LvWb=1SibSH`n054}Z4D3g7hIOmR6wq?DyQZ;o{fe_N2}dj7jBhD#~bVXsyx_> zzD>gZg{!nm4mrqn^{R~ZXi3h1DhTCpkda>|r7lz_8PiwDnR&Zc#u4!mUw!iHYZaK6 zp0yIw_VHS26M4^$T^^~mCd12%hkPE}R8y8VmS-e*W*ZUcP?%^9z8RwX-a(Zo)FF8I zF|#bqR~Wjyww5kB!MHd-S_HAKJz1|5OHqgiY-jQ%vl&JgJfZ8kyYU*v8wAt(WSN@r z*w{B`=_1;D^BAHTQ)NAL51V$W8=xgKbQRZn%{%oe_dV# zRYR8oBdx8&Yk|5*>^{$D0I8k!{&~)Oe;UxplV6ta>VlD;bN>i{4-T$-Y>ZmpajuZz zdQv!l(~)eTmEk(LBC0okMzrMCj{h=4t^%Lv_sF-`SbILtDKZWECQWy2lFH{o_9BdX za|~7A5=!B^JRL38H-_up&4g5T+)l)BDuEdu&swkU4oV!CEn}?nC*90-u5${AHn`)6m1Lgyu-^N6D+o!b3_9LabJ1DdRIQ{} zDpithE42}4r}(T7%HDi9U9|P3Aft)aVJ|9taXI%k;`wVabM!jHaW-c7k_ z2*d}B;3nXq4D*vJrr#cKY;mmss(EoFK%K3klPZP%0^y)lJ1S{ny0Q-uj8Axm+JD$K z>`SvAaC59N5_J-0@MNo%iiO$xMXc@NJ8h{p)ZV6apDT|mRIiRsff7OTqTY<37;W-f z@lw4p(%hj70&|n_w8`&ZnJ(l~;1ZSizE7kSlfFjZSwJW3x`MeP=!SRlpO@u z0>X!-kP*@!TiDVAq8wua$mQcZs{$fcx8zxdQIf@s!@-h=Z)Uu;H9WJ9my}YFQ&|9} zt_mlEyF^)#MAJrTM8JGmjH?ehn!KOqtAheufvR-*XNlR)FB|t`B`B1-aY2cXoqab{JDAscA6RaM%N1d+DCwb{FpwmH-<@+tri zxyN(QAh4Wignsea3O&m0hvwr=)-#&l}UkhiUlvW-!%P{9$VU9@4V`_ zoCzo?RuUbIqLPW#tP6sJs(hEG_M96NZ;iGaxZR)rlr!3%RB+^_b&%m8>LVLVQqtx# zi!%8McLPgI!Our!v>Ak;T5@B3eU8(ZX6d5$17aQ{nU=4Og060my_vVJ##vQzzWcg< z@1$F=w1-b1dXwLL)btgc(;1^j@zL8cd(+i=Vi6g?_+cCkeoNE*$7b=O+cJb&qpA7D zd4cevDn5J{18fF?K3pY(_qBwN1TMoY0qOP4#=XW1DOijb7ENlig`yHtc;CWwVV79l zY;_pP5eKc>e!sr!)=4tpU-_^mp-?p22D>0j;i+FZZu&mhtv+Q1i9RbIU`49onafRc z+c{D0lDE$5c-yKd_&y(_g!S05PEOII%>*NNEhZ0m4Lt3xlXMdljxAb^W*QwOv=OrS zrgKoKW=al2_=f7;D(HRc|%ak_$E`0JN+rh(D;y*DdUK3@}ABce)WB`8$O&faa zN?&M-+8MDfUD1i|BN@1s*up?b+0}JTgavU?W`BGAv&sY0IR&uvd*6eNNjM*2^b-OO z^+9YWqZCxs=h0lHkcno;;KAeIgH>5Rmv?buh)i!q(Az}1m+HPPLC~>n2VxWugrO%4 zGj}a7Se{q2j4}uM0#H{-KiSU#lb4Y52lw%6PgGVI#bLu8l?dF| zk3}~kokM3_SBqvLmV|R{2llq#T0WJ}@e^kpV4^&+;fW_tJf6IfDnHigC2h2x2S+#1DqrYdW1247theLF9;S-TyZM9H-=X+ zU-l{`pSq=LF=I}Vg)wZGUa&yGjc3%Ih{9Tb*ziUqOTZ^d8R(+zLjx8l^@4SeOWOyn zWU$TH2ndXPWhTLY!TNJ11ikHyW9qNkVi~sU59f;vk<>>Bbu#4+wdf>p8RoNp%tlaY~$ zXX7Mg4${-3x%F_AFWAQ69=t88y)^fj$A71J!qg6=<}5w>p4CvM66K0dzO`>EagqNi z*eoI?CGApDU>aP&lIojV$XUEWRtvJ3v?)QYm#J?%J$I%mlbF~`xdUhk_sTh$`58x7 zeN&!z|BJ%_stf@WR{&L3D;$F3x znT05njO;lx4;m%L<jf_Wp(97GwIbT`t?#i=DGnG| zW`3!H|CvVylx@$j`o>riu`uWocB}knwjZPoTR|!sWK#jB+P^n}UAeH#lv1fc?&>sG z{O1td!Cn$eocEhV_MaSG;5)Ny*rl(N4s_bV=O5Oh#R~Rf`QS(y`mh{lf3jhLD~9F# zF2%~&dVn3~KbgIN)f_HkuZAT}`(NnnvulF{#>b+J5fW^clUSd>JEr z>X7|QbEZ%E9mPHFh7^l%9aGT9HiE%V4Y}VH3N49|!?$IjQE2-F%|l$Fc1yh8>3gW;70N>@Y~trfqLuBd69)c^z8gEjpxWRm9T`V}O2TS%xjCe=y(L4}Iq-O*#_n@g3s zX-yo|l%&prj;_~83D(A6JJu|@1-zp?dq90mEQd&odet-u5t zcv^b&|Me{-c_E#Z?565uLF_9T6a}x&JONJ?R>khO*ZTLt4!;XT-&4iB_4+`WB>3`` zqqM{X*Y~S42|-bzSoF}}1`zLOBnBWlru3HPjP#by<`H_Yta(Dj zBGub3!@nZ^M?y$Vm#3-dLT~hjoH4|LB)HvbGN=B8_JQ|Z^t;reDh3F)f2WOtx$X~W z#MYVJ7Zcx^wl=6#++A(EhN%`9RCZi=ON8L|5xY@%8r}ptIY#4?*_q7TGM^lA*p=dUaFM2%TXoaZi<2uP9T3uy&0S!VHCf56p7q^$i7l_&>jm3@(7U@q z!`#>H87}iu@0NSq<7%dE5tGnDX z;vhz}-&g?8`2r?F-*IEhMPA5VK1M~SL--_D&IPUxM0j7$r@!S0WdvG>q#MfY5k}Oj zEJF}x1ZJf>#`WZ-m)KD07m<{}<@Coyfo6)T`B)WMR#f%A00+80C_gQ(v&ZScn`(_b z-beZNHSv;|t_u1~VMp?PZ`pJ$xoM8^fUY)Et=xLJ0H%SfP;TZ&EoD(fE1#B8HKP~Y zrcs}Qi(9QW=Kgky=SFxgwI^M=gK`H|nv2m56z}Y@-~7;^?K9s(5ZOyw(WQuTNezX?wa}}b{{cy)!kY&Wq|QTCDIt5)tJe87sc<^LadpH`3sDZ6W7I9I)?hJ z%~Yi}WOX+)xTUM_$S;vIV8$Wck(4rRHL^=cg__x*ix~RX!uQUnTYe*ScSYTibRJTe z!*Gt-ha1nbM_ksMO;Qg^r(w+9diVa&KcjiN{iMypI7(659-+A?^ia6-lTBEzJ&O0F zl0!yrBRsm-pBm=B{UcUb{B0Xh?_7!~=iX5mVPmsd!mCW9FUamOfUOhvvj3>}$Fz&y zwRuL6Qvy_PcIKHIu8^t=1~%LZ>3*Xakk=sjrt1EU9g~3aK34wh!kPlkU(~F>=Cwa3 zJP!IqMW$TXYuPe*c;1#@3+zc?XXK%lFy0bQ1s-zv!{E|f17t-Ye>vGRPEPQ3gavKf z7ofx{;QW~y=wwh`w?@NP7gl#tV6wxW8bSG$e6sjS@AjjnOIEnVBYfC5dc?)Qm(f1! z87c2~P>NAFhERG{uentlymio!+dxIH=1eZc-M}Oss{Bz z_*=5SE3?}~{rGrWwYn$?UKR2@@Y;1KJnT(VBwh~t5-p0t_miR-FZ{dhiNsQnyQ9x`hB~sHg zHq^*>cgsadD0KOX%^(4zRZqGO5Qa|9mtU)8Fqq-nd{s1@zFdqP<2I`0HokU&<7$T2 zoC=bo=2>^ZLo)u%m~zTbW8GtR3hgV3?Rr!4uCApbcagZfl?-shJx2D;Y-b(4%284W zF6?IWw?6%WmHmM4$_Wxo4>e5kw`a%-WAGTQW>4J4VX@3pqrqLTDXPri3GM3<&s}_0 zw$Lx3b7BXOqiC_BAE=xgb}Ff~sLnXQTn!+EDff&eHKy$f`_@jjsVv4Ldrz{EuS>su z;|X~}r-4wq$32a>ti?ftH&@A3fMV390+wk&GD-p{f?~DA;-p4%Nf|?-wSjCo4O!zH zwOr=9y6^fWo0Lc$f2kwhJl6joDWFMzdwj7Tg-Y^Bz^zOr?#alA}ORU^TNUc23OM~qMV-VL#92RD1NPclMpT6gRtjcN!UjSoAY#^cI3MeO`iek8a z(Q$+z1!#oL&j-IE%kY$J3t`VbZ)vjp%&JSsQ#L?DSrILCFnDg$w~7Z*Kd1aM(f?@N zT}1yTzD4+*Z-hcFKayq4(-KC}=QJ-TZ5Y~DycytDTsz5Jgj(~`h4;iU@v>ItLxVKj zJQ~^9K^1T!Tzn8E#;0r;zX?_o%R{=DOYNye@=Up9fd+MM3n3RLD412IDek*=^R+j? zGos||f?Z!aYzoh{>sh4L7R~wbyb}8$&GZ^>x2n7qeM=6`@u~n3kST1AqCZrRCt%ih zOB^gXjxlv?uc0)GC)H`?{r3ktQ85ST7pdE1zp3YIe@$?(bAQ9&7I^vdMWibSo(7_G z#8fRU6F#KcRItOPr)k#MBX`8uc3xl#%+I$5O=h@HZy?vodji<57`$!elkGFE~2e$bc`Gqz-z1lVx z4w%yix9t!M7O(iZR)i4H*n^0QXyGrs367prI zop+jkt#I%K&}oxA|257XQ^B8Vq}eGERmoF=6e#7%=>5*Aeh8{@Ixvrf98O-!z}Eah z4coD|35vCU|DqZK2$3u3U~~zU_;`F|CvJAW3YsLkVWOBTBEDQ!@*}5#q_d~xNu5eF zyX8ES>2)4f^xT_k?tzs;?h2?vKM?oKnlL(9=*rYJMmC zX+YR3NXOFVnUWUwK!R4iCb7vhU(48Y|2{JTNW{uC+)Q1W!hC0dztHTSekUl)K2+Hj zVr#f5hZs%bjEQoUWO`5$G4ob-Nj|W!@%+-)1Ap!cAvWm}gQhG}WfztMM1LZ%kSkBkHAe+ODkF9V=rVE)0}0gbSJG1#(mZpU^%tJ!J552sG(yaN zB(zGi4(T5ev!HUq+&^$QaFmRyG=#DpSIdNZ_7K)S+No=`SbBliD%e~P_8}@YrSd^Z z7~D&HZAcICA*yqzlfan%f-jzS5?woyfK1AfM9r-5ULWyt*|xHth!Zl%IXF6LNeiYI zP!1F!4a@Rhld!^U(tO3#6vKTj1wqlr@9Wl|0Q-e=PDmh@scwS?5=**4kBQC^jgWIF z1A*W?u%+b4Qr%g52J0-Qy&T}XWj_^@PV-)% zmwLMC!S<6_TSStjf~N%uW40=qU=F0YzIyrGL>I{MXNe5}@u~AGXbJhjf}!!;I=nZKg{T*c;2IJGAf{C%H(<1v`5feckHwH3Q9!0vkE9} z0ed0m%Cw`b;+OE?N?9w7V7brn4RJPjY|yCZTtx7Y0#_l#5`pmRP-ro5_&a# ztEo4c#8;EojC<8A*l*_@tr;R@aR|0n^6&vNDiXs#OASu^|=R<#a~M(n*kyRgGLm zInX0$Y}6F<&fE|7P!B7apoza0XLpCt#gHc7CF@4NL3}9%dGTA^tfBqgeH^pTBWt(1 zuSRV38IJr&$$p~n-T)RcPG^aB56o;4`Ch@Y95#0fz5mBF<^}~XVN3Ou?%3A}CCJMp zS9YaqM8b`8p0!3Cz zGesyQ$N|?=^@r23MdRdz>Go3_rEeFz64=}r$ZTHxIG8_2csm|AW1T;S`5Z@T`qfJ> z7h0E-#9y4I$Q#fG1+wByPeo!}jO+$jb3eR`F;{XZ+U+u?$!&cl!sA<<(zE@1Ka~jf zL*TJ}ksMst$g+wT-ixqRRsYObLgGFq7AdsSB>I%&_C7V#paATzAT>5a|y<%j55 zsCIGhxp9qTerq5*Z~n17mhT>+vgj)*!cw5|n%r)eXP+$cc}8|<;o5d*0ztGK^l?5SM?0jhYxm3Dbz!!J zN;!qN%XxDJg9N^j-yq!s?q9gPZ_Zg|IfurZH0_wBy9V0}KV!PzixAoJk>M-teSj5pTsTUFA$|+G`yJk*NY5zCn7)7a9(FD zP8~RD`C*i-K%9L}?FJO$wz~GUB1KwC0khxWyosAnE1@;?xQ0>2TKRjt zD{7Y>g;tlGB@eB1y=5CCmv_eBY4*KVoZPjg%f)%;?(;pctjtZVF)QjI{t+g`ApJ&~ z`(UkJJbgAtqKs=B5&yKkrUxhkeVRY_!|~*Ui^J2tArJX@GTgHTd+h|{q^Zn-)v{fd z?H={^Jv-|I2TmvLI&XmBHpe2AFxZ9fc=8M)Hh2SQ{9PDa^(*&jxG94e(mhe{w?z@> z(+TV{=#TB*N91TVu3$qtqahs6fbT@q3fc7uQ4DZs;;b{$iJTb=mY-X>L$o;XasRmV zm9#*_*G@xT7_o&A-qxejc zBhi2uqL?z#OK(l=zPAzeV;O_&Eln0B@mN)>be5MSj#}lhiJod>(6y?rM9#(fHl5Of z9w)s7_NzN6XJdLht=P?;j}*(6|;6X z8vnFB@z?A47smq!`N5*@su{cAW!H^OO+p1BCJ;&4&JxddfC>bPH5rm|siZtP zhbo_X508^!Kw2`7TctcOxMXqU<7ARAM?*Xb%ZnBky(RZagw;mEO;Swa?r@5_U_eKz zC5A4>o`P;@+dh%WjIuqb*6&j)5lHEF1#UaUVU~!J+WDTn-1n0>@K95gl!;@uf95>a znKZ>P-k#czcrY!yPPsBsW=C_xHy^stK~(&l`IC)|U9nIy3w9szDX~4YTxxKiH9fvp zGHLLkA3Cu0K?LlmsT%@mLNz2~Z+I6`mA1?DTe%0{ za0>0dNjtpnqAjA?tsVF|Gd=ZM$EEcQ?Fq#hhOjtxTP@o`1*oF9KO@0of0vZZ;Om(L z6Nn3vEieWXrhqRN8Q5$NZYhu>P-9QyW#*hrsVzr%kP2glDNOin^@fFPv% zzQt7$04A*&9R*G%h|0~VzIdw>9(xyk@L^Hqk)?=iR*4vs2hfPjD%loKod_3kqb|M#1edm?vf zsWg{Z+~DpE$`E05Mu+z%DnqgVC-k&Gc%VOau~z(|d?_TyUP9}lqT{u=?=Co4&8mAG zc$@^z9Nj&=!!2O{Nwxt3zv{5l`%gbLCeHGu)2oR5>di;cBQRF(zigDL^2eEA~q91 zg`256_o5_Mz>`H5`&6(YKr1^r1B*Gg21iYYaQJPHPhKHMn$`kNZ`T|=lQpyv)oC?x zjaO3ijsl@LC!6oC51rocWjMHBpA65q-PDHX)wH##jlvgk=x@6_ur!>Y*WU?XAF6#X ztl^H1K05z`I0Gx z`?F_{d7mW3Ro(UW77=ySr%8~HC>CiU34NhDE}Ohgb*Tc) zc-ngkxM=UcG+i${Ee*bWE+vI{?Q^{_;&s?~t#?3j=`rFFrQY&F@;~isMBUBD|9p^g^J_C!VH!ZxJH5JBQ_pcIL|HX z$^<%JqxIv|q!LYZnc(G6i+51vc0XRjk}KFxsX^=Yj2WLy?T_oR21n(Yuc<|O#J3}h z%2SP{3VG=>deObZqvMkuWioo2)%)BZsHrC#?KG;)ZLb&J?1}oIYDej-6?{op{EJ%$ zT`{%`nu9jhb8~&!!omicvL{F>81kcG{UFj+thAE_(@sFQLPy*>ZGwy!8hMk7mf22r z`rr_=UYF48-ga*WhyPsoFtRvKVdJY4FnF2S^+<#B2vN;}+YH|Jvp>6MqI8?K`_p7FKIx^je8jY|4wA#AK`A5~;RBKT_7uC8-N zSOtKi`9QnK;U(bq~L3 z-CI!nC0u1|O4Ug>^FwyhHa>JwRh^#63tzl`KlJxnxzG<(rJ& zL&MDqk!8H=hff7M@WmD?$F0gQiE^_y2n6x#uT=|v;5>)EmLh{)ENyg8g87}g$Q%xj z;*0gJ1EF0(k`A%3Is!$93j6~aP{2hl)FEitqpIMWLTg=Ikk6559E=XZd46~5QY zxgFVc(DV>dJQycj_vBUGYN4`B-52vi#z{Dg?@$xhX2Qpp&PNH2kaV_AW40=3QH+4= zXd|hADQ;BXYVP58Jr59!Z<@JjA1eeeajK-xdjo4`@G2YtrVm+eNT!e0jh?%Y7 zY1|T=!y*VxdN1P?y*RGFgf&K0M~76J<&L1;Ml^&fN}y_W>wqC<1Y>UQQ$1VC0NTAx zDq5OzsV=dV?+%hr>(2mix2K#Qmn{@9Uwa7_{17OX=t6MN+tT%X}4kE-1d?DyRMD%n1P*E~aZPe9u2VCDP z^SeRiH<$2nLn9+&EAph~6*`69zMPeh9Lsa?*ceGhZ``l$ka>s0Bh5?J_M&}-o#>2o zzE!l%_Jr|$@>@!VFWk{(){KQEx5dd>=EYkSq)}ec`oFu_uuP?!;Hnj*2@yLei_=T< zZvv?j@TJYwT3^aVqE84ES(Pzs6nKlfgh3z>Q3BsCx*S!W5-pvF>SoIkk6N0>nHkNr zrUw+!0CD(y%MYy-LAQ!$d!kOr*G?ufjhz_g%D)I-baqv_J|Y71zP7gJuv(71wpKf) z+j#vB7RS`{Og!lIx3MDIukhZ!uJa2V6a9ysv_Cz6y0Lt;RTGBHB)PInFf*w6nfHfW zA)K7p25`<*Hc3h8652!4+45gW)t;GX5Xh#FSpr5E8-lihd7qZK$}gIm+TuWgAno-N zsB)nmRVLaGj5`-Do${Z0)RGggQ%~eo8qk6%C&CDzUDZC~WtJ5b!v`kP7tpKbW+v*13Igc?qo%S<9bzj$(FTaP{DbwLDRgRJI zuXs}Y1asZoIIWZ>DQ(66;(b^+|L@Lj6p>U_|A0D-sl(=Af`^WsF9V^!Ay~xNv=k~i zWo5J_^?r+`oPv{VsQY{qcl~h5G7={ViDW)0Zp^T-sIfn9q1}6>a)u_xkX_6S&_Vt> zC;XCiA>-QcBBTovIrZUIi`Jx#njSgTn5Pr%%w;vH>kX4HJUC2>Y{SZYt@{25^R-Ii z$ImSq5E~kD$#HSzRHlMRfd|q>Z2c1X)dXv?AX&Fe=<&40HoU+4PlX**o_LG?KhN6t z^sLY+s2m*;uFd&0S#Hl0IZ@o?gvtb)tUdfXT;&|u6U``>Bl_%)CCR16>7 zK{Igmw>@k^>;N&h47EhL&kMq;jQJK?zZ^%1tlb);zN=a)Ot`Q@Oh7`0o{y%`p)Z?5 zT@H^$Y#CQqgDc8hHdOLnk)YuME})?A_jA~TFX!t}eHjzA8-_e$ISG)Y zAPj12)9Nu?OSWV1l%It_m;ZE(dT7HOTJ3o5BB1kPFR2M^`=~44 ze+B&%@9Bg-eo#!8jq^w*A~7(^l;*^Qq!v(^mWkyIdo)*~#3;>5Ox^UGq_YeSDN0rw zb4gIYdH= z*#0QDkY>%l64u%1lIHfg4e6wuZbk_YlRCbuW7v*UNeI_B*o|Y#+Up|CU<8$y8;!jOgx;{8lUZu?liW z4+QI1WyI7={J3y#o=L`w=uAX|jlg}vv)xT&iPNz`rL0BVJpnIdx|plQ4w=qVc~amx|uP{_j+s(mxG4(@AA+c#zUf<+>NMSm7?t3Fq|%Nx1fc7fAupI0)d}C(T=5l4lrJE zLVr+J7R0!{`asYH=YevSLBIcbV?1nWqbgBsc=7l(vQLk{d} zcfr2_pnmT3>oFFZl}2R^INh@NZVfwQk)#_;}r&gX&ei zjwyj~82`@Sx2$CFXFoN*bx$%$^rS#hcvNV|AiMm2M9ww$qD_I?hs%WkaYM+hzrtm8 z$zljty8A5+vxjdkeMSHwzZsX{{n<1Lc%bBhnmvg}{%JSA@Exbi;d^r}+-Ca)n?p;> zzI7er(Lnwb|CniOGgl+KA`d(VOEWM(+T0{Fvuj#!Yp&mm`egw#vMdVuRur?xBYpS7 zYY&Pb?3v+N!GTeiaMffX^@n7NIJLk#avc>3bbXmVTI}fnhxe{NaOwZial=LMon^MF z{>i6;BOtb1w)E zgnPI$6RYKDUbL=mB65KwCYbb<5?Tj(yAn+trN+n#l3cBr z;owZ};w=9mB-x=(j70oQP$P4=8DHt+NwJ`HiJ+y*6xNXBPTJ;-j6A%ooTwl+cPv=V z7xn^!*N*gL#w1qY>ldmwGhy#z;jVm!GgnS-augG2rqY5}`psksE<0a%1tg*1_ZDHz}jTuku-|Yw7gvJ0y@^ zweYtEk>8kQhvfO#NZXIF=xziHmAaLAy*^oB@h}AE2@TV{@`o4~|KcO<$*0zs_z@Sn zWNM0T9-3CSiGud3?^>JO0;={M8?wNNFsIs8iQ%%rHp=9d-gl$wc}IEk=?J7 z)|AMq>PsU_+_*!j2%b5zq*PQ?H+zJ*lsVknN(I~z=Pp&NzY!&+`k;DmCD*zFppkd; ze`cNKmd+*^RGtC!x2N~hq6)xP_MR;^@ay>9p$RE2DNTozW^sclgjrZ4!U`r&FnMn`FFL&Tfn~tz|QRnD*ubVqD}DQWM~0DAV9^ zn|*i|34zEphQt-cJbx`{?&;UKeIYzFWFQ%pGaoGsb6;JUH9X4bfK);l7W|4|%|VDA z6HH6D#eoH(H30DFZ#QK#Efn9eTON~QHvG>!m}#qX0BNBPRYj8|RFbbPHCp#uMjda8 zDk~!ndDzd=cj&`Xq{^+iEKg>fB?AaO;nuNRS6Y_3f znV4BcudNokKT=G}ZUt2ZklT7)8SNfh?W9eFzTNp@Q*g}5j5M{`TOID8%(Uy1*7iV1 zFiD;V#j94V^&kaEfC(#F7?yHMzb#8V$(ylT=w76Z!{R>C+=RQAMwNDyu7sp2jpJ-m zuD78~Ew>33kh(~^;g4fY%IsJzFF4iN18m~NU}xbH@Sz$CWD z5s_@^hCGf~Sypmygz2p$lF8h(Dc>w`i1c4SF#>tX$Z$*A(+=pu`-=<%L*qasJk$~= zl?zT9QW@4IFubS!Ju68Z>v!4oSkAGjcF&@_%3973n&!-PE(FwxmBy*fY=$}K@V)^Zf)*rIBT>4M4)GigtdU+-~; zD&zFK#Czm8HYFq^>}7ABw3>~oLsQh57*j)9dTBCW6VT;^!{0TqC5R&o!-{?y_!6)z*DX5vvl*@I^`Fv6Z=#!G<{ z_hre`1!wGv78_CTo#^oTj64g-8*Iu+zgrdFi_KPxCi0BYdX8@LOn0P}X?dAR0ZIM* z1?cU-T&Tzf&m-MaCR|a8cb1rX!KZG* z2E}InEGoA-pF_QO@PEwvJzx+=Um?`CX`d}CfquW3sn3Ay1mPP^C#OQfr#gd|BH4>& z(^Z$*$VE=Y!47`3vkI0HncF0jwLlDpJN*qCVbv-R_hep9-^rOoA7 zKKsQXoSu`-_o*p)6My4GF3u7K&^mK-CV$jim)oFgCRutGVGRXD>G?kMvO)!*Tm2&c znAgu*jOCG_bH$a%7>7FNPyS}sH-3j9^m{GUUJ8(4ao)RI-vNa`i_WBDRSroD1suKS z)`i0!QrxohP8YoRwgQx=-dFDqMJjNfFBH?B7#JrCRwrnG-tn#{>?;>lD){ln5L1O( zSCc3;M@f&QrdavQ)XL{=9)90#J-NqSETh`L5Ans$0cj1@jx~Z(z)8$R{YQ&CQx45% zZex>(VKd{MHQ7(SLJCx3$5* z1sFh;_4Q!&qAz)Cc8g8ll9C8(lK`$rg^gQPQxnIRj84q0Bpb?EcYV4AnyEB2=urj6 z0)^DXiTlbr*xUOD1OyP$Qstn*SG&L`4)b+3=8H|Wr1Vhu=1?ja=qpiqU#`<=U~K$T z;c4D{w8+WHAyHB41#b|gbaZuB_x6~jLm>iJ1oI)5<0_n*eZr zit~z4(J=a0T(09ngbvtNwh3tJQ&YNcz4fcA9NZ6X-xQRKbXE;wZrE=hs0g2WyxV$O zSfD9?(Sl;JN&k0Mf7Kvt9T;rn_`%%QKT91AW+gZZ^JquwcEwF1W0A!=u87OXpaNQ^ zePz}A(;eE;1|vhwWRemm9&(SH9M~n(#?|>GXk)$k=oLywAPc?y-ieQi_H#&BR00g2 zuD9RNBqXfI5d?7Leo&%(0*>HwShx@?!-DaSO1+*Ce0@(@gla)sw!mj_bo zy^)jeo~B1}aA4q-t*z}2u2mS#FZ;oF3+@}VV5!vTLI1AQm%+j7o4H$$Wv4gx=K=IO z?FZfKb~LFxyG^5=oqK+VeU6NqmhSN1>;emZ zo8hs1w+@$Sy?{&k0llIgIaX)Q@q|%p*d15$$5GEMn39vbiliFvc(r-

2L%nxFGe-z(ihp9d%6OL7>pRMn*v&8``+5!G3pNeAt7YZ#0Ad0yu9kx#CoDR; zuSynkWuF29$iOQlA;aur<9$1e1jgl2^<(2>;Mi95&w{WUyF%Uaw@thZ;H4oZLs+!# zSfj5;<6ct`0g(PP^@(-EyhiLl5y?e5AA?4E2`3wQ(@3o+8sCq#2(bSIu`rWPsw;%w z(G^sPCH%*!ko-y(L{*$fxe92_|O#tI#kRaufT1#E_nsooNL4KJuCdiwQ-++3CG zq6<85a=%VI5Q$%>SlbSN9~>g{yL(h=6MbxQQhAF;ZKM(F^X5oEe}m?N{pklCot;pP zF6tcni%n4QH<=<@JNl^gRW5y(oh}jYo$&E#iXs&|0wTP~aJS6gVhnOD|3ME=AtWhP z@}=ke9`}^aE;VCSwidX9sR(%|TauDG%opj+K`WylT?Q@_yP&uN%tISjzqltvJxEAo zRS4m`RLq=OQ^cRj5{Y8c9FF@jW(0CEL)?lHZT5dYx?*E#-5e6}U*6;OqCbEc@3*>s zu0AU5>?Uirod4t$`=I+pqNEoEcTbo|NI^#?HpcIF)#3=ls0T6hJSDOYq|txfns1|& zs9-x-RpLmr)#kL}tfSL{R*ZIcPQhP86#YUsKYQ*sB74cDSPgkIX?eW}7S3(4=}^&b z^u`TYZ&|nabTh*kD5ScqvC@v?`M3tf2j?^JbmzYhp2J1~tVCH~#o)%zNm-agmA5OW z{b*}wK3|4Y{er{p@vU28>PnT_v%4388}3yt0Qz8cZ0-+OoBh5--1m49^FSg}bek&!ak9Dd7jrtH~5JnXKSog&h*? zcYgOsjYZV?AOYflRUpjxJ+NB;K{F_>z(mj`n^pa|VLa=&$JuhnJ#y}X%9j}z4alr< z(K+fLr$bAQ`=V4T*?D{FSxWjrg-Q$9;NfNQ!NWwu>)~J3p(;ir-UuA^guU4=vgpC2i&^eQIW3Ke; zRK?%t!zvSuYFM{%pd`MZwZb7RDxQYk6}?C3D7|*6ifcRfTRZC9I(D9K`I%pk(ECN6 z`eF2KFUw?sS~+)g{*9A4d>|#ss`U*Q;bZiKSL%ZVuBx)nMRdu~Z1qtcj^{M%AE~Hv zjV1&J5W&(0^T)eapuTOIt~DEa4)BSZkmN0$f`oOxngr-e!kq#9bYsEFW zjb+?>S6Q6k5b3o8915at^M`v!{<>6u+t{g<@4F&I??1{-Y+QM4`@%_{Q43B<*M7M+ zKEN5H=>yVDlh?4$?@>I4=2_o}tS-9d#WZzsPSR=$)!&TY@PX571zvAeNddW`eP!)? zSdK>)PQkY!nQ|y8Z79pK4@TAK2Rv8jtNz30FsgMe9mZ*XP;H3}Ga| z_KDc}f(#4eUt7v0nDNh(A8nI}w)=mU?_%mohbzl+7+ycn z$ZHKRyUHkO(l{Fbl7zkS_yHrvP7CMn9Pa(hdgY#*YD?Hw z_~b*;oohpbxA6}>y@W$Sa6r3lU`&80u^I!?{B$5=j`T-zA=w$TdetCS(-Ud2Dk1VE zhB=#j(rB^lPog)Joz%J5xWw6LtNd_JitzfhPI*i=Li1gtz3FrIHZugGXI~p&G}8BV z2*-j|_LX%ZZQ>_cAD!h$Gdx>^>ui}fG57u3SeOQB3Oa8x+dd>B!2p?ejH9Y>)CC!VL*)otC{6{zQ4+V5wHi*C6XGR3tI2j21g;C40sKaeK&`yf^*-`*6;f&EVni7dF2Hs-JRK{6 zM1-l=A6-NI`-5R#V;*bzn!g?cwNf}^azO_x>Z8-oGj0((_}Enwv{Q)1wKY($$$lB0 zZe;ME%=@c?B~FpDyt*`aLTlD*Rjh4efmz|~x3Gx9nI`WVWRpa)Q&@CI+vm^nD=FUj z;;+l=bj|`BcohU`rmDRc2MoC)V(-Jv1KdrV?Fkkw8M&^zKS1SfK_>Ne1Qj zxdp~H@+9`Za6TU_LuRwT$Zt07H8VCef}DIK%__(ZLLTv{Jip>e9;BwF>g(?uqQ@%1 z1Lri_#OUs4=czsyN=hbNEy|?8NNbOrnb8nwrkU|O;I;I-Byp@Gj@B)(E6%eRZ*#Q( zu*YaUAbiFio>OWuULXadk%y$HzI&nD4O(21J-YCkY?goFAlKzPACj|ZmUE6dh)sTc zZMFTB`?kt^d$-&v%fxQ6yfDO8F7nlo#Ud#9N?$APo%orls#J5!=9Y#Ex>Iefv|;k` z<6 z>pxkInXFj?aE~a)G7s(|I2d^L>2tZLdkDqDOr$dEqrAhF#kStvMKmh@ozn~L_(K`Y z%$s5>I@&hbG9i2Aa_Tl&AXnOvgn^l7ZzJG5`Gd{tZ&U zsR4J7e}^VTc^O6MfZ(LZF-93GBS1UGmXeGhPoE0B{BSXE8VzYP`PP#JFO6 zO9ffy=Hv1|(DwX`eJw_;!T181M0TT^R|2SN__D{6@7nmn{@Mox*rxxB-O$fU+qh75P4T=N4`fPW&V zY4W4c6ZnAfKtkEhZE1k7-$ena-4H~fFGH^iNGQND>6V73kDCJ_9J;$X-q|fDw|lVL z5f0~J(*@7HvT}eU95TvI;bQX;l8anQl%52{4*hw_n?SddR`0b&=6_UZ4&R1DH!0T$ z0tlW{o=EFDH>Qqq!*n5--FY>iCM0ySRh^)_M(27sfNE}KF|frH$Y}QlhXfU~;{9y7I?ZPu&#n_A zqIxr5_l<3~kt(=FzNDy7G7WE)JC6oKg{t+2j|-CVa{(1AAkP*RH12hpf)D@^F-h}gNc|0kc6LMQ!6+|ba--uU?C zT=ON;owT3b50W_BzP}zq>Q6*!G-6+C9!n6ouv!5sVCyTZFa}9Ud<8*S3#!*D@-|m4YamTwlDMXdvJhnzvT~Ze zqc`+%5UxO$e5uTuLek0tY>#uPl@Do$e29`S9lGcfO7ye8FZiW9BK`n6s>mGB&>#Q~ zD@(5c+Wn@j@CzT9)i|Kaa#YGk;QI4Ud&K59y z4ux*Fn%NG@P*HihedQfvd}6xFo-><{=!VJ;3>)U)y4ufBij^-QOY64?#PMM;ao|EK zd-rT*-O-Mn;fdlWF%ZZSkj4KKWe-1bm$i8xHd;q#@X7Fg-95L_Qe_JmZ^!IAdl>q@ z{IEY*Aj#eHsgUwZoqv!w4ONcYQ+)`~#=K5YU#o;D31rYG=2_33R9(LeeyRzZBPBRTGLGkbcN#OCfK9!CQ+&pNewK(%2n{El$CoUW@F13zk}IN-dE4%+}UjU!?qk$q)V- zRYji7=LJsL8|=J;bIFpgoD7`qM+VF~4OlGNb*i!uh7tj<3+4|WK41|SU%Rkz0cIU1 zHIfuu)(wC>pm30QDS%S*a$EyGmz5^CwFnewbyDR{{@8F{s|B3?fIEySbM-QYHVb7b zx(CGwK%~r>0K}J%C}9v*gHQ%5%fCNg>FDSHisel|A#OI?V)AbEn8%%^`xT-QY=#v+ zTNC*2Rdc9vj!x@`z7O_(NC;b92`|o8LOwpe?)g5e_Qmy zj*p7Swu<+a7r*oPkluMCNK`sr0)Do12X89&js`>N@Fx-#5JJR(7J(}-z9WefFB#bF znU^XJm8bsyb(u~NM}s;4DWHC}H!xC$-2vv?;B`&SC@8J_0^qP6_w=HKx3{dME$*24 z(oIQc@?6GTeCmlGn}uCx+08y$5fYoPmsbw~C4~LPrGSll@E_Ir=6w+0eY=ra{vI7g zQ2_)O@UfpE+-{!TXNXenem9HM?)aXQdESQ{D4)BklA-pVgx`DlT5Ff!dU6-j^iA&x zL`Q;I2LP?#lkdM{eM?4WBe%Cm_zPSU+*)eW}}9uSg+W- z9P4RdUGE8BnjsQN(dbnaAu&3S)^+fhGafV` z0$I2wXR!!=v^iK=cbAftRWE@AzMbXvE3CT3Z*$mpFs zu+kA!Wxx8NyU$9LAHuL}@$dG>A|@_QF!t8cT4N!Zsk0%`s<&n73*~I`INdb7I$GVq zt^8kj0r~#`34kRg%KuMK=3jhy>i+cq?jED3dUKDAgw)yBM=vj7Z(rF&2W)w?|IRg) zVy386-sgA&E34G}Y~@_(ofKeoIsQ}reHI!V9J~VLe}w$%1S$#eRtE-U1yr-)H05ak z*`fpfv)vU-Kfbext0+G0?SM+l>ZSk=4gRqL$^Wg2x4Q=+1I0t%P)$;Y&!}=9SXo(* zE-y7?A#jQ0)YM$lp_Iy+8dcf9im`O^8&m33gH#jBA`Pue!lWPsBO~2h&^OtF))(46lK;I|iGDR~T zPAf_<)+TWYCL#@Y#fQ0sYttT9?H$e*6h(PQj0>sY&V4%s^z?V-xq2e(S zp5DokS80!b1F2eg;UMga#Ix67mDgxb!3t>qv(5Cs-Te`11BldsUc!XT*8aBkY#jw7 z{JpAksUYI4&D1POG^{OJ*E1`@RE}~r27n*s0`5NF)nOcuJ+SU!ab6~vzXGsbc5vgI zNQ2Ok*$mG`HH5u4OA_AvGqR`h(vL{gwm-ptX2aUJ9uvC4bhjo1wwdU7@#)J&yWOB| z2Vx%C31KJv)`Ff=2VS!>bC=*ZTkx}U8A47Cfr|oB%c3vj1ko&g6$7Bh`{iGj+XZ;| z*x!HkqVz~ooJs2%lad#q-vojozP%Z-$H)LT#t0i=U6{ryyJ-<-e`7qexY+g!& z-%{~@)@5qcG@;PLe(rb;X_!dN9bx0ABOU3yKVqMd)uXpH)N?03U>aoh|v*)Am$i8ogZ&+Uqk{y)E0!pI3l9SiZ&E3mh^sYPQclt#O%$KzK7h zZ8vEsBE9`)(xu#1nJY-YANZjwJGTr0huWuhW52uc6?$}FUUH1qj|B=L1<)v)wo-N> zb)CZDw=`b-oisP<3y^hT;-*vjd(zyjf)Z*9E-o=Kv6-0}gTtj(^M!^gtrXuU%NZC! za7aioEs=ibd8N%fZ;kDuRuqnj^C?iid$ig$`Odp$y5_B@o9o_805T@0s{*qp7hqG@ zn2)^>aN1OrZDX#tTb8ae>S6Z_5`B&DbsDWQE-ka#9nj!>Kb(@0z^WVOdw=6Iu^t{3 z-tq2np8sl%G3rXMZ|E83OX?SM5D8aZCS3NB(2K_69Qkr+KPXODSC*QQm00D_wztVl zX7Wee*X@+9-ruAObgt&s+W0OupF1?C-=~+XVs8eKCvL7<1Y_bS68nch9k=DZhXMB; ziOXzQRhF|ttwcRrqe3t9Y|aOp2(q|DQ1#e@r*r1#-dmB zejr~4fypD8vND{+UC>uX{6>CD2_&?d+5HxyAtu{RP_DC!01CCTj5uWW1bs+=_l*+7 zGXS<)Vr2noA%C)t0p(~F59_6kjg4jsVYYUcqobIh;J~t^u#Y};B@U>S&S*K3agI27 zZfz0v;$n($p)KDrLSVyjO)KSQnv%51o`Al55nPssNUXv78iXJcv9G5%g`3=Tg9TU~ zfWi4yl_5pDJTVF7;;wcC4?ME0vb3`HeP{wj>SXgbmWdc5U~%SgzX< zN!928$S}Z1rF5EZB?a(VaECx8X@{0j55G%)W$BKrkB(?zN~UM;f~Ww*eyX)-Z*SN7 zkQ@^b@SN9n;i{)?1VB939Hf4#dXcM18)V@?ACoMq%p#W8Nt>O6NlFW^PW&}AvCe8; zl<8$Yl``CtITE+s_%d4hMl@8tkR?9^hbBCKojPCQr00Nn8mxa-Li|#|nT4auo!&dP zIpFR&OF*HE(&O1nVGOST7QEgpn{vjTw6m_P{#%^dkPvZ_16ttS6y`qZ{(1a@MPlU~CeY|2I>FAbscR~ISU!_a=Sw730kW#M zscZ^a2wHOBTf1H#qN|-jes#g{^^mL_L-#~IbjfeK%tWEc^!A&ZpvIy5t=J3E^;JB7 z46*VLBNim~8=VM1O3`uOSfSH45+QFcW*d*DNrN?FGLo!aIBLebY0V!ZL2&SUzlcq^ z1;OEDj+%Ma7s;eOg9U;4RbSodnM+#pYPsC*?>;fyR80N&K71_FC`h6CUF{`v!hzs7 zFGW3CFkbf!lUt?)%x=qIb0??)cKjk*c@WkUtBm3CLhVTWY7KE990?* zdrWFX#Bh`y-fg8anXW>@YyISTuXuH%v+{Q<3suEth?9N`(P4=#X(1f;C+?)gjY;)N zug^2dR!*Llmb!3c+tV+U)_;8P;}eYT?Gbdc&pog+k0}ujH0nHRpSP;~(pcB+HN0g% zcgU)6y)1722h7*?S0&@{XQwWE^VRfM# zTBGB6F;*1iAVP{AKam~7ixuAf_(e&D5yH_oB=qMW080|)92i7!xcc{gi*UA#msf5t zG`;<-BRE6e0AvbWG^3y7pd0XtqxHt8sOS_>bDJi+qQ15|SPo!WXZ*z>+l`AA{}v^7 zkLXtMvwdaJZ!;+7v@S=zF;J7UTEzA720h_%6mN);Kt@MSSeo@pV=5R++O;UMu}iC? zLqUbwRO=D{WX6hVH(#2&@7iM4mejuW+lQ!Gj#@tz(ljBIf=9xrYl-=stX3Y^w3YxO zE6hOy$ja(I8_t;Lbx4kOZuN{{ZM4qA##+Y}$QhZRz*SPx8rU?#=ys1-L`7*Lg*-QP zrD*%^EVzF_LCby4-}@5y%%D7$Z%Fz5kb`{hNgT$s;EOqL9v-f(8Yz^u3(az&C}`2Y z0YSPqnPkALtg-aY@8+=@8z|K8`TOY7+tzqrX)YB&Zw9OL$&Dc%Yi&KcnooFCE5|epu{fh*YnGxf?Hn~+qvXzB9K8F z-Hg5or?vB+6$-KtKViiZr+3siwV`y2i!?z-*Jw6X#hnIn%zug0J@a?o5G&9L9BW(~ zn#bq9cCJ}F9#40%M?F>FGS$mz{NsNo&tCn^3d;|WH8`J*A>E9A^EyI}dT+D!fkBr& zQ4qOMjaO{1jK$$HG_gQG=6v6Iw4T%XL7M|%7g<)O z6Y#{BI;-N%cc1uOZ}*C}4jL{-aUMyVSx>>%X)_32LX#hWSLGPsNn|3a>feV9&T5@2 zulr4A|9s^4g;5?fctGg{PQmpuizkS%6JRPdBGZmlDnc9^!6SFZcKm_-1+;10`eqL7LTLa>bnu2)DG5Wju#(t?ALZmiVdH30Fkbo4s(L=Qg~K_ zeH{B>q~W#p`%82Wf|S{Kne@H9jVrCoTolObnDxWr2q{t3%6D)3*bs%|qT{M`F&+Ev zkcF}<7A7$qEd!@quCFZ? zUgHmq$4)b1dx&>GWCphuBl@zyIi|#1I#}5>gn`dgDNc*%zF`G1DRb9GVn+8ul#1Bo zsds&cUL7Nq)3;RWUZg#}1@y*$HDf?qE^AliZQef>EEZ5bqEb7^9Vr55F0nJMP6WtQ zGTgNEsHyY^Y+&xouH=%e1joWH@iN#y9nl-urm?r!c}1PhdIx~?42uYlI<*01*-wq4 zNw8w+40Xm#rje@AGs;k4_Nt~X5y6;>TYpn*HULJjH z>=;Sp5}KQ0jA#B-Y>q(#Wsyg7xJw~9DCs~J7p|w=x9T@}<5XQQF6w0^Kz^ddzM^~Q zbe3W*JyEVM5ckfQEmPt}jEv+4Z8C2qQ9h>mD{WbM)kc%rH#0&&ZC2Di8tV8@ar9$T zCE-lED{MR>FdP%^d702mK<;td*{P$r`M!!>KBarIyZ>4GZoHJOmF$A=8hAZ1mJSnl z#MrXk^wW>_FfAsN*K=KS3#1Ml4kwK`PuVd()pHo^J>PY>FH7nggZa%4a#vi^F7f*9 zi+%g1Ugxwj5fb&APgbv5!U?cbD4HW`#q6jQKBod)8jGAFKv-Hpc|N~e8z*vVNbmDz zM&q(Q$IYfiR)QsjJVeLaF6YOfxvIl8MVo7Sbd;H&_%XGF5`5*E4w`q;2A$tzEH#6l zHDT}a>|2EA9+MZ*@YMkRZ8vRJCWy_n=ruKz zlq7&3#wPAH{k70x51I6&HDr=p#-OGIXD2M0}Eif83a1A7H3}R9Te=0JsRHQ5V#aYM2g3t z8BA|$yI(EnH&XHiM1Ff!zTkJUymCPH%!>pS&cL_kmf^YfXJ|v7K{R2(H32$QS0#8J z)<{eP3G;RNbw4wXd0bTmi3;mdhV|Z8w3ZKqpi;duPs7N`$vOJ7rS`t(y*Bc!J}TsA z!T2uEA%fj;Nm z_>7qA08DgZoPZ6Rlo&(B2Sn8W@sq6()5fp`ZQo)06mGAk{#N^Yz>vcpOI&Gl9ETC@ z6f6{)XMeYVE=TLpr%b61s7t1Mx~*0zpO~H%w+o%s)+i0u1q*^X8I^B4c#fX00q_2P zzGh9AcvJ&p6k&_U(g{GR6Js{P(=T(7dRxFk%DWT%?!i~t2`(IH45NhiCw%XDU`?L5 ztD(L0^oB#@>zwXCW+Jot;C?Qz86BOF1y!MHAVt=d1HBrSHFer|xtSBJU+``)5A{Lr{+78aMMK-iD5B&iZ4b$BC z@F~1yXW?l_j4<=^VsK57$E{NuV#9?EU8)V|t4JW@QQ&$z_9#ZaO%BWY5{lGFk2%{q zsi9Drj0cFCXv0FwJ-hXTYx3yXx#5XEGBy@|RDTko`wdc&6$0=gH#@JK*L1@nll|x$}q`4Up#|wZ9GHOlQrHSdFc3O%j&JkvX&$u%16i{wmsndO#wgq%N%U zi(GZBZLOa@YuK;#>c2!@F_yXi7U%0+fn4bFZh-Y=y$>=2e`4CLBxqxS+Bs!E<8^qVB1TQQ;a z>6?I!;yEEMg0SLZ9k(jzdEWM$xut$$l`vO{<%JZ}E2{7HHG6OWFh1~{5N*Ae^Jb=7 zn1v9;P!ekYB%4a02)U+h@2H^lT&-}Fh(ESlH8&1Vbm+L69#^wnm;aD!WZ!+s_@Gf4 zB%GlJ3o)oYRbpo1Loty%efyRb_jJ*;fdB&SwsjgDoTCA(nJ&0>?vvaROP5O4F&hZK1Iv!iPq*`r$9P_-V3 zpSxacxPma7_4+|F@wedr;Oi~p+KRev-?p?Ain~JzS}5-B&=!~CQlPkNai;_?#T|mX z6bllHySo>6cL;Dd?{nUB&hOlFFJJfogd}Tc?YZV0<3IY(qoQY|1yw}q3X?P?WvoEs z(iIPi7jdz4BO=cqZvs*H>=p@L(2moBY^k z6G!&v%Y`IgIJ|*iFBppP6n~DbxtIJ+=`o+aWRPcaEF`0@T-QwclzdbLwr227ZXvn| z@-q&akzLw1Hc(~z+e%4>FRHuF1X#JiB*K56I~N30z#2zYmh*9HQDvcmU&zv?SFBV-IUL^`I-#AxLgGUS8NbfCZJ(K zvH4D**viLCij?b6$@`V60zLI31}OBf&&u}XYG(3Va`hf&x$v1})gqt0{gJ5KaZ1>P zY>1K3v2@|K?oR8GX9rad=Iu*&{ewTL1GKEmFWZpN6rn#T$M%&z1({|oGmNo3t}= zRXg$xFQeO=H*T(j7sNFLENnYpd!J1vMiU^!Zr$LJiGufcT_9Is zwJ;*cxEoryXgf6JkHeqG0O}!6$)OKp)>~fxyqhDCW7?v2W^0yw<2VOmKWb9z8}p%- ze%F|eVXGLY1poW>X_&ZVae`}THR6RyD=7J3Ut-fbc=L?FfL31Gx;W>08ZJVF2du%E zv7&EU^AY0MrY*o7Se_015)6XIw_&l(&udoR25A>Jx0T26t@X`fuR!MLfJn7xj zktzvy%=J$|WBVcfi5w&~F106}3l#O_1&b|HyCl(LKelL5lUj(b^{o)km;nhnpkK96 z_>Gz77F!)mwz0mu|M?F)9p+O=1znlU(_E^3hy3}^hW)twg3ROA;_${zl)j*XP`&07 ziyne-LL#>>->kDLn#VdnY@UK6W%-oiH37j{5+TWZUQS|W4V5FBtu_vW2BDenMdfNA zqk)+^V31MK+94WfCWmm_D9N22R~>isQ4;{G0=JvhG^AGN!w}QQdZBEq9hlRhyj=Z4 z&ROM{>lZt|st{GujwLMTtz-!GfJ2OWf4#dP>hxl3oR0*0L;x*cc8=FbE5Vr@)7a?D zcw$@h1vW8`f4Y8ob;&AB10OOFY%sP7uh?<+sXHjz(wimLgjH?lcS@e8)2*fu(}#GM zXYB{`eLx3gg6&y$pk8v{a_zvRcgHJ1yG}+*8ytvgt>dHXU-aLq3MuKz&d(-y@^!~N0dVb;8>CfpB&-Xf$YGqs2 zp;~z?0tzP2gHPdq3o!+eWWBYhY!KpVde2vs<^?I{w~7PKYfbwME`A9Akeb5DIaO=< zkQ*@~IRhAw>wgc4!XW`BGnE#n?=PU%ka$t}uU)e8+m|XESDzwhGbtl5F=IHD3QFL~ zyR^q?Yu?~2nMfRwtn__OxR;rbdIMQEj3Cj0Z|5b03FB)|J^4QwHP|nu9in6L9U!~f zxm(M7uDwokPV!$m$hhb?h;~^ho=u`1;!o=?8K-P)^k>OnZL+s|#~*k)s_gqM!U4=h zk&}u>Nd!)sqZT7UDYwu4{f#dd?oZbuv_oDdc-1=U; zR^}iA?c$qlDbzo+c9q_=Tp%L+$8ts&FBjlU))dNqYdt7eX;jb1FRvR2P<7T1hI)9t zR>|*%?nw5p^aE;>Df7{-0lm|8bUVrJet)@lu)(xd)C0V1(sQ$_jM9 zQ)gOakNsIO$?%7LIRhso6z+6Cus5o?Dw(^J<+8c<6hmIKf9Gls;FEWvPr&QQn5Z9h zY1an2=omQOHbKGN{eFr8r0TSz<6|)`$V0lmlH{pP8sj_>ot^HfaCu`u3edgsmL+?8 z5^eU!QIzBIV%6~h*(A9j1%SMY70dOd^<^q)0#r43*vNy5^qDB0Bg@@n*Kt+?w6wxb zoz+Hexzih-6rdCDjv-as?KZ2H@Vt7zf2;=@!Uj>~N2lMZ=_Wjs} z#{`sZQrFm5y3dh(7ctyDUodfUziMG&7A^NSFy6T|K?+4q+}~y&X5L=$F2nz1^w{r$ zMNENg6?jpC_d7}B`wRYz^iZodTYB5Hw>j_XI##}R|1&C^16xD!d^HHsWd20Y)X3^U zM?MvvR=136cGk~db+@&Qu|p3M{eY^JTItrYdSEl3lw!OJ5%ppvgYXk)MUgfrx>-xa zrQ@NMmcAubLv;J6NgP2kcgQXTDlwmJQ>L;< zd@M5=wF~G=2P2&AkD@{Zucq!*L|kJ=Yc&3ZCCxSw)m+xFd7Qe|5SNfHL^GbQkGBBo z$p9?`o%K}w_$e+widI{{l)QKC9gLVuKH7|lcoGE;B_=-6D?jVS9>TgXOUR;2FbrB= zCVtrQ%aBjU!Y7K1_tf32B2$I=!9EYMzo~SVlTrH+kMY!~EAeNnHRp16v!Cs;$m{bD znN1M1>bsh!8q1J2NK%qQ!dwy;_ONNkN!Efp@Pnqz<+kyw=P+aD+kwsMi5YU~PYkzN zXqn4f;RB8v8_Dxgbz}9c(dCtCspN5gTQ70E z^}D`ub&OWbR=HMapP#{ZO!Qk_2{$?1i`omNe`KDe7DgKAWMq~Mp5YyB1R5vTe^mST z&)2s%axgSj@@wRr?*!Wknp#-;Y2Vv9_CKK?z42tYmiMsdtcj@=k+l8YoS%}_3-z0f zh3LPV^eSNamLMzyYB^$wrfML+!=)KIH*yJHP0}iTJHK5D!bx}s@}uJacB3iDk-8|I zqJ0kWT$+6Ds|fW&VH7Dfw{oW4S-obUln%IX9hIxxapX}X=aA8|^dtko;F2&&x2yc7 zNurrV*yk9NxE4J|R%NCj0zdgG*2K3 z7ENgciUhOKd$Uh>)j4*HFji}*j^+2*V*eHORQ=RqX{43UdMmc-q;n<>6= zz?wFk%)wj%C-;4reIs&h8^L@z(3_#_LBDBqd)zdwoH*SZGlWVdFw+gqqpCa$u{Aen z`p7@c6o~hA#Om}BVm4N*D@5M*N^=I`mR(bMT-7>Bz1~m4#Vw9x)D^#~z%*s%bjFS`T#fI~ClMA{K(E*ij{sTNEjIpqx4G>$ zD$}N-fegmx$9KIZJ}rL`+N%0I?;^s&yN{!jinDO zi($gsTlwES>wGx&Z;!Aj$R`yd{dqAGZnJanqG_UktZGU2b5XW7UA^T`OAmfi;j*2Y z{CpFf)lBIpSxT6a{o6@@sE3EwZxg=N?;&4|D^V^PswGuD%)j~0Xs>>#axH|JeH3J= z28NU5y_+3)0Fyj)O4?^<<)C?Rmw_FGNFa`(&DHMGr*K!tTcE8uJ`+mf%hqZL`6l|R z3RV~la?F+6TX=0n>lF;3$g%-zNM#j!d@VON;5Y0)JCLf(5+7T1OorV4 zhOvRSY0i8v%ynO`dvZxW&o5x%TSJtIKh&o^(=`h!9UnXSeIs_k&_JC5Vrqce<7f~X zY7_b-TS82;aasYdVtkxw0Zcp$pv=~!e0uv*T4fH-^&h;iYgv8l{<++TW3PI8P1|POSDmM z9ceIlfxF>+C`%a$x_*0u$Tc9Rz?Y93X$7vXwthjUy7Wh-k%s^PV|SVH0WEaAyRQ@d zT=pt{$?NePUUR_zBlB7c=$iz2&Z5kb^aTHX+mAM%N$6x1tXt4z%rwWfci(Ge6izc7 z_??9dqrK&%Ri^~2Xc0-Zn}^!hiE}`iJR2+-g3|i$p2T<6=%0jpI#_JddUn@^d}vsq z%b``LlAXOfZM;RfQ_iV^DrKZ*NK5PL{W=bbU$#c#s=|qCa|C*@uUh3nOx{2+-$?|j zIHjt9b9DvtjHkh!d>F2;D}Z<_|r-~a6Cho;$kBB0;t#_poR zh9;EsIR1-R1)RmurVpC@0I^3q1sR!{xdvQk3}E)c_D56E*`=_k zyhynp#3IdG8~52~rh!6&&g2%BNRWNK8EpQ;mA1|^L)yo<>S)HE6<&G$)NYDiImXq| zqQp`o#Dn0?%+$G=XnWJ2op8W>XFKbZeEt1jt;osJrO4R&xUMsl6{Ri4(A>17Na%^3 zR`*IJcKKcMM*B`c*>k(aHzQN@?To>OJ7&+UGEt_7FAgv$Vy&{*!2OaNDLibDfYJnqO~K`#Px-6E++kgqR)*BCnYS2OQC=EB`x4V~X5J1kjOizM1PP(m4LZ{BpDU30-N z_s3A`Y2GL@#5R#9H2zBotm|BWiJ z8mK?9#>JRom_V=mDj}h-btgC^q+@oLP^ZpX46qMQjn{h;VMj4M_;%P_6FfWQpPeuc z4yUtjH`qT%RuG^3l$;9<6u7NwWb*drcxn~nzg?W5 z$XL(btw^@2D#Dw6{EtiS_#Fb1zbAZcg%GHyygNbKw0?LkWe;5C0(%0C1_4v$7jMSS z2Z99@S>2Y^8yKPip4aHil+35^)NApF7j~*-Pxr;-2UE1Epuc0^dXMb~E%HeX6ysP9 z=m)yay*743Vo;vCqJVRSu9@3>zslHQCEw1FeS z{makr#(OoLC|{GBqs-ui24I$5nKi}dM%uZh@-2+ z1$y;T!Y#W|nKmQ4M{mdZ9r`q0%*65)t%-^8JlU}dgH}ZkFFUW+XAo-s}4dGl1^;^ zGxBc|U$`e?2Z6P(RXucu!UJ*$AQra=nI;+1DF8WmdstOEo0+*4XR#*XTixTV>q#`X zlgYP;9*s99-%vQqOD(STA$~$zXtv=rR04gw(ekh5I-}iyf*E1H#v*WYAaUR?lDD9k zm>4)LOr?Mw(ZPw)W1Ze;??md2ch(z-dxv-bhaTt;RCrxdAsQNP9dr(|$ zZ}d3+t+2bOBcll}+-JuKK@ zk2Rs7qj!ru!Kr-H@wpTvhhi`4E><`Ir);=2JC!5@&x^S-xy_rNH8RWqWdjS#BIiOK z#HCbTsFY?e^0!oYMgA_ z%50U+gSb~dbfT3mrh6!&u3{-`R_<QmV2WpaY0SjX9FkPa8s_?z;CA8h~}I)S8*f z@(=j+Auy&F3w@PxMDH}0G$6URM4XT~K`{ZywMYM$Db`p{y>r?cYy;HESOh&8cEWWN z1&TRR;rP4`Yp+LsAle@-@^M`uJ(zP}p6ZNq}p8=faSw{LMs z?(RErW}cp&##ES`GJgNk+D^)A{{rencRaVF`awlaIkFHW;QQ$1@MMg~US9ZeDa>dm{}k$)H#!m7Q?+FMUZ=%GK26`TM- z^{)ZAa50Amr)xrsXWoWH>d0&g;d~ zW>07m-UtV2b23+xSB)lsQ7ntkS3*V>xPAg~yKBu0isb zwysRYj3%ak6|l>;PjcG4WE{Kb|NGuO+O~*|lT&WoO5dYT4#4<2$)9RtZ(x-gSrcA;f}0N{Dw+F^xoe6S>T&?N|?Rfd=0YMNQTt+?{}^a z(vlRJ$;ruZQhXi<3T#{~)EZ~DQYU$@sX{=lGw+X3ehnBfnI4H}-r$Ahr zzqYL@lTGHu77KjG0=QY=+V!SBZK76N-Y|;C#Zb}&Q_V*S4Z^+Fey-pD+Q~5F0JIhh zRlB{}QuN6gh5|mWL(8Ur;|h~Fz{YchkF#irN+YQZ4`o4hfaxw6MOG%u3oAqscrx<2 zl4wF$5%?=*DxkCejlpCbsN<%J?6RDJ0YzP1-ROj@4@||#&hBXiZFvDa!Wc6`%jD(l z&1OBzihBE*Aj*A(6c_MR63;Mqb}TLFF?~+wwOh+qd;M-gR$Pf%?CN07Bz8QCOaS6> zxrZ8-`=?V3YfMsV(ZG7C@hhU}t5=*awJE9INMUabBx0oVyZoM!4St6QxR;`%#9}Z2 z(6Ms&HK21`3-5`cl3}%7HF1Re8RcBs77ZM14XUqse6`x_vJ2Zo2j&f_dT}o#?z#O zP^u=A{#t4XXdMfaG=R6vjWk8z6Sp@&jygN;BQY-{jZIMh=%`J1SW6|Q8^H}155UAj zC?%UgTOy8sq85vx@P%XX*e!PgccCdhqSQjZnCWlf?;Tx|bV5acYX5q-Im!4mpuzQK zMRL*-%RjkhI_QJJ)J$^7=qq+e^Siu@z~@{~0N)#(EBWB454( zs5-u59$x0l&Q+Vl^0;J%yQMETx-e=@7@ZPh`hRgyq<-}al8jM-cBe^*dn*cfPfWZr zb8aJU>;X4}5UqR)b?P{np*S>@`!Mrd_ES57-j%RK@@J1LVGj4R@9>KW#l5(n&yG54 zEq4TEfUJdaEO>k~a-(z!SiR#)nrpC@+Nn~a&Nl|sY9Lj63#?2Z#28Y-1ZL{jOqB4xh2^RL1| zZ>&f^nfjI%;FjZs@fuyTtWcMftWLAubqNt)v-+3PX;P6}3KTYde5WYm_KS3*U% zabj3vYEw`5$E}-BmxIY1>~rO;CjGctIn+6Br)$BbFVDC^ieYYOUiU4`2TrX}^`3ka zwgz`TeePr21;vv4>*Eq*JGx;r%O0kv%l>%AJv9~J`uZ6fip;Fn*h#YD3=-ZBK_v>1 zjwJ4*u#jY$j!TKg`>3hp6Md^I$zgn&BDa_;gLxdf=Bd)|*}T&hJ%i}|5jD&!E1C$m zNV~Q;A_99X1j`?+TA<*akOh8UTo6?Y;;}$yQfSBT_m!;OfSE;d6v$1KQl6 zyuI_|H(ckza^{DAy=a12w;gtXp&WbPczBflk=}9hQI(VUwCTY0X7D%Vf3Z@p7y%f; z^BixGXS`S%8K98dY>36YUS3{4yPsxhg@f!SIkc6i%h0~!jz&h3ccvRJS?=%LH+KiSR z{2)$&69}T%F@7!8nW{chuDAJ?8!Hb(nMoh60t$%SJ+u*v>6FB?JPijo#NgCw2m>f_ zdX6t6S-mjt`wc7B+G9ov4tfwE=oP$^TME)Fb9*Kw4Lr@fLA*=J#oV@oGA<;cph(~V zq7MQh^ZUNHOmMh6u4T3?gf}>|_-OgQb{W9y z-1;D7Xki)zKvlDcFc?oK2QYG)raAzH9<{|V;Kd60%y@0wzZckR3JHFZ8-a}Q1y2@lAp-*Ov#@sYE*&`FH^&&hgPWw6)v(hou*j|<l0epA7i2!bGBKUy)ZGhMlxEABNZm?O$7`(0j>r%x6K)-{VdI2CJ zz`GSklxL>2VI%CSL=7lk0=I42GId56Dta^ri5H1G_@{qY$YcGbUok^3hq^<2ZeI~j z)*&904n4Cr&1{9cQc587l@UEThv~Y8r`5F1R!DcZsJED(9g&g z-9}WdccNWn)ZwoxkL@fMzG~zueWAk$q<3`nijDyKsDAexeyaeMcJ@uT*5pf`v(4V0 z%1f411`1XHbQ<#xbiV)gi+VVQ3~L1ah6EdYS)-kBB()r z)XgA(G8f)mOAvZmq1ht37t+{W(+`qx9ND!g*3Wd%o#kn#@PW5(L4ZJY^GgIFn>f>h zpkx^()(L*#jt`GelfQx@-GgnP)rNe>V#t%x`UFk`?g^%{Lkg)Q(NtF=#>qrFT9V_n zU2V|#e^{e&dAlDBc1rL^=scr7#EJVvbq>m-o(}v~2l(}`i{l2vB?yiOHj2cX=JTqI zJt!`$bze@Kb_2jdvGp%qmAl*egmX}I%S0#frFU;)mc}KSE6VbMjh=H_rkPb==oDN@ zk8I#xvc>NT$^Qhm3b7}Y(B&SjW?z{3{PV+^!mc{%Mc0kbd?iW9=(<%zWO_mA2$ z4F1OFZ;jOw`JcE-s@S>2g|=T6s<$I=byqn00TzgKlDLlGO)A!E9q*000owX?3e2!Q z8kGLrD&MHxG-?Oyv1V7^MsrNSs7@3$oj|WMDmMKwnzy#p+uB1sS?}A_Z=|fSuS~fi_h!lx>rU7+68^8=EEkdNjR0Cb|7K~^<+(5| z3~uA;hulDV3U?QpMnFD!#+)53FPtnq z=vgA?5pZWx0vyXBGq7;v;HcM6c69E{&wEZhneM40b6)wU$(exR%EY?tMreLR4l1xe z14UfynN77iVW&m))gTS_>Lx1b>E+?d?6YPUKPOT~`Q8~BU&+(^(-vyguGaG@JqL@B z?9~YPMMH?^y7WKQ*ImI>6+Yag#cXdB^7*Fngv*McmTd1G03D7E~Kg zA4JvT2Lzxc(V&)Do?xnHE&M#{2ZsIVVX52Qz{u6e8hkzbuz9w{Ct!`tO#}5Ywp9na7jPzZWLI)>po^?51(mQ+^lcig89Q+QW8P{y6klNsAKg9^hd-KAEOzKuYWdI> zl$23fg>~+~h&g3r?{f(dS|-@Mta|KosHOhUTKJ96KvyR;H0?dg(pB%is;=i6KZ%Do zQR9c1>*)GvqxzXQS{&5==F6809qDd_do%?Y%?%&xn-u3-?U{CBXaO6vTmbK;qHgrS zB1XSORpe>?OrN)x_bCtbAl6BDN}T*_A! ziHwbUDS_n#Ti;*{wxzzV*b_%~V$rfrY*HTNhtc?i?>g`22-kM z`yDn7*cX^MVa_VkddwkMZ?qYB_!@6CpfL-@i=+8p*C#|)wHibc;>cfTc9+=a&X3Sr z9QiG@jf`y!j@%s09~Z{{K`oz54wpgm>8V*Wpp+IsUuYTm2R?RjVT_vt6N^LCfA0^3 z^t<4MSk8sD>yBuq-y3=vKd_z6e_2F#?5SoC+_>D;-Y0N&C`5nSVg2Y+gL2=@(r5B^ z(<&?kEg>t$#)3}>a3djE*P%PfUc^k;t>Isx>M;)n)WY~&zdm9;%1?i@xi#!9w+cqc z&``dfR7`TQBSGA@LazVWx~{%-yYs8$T{~tlFqK?a=v8%*{R?;jIr)V?yFWBQ{InDn zi<&SqhSb;eTe^}|Y8a1TUO$z264z^1$Xp@^{|9^nboUVs3UoN#q~cAUH~jQyTFF%z zlw6JlI14*_UzLpxR0*d=96B(cz#64h5FHSc49;}m72gClI0tD%9Nq|I<+_u*chFh- zO7;|#4eab_0-+`dC-NCTE7>YV$x?ssBo?qmI6MC%+6^~##ba%CGl=6J32*M^W33Yv z*zB%mFj}v*r#$g*#OpWL54tlfy7$pi1)Z|q9?@!rLl#e0lTN>->ekh{Sa>D27Lh7q zC_DH;VK0YgQUZnD_XhSS=Bi)#d{_p~fOryVjsmbLRaKl$Q5lS_#_rLn@r@?7aW=nT zb|&%_T0v&?y8b#Iby9y*zBI!;yD$Z4aZb81p80Nfo6sUk&b!*~p!W1%BlIDIB~-ub z@L8)RzByBq2ekm6R0}u(m9d{#8goQVgwjkt=f?{Jt`f}R?~ETQ zmO8vPs7wSEAqZ@%!?dWaRiHkg9*NZ4@*#{4^j7X@B&5aLjbMt0g-Aj2Id-!Hz0o#! zKF>cm0rMJq!wj8ixz82(8td;|;@TQtgA~6A8|&c^iu5o>2BB~w{n3~gTQGic%|_5AM7x1*(?TF=?2Sg}wZ zDo*0R3d?ZBDay-3F&6UXCDbX&s{k7e27_7XTiX-6hyP-)Y+3kWDKI^eST2}9&gAoZ z+`v8w9F$%Jsw^{nW{$Z~8RaYh9wgz+3}Qv!W4yk;u^xiWrKn#}FwM_4!5!RU$jz6L zR7Z^di5IZ~{36-ys}8h0(gn@F`$?gC)v%C9uI6&{>{>i?pl2}Zzh9CyAno=)imElV z%)*F9GWh5s0!A#LZQom|`0gipaf4j}&!cXF1@kAcSE*a>!-gfH$a0Z|wMK<`1q#Zh zMt0wstVkcUAv3-m*~KEp026O?YP!2Km4x-^ia)43uS|NZso&(6AmJ%n^X?s6c(Tu^blExkT_SJ-$6@d(L0352EcJhTc9O6FpaL;+fnrr7OE5Nt z*|XM&fAcCt{pH-m`?ghNz5?h{v{xMNQik~F@k<-^bUPceT9Xy zhUE<``jCHLqJvT@H=;6vOFK_H8Z{-wv2b<+`?kP?ZsX`pB!;8e+@uWkkHV+%CZYHF`Xu$SufO~ zmFd(2oN1z^X7_VeuN!-pce71DScrLSfw)SRQzB~%i_qTQPqhHT3Gj|v&sM%969A~U z|1ZG6aqRyMFfe+mhwdEPN6d5?IW|$HUtO-G2e*Zk?2`(HU-XPwisaPEf7V*Q8625? zT4S$Mhm+el(zddt+M6Nx!0vfcHt55@nuPS~+eFT!dvuJDS@^B9ZvM<5>euU5p~cYSiVA5q6dBSIHmT|UFQpx~TC)f4h$vrt zs63ZWk3o$VQMuQL zOb^ZHs%e13aDD>jSV(nMRU6RIR;so9T1)-#+$OZ}>d*RQZCwiYx;{Twm4(Tz3FyGQ zZZ|wP5P|=w073eC1x@CV>$yR%RtZ(J5NL6CUnAJaqZ6Hqkh>W39iTE* z<$CgOyrIj`StVW?ht1vn# z?@5=>XUe;{=ZQ$Y?NYQWLKo1`D>w!E^IBq}qA%{QkE72v2L@8<`n`Zx%J2nRRN`$( zI()MtVR0^alda^*n{4i}-+*`EpL|`n<_dnBvRxQ7gx4dgs56m@7ziTLF?|fwt z$IXXZ7jD<*#l0W*b06}T)e%M}C1C)w?VdjQf46BWf0jUe!E9CEv5-xYW%o99P zxvQAfXw9f{>0VI1kt{*1{|LRd60-Ph$FgN_>sl3%l_Pi$W`PR|=nf8kUvJAv9!tZ= z8DB-9hBdcmA(==66OD>kI>r8Tx)eNNx04s@>P5bN1rY%MXCve1J!I*Y2$1r`tYd6)+s6KPl?)FYa{2UY03{d$!%rrO!j*nT zs$-^{akXc`itYGFVX}rPs^zP}n@M$d(zYF|lJ8352eQt!p3U8Ar9O_h5-d+IRS}E@ zEpm}z;4CA5iHCnUL}8;_B(YpBS{rpTb0e0xTmyj!U+MlH)MkCE4{tTvKX*#ff$-dI zdtT0Y(QSOV)7K7?WjUq-@#CL{u94$=AezViDL!cF(WHC8CTlGL_z=yv=|Ij1kTeq1 z(7-#G#3q60^ziV&X3`&r>iI|Rf|)eJI*z1=f~`qX5p`&VH2t7t&8lafP@@JxT>zu2 zbj_ed7Ir3|fmm%dg>C7SGQ(BPM7MqYHGxC*JPwz2DD*U#-xxSGR8IL$O~^epM{ZUJ z%R3d(RN$)g(-Is;AqO|L^-r5$A`^J5kX%R&Z>z?_9FAIm>gd&+jBvBn>AS_ zWjS)bG}k#a`vTNof!fX#|Cq)pkT7>N&-q6PzvGhSwA3UvnsT_MY~C?j#Rd0woifuxH zI&F6krwb?-t9{^;Pe!l`Yt{n{)E9B7Es9g|7Se4gpkxVi>(|aTHHL*{6$xIqlI1uy z=6O~GvlL;#;{spRm}7s2J411vP{2qdnIb*;@~Pj^upum=H(y0c-bm7)vyQP1s=UM! zyJ(1wc?H`2PvrFD&qqX% zkdc*T^|9pHBxCu3_N9l&e+X?R-=2qdj}P~%*0fZX;e#n$D29fHmdL=LwxIl{EN5r^ z@#9CbE>x%9)_lIENc$Zh6Jkum)gsgh(Ea>xzgAfRyL)FfQy$+@V=*zQ0@tAZ$?vjP znD^YsVJ5`w^Al`_JHXEn_&PhA_bBdF-ESr}j_!wz?P@p9G4LJ6U!J5?%HUHsQ0f+@OU?(0#<55g&JR?-^{y91w)&XQWK7-bWG4Ck@L?YC*R=XJj&xm4l;mYz6UsYfB`5i13^LCI6~63%;1n{fyJl(D44hNqe0- zb&fW+3$&h)_x-5ZEvcCUNt|0RB_~(?P7Nk=1tNShSvc{yQ9}U7;05i zAR!CJdAr7b@Z_;Op0_hoL4i&#SeP&xVm_MnvO9t(Fqy-wm?n9q_-n~%i3W>4$;B9W zX29BBv)h3cq;(psm`Sy zX+pP2n-RoWi=AwEXSE>?UF~PxA`VL5H!;#z0ZbiWDM!RO7UiAS&XRmgD^%tek&8f` zY@xm!q{9T#EL9UQ{8k2(Hiiv@0g1ZupPJY+Qq-wDKOo%jS(L_CItb)xD3i9Hy)Y|p zlF-l~ap}hwo%(%if6}f8Q0qb<{dZ`L_%ZtrSJB~KUa2Yye98s7V!#P`2?F za11_FZc+1rDj2n8WAS>O3Lgo(`_uKq95s_W`r4$0E7G{P_EdBP0dw`kU$V) z``;Aq|c)!fXf5}HUl^;H>I# z>VvDt=-61>&FMOuVf$;K0-vuoLGifQX#1jsxdQDWK?RMn#uN z47I8{hTB}&Y9q@&&0qmUKl({`{zZeEwamVju{!k+z&sRSSb^+9KHJyScDHieWog24 z@9~kvn-sLeab}JH;C`e@WUTs=PL%hytvK{L;mJ#g%x2S+5gkalOuPrUvNdJO*ukWK z)}w9AFp0^S6K5vgpkAT@u}WAU3CHm3)J;>!imo!COf$YW2X7!bMpz}fMn+`bHr|sT z3@~M->jS-AWuc|@zL<{nsYu)H?xR`aSn$TjLR4+Aai57z@cw=`;5Lz;by#C)!g*l$J4sn{!jo`P9+H4e&6tsG;HnGG3z$Tg!ji1Sx3`kcg^DvC&yRY5%{Rt9j$J| z!|Rx;v3~BgtQ=jdyPtQxsX(F~`h1Ql5uJ<0-vJgR_jyIhE|5E0o&g7dvBeU_Y-pcBY@R-cELINGTR`^QGYBZL#Fp^MMFPH9&jyhB!-0gIs_)?_ zf(RX~*=7>FTb1JJjtao4-?7jeK`PK}^lW$u1|#P;Q9!B5$XA&ykq88KRNP-soPO4} z|3c@Q5_&m9AuMzG5(SftB=YRdd6rH3Zy-RzUnjb`>U2~}5QsyBqtDrIMH^Pv1t$W_ zS(gGn$ftc)Y6e#cTbF&r#K#LR2V`@S+uA$a7EE=S&Hfc6U;h?6=xzAGQvZAvh7Hdz zA_4b`wnvV7Lt9(06cvA#(}Sa9MsMc$ZNXH-eW%Q{qXm%nUYsx(ey`}|a53&}E#N^W z7L!f5lqXDkZ4)MBX1AKP?_E0Yjrj8?;um)^z(N5rxm;tNoRM0O@m)KR=ZQGb#rT6* z_v;>0u=$nJZYtji3c5_p;@nudt3_OIB2Kg*!pX>(Y=hSm)G@95=7+R_8hwIJ`T8zF zkZu`WJ7v?GHOQKwb#Y)fUU;^fkHDgfum4hk-D-9L#>Lv@$;JwDukGa#3w#g^6!?Hh z>G}IbSJtPkYnnGeA;X?C69|&4NqGszXjJ7PZ#$Rz)f`ip}oC*EXRQcelJUbdaOp0z8Bw>3yVCx-q5#aPC>cOyj?9Y z@x+Q(l9yP;!G5R1XlxCK5=61wp?mu5hKSje6gkD}@Iq|DB;tR&JDi`Q07)Hd+pwW$ zuobkKx3z~^q%+6t@j0StI_mf*R=QP=<7x9V)fX7@ft3xW#B`gZP=5irzx3O=)O&mc zL9lX|HSJ`!f`xljwN5_yFHCt;(^7#50+vAKY%mqK!W}V=2amLX$&#|3mGO3|&skFQ zD{8M%6rDr1I`5r zU=w{QDburNkVpca3hU_|cKMc7Q8%T8>slj~41#XlJf~Oyq{<$V;Dfmcwo<^;vGC;; z2ad#rt-e-NljnV(%<4vMPs7#8hckZ79J})`mF%)93%P3kX*)B;{D8afyHirCt^OV< z+SsJje``6XjifaZ0Xwq!ZR#uay>ZAChtH z>9EgoA7>P7QgAUz{b#QQdq9ez19|u0@R@EP9x9g0q`H>93u9@Y$`{>=6m}xIh31}q z^OVSJUZG&2_A%kD)Y-~-ea0U5@3jGzw-Q86WJ zpMd+mp^5d+(Mnz*J1MISkIpHv8ABOGGA;HfcDjv@6?G|9y*UkWHFF;b?qTAuH2SW-o6CCi>~xuH7$c4GhFk4~0a z8!7t>*UL7iS~Uqeea5cytcn5zZ*Q2|e-?3^)N+S!Zm>R7ek0RcUCs~-zGtX3qYR*>eex*Jw#`?1s4#+ z>c=mEZ+vGEGMTrW*}JkvL5fJi5vZ0Koej%iS9H=pcB4kKH{sw=xLo|tLMY!E11@u% zTGFeg<+ydw?r!lj@CHbep+eL~iVo{o{!@R-E~!egYRsWH=?xUCfJh^v<*tGzK>o8= zDZY`B!6q)&5_0%P-Z29$EqV_AWB9}Nah51KNh#?9-W$^2TT-9j2ha)?l=u8K;4yAX zh`qUw{k-qah<0|MsQ)9_Y z#N)rhe_Eq;rPWZMb)|K3yP+LZqv>2bg=+H1CfgBbuY4Ew&xOkul^HCwW&F=Wtn8H(-~)5kFi zfYyvp7q*O3(CD!(O(i8eDb=B?K6>Bm-2kL4a!qZ`FQo!1{`mLZP4?CG2}{>^Fx0@N znG!F`&?N_7|9_SCghV@(t<~^*?3OwpR2H@5TFYy_H7FemZB0c zvcD$=OqFs9bPe{`p4@HF+3VUY-Y+k;W27p+W&{Qw~DG`?b-!H1PBn^HG$yn z?(Xhx!QI^gEZp7Q-95Ml3GVLh4yV}J-{0Lwy8EL0tecFi!Lq8i-kS57j{uhFti$KO zg)6%Gzi@z-P#zY}At68e496*ZP(o)HBx@E}ZL|j#s9gk$te6<&n&1*dhkF(Rrg5DD z($KdY?gsBRu3xS``0`b~j0=7Y_&Mw?(8LD|_~$lU-zknPJAc%Tnm}Kz0b7`&i27c2 za41l@C&&ZBrcUlx;vzx?Iym#wLcqbP$|wD3g_%hUItzhx_DMwIyC`M3x%S5<&s9gL z^(fJnB@_Xvn3Rb0ZUJow%91!Bt@ZELYo`NT0SJ;3Kx92+MkKsSQeviTZ>$@+XsK%4 zMkOtMY^OKSHw@8D*ymXdo6-&L_n@>`4_xB{rut_~w}gP$Gh(phhJejq4HmzsB+4hh z98_pyvwnl*{LmIVc}k#7W%e{)Li=VP)v@YC_Q*x-rjNj=C=iyoe)-zFqd#kCZM5U` z+iS-$0Uw!rzq%&kK3Pf!C|Lb|MM5TRU0w4|4Z(vU$Zis3Ea;B{gy%RHUdYcO zvHgy-%UEss<^8_{sSPeO&Om#wi1WeeUIH=#A8ncNT7m&)+n`+v=EN79)p$h%$wW%w z@^vq9$IeM+ksWV@!{=68?mp^O2n$V0iTiqt>Z*UeyeEv_mM*?2F(|jFYgUrHYov!K zydx;5>{D?Z)z^Mzyr!Qi}8xGS(U)4%N{r0!jC=R`rywd+3BtNnyJoj#88&n zD)iQ9DNyf!1d8xdZhH)rhu^(_yvB;`R>#i5>u5^ta1zn?vR6wxWSe&-rZB1@Ke0=9 zCV$wK8D9affvAhB6I+>Gct%4&%qjAzvcFZGt4oeN7&n+YJv)Q-&ho((aw>sfCzl5@ z=L1YXpk`k7bjT>P*4wu2t~IBi_1#*4E_#m;aB%{$ER&NNrH0Ox$l}$(v+~Qiepa`6 z^`6i-Y_(3+mTJA1Z#VIMYAUO;E`bIVJK?VU0LO4JH_lDh;z#Iu+CjF{q}T!Gzc4@( z03s)W%GH5DK%U!xQS?7q`Dzb8ly>^=nycvFWYmD?U-w&pR{}*Ol2_PafaofNV2Ej6 z#vKGD-;=FBNr((^(jg6vfy}iP%e`i$;cW z1%agU@2`PDLCNghal7q6df&DNgD~eVJ}4-{FUF5Dptd6Hc=Az4BLbX8ddi~GIG>u8fjs*R=*##IXUeu&WQ71&i~|ObOCzmI*iF(11+b+SOrlH1Bm8se2IIl@ z-&tt?XTrtuQV|6D6BQGKw6vtPy=fr%zdc1+^nZ#9ecRaFmX}8R*Cze^xM8)crw4$N zvTsok5PW(=(DeTo9^)DD@y^5G_5YKQ1pkPe- z+L6`F2;bh7r^l_@30W4Kui>v|K+^Ws*49U6W@ZO~WLvk@9dtQcs!D%%cUMR#aFqr0 ziB&)*%~ZLjI;H3vH0gl}3>K(?x{vz}gygCK+6r^77%4J^LT@x`tpPYnU>K7-29J&X zB>Nt4dl1M7sjp`OCYrRl;>gLd;m(_1-{XUWga1vNs04y73`I*xfjLzr0NmHjDm#~0)$lP11|M@Q$;aqDNbxoC!w5fH(#l!q{>L| z1Tsa=Zf=Aka5=XaWOgmpeOaiinE>QnDni0fyGC!A%{<({T zK!qZD|MLGppy2QS(ogQ@@SUx3q;z7 zDvinuhM|s_QdBm4n)Gl1pf2JRv=~V3Tieg+6C2 z_3m?sr#974RqOdOl>5~q_*2a*MfN7*bXj_J5g64_sTZyHou(L*}hfn(ZGV+RTQ^7kbbs=Q9ArC>!M~pW$Uuza@bS@ z22wV`fST$X#;LTn+wIbhLf>;cu6P5kzn4y8^ET&(70r&aRntoKvGk3wIKEw1rU)3l z-L;kg(f5r!r8?cR$@QLIp41Lpz;nD2+r0FAbHMU$KP_RRQB4&%qLnrEU3a{|GHh9% zXtz=P_lR~IeKw8%D%v;9THU91e%a)~zW(4$>>I+=L4 z>zZBVE+WGHC2mnlr+*^k)`BuRwYXnPyQ5{7so>)9zytmM($xOd9+wGkWUh-t(CXKU zyz;gy+J}?EI)T_ELgw0X2!XTV}sj&iBK zk<9_H$r>OX{++^{BVW+!wd#1XgyD8`#H*o^swRJC!mvSr^*_55yY-(_q$DK;B_t%$ zJ-t#==#56#?sqd1CO7P=3u~&Yef|9W*b*jctX_kGpxA7y#Rv51k~lRpJsNbI`yV7q zB+TcJaSn*laxz29xGi2-Un>6K9;iw8aX*d$mjpIno}A^Kp+e`gIa(RdjwQ=aqvC|_ zU4Hgoy`4gudibOJLBkC+7QL1laG(7<3wx_Sf0%gn53s%e9Vrrf%=%d?Z>h>{r-ejw zM0JK+R2^3P7oHhhra3L~6Wa|6uolocJ-&E8yWs`cTl(Ioc#PM%I8Z#=(xe{Ir}r~t zGfH0S%G;3Az-YIvARJ>U$|fwuq-OVTPzqQ5XrRvCjFGL;pe=n|r*w{^Z3`4cyEF=r zjwzGl!W~Cljc}HoK|*oR($ad19NI-kmNmoG*7_(YFxkMXP0imnlvio{$84_hm4fTe zf^&iCtg9I?Z1YR2YyNR#=`XY%3)pKB6L!z9pc;m>km1$N>^*L0Q}9NC5}h^LP++B< zgk$ZU_+*S3%9o%7bwpyT!zhbM@bVRhP-71B53U8Kn`R;S<FNR+EbJKsWM@tcyNCg-15Wg3mQ9NL_*yh#TVrKSR8`hg#qok(J^rA5DUR(NBX`uj58rIWK_!Uj6)WH^aaD|kn<+0; zYHwW97LdSJ>v(LjmHKk$co*VaWk{)thm`>u45`uIPg(NSRmC;mKE>1BsTsqm?&NQ_bXaS ztOGI3@w+ss5bf6$@(%>r6;*9E_` z9#HZ8v#`fG6mN>RDf}1`8u~5NkyS@VKo$^LW-AK3R-kTfguw$F5Bx)e)z`y7&lYTG zrpHXDLsymiYqM&qnzBIZ%>IH`emPUJRxwom0;A&LUtJ5FMv<|FffIai6Atvi>K&ZX zN58t3vo}}3ff&>BUy1aMcW7PP((zmFFUMzKLPZg0(bp-+PpmhE8***T{?WU^QsB<3 z(TEGx)(3LZvh+zZo#dx|khs^qP8UDf^ga9Y)bKnb3Je_ zR$;qwsmk<1he5$EA=hIqK0cl;wHX`4rA-w*Ye!BD%XeCzf7o=@1Nj|)ey>$hm}Vnyr?7mtWH zf72^jO)<9#5j}Wp*Ssq@jd&XKms|n=?vH8O=jVi)FGHZ2UpcXdNpbA%hGri-)%1PR zEe`c=8kKQbS)x-iK?4>Oo0Cl(t!2 zwmya8J^4O$QZ)3~D4hUw`7l|a&N@M#yk$LNwfTh8_W~ZK6^M1%!B=HIYG~<;&lks~ z-AzsM-jAKB2M_NmAgzq??NS)PM%K-qe$V4sm;wE3IuqWRMJ*@h!Z0R(_tL?jB*MW> zdWgjNM|Men%Md`dvE_eNEBL{}^vXYiJ_!xofezC5^7M}XLiSbh9)D~wULVbXImyqi zPj9%kq3R$dOXX_2q}ni`rbzMz)=Yt2eiSjo)ZoXPZgefqEV~ z9Mn0g?@9Ny#{Ccc)AhC4-BTUfmK}CFJ8B(yJde8uem!mz2{qGCaWE(AH3@IqOC#^w z*jd`!7*E@jFmAYRFRxbOmX#%_u%4`%S-Vz9#GdLpw=tc|_7J*CS_^Zyr`y98TWve; z6XF7Gb1nXRUnQ;0i?nJ%QCD@3(e=D|2W$HkmePz1@YW7DB;nWFZwI9P*a_w`?FJEr zW&ng5)r7>HXK|3?nThcEM9^uSK@WYFddITMEG8bGjta~IODU@3u0bA`5tCEs<%zlP zrCI3(UB0L`@CY^wWtP@WY8cOrt_2ApWSN+{TP>&i%)U&Wp56L@%+-Sp&+C{YNQ^Lb z8;;3CZB{t!qPNQA)r5oDmd$+>qR=d*+`}>BjDPXgvp=|ucwMm%XIXt(NsLmVY%hGe zB_e0kOnwVa{$8@y6afsurcI?qPqdE7%7V*Yi)a7^EJ|p4C^PUvt(UP@>%+EH9Xi)g zou1`Sp`Oj_Q>6iKk>3}2TdNJ0dC`^C<7>m*4LVb`j1df_$5h*DEHvLy4LPtUYK2tq zKLkSlU@Vlw6{Q)-9NUC~2@-HNZ+)t3vEAP=|1A+K4m2?Dii*HX7u}S=;a1#>3gOP~yphG=^y&5Tw@QqE}QXaI>A0Wp3IkCLU)W(`$qLZGLKYeZF~hWYd;M&_u+W~hzw!g#W6Y0zGlqAF!SHHH-0WdVy2Bz2X z%A^P_5&3D%M&Y3$6nxx;wa{=gN+!K&rRS?j655$;kfmHl`9etI9daX^+Th80#Gh>c zLXypn#P>Yz@FyI$2uf@OT$tlZWsIb!`vFAL!-E4Apd)QKC}v8TvQ;C~vWZ$pmsrYm zvVuvZd%EIyT0)86;WcH`%TIvx-)^G1SK_f);m-%EaEy)-3W{25TWjym!WJtT0RzH{ zOzaLCoj-CTnqKfh`&4wU9NK6VP8I?AjKj;%XH=Rap9q6lyNsuXPB^`eS!@~r7^@WS zWa%S+GlSr<7~!_NlmOES^g+V2})vni#H#y{k{ zCQvj%p$EW1P;idDpm~NzM9TOYGXl*!#JJD^?ZjhNBwMbUtS8e?L~?QfNiGhZMA7aM zV~Wnb_i3*dGxW(Ou9fQG#T?)YsFTi`Be1xx2P{du+Rftp)G~{mpx24!-V#nngJBVACc zyY`nuZ%=B5SV~rb!z@e`4%+8iXeK~#(RGr!sFO|;~jJej_rer;B( zGt-cK`6B3TdTYb2nt?={YPECOW-u)4&gn&-?&d_~sZqsW4`U^}2%VNulw~O>02kuq z`01DQPy)!9ivF$deh-&pWbyJJH>6~Ja>)?KV~n!KRS zTkJTh)Hc@#pRnkeMBs@QX{&bxkQS_8n8_s8} zG%4_STe+-UQjCOw{b;REW5n#(cyD-(X3$_ho+X7n>QG(WeqaKS}QQ-1z5D$C?d3HpGrfy_#P*Dv)hwX-J!H4bURcvc94xrpYV&TCWR5w#IwrUAM(g z@C`4Z$kgW|WpBh(9q$qL`efOlb356^R|_$;Okx>y6_jzIMb1djk*Y@IDsa{cS%mvQpLZI^ zNs^;KuJYS6e@opmP^;9)u8OV}5abd>AIm@*o=NKU^&zh{O}9eL-KS zBaQc9{iy%Q6_GrYU|QS>D(k1(h*8BdTvdzW-wu7XX!4X2(AKe`-Pnk=xmy{*HkUxd z#P3vdwH&=&4F}*psD#=ji)=!Xg)l>FXP6BnB;a&?_3FW7F%gZwxL=Y4T0+uUG*Nc{ zb^d{$GN_YYbmN#!AyKe*5;hWdvLgAEtylr(M`i?vX< zIZo>k+ntxE6n8sfJm+x>NK7d8D@ywBNyJEY3+yH__a=&^0`M&#Ru2JBF75+AL+vkJ znNneRk8E`8*=7^-hYec;OoqX%MvIC98msY2>MtA=faAb@!O`2)s*~ec}4wW2Z>HNV;t2_&NQK8*uoaamh z*+%e26__u-(1U`-h3*ll?kpsvpDw$x=HsQo6RUq%aoMBtnjS)_V~Ou&`ta%xM8Z?F zop6vmuCmzxv2hcc$;on)|^tjy#~ShoyAE0eh8VDLApw4GklyiEW{Ca0b%}-|od1 zq36uPwsvakvr{ImBf*C<192KwO6DgjzeEC2{zs7b-| z=Rjo>9zc&N^!^@42UuLZGyZ~ogA=C$2|@K?C0(OTyC*oES^0+vOQFbiC&fk6KxgS- z;FOvT`d-b)bC$Dk#n}tB> z`mV+PeuIvDKfOhXESphA3sF>c_Q~jA2NxOFZ_LPIKrTFud7GpO0hQD)V#`1wW4Aih zN_NLV^fc5PHK@5sgI%OlpG7kRL37{4eb%JH)!^9sJvm4uRy7Z#~ zl$v%D7WqqYLi}$CD{{R0`A?s_a*zxz{uJ9GbiNweU}O6NaZ8DxAeiifgV`-s(%pI;Xb>{@Ds}hmI|VA?a_V{M!Zsl>%5ZFC z#CZ^_Q_%niqS*dMz7oM?++oR4IHiZ`^>w7VdL{=SOYVu|oY!?J=TJ2>d_;+B zxkn|U?}P-Z&s~dN516hVba>Pr9H%E{5(Hd#g3*fKn7BT?$8jiX4Q#5zqgL(Vv3=4 zc(p^*BA3FWBgR>rz#)*_InRK*v)C;!>$;dJlTqRcuEZRL%Oe}Psn3!0Cwtnr`TokJ zU1>v=kZ!fNfu%#bR}rXQFl!*#f}~CgvXt&bz^EX|_&zc1u^=`H$-y6IHftfj+IO=* zpRn40?dunZ0)V9n-7H8GG5whX^7!p*u<7jqDeLQ%we>u=M)cwDVsLCWEsYGn*+oz+ zx@yb>NzCA2D#is#2urGmsb}SLmH8SwoL_hS21z)xQ3@`l9j_g16>1pt=#5mE(bpP? zN=dan8p`IR5{nf{VvCb%|50MXT!M{=)in4+OpN3cR`IfgUyw3g{tjX>HH9_Uk~e!> z(gY5|1%Xa?CBLOf<>Q2J-fV%_&`$X=&;!(d`vWZPLgOZMcwa*G2>kiNKxGUkdvi5S z&G!lv+pxmy>ht)zlRkFy;3TjaZQ)d#JK4QwMRT54*=pp`^({GqWl-a0wbdxzWB!Lj zwFp+X#zo~(H8+yQL;YTG+5A4>3luPz1KM>HK8I3}ZgB}#c)_eTb3+c}wuI}!n?OzS3iaQ=~5M#cO z9Hu)It`KMGk;1h;+uF@<*#nMAg|`dR=ug*jZv!fh$59vwWv;v4$hOmKkCPLbhA^|( z-f^nmI%Xz8MdY`c6Ik-+J5FBf*QfD0=ZErD_KOHf>IU|wGu784&$XrU2+xa*0X1nT zo~q3dU$kE_tez_oHT!?_KHk3k%2U@hmMfzmYM+;NoO~13bP;o~DG|v^YWI-P^i!|& zOm)0;+nv4y%fB?N?{EAR?PlxlJzu#NEDKKGn{4-yaPBZjfn&nqaB3J1Xmn|FCC8q8 zT?ruvdbJQ+%?k}q>L!WG%JFP|dfKC6MpP@V(3k|PYzuzssY2reOgnC%`R=>CCR^v@ zfdsmISY}_r5J>r7Yf2)>Kgw4E3lmus%GSQAdqaL;XNaB^0n?3ge%$Raq?@iSC)O)m zTb(_M89a$WiXInY4fo}-kF%6(D?Q@6I9(61t;LNZrv64M*uEn>IkPsGcX*(}bIVYo z2u4l5yEjzEzDKX?V{7?g8x+vMm$S8MJQSSjQ((m-_K(kix$m0X|Ol2bZNnjqv? zoVR^JW>^g?N#3`C*5MA?Hc_n+gpH{GQbLkfyyOII`YCG-Hf?8Ohin%cYpWm7D(}7T zvd8tTXMd=isd8Ugt)5wSD4pMVX3Qks^I8GmV!%ajbZFh9lzz$>A#3zVWrCXC%kGCW z-v{X6uk8YAQ{~={Va1u*Y(3>)AJjbATghLZ%-?C5Xv5vqE2-2xvPeBF^M#2K(s)|C zQJ}Bljgc%uZ8%I*X!Es~W1<8PH;<$qTWnnznI<*w02Bh*&U(i&Rr?2P$3D6nH~@3O z>>JgHC@f@QD3wF>3O^-RU;A-$UScsJ*+lfY5y$7-Dn;iRp7KV{D)UI^ya7Ic;6 zD#mtS!$(v}^jJclHpuAMTYFxOYF;99oEJH0hr#C{olfBo3)${AXd`!S)DNCbBH+SY zN!M`TUNsW+=I0bUzNbR=F`DilX_J5V`z>_KH)(0q?$fw>Rl(~UCDvo)V_zECz4(k4 zc2=gBZ87Tcp0ALPk9Wz0^Wky6HCWE-`pAqs~-J z8=7-@!fy^w2?1tbya3*_CyvWc$>f8~;>G zeH&8=+sa-7(Gj~PbSw5q{Q+L~1>PyUS~C5AAQ;Ru3A-!&%P&AcM*b)*EnUZCROH&d ztc|IGZI0_YKt~(UF4Fbg7b1HwYoI1dhyuxlrKeqxkElxHJ0wz>oB+3Elo5f&p4Pc8 zR>@Szbv4$iCWD}aD5Jp~5$Ab`--=GF+tG$bKB4_@cMV_XGQEtAxt^+!k3X^>ho7qh zg!{gKrJ@y`?}Lou7rXLtsBMUk*bmx8eMDmw67X6%5}HC7!^ud*_i};P=GwSl#y+lw z*(9P%4zbxQqm&fYqDSh05+ofXd`|*rTErJY{FkmU*XlwKh~;u;cG3VHq5fDpCn$uT zk(~*`q?6yu%Ia!wf?o;=#s19<6Huv7v2x6G>{oQWU?LGo@D$nRdqE4zid7?gGliCqkf?BRLB;?{agjy$zzBN8m1WjG~QdjC1RN=(eMwX9?l_aU!jD$D#0Kquaq(4keAX_ichuS)+eBAj+ zKayKvv``#aSYO}|~HUlrWf zyA=vVSPmDGzV2)Cc5^usYo1#lJO2=C*808m(B71zzH*Um$9x2u!3=;I__~!aE$myWROQCx!Ya8d5KcDr~-P3m$3{vUg!5N2~3bz&l zQ}~6}*4DMt(~41G$~eQ(z64NE_Fe#86hMxm6L!HsR&8;lY=6E{|IU%8q56q8+m`=i zcbB*TkXKUTg;XOFis=9Zn*)s(BvH-??PgN-53v{4e4mwtr##=g3<}If`WaPxBkcW( z)Tl(Me&oYl7-Y$$$G}a?r@MJzXvn7m(c-(TdDnHVgU#lK6IK!zSLW!z8v294^D6^- zD4loIJp}L_nGgWPw7+i6TEeXYV#T$nsTr`$;zbAohNHefzg7w`q3mLTQR(}C_&Mz+ zJ+-Z^;osA)faDciFj4-m z3D-zKK??z($_yCuTm%7kfGIU3TFkN2l}BJ+4b2Rp&QRRPVJ%?q^;ffs5H)YCR>RTE zSmB@8r9uyJ-<(hFSa{MX;Vp@vq0PQ44KTK)A!r#h>r zIR>h)&oocxx>mI&DuS9Z|D3kJ6z&>*eGAe+LQ9o07`2%q67eu7!nGrvoO0g(;~jxJ zKosC4_?J$PfFk3=qHv?$4TH0QUFxaPi@ddjI2< z)GPGSf)m)T-vQhXp4B&Eub}hx<$YqqI?WqLhcTl(R)MoCdt<8U2?;6V=ZiK~*V_cU zDuj7j?H~3Qes+I9K&3%Qhzz|oa^9SG`k{AF%n9t=P~loIJxL`EHftk{=4|$0R#NxS zX?v=ai=k!8_uD6+Je}6}Xu$*mib09G}t6+uHzsEZXAQYxodlWpKUsk_H7EkC% zWX$X>=X0gvm`~^38rNaA&SeulbjaYL(rk>+ze{bl75}e;-vn@+MJcvZ7mPeI)04u;2vl zmp+|3v5ToPH_tcHCDy-YrAI4XPGgrmFS;zMp=DGQN>g7Ad#Uc0VLB^G$z|$R8;n`5 zh(}bNcq|D(Po(Ow8U5_suVKv<&)&AwUO}h?`J2~P3HqmlJfU=F`4d#Wa{f7kg_4{+9y zF;OBwdo0GWCeq5njVwQonJz2CQ=xy24Lh!>>97Q}&V6(<>IeabDEf!B2rBo#u_~)3 z^v-v35^G+*!UTkVmfJ1khH1l{ho-0G}LPt; zc*g`@KjEmzM0|D4I|$({&p5h7+I(W*zUtRjhLU<@F`no0#r*D^Qbo=9d@*^s5fi!G z(q!YnJVeyWkuS$|+dxMsww%&buS*^08{4Qkr@K_Skx7y3$SJW;5n}KeUVg>+jgvTs>8qy zv*B0ZhlS2a)1FM~1RzOM%L(t_lhFz!k;%tKX9wb98Z&^i%&V5vHKCidOIlPAAsLI@E6m=5s+CR?t$!Re|gTXi^t? ziNaWB77?mM=niE2x;4XdV{j%=`d9jqoUMeQRlz(_3Wo#z?u7wm{4z~p(vGc4j0SHjB9Wz z>IGB}DC!ZZ{Kf{UfcN|iN_uZ9d`zV4>aU?P_{r)66pro9nD2;H@fX(dIcp##stKEX zT@U(@a7h7k_v%z&MyAU3S1*LH4e_=$b6Fhb{Ak*M3={1+HM=1o1FmQv05b}5!Giln zMuoA>$$7>%Xx4d#Zw12aKPyXX zH~CLYwpAVWpwt%a`XAE^;d2n-Zo7JtBK@Iya);M4mzCE{focKrHk_TEb^ceJ?LPtS zH~%j=+n?r(<+{umcWFcF6#i{?VND^~aTUaim_iI}QVM+QAncBd`=G319E*NjY9sm{--!(Dw zzHTUi@3&ZbB1b87wEXq$mtaV=@>Sjt=7Mibgo3JLU#J;Mf=suA*Y$X4n2xvu&3x7i zYYsveXcnD$ZIWLvLbch&n<)0Yv`__wEjx-VVl%;cW7CgszUjqk24Z3I944?bo@L5 zBs&M*zqvcY)|XQVs8+nEU( zVGey!dVf^*YHgd+9QxK>wO!hAfoeJHsQ*2{a_*`UXSOEBM^!WI(DRrO?6W_NSG>OH zwQ-+-FxKoq1jrhjKtcq~!LA}eXRN4>AbH!3vGQA8m@`0g5d%pZI)>yCfdF0!fbsF; z<1&rS%|kjgA@^~rH9x-5(aAlVp>k}b$50Ah{MxKV9yA{tB(E0qN2esBAcI8_YaaZb zH^zJx4d(lZplK4W*&0-%>}L%OoE@3s3k%Ixn_MIf7u|B2&|$z+Z{YZJL>Pt=ta;1C z2&V~ee+u`n19ch8;$o)Za4)CgptUVWa+2K84I$sz8;`GA zl?Uhs>X8T4%}MzL1Z4qDkj=%G=+D5w5=H~5A7klZ2n0gNiKmo~8M4S%KrIi5v2otW zt-!wxKueUJ4fIHtO5=X`M-e>#-h2KZ6dj)u2L`jJO%1iOYTfaDu_dKQ_2vODpnt0M zp)Y^c2~d^a_yaN}lIRXJlu*c(Mj}Vv1Om9Yf2AUyRHlm+C+f_U_v}>zo6#Kb+|R%O zm*paQXE@<$*orw*J%wfg(R&2frF!`lbBvixmll6){3 zO?CFhvktJ&7R)NL#Nx;fuz@m$6DmwDRIjVQA0iBk88ya#rBF8K&2SGr>>_VB2=ETf z1d@GJfW~)eX=zFg-&H|YR(5Zu42#KXB~&Vnt*FkWz;1VRuEq#%V`F0~*;g8-jnvuA zZJ6j%U`GdVV!{v-8m#b|^u5#K_Ilv}Xzo+VUAurC+XWjDBO^+Qaz#K*O-*y|S!I2F zJXq#cnI3?+n=RH;N~LoIot;_N1&j@c z#Bg69I2N;ItoBbAz=$cEcvBQyFgiL~rbLNSqsdmV?3>+pp+Blsdj3zTMEHp4$h1}f zVTtD+0U4MZ2#JV5Ub(ity^Z)suwXQ5Dlf(nGvLT^Vo1}GL`O!xV`pb~IgisGlZ6N2 z>GXgY;^X5@CD*@|=a4BD|9s1sLU00sK7tF5U;)jRjORx|&_L^(37-K+SSDys=?@UB zR2M%I1R1QNqVgtY!k{71TY++w`5C12Z=3f2xBTU;tKahs6S9+rtEp{YA6@tu`HO7WlbV3=v61 zX7?_9e4VEw`aK93Z<}Sdx@h3-PXhlj8qI#BMb~Mx{nRX;@XpI??O-}|`@#_2!(Hd> z2E5tcN0t;6s=(~&d*zC5we;@k$-w*VtKo+JeQjXwn)%=l5E+$)|KM}KHM#dF0Z@`KP4-b#Qa!Ex3)fGUddil2b2(L{D z`P{rCBjNY1U7cNBiy32Qfn1fJ)rP}eGc!tMS*->NREf8zs}b>(>U=o}c=VrQoZ+6R zl3P=PYVG!qkHc^|T?b6EeJz0t8lC<}C>!xbq@_@SRN7QiYh32i+T#4Y?)Aa+-h54g zS_(w$bACKE9Q5`hMvEg@nR*Gdt@Re-K6xzAC*j*8^m7xn?glGYyr>yY7J~p8Y>SQTW;6aL9pvt_I>kS=*nM2)sFo zJ}Zd}$5mU~7yw+8rMYC4<$n5u4JUNd7{S)+)nY3a=MdOGKkyQ~2r-%#))k9v2k_pz zVH8OCoR47aO&#VV!@;S*;KH;%QZb;Af#8T$GthdjBmDjSZ3~Adq*8Be z?_J&9)5*e47K@NSQ`0^a*dEIkP3oyE#K|OZV0L_IgSY9$LRt9DSH;#nwcty5w1oft zr?$79zmzq_Wvbfa)<`-h7J*P`4Tu?BPsR1Fv%WKOuJvwTf$hm0DfG%-u z(&NzOw2C25Ng4Ja6c*YyoDe3oO*`GyWh`@W8XU@iDHOq!ucC?}5BS*zaCwCGVbF*6 zQFp}lM;A|HUYDt1grQLvW07R%gatILGUd-LV9IlHga$CL&|n&kGGMmfbro98jVBgQ zpnt((L;tcnT7UIT&6tcW18SbZu^ZoPxjeB8=RZ((fUs_GaPSULH)JhU5|AC7KQ_uL z;SaUy_rr!_F^BK6;E`m|(_vy`Vg|2zK7IlBq;^KQdzx{S1xV@tYvhFX$jbES9795Xt=Gt*ECj<+cLXQf>=6)TfW*`P=UcHrDEPDn1=54yVvUtdN)JBUvF0+31kmrnPG z{Q^i>*mzCjb_FVqiwiu2AX$_zZ^@CZx@cfgF8H5uw@DG~7n3haH(`0-21X;(6XwLhDljnIB@}=kuDBZi{t{B zwY~>(@93-jMUuH+pOD(y+Yhj}KTYrnTro=505`^^W<~43F*;^^5b@}K9J%t=6Oh>R}Lgp*znGD=uW^W+tdr-nAK9{3(b~OXA#|F3AtN>W@y3L6XS} z-j~f174wyS?&Nv>BM$KQ+BI0wZ%R61ak(vBzvI*C>l*D6j94*J;D~pXOuowGZ!?o< zy=umqGJz?&o%}4bBSc5!o35)73vLho6V{(87kGbGc!|n^)ect?9yAIk>yyI0YY4N97C%52oWCPLN9?w-SY#IoZ_2V%WT7RI z<4I+)dB50THTFjnXplHr-0v#cgd_BUxV}b;04@pPr5j!I1Rx>R zG;9#C3poGHylUWLg@k~jR#Zfj%0WuZh(GuBJ5d*jPy&*sjJf$c;r=7>^NoBeNAzBXi8>0PVLNbJJ1}x`foxOt6jBu?6#IG! zA2*Q&U9>#HFll~_I`9b?{D2v>0X0@@NwLRyfk|yI@aELTUSgJgD#a1cv7a2vnr0hl zK2l*-799M6lv!7+Y!=H_P<>|pKx)rMu;CYhuVtS@`c5Dr@fQJ7mMpF&nG{Y|D&9vIG=BmW2E+n{XiD3)YDvtH^19Z6`r9UT&`D_&5QA zi`svq?JdKq47+Yor6q(#m&BsGMLQL7+SMw}!YHGy8qfg#;x^yJe_2yczH%q$`h1^y5**o5m zYAe(hCG+~mb-Plu z^;nwEtGbaE66>iDaqo%K6^E8(jZ>da$&iA+Q*?>!gPD2_jg88~g72EMLxghj!wq`q zo5gyuDR==1XGS%@e=3Ax1<>-~lUs{CO0q*O35sl7rLrdBnjx~M$&ZJYeYRw7KF$7f z8$^0fUsHwnq^5I@ zVT!2$JE~+Og%J6Jtt~9)KYcd`k_4Wm3YmI+`LamuwKj8H*76cF zm3f#BiHBHTKJOgCMB`yqa;n76!h^iy^EFA?nai3+PP)Hk@sd#o%Uf$^?aI?)+dwgG zKrVZ-qo*HBM~YWVJ z#8?^M?Q9POf;l=LqBc#yK6w1~eLIazrhGa^v#YhGLc(jFN2D^bx-d^p+gyd$n_|x5 zVV!7=*YGt*KJSMtW6$>VnsfLb z-`S}l7_RTT3f-fNmdqZUn_K3@dJ*%jfQwYTBaAjEGT4kvZCYFCQ;oK^R#Ttsr~=Gh zE^a&s0?OCVBbicbeSEJNBI{$7izs+Z-hzuY&(wQ;v)_s9KD<`9=vTza6Dbp~0gP@- zr&R4cftliG{W+n%nTqUU`x3pb{7KvSddOr~Of(Gk@(Z)fYk)~upWk?sqT>V@&+%`@ z#brErg!f+4K&4LgWb^LAAeR&gC3YaGoBw#8_dV^EWusJ43bav%Zll+E?)DjKEaSYH zT0E9b?#Z3&TZzLjx_YJ9N^z)06kuN0t{Fa_mTtQNj)!J6G@sSDbOLNxqNVR3zo52S)vU=BK`({5>2mDb8+_hkw-bDoz}NcL?fkXugDN3)@;3`#Vg#j zDfk3sTp>A*yj+WNmYT2XTj4}?pJSrW8G%8*LnXW)>9LxYxvgvyOcfgJlRvInz6ek+ z2`X{&a~jGw*#qi}P}yn&x%eqn7@^?9TLx$rI-UgXbziLZ;Mu_loH#^7gWK=$9{-EH zl(@XS{Ben+K`!pFQf~D7eS56INgT$O6Bxn792x1{5@=5&(*5s$)wM6ASjZ;hK|+f} zBj(}BdrXT<>dF|IXDnse8x{0@3_m#CFW@GKTPzY`So=1gHAG7Pdtj>mPd4&J{O?lcMcWR zkmdFS(J(yJ#{!-KQcv&I@+n5)z^pnRkd{0!GQN(vS4RCg<$a26QT)WJ)+WKE(WNik zjwgxuH}__I3}tTA^Q2IT^oZ3*FYp#5Q6h_<(j^c9b=c>z1Y~3^)Z^~i0J<88)xatt z4X*X^oHdbJAL&zrv0<(BQg?Ptlf3`c8ehUu$q<)!bCQhhWoct;OeiE*YLK{K(&bFL z@ikD!MH|BLkoV{?K)TG}@DY13PW*x%Z+ZD^6`#7$m8Z8?8X6;@u5*!%mVD9HD);iG zm(r+cZ~wi=@>80NXKUX%Dd-mCOaWMv;q+rU7$juEEcn}vkGnynMi!k}2 zt45Z)7u}_p{WW%v3uRC~2uN?kQq5usm5g)s=s_PwG^R$Nx;LsHV(!GM19^;B!U+2q zjqd0k@;h2QqsifJxGym5)xQt)2;Yhf7r%BfI$d zjWl1^>bz50XdK!5hMpE3{ZlB>bn1aH%DlxfDNkdhhPJHxDu&DV?;|CKxC?KPM@kKF za&QEn!qhP8rzx>7O>pqsHy)Ml`j9MmkoZ3+l2ifzB>bTEHm z*oCr}sP7P$bp>(qdf36q9uO2n+--F~An}E#>#ppI)+Yv|SJ7QDSoOX;vgdlCv6^@k z^|*q#N|G}_yHAI0v+(;36~*}^X4T0WqCX=OB=q{qg|-Feq)@<*Z_x!48_zbk%U#Q` zNXquMl7fIQDFVw?4z&EKk{|U7g)G)tzFM;19*Q2?rw;vCC4u}-aMe$ORNe+CRoeuN$%hmhJWGRqv%LaW?=?`R9@ERCBPub`Ec`nTswTEGmyq2AhdI-aNB?0>ru z4p9Co8`>ykv|)*9Wy!DIghO0*`7kTMXQ}O{y58{~TyeW`si$=~hSVGV<1?`!??{R0 z)GmR@8fWPQt1Dn&omB6<$91lkJl%%UhQN*b2t6jqP$;I!x8_bQR(68I9;^@eeisv@ zPQE4TUAX6GZTR-K&7Nj`-QR)r9J{%ZJup!i^O^Bq;dscqpto;PC?9*^?atM7MvLDt z%cjslj|5G7uz@YJ>U}>vuEy;()6Xxg*X~3{inwTGeK79%W^A22P%z=i!|HNDP?{*x zKG#mrU4;8&R}(h_7RWPV`Lu+aeRnUCJ+I0o;nKNugs8^L{%w#H%e#Cj7x@auLim9W_fqeeK^YAj$1t8MWMVbsyCc=@%}M z?y*ZAS`*2#ivGG^EI=5XfI=^$C++ja)m)TALEsW!z0tFCswJ<{ZRy{|5m^H45$Hb& zpxvj0gKFOhBq3Y)P*!$8Wf}#IzUHgLL9IrYLK~bU>H*PP0`h1Ki8T_lGOOR>ImO~c_ZdF47bpj}TMkUeK2$4tUNMf;Aijb5;K%b%3|1%N z5jufNnL`qYSvh>ugA z&Igs8TVeVh)b_asUiL{lexV8{W;$fT^JikwE&0Ny_59^-pY~_^jlRZiPSAg2JpU(A z6Zf&Qy7eUw50671=jCJ3B=MUwWIEX>7!dk!+?^AsNjg*oceeugg#rs}obBl{P3xbI zxxNnpbe|1u=$+mdWPEsNOAe&mvxn{ijOicP$6%MSyR%~!9spctKGm2h9eatgv$G>a z-PMXTaI$40JC-^_CUeOWSzgH8FTAbyJr3Rcd31Et$-x8FcxW|IKr0&!v}#};9`!mO zPVF9Ckl(#*3uy5sQu8sU+EIL{ZY97?jswRP3#%&nHZW?&T75zFF;a}*_86l}j4D*7 z$mjbziw|g!d2${T*qeUjwY4==e}8{h;L45!3g#<@3wEH0MLt=i*?WF88!e?24X8?2 z?SDn5m<7iIpbJgzy+HE{LYi{4pA1vuhYzDT^6jp!CX`9UPP}!{o8?8}5v=XZm~1c9 zqO-JJh^2HU2(63mG_nmeQTNK!`|xf=TWn5L$7$yo$_^D)c6-LuGK{aqYK5wYFTFq?sowMGWh|uVqc^Y;Pmdv@Mo{_~xehghrWl+i>dWTJ zN;V}O5y~t7_>>e<05Fb$me$(2?_R^k1o?oq@5OQKMm=~d|6+}3|9@Cx-+WG9-ay+D z=;ut5XCHI~Vf6r9+027F^spVBnlwH>ezFGMmx@F2kiE0b9vvMWZ1Mg!Pvzud2ESFm zGIeovO&nJaXg9*UZPGkUnen#^7XnVeNmot8go&)`1N(lamT90h0LNsH)iqn`iJYmi zPPPfvsx*^#y$2y;1U;C;#U{B*R;PQux7VlT6+Ad^E_3>)8h$EL5nK-2W?ligF%VNA zL>|C2s|T24RM^b&Hedh#w!gpsJQ)uR^dr;2_ja=eQ~Pc;t6n~Hy{B?x`bUF|Sujr- zz4elFBWu2XrR$#S+EbWQ%L9?8+t-(6I_Gag#m-;kzaQuZnvk9jE-ne}5XbRjaLIj! zNuhmLpp$lgr8inO5Dh1V3I6d>>k8r`oM_j+*}oYU8*IR)K=U2Xb|ek5)^LVO?9 zn}fAvW1rjW;{;eVA|ivbpnWKt>3QvH>32qJtzC~d=YR92!rss_LWcC^Fq+#h4e$*EiGgn08kTjo zfqAyNpuV7pB*!X#Z-(?H;U$;?^u6J_x>F?MaMRxtKG>6>r8e!+_u zns{!0?;7*YvBb_l_&js>v1qsCFQ^Fu4#R3Wq>16<-~|-gU0#M#gZ>v)Xi$)iYi#b! z>|OJLCww-f&x=X%h)_+Hgk%om3~;-8B+s+>);Rk^EwlEvtXP*lelZCU!J{6E;zNj# zMg`qySq{-$+`2QXhOVP?5j;C8uJaoiDUuMYf4YQ2U~Md2fzsXGTnn=5vIz zKdJc{IINfpqu>90wwBBtMS6E-e~H`gMkwO)cfWLxeEjQl|JJ(2k>}%$1dQ{8EYK*& zHHC4WR29y3`}x-g(c(sg3;taWHD5>GtQRLUKc4FG>tCNdr zL~2^bQTaVf4O$J*1j~KS>ZIT0Wi#Dh+{RG913W&mf-}sSQ`Cp6dwkT z7AP?Ta3)PDtzYKJ9e(i}jLyTgS#)WDgx;>;=7e>XKtIPtVHj+BAHSAxSIZL2be&=G*FYsnq{8!Cy4BQao9_-CTC--AA2;pqCJQZ>jqH|>pL*T_gGIB@Ua=n^&^oXipcDVjHIjSwT8!bojBi+@jE0QV zC%xVbV$#VwRZ|MHoGOLkZ6Be}e~r{=Nfe4w!(pvby}K}O zvnh7cwi}(=fhR$jBQBd6b_pTNiC6~$)*1J(0&7iWE!V#y&($S+KIKP7ANVZyDL=pQ zuydUCvgYi!t|hEI*U|LJ&gJQ1rti7A7F>fJG^u0XDPW5PCUiN}tL@$0jEDI6kR!RZ zgzOI%O$bzmH6P+4-B3hs-$uqUu&jS7{O;e9iu?EsHO|y-pmBuHf1nZ0w!P-##o}1! z*n8@J?sM}2z2kO~w!YPye=qeW9a~{l#w3T@j&+!#+`IUY*979`$Ak3ShvwAVc6+MXZB>pHsUfud#>66bW0@3{nLbA#_uXc)(QVm z@)B>xl{4)Z#Y}&W+`SO<&7c;%uM?|Rqs6lc6N~<&K3Q@Y#REmU0QJoaPF3?dlGq7> zmPS|OOiI(z(Cg!^Ts?-orl-{vZ}JSqgCIhHpy(=c}b-f5v%==Uf&9daoQEgfV zT9o#D5}M;H{Mi90-)J24Y8f9T{eARE)qt0Rym~EU`4?sK(NgkFfY>PE1ibY;y*Rwh z`RP!;d_-%M;$D|Vf?Q}zZt1lVi=za*z8;e{pP1%s zwQPS;028Ecl6ooB&@y|89~J2iuG;{%z0J0BRMy+)IkWX6y6eqEvpmKM3rT$v;WS^T ze1kh(+Y*(L{bEAknF;bKxJ4AzhVQ^0RPcN>uWbehdk%2$41`gCnW4~Hi>D0?ZjNuX%ee&|Jc|YCfklU6DwEq&fj>lq5)bleoX zCTv_AVkX9HG8LIYXB2+U0&)3+rJ8JJSFwpt{7*B z()|D(8 zVLH;DI~ER#=n~F`-b^*NN6EjiTb!(^yo_UYE*-kyf_nmJpU1>ZZ23E%+&eGi+NCexwiPjH8KNX-)8^#%%!vFiX z@l5@6z|h>Y5_RpF&lNtJr2IN44=&|PPy(XZ($j<0>NU1FbqyY4#=f46AuM?uf|lea z(<4iJ2Nx*bK=ZsGu|`?Q#4}g z;lRUp_|7Dbf0{6jsE{5Dxx4a{t7eRoXTGo-F4OJ#%5GEX z_Vr6?cZd=H<{QEn26!bw5BP<#%x}qazZdvO6Ar1EQ2{x@Klk@TIF<{PNnRCS6%G3i z=&L{SCf2IO?xB^+SZp)YYbatXVrS0)yrTD3lV*ze*MnT0ppSt431GyMTe|iVbTS>Z zP}XHAXGvgU5CKS!-U8T@PbByI+$@${M7-3TjQ%28mu$yW;h3*%k|!RPF7A^Jl(bR! zM7?+RXR{=H3Y2UyRB|k9j|s{!^6UE@ZjPP5bl*pxC>@_{vo%{Uy zF1KC-(gL;rom_=Nw!9bFXx09=IA7Vy`le|Apt8Bi8MnX0Hxp!mTklpFP)Uy86eghF z!@|-fnem!Xx8}o_K;GcB%@8EV^L7@5mf6BS@$PD^YirGlU%>T}YN^WISXoYqoVPP} zsN%J)Oi=JUhM@xLT+Uvb#ngUppGL|=&wN9lY>0qf3x<*4Zm13q5Hkwv3R)J=XDZ7- zxk`&4s4#oh^}u&UJaut|fazu*1}FeEwfq0791?bEO=5fd3}dMpMiO=oL_N^Z^0Et~ zW(+poC{P_vEKz56Z~vf|JBkX2U5`2BV)A$oXJNjfT&tPX^8G8VKC8(L^`xH~rEl%N zl54YTlmxu&iD;5SvQACiyB5~@l;CqeJXbOE)$Ev>g*8_5>Bpb--~AWWlC`sCoEqHb z_-g{-1wX=@oGF95EFXD1d=q3l)WAP)bsVB(0h^fIg&!`m<}Z9Y?yoiP?;O*aYj2sm zvl)Q~Gh7TvdHn$BpF*#v=`Pm&fewo`_Ls?{+&pqTFFzi9IzGn9C>-IpBQK8bWD6)f zBxl=(El-R+6W7>Mg)G(StZT_DqsVt~aRxGqAw`+%bPQA!0}dj%DPgIAC3Oypa!&-E zKY=Yx1XQ?ORjz_dbfF6J<|6gkjkhIi-+13B!_jnB9gVB` zj>}IZk55uuVO>SH*XVjpXpcmYpS{1M--NW#g#7ixhhS9VK|*pt!SNeZo`fL1P>=TgLEVH#L*74e)GR74&gkkuHp4{P2>3Mfra5oKT(qN) zY`ctr5+BnC4?;v+D6ay?6-6z{CDLo5dR%PR|I+XdIo7+7Y?tr@tKF5N!)4Y4y9-*I zT}9gc8SGTu18mM>FRIK9;?98vdkG_q>&1C-Z+D|N8;N%v5=@vB=5 z34gwxKfpk&5I%>PPVL+8J!plC{6!A%9O%Y)LDjzs&KOstZo=sSqAl4U0+!5v4Bp0 z!&A2=d0C4!_}EvbEY%J3f-%=vUeSBG@BM6ePN5^yV<(s|Kcm*AQon1S(G19Sq0R z`UVL>i~IcVnzq0*x+`qWMEJsPOOgKzt)?oYP8!4frxSGre@l*HFrJah=JMA2*!i-Ve2c(S zz+*V^C8)J3p-eFKy-y`z_#$e}Il+>f+)mxQbFR=Q>5kVNkBG-Zw(54*zZt}r#3Ht8 z>uJe4W8~`25UFpO$kkazPuu)P04H#eP1DR8ADWe=Ku=0!D}#ye_%v^2K-Vd~0bB3! zz{4P56N=b<)=RB5Ey1Sq9)}`hwwbK4J3JF2ucJ@pXNf>Q5Oi=rjz%1;aerWuvgtut zHa50@Lp)}jHVdD!zZ{8YsrCw$S8Il7(uCRkR>ny%n1;;85HCA z4rOyBAaRni*e#wK%l^~EsZN3l>n~BN0!km^pt=u$kIgh;S4V!sX@Q z#p!o%<*CrapZVzn!vD@mxNAm4hG%JIB@oy#hRb^m@NdP)A<$e0hnVqW&_0bDY4LWq znXQyA>F?|AMg@>vVmoAj0&umv2NKyvOLPT`4ciP#a(feh&;Iyt2%P9P-E*}kG=3&5x4*|8cKb({Jh+`QY8x01S&GG+PVae_ zH~G#3vxj4ZyyCKfvxUl1*Qmu8ijdV@J+?0rkQM{3TON4t@i@X77~tCwVq(TXimW|= z-}3I$25UVAY>jz?{P6`*@nw}S79WSKU-hzpc@6C`1Vk%)aAoqA0+?#3mFkf(C?q_2 z$7}u^Y;t6Bg$6Ab3#KH|P*OStzXwO-JsEO0a^AoAm?hWWBG!nP9(GuYAeuDu^q8H` z7g1(>;2H7bhtb>MU?@F34DB)Ohg35s@R>zHLFqF-g{4`B8k?FTTUc0}GwT?`UrDSY zRg{;VmFc#mKhx9FO4Pz2 zcL@&OOK%e&+%>2$k)D~I%>?f{vu0_kkNztOg4iAP$HZ(J*mibyTU1|3{wJ=E2N_)f zCYH^B;@$AF6sS;@tO01c-eCy|P;5Dok(LA5z$^?gguYO%Fs}K$Of@$Q8yjx)+T%r7 z20Sq_(Whlu1x03OcX!RNTX=mWOA_TN!iPz*%bJMe=~w{W=;$bKJv0E8rTztQ?S3Uy zPjdv&LVwUHTwk1+Z^zBmSTEX|n<#Yz!@V9{^53Y)of?J zfxvpII99MVOB(*@cQw>*UANkjwkdIn-bJmaCc2cl?5Jb)tL3^s-zZSW46;j1~b#9P7u1}`P@EW3ZYOIzf zH4VD~_s|?%{D&?f{TeHx)~iEB5R#SL1i>5$p+YieB@aryMzxQoDt_l{Bnj-=2$$J7|8T$Si+-a}OTf+jb2Na3xh7Yw zb+*^^YoyuJ8I0jbKhz}PAcT!g)L2iO?95bHF1CsS!xTmWxatj_kSvTd39Rh<_AMt# z*l}<@`fy^7xCR+SA0`<<_DWGx|GesO!5G6plH7Y%9aeaT90=8Bei);K0HYnY8bNl3EUP=m)$ucEE3KH@JH<80>%uZ|HS+P8dIRG%*-*fUyWb# zz1|U7D&&4*e*}z#EcRCxH#UK8N~rN`LA!alve-GSc22v}?B3Q?NfD>-VTz@IKldo> zJ32-kKq2X6z%L1-zCptw&zXu5f@H_`P$!2XP$zzWmiTNPP#(baeZK*MFsISd8rm z`DLAwF*7Oy4PxqwIecP5P3X%u_yg>^R1STbM>H}SWMV$`!m@uJ9O?qFxmcqi_CDR~ z1{AxJsj+x)R%@GA=SS`#KZxi?pSLr}WI_CkKxFvzS93sZF(1R+2y___nW?6G#XsC(8_}0rfoD_Y8*ro!b8j zqTlEeOE-=P{x^X{Ut2c&@virQ2NR?2Ui10-ht2s0zMiND;c*O#1F&Gw^pgaZRg*P; zMtcfqE{}%A*Wl@|fP>ts5$ba6M@ls5%~sfUAQ)gWxw$$AeJv8O(T9M+Jx^0HkA0)Z zr}NI1)1?pm&X&+A#eB3D!VbgA%D7&Bea|54_-gV~A|;jQa#!dh--~L>I2)ikqSfrd z^WAHkBY{(22dHZx4ou#I!2J6Bfv0+l;jzX)`@#N56&4i;wLa>HblmkDX=G9d_6pW?5;e!xTW5wH@){!-qzYbb*6) zv+Fvh?;a^We%91{d_uxo;7%VV^dOxkQq?Sk0TPL?Prvz-K&lAyKdFv#T>UKZEgp3( z*EjGon3X~xlno%7g9EXDY)BWyEq8|x5;J8nNL840KhJwgR^QY#_`!4ZL<&W<%L%xU zX=4%`2om-*oSr+{4NbQpvix9n2u0rCfX^BqFs;4*U z^7YZIMY{3fYQNRjc&514u#6PTrAohRubLz(%{hy}x;jB%giV_tiYYwWV*e$DXN$5N zG-zG6CgjrqX3Of;<*N$rujA$jZ4F})SVR4;%)df?-rd~XYyrn@)VKyz=`jKoWyg6( zM@M*6lnh{50*#>%@W!ox{LMYwQUF9n9B*%LEgc=ijLuLvbRE1=Y^O{*vN@;E)le%Z6hBik+uU~^Cy6Uo)Dzmvg z15U<_DG`ef(N~0xNYT^am++uK*da%+-r$WANn@Kbz+I&UKVH!^R>PAJw4@+xD~#n| z^o__uLPGtXV7!lPfoN23G>m~m>o5n~f!G&)kATrkE=EB+Gy{%d26w)# z2XoHNh-~^#L{}LCq66UfgFhC4AVP)*xl5dss%T~Pi4q7W|2Ysb=kLG%uN!T>#e9$r zdXZ~o+jX6eU=BFTgkTaeiwX{2CJ?kU@qv6mTWz}9#^E$N-&FQ^NY%lwr6VhxKQS5d zjsQ)%U}V3EEG$|4Lo`{@=_i46wntF3yX~>?XFwq0?^X1rg3LV#Axd?oSN|qwRjnrY z?|(2`{4IaMm;KT8A@Zm=2%Yg=#spe`csJkI!hw>{Bm-kVOW~sxYJ{1+>LkH?(A)LtZyFMG z7Zeyq-944x^dNWc$a2ZUB-EIe>I5#Arq-OR{eB5Hi>`4UzbnU^ME404Y}0*1(H`s6 zqMJGD@iW_#^k#g~>E`Ohh~Lkd)!^KOwiN9h5;I!hT|Ysok%Q}5%l(UC(%&nr5jWiw z*G!xeHJVJO17m4$<)=y8d64!ba1)<&8!TpgV>;U3Q)U}ApJ!M5bt*cwBZk^ZK)&|x zjv!J*H6vd!cRI0iTja--w%o2T~GOdrcNX2vLdXDV^c|Q)39$YJ&E%4Sn{nG{n z83lNQiR3=q|Ja#&a=El+7J2d_cxjr4YbBia!TyQ}m+|NZ@<@}dRBDSCmf_cL*t*t= z5&pZV%?njQ^R?9>e13j)B0x``xO;&zHZH4oqRp-Ibj+5&Or5Hz)emP}wv8Q`y)AM# zXo*WOBoVdTCLC8uzk%VDRwo^3@!@7I#~t)2el7n|rFk$(k+#3m#AQ62j67QZQhPoW zp1l263nSJOB=eY*v7M%ytLAbFqoy{uwU&C>l*Q~E6S+@v$EZB&+}Y|M%^CgrSv2Fm z^{J8G+cC6XtL~JapB#DJZ=PgwF!^;*kP>HAO>Kwn!u!mKCO&L(4x~L;-vxo6pySvt z;#8Yr?w?;d_Z=K#PRJwC5(f!8y97nrk#@xXrln?JiDx49-fEEU!MZyazN^$;0F|d9 zRlNtc#Qp_(P~#TH>|;E`pc<<>mSwIy-gMi=lD#G~R|hDydvmszV+TBE^Qn7k^g=qB6-u zVzLDSlv0>ifxmw2On#dsPRk{Js4)c=b6lv3b6iRSE4B1qYzV_|7PDyudf>LuJ<0Mf zTp-9&Z&uXj^u;vTwnL?=dT8t}aZfoGBRvl6qGEPD5+BxV!XxBkqGutUx53ig5@mvY zp6(Xj=N=5)YGN-pBo^HMMuh?+fbL?Z0@0-Y-fy%#PJ}5t^o;o?ovl?`ZNIQ3p(Yb^ zI|9Wz8e#@G1D+TQKr9>fi;LLkCXY_;nLx%z%~#s~`^T>5Deo{oQnoorA$EDhfr!3D zkJc3Gv%Jnt;7{c~AMW;MOk3=dSDoymVt=eB3~Vz9*cD3#-yTY%*nrPj??Q(JwAeJP ze}#rBc3t`3H@f`^cwCVPxzTaH$t9y#LDv?gCL0ySmn7Mj_$60tD* zS+#hotxdVtw7gH78Pkvkq(CK894a0W_ZUQ<@S9x|GdEHy&05U^|djB4BE8-y+YL{T1El1vWD6i|> zxcwFZyb3#Bhlca)Z|9N%l7E}g0`9DRZMG}2dXO2oCY^l8QX}($D z)oXM_*C`=J7I`SSNJ9R@&5S?zy8ddf^}@e~)Om{PbyNIn_1r6Svr z0x!?hCO0gpHvLSSDwv%huno+~As=bB^K9V!x0x`3&E&IJ+whUr?E;0RcGF{}b9CcN z9&sQ<0-=RC4pi38-1d4~YL!GZK72mbdGE#dpTWF)N*K}d!Ncbt+~bRqIM)Lj(vQ1; zQ6C4yw}>KC=6%mE7CID%Cp!+#sk2^GZH-v&)!Y zknmK-W&iMq^g+T&dWr76k9JC1#Q*M^65_5Y7ENZnDmk1v?X{%eO9{YI6ze%>NT+$( z>kddrdk!yT;qqnH;qU7!ezTFD-XI04&hdZB;^c81Bpc0UC@sA}dSl(%RftLr^%)lg zepPtDmu>(LPkv=-`Sqfh2ddz-Qo{D)_eT)#ThgHSM2bH^OfBE2b6<1*7uU`q?r;7J z(l}-}WNKpaUIrDBF>fIuBmXksN@i9;0tTcB;|cyrocdv#n-STmVNL4U(b3UPiwdX` zbBpwhj4~yjm8}=OM$pzeO10hFPAA>0FJsfzXG|u*r^(xXvoi2P8U0T1kNK5 z%vIxUs1g1bHX|q2-$PM??QeiR@0pq+*3i)Sql%%@4npeJKOkX(|3}YtGJwn||5@{_ zq&7A-+(w`8tP`@pQ(ok38Y@A(NWZX1uJ;*n)9~{Xf`tB0B9klRv7gb*L$Wnp7A;^s z)%R+^e|c_hVIfT-HUKUWn*}fiFVer63K3_M+pZ+gG+A>2NQVO`8ibxH-*5Vlz3qRi zPB==y00#KW%PsfZ(jdTBIdxZYx8x~f$%?G{;GY%b&TcN*? zUsRqluI>)LV4tKhX`K7%-h$KFNJ0W(O>iY05)@QiG6*%2_p(gi#li16C|uh7h-rqw z%=X4w#{o@C%5Kk`jF9Cu=8NZVKR*6jJOIV)@;*-H4r^to7h&|JXUFf0gdocrn(tbn zp`ide#yW^LyxOh2G@|(vKeHmhB47t_12)huxdPUe+@#o697HZq8X!(Utfj5p{`Kp# z|Ddgij8FUV?bT6%Ze8h)%+YpP8x%Oz>Pw;~_RUrzsGUbcA_V|oZFJlH#Q8V7$olgk z1k}17=-}qo1C(0L4u=6qP@Zma*L7p)0rmr7HDbtTojSV*04mDk{D3X$8ti8v#;ooUI3Ko2ZFEccz$R;-|R`C{z**&*g}tHN}*2_zCfRvn%W{p05|>A zuhMZSeL=$aMc+++X_oaJoT_`p?<1&B?hxf<$dMo9;opq|<-F<7v0MaL08FAW)0CJ9 zyu&Ez!Glf`Y_GAJ49LyRZDbI|jQ#N&h_3LG)&TowFm3SMEfQco%m&Sm8r^?IAtY}A z7JjH_aVoLT{|{FJ65N2m0v%uj6NQqf;D_((g-8T<0mPFixZ~&Nhk=Wme9qBz5Y9;n zeFTm3n*!@;oe9$Y{W}#NNxaV6D%Y zEiT{7!{hV9!UKRGCX_ho)Y`BN=SN0HHr53osNa9yd?I47qErlwpXcE5hGfWjWvNR! zIB*991ehtt0d1Hc04X|LH<$oej(jaMi$-w@Hatf(j7Gk}X$^r-JEy?CMlk`pByI^wB04Vsyqy)a&Jn1PxZujDao zgo%eorPZ#YR8Er3AX!Urm*=_~;|%^fWb*<_1z=emE-tQF9GT|5>bT#+U%_l2f`R^D zPi;>kb{?-C4Z;mskm=ffhQ$piuue{uI|k4I)&LK}qgVD0v8GZehA0plIV`nRfze4O z4%sjaHTazfnj59s+FIWHFd8JXEX9}t5_#qBW(*JbuJj=8=v=nX`JvMSn1YDCiv2zN z84;M?HTAZH(n1xE>eE3TNciNH|3nrZp(ozxmgMRWJXksGOMXkc^eGUep%>ynVuq&6 z`{48i9<5T9Y&0PCk+3^6`0s0uH^JA?0F)?1 z)4)?2C@_M#63~QG-S~S7aON_w=$}~D=ro^9>4K1_VNH`S8%fTP{O>ANzArDh-CbT? zMF5|Y0Qfls*s29a+&?pQmG5Bny!Jeq)Ev!`CwOO=<9~Z&#qsa6Yc)(%gk+*#)lbO> z;(Q_5UnzxMFu=S>PtN!ou-)T1kg@qgwP{XPtKHf-vj=yj#=)_N*T zdw*=vELuo}*c%rF5{L2VLtg8-wWT5zlivT(b%8dY#|8M{i1M~ksw0-{%|M=wt z!db6XB$=CIK?9Fl_X(=UsJ?AlZ$tg<+Dl@XT_dyTpu$v&wUj_&7Ttk|Mr(>JQf5ck zjf_w8S0}>g>%qU9{4PcRIlT}AQIY$3R!`Al<_fwqxA(Q!j`(i0^&8s#@9yM=Ul#+M zxRg82geV~RkRrPim#!`*liiQwXSOE>p7ZBFHMIB{zb=MVw3W6mRo$&rDibv7jv^ox zu*FHT5n|l__ono96$e1k0wLn;v!StV#T`Kuw3ZqzlszZ*A%-$1UB^5v+y^I79);!{ zz>xgR^QWDUur(ciyy`?rdh@%Y)2v&PaEG5S3xI0Y-vc#B8&#Uv=CIveu@3qeN}P^u z89upqzkAhKpC?NetNCD=@660dj$(4g{1PEPVxE4apqHZxa*xwBYsYkv-Ftx z2zc`abYx8mR4T|%(g|}y?#Z)MG7NO$f9qzX?_crMgPzLjNjgQ9=wPD-`cOHhdLH=9 z%1=_5xu?&kqC2viP>eqNE1(DOn@^Djoi9}2HwoY0L?Lu`?D?S-xnyKf!ueGJMb=By zkc6wYAP^|AENfU!brnfuj;1u-(1?9#fgm$+_7oUS{Rm+YDPP!74gTPBFz@YKW;8dj zQ12j0>JBw2cNye~(5$5Z4j*DE4a99_-?>hcWmb95JH6W~ZypHw1MJC9zlG#TkSg}b zq+w2-QNA%ux(%uGJHs;d*AHoPKOb-%OKo++dT~1!>DX4*duQ!Y_ewQzy$Dql zH0NG(lJ;<3=Pr+n;%z8l|e z|Mt?EY{c@chih}DntXm|cYoSn)|h*1Rk+O6E&w(CBzYY8-M{gqxWA&~@b+;OzfPoq z5H15x-mvq)#WQ2`S8u9-8{(SsZP(Wr2ZXCM8rvmcfO~EvPo`8Y;RQ1vWm&6uutja;Ar{uW8fi! zUisBvyQM*Xz`R&n1St;^=!6W#8{w^$wfbI~tPLb0MDwP~49lj*R`Ao)1OA^50?61@ z=G=9>ntSN7WDmf`_;OU0UW^B|9l~>nriUU;MTiH1Wn|PBnI^ePhX?m#)vb&K-AUkD zE1my>E4loe+TqoCK0@rA7U`>WrqFr9NqHkYDbS=h*^qup2`(9VL-O4Apx^}|%zK)hV z$wzFR7wgrY|M2t?I5pJ6!Int2urgZw;vQRVih2Kv2b06vbLsHJXx3`AEB8r*pWVX! z@E&x&Y13~NgUp5pq?9qdb%et(P}TDbN7F^ATQHPAkL?tB;nzbnp&z~k>KN_w#<0@qtKdpdkKys-u%XIm*Vr> z9KQMhVdwBKx89tkv{+1>n>oj)wXJeooMQK0$o!7Er%$2I73h_yXbPMVN3I*@Myw-& zsygp7ew>lLMdZsG){KKp82~E%_O9L4r-m}BlAoU1dDFd^PJz$Bt{!bM6kmB^5c?gl zYWVS?*bV*OQvDkVp+`o<5|CIFe)*PzQy2Gy=xD1GPD8TKDaY&K1*#8Cx6y#7HPBss z)0n8xA2>dQfx}fN-?h-Ez z-S6Xr*KU;*%3f0%#2#&@N6fo+(YH!^aq^bV)&TmJlY3}nv-l7g(@T{Ij9Lk7-bx~S zB)WDU48Cz9Ogk=iB_^GzP^tZz@SpGzq>Un7%+)7rRY*3;s2g)zIj&p9=vb@f>fM|9_CAWPr8=i9Sk1Kbg0n$LCo>@=Uf5k( zOO0K!WBJER`$!9`WKC;6)}MQCKbb!^etn;bb5YHj`a4+-QAA(~4v5t;xjVvsWB`k! zlP>FRuqF%S6ksK4v(M6H^#b4mkL#A2&&@foS`%`XnKEn!0OA7ZtKb6einj8f{YwoG zg#E6bIeec+*&c4S!yJWXC^xFc=>+9IzE+wM8N31KH)X2ZgC~IU^zxOE) zx&1D$>nAsZa7e?flN8LuiUhPnr=Z<>&q`jFZaA$b!#6$Vqu`0-flORdy}0XUy0z48 z^wS4zM6A@~@KPDr&xZQ?A3xdyQyzO(vTqEf#h-wpyHU5!_S?fpLgqL~|0;D3uoxU` z>m*Q>Up$eFxWP|Paa2p*f%VWEb=*E&NlU-&0ey+pm`ZY?(t$v}(Y&1Z_{Ce1WCSI` zEWNSGu&9`0eMert@A+&|9`|1LGBuK{$>`k2A2nHD(fnq#y#3&puJFSW+G*wZ>5VsE z(py?Yzk6;xaOLzinJ8TDcD{f7H#re~1x^FvDe|#U|E}9q62|?=1gUTe2NYV2{FIwNc9Ta>j#1FRW)s=XS#`GvrTQ8(VD>nN&R#exxV_)5&k-&{la z19;KiYPhmy={b_j-&6iPj}wAN^r3*WUjYR>>DQyE*BNqJ)~>uP1vHJRYHYgLj{Rsh zj~xuA%o$~(XPpl*tI3hc)%qXlJhhwEd5>SPb#kG%M$WRdbq8108b;4x1Z4NEY-J>j zdG@iegN8CBs@|_n%!O!vD~fo!+US?gaw_#QOQ2u2t)$nY>f!R|pF7cSn5)wLF7B0< zk~O`X1&W9l$3OpoNuUqaZv0Rpb_=+%&KKF5mqw~LMXkhZ-~IqLagE0xW8kDub;^l= z`|E3&>|S)_xeTjDm6ry;#-5_#w_Z8Z4ZT#zd7qlq8_{;U{H4Yy!NnOiC`>fT5Y1?t zGM92@ma|1I#;n?+=Lo#m4cva88}}>CtLVPX34JElkzg+3$i`0Y+8mbccruSJjn+IO zhZfPQUydp}WKL-=duDxk@2b*9(C_GbNY|>YvYn!Icyh945;5%qVV5U>AoE9y7BD6Q zI&A`=9Y9i^$G8s*=(Kmw*MvOx{!I9e&uqN?h}XVv!};M7!n9&wc^9rYwQ`cI^P^~5 z~l9cJeSiN|K&9);wL++2UNW6%5OOf`(c7do7r1OPBTmPfI?|f^b z`_{&SD2PZAq$>(i1f=&MDAGZC2Lb6#Aap_$lujZ|dQobqQbG@?2%(1>dXW}7(n|=O z;rTu1{c_&x`~_!!nk&gQnc1`Unzh!x*M0jZ>el)TYuu^Xb#KkAI$py-ckro%%6r`* z;aj|q0+7Lp`eEuMeSl(^{+q0F*|>NeKoUc*>F*4yVf{26UrkN2z+obuBc``Air4X* z4T1D#WVB+|EiwV0X*oY<0r!YxaVXg<%rWDu3>LGrk>@#%HY26sTbf{^Vf#Mifv{ckx>K%*VYgTf?c@PD@K zLwo{c!{FvF88(ws{y>ne%eDDoZ1M3~^}KAL5LD=D@FPF~<4G{BCulRI=w75{_lGLq z!|9aou1A!{fPw`KPn`Y5;FcQW5Hn`DDBCqwDlbyPx@(gEtLKp8&6x0?-?Q|8=1-&F zt?kn{pL&vkU#af?WgK0didFbV}X*aLiZQm5%zz>_$Yh%hj_2! z{EMQ>O%J2$@+*A0o|XG=u36uOk=H~6n2mu7YsH={S=MVLcXTf~6bJ!F|INP+ zNXAR3%*IKPm+yqHXi0D3BE}{*g4tH{)(-mDWBPf-HrejSPL@6PM_uVe_}eEgP)*Lb zg-@X$QYA$a?2bqR?pp;2Siv-k^~`Y#$TyuZaSE=kdYbJUl=nN!_x_6Sa&zvsGrC=J z!2{HQB(bLAj~`#(+S>YFU9IcXn-mrnrbauNug-{EUcF3)!%4}2%$T#B<^Vu>g?8hMxTs=aYHQ zsLMLix2DSm`=vxQL0X{rW$}N^2hha%bou2!;}Tu{Z#egj4G<~%A0G=c1|`pEKZ;kK z;pGjpu4)k0JUOx4+y8Tarjp$_9}3E=)?Evw$b$8DNy3*Rq|vr&tTTes&3p5KCtQsg znVarTTP(E=YmYj&2|5h_jd18`TV~xkzv3m?`$6K^)}LkOA>KvbwLLLyn_I7ci6D{e zIY(3}ou@5k*N0#ER+2NoDYjaVdI6=vT+#WFXOqb13)NUg$x6yrXsX}SUEK|;L6|c;QP}GX(b;1?u&@&s>3uwB+2>G=i^Hu1UY)wmjIlI*Tleqh< z1M3*~pX@N@XGd|(#rgcXyL3k37QtOVhWj9~ouk5Myt{aG&h>Bi9FPzEvR%AOO{qoc z9N1GBz8WgsIJrX$Fo!VYyG(pkuT;}nHsM63F!{2U%Vf8yoXdt~1;VCC%vjW}dp5kC zaEJnQt*x7*yOT!PV2uj-IiP32cWlY=v-pB^dWD^x9Rbj-`TEPG&TH$>bQ871z69%o z?#^zpm|GE@YjOC-`*#C<8q<6Lz@MOEYZyh+b{6{U==u@}AP3IJN;hQpuQYD+W_gar z03d~E07kJk*c6+PZgu;1gmCDq_978YO*PYR(qB4~eUZxpfEHZ`M1c#w{JhC7UoGWZ zpN!1B_{*KcL;Xt}M~@DW`kcyBSPp#$<4QickA0_IUAA-<*sN@@+A_=h;%-q{ecx8s zwF5}&3#M`z!;ng~z2DW>;!1W25`3CMHA*dR$m-XbISQwn0zJulTFVd8AQX)lcZX zt#ye|CD7n$gJcUxl!CW!5Rxh!jPtQ%DNA@y=k~wc+jbk?gI4!N%|xv(&fQmX^ks^A zWo@T?q8yS0@F28V{hqUFAGpc0xwBqGF=#u>!xjiKz88v{*5BjkZe#SBL*c3$9@||? zFYTy)@Tnz>f*B;;l}Tj=CGBiQe9et zKAcYybPGi1%875jMt=H0~b)4JYUO1{(&{NZap#EioK400J3-Xo`P?5kcGx|cXW zFC+L;VFnGa*WmjTwpwm;ha>z=o4w5ig{nl{0N%2x=~i01m;U--02L+{HnH@(4l2rW z*Ue8nXlO@0)K#_h@5u_ucHQnuv|KS$qxjO%`D$|yUqSdM54)8&HlJF2GUWjUDdV(6 zEhD#u^Qvc#2Y{^Iu<9p425u1s=GK zkh_}m60eD6@~6o{r3(*~U5{N%QxNyi;?fVE=5*0iYadn$rWGmx^S^}woO>DU4uA`J zdKS|9eRR~Kw3l04`o?8O=Bk1OL?r5rRrgnH%f_R=C;JMQ>0fDq_A^2zMV=q*vTuF4 z!pvaVrwHjsDlm`#vYu&w5snGLvRyh=-Qg3cVUv z^u4xYIN$JBr1iUxGh2t_9=nA+bl}VCzB?edSwwNcq~~b6G4C-qW#hG$c{U?Eoi$FZ zFlD;g-{egUh%dPhrNm#<`moMv>AEnYw`t_%3m?*~@;-R*Ae{3nXYkGN@NY_5x<%v) z5IKwMWN)r$UE?l)5V`wMh5EWO4I^_Nmy+g+$lV8@KgNAtOcNSc@~--D{T9RF#a=2; zW7Uwit@n;}Kqk(4+SAbF@a6jQ#FAdlFA-S1(Ihp*bSUW5%yNj%Vf>UivWfvYUV-a( zhdgtNu;n!^NFMV=PnD#++U-&g*dVB#1R-m-;qFcIGxdvaUB=vBv-TMm@za(J#5!+0 z%7KJgi~LDjI_>gz!^6|x^`O3cc5+1?dsVe#jLNQ!o8lbp*8HAccoqeW6I z#`Gerh!6a?YYqwZ{zDoW>M9xmSBQv+>U6dCmYApo5JIb_0c2{g52d2svh?P=p*Ie+ zI+}SZ;8QetE{seRE|A3d)^cw?a_nNy4CC zcbP+1cWUi81KT+8h71R{JWJfoO@Gm=U#$A*HACyVd>HbBa_owV4`#T%nevx4VaUEo zZ}tqSSwmR|Ubo0kshhp#)#ff)c%@B}m{DsizA5j*&}E!?({Rw!FCd`U_s?_u&d+3O zNlNIsaea|aX>_}^C!C|@?0b_s`0+KJGoOQHnNtkO?8=0z8<$1=l|#RlGJKl9>xP&y zT|K7at!?8SmZ3R#vmPpJ_KVvPPVYQ(blBnVWA)UFwE5}lJ3WxvH%t1{V#h*ysBMuG zVb*LX$)*xf419E$*lGI4PLJJuOsDKh`^}Oq{Ij{9^jj(5ZtS*h z220NVkN!^Y_x*bN74iOWe@O(V3v?~;`+VwH_q_FVsk3#QEe?es?$@Ba-rRcr%)|IUea$j zdisZt4TD=gr2$`ExUpE#pX9XhAMTz9Gy7S3T@zSF$b>^z|JLDfi;m7cUaB{vpH>dA zNs^wTofWTA+njt>J|sQiI^U-!6gZKgMlW2aeVmw=C^`y`?083tvtEji#2wqXB(N|_ zyig6AErao{In0w~Y!af841Kl3#or#?DiHQPlMbi{lR@Fy@IMyz1F0^K#s!rl9b1JF zA(F*9-IAwg_*vl&N8Lv28GM2MqmvztJlu<58`AGeix=-8=}&;By<+N#tO*x=Xfl}kY3!0 zT!@*?7bDrPBnXE%*8_ioD*jwd?lU;ehh^{)_AChm>)#?&H1JddO&S(mCf-c?7_kD! zL;iIp)l51&$PH1$b%jm%z<6$tNKjl~o;~_!&Y>V$=sKa&YNk;_)=k|gdwM`|q()hN zy~(0H5OlKtb3f1fP5=Ii3LPVKV&;&dxMrKLIC{O8OLo;T9XU%0w?E6qj}*MHmT}jl zRu4inng=c3VUAG$&agx_eO}pOMc_kW8&O{ZkE`{Aq@NF!y3p{)VPE_jI%wLnMY@>| zmC*?vgpD|kL(_|V=q-D6)>(yThd3-^Cjs?D>+PAi86u&UpCUE9SIVHEP{Ul-)?D*&=6} zz6^K7Q@fVq_GMjn-XX?si=~%wM28hLs$4a@f{=I=&^3$EvB?k*bUlf ze5Dsyo>!(RLp}wY9jNjI`Cs|R4|&AvP!6ZFLc`O$gPi+oqLVl-{ZLoD9A%ElI^$x- ze4dvU-s{0~uC;5bzz|)hY*v=>^j$W7{-iVFut#X>;UY`*gRTCTiDkDujQh}N6R+Yg zTAfzJ3C^1fE6O;FI*7K8h@X-e@x5CKwY5no*Ei3Dyj+bmi3!(ee7KcK;Q4v|>8i?l zo!>qUf0NTA6s)^w$T3u9T7X!++@|}3T(2^;FPjZ`r@k+T!_EDVy`^p@1O+x@D-KXn zy1a~a@N(GsuAPF(SR16t`;D!#Ph3?FL zw%Bi8r=E({+zH%8KBqq4%bXtK{ZkQdUq2*Y88j8)Nf_+>=sCd%X(kD?+>#h-EHqm% zKJ@Cuty|C1!KeJe-{+jwQpm{Zg^6n2f$ z7yxUoYgmzWk6O6v3bpJst%(MWcAr==iP7*7SogD1PruXD9ZBa5^U zAJ3zu3pYvn=y*iDB$}%kK0dTjE!58&gw>~{=!S<6KuSWfF8Uz@7y$!Ge>S;wwxh|G z>MS+!Vw&PB%c-=lzZp`Fl(3h)dM$#Kk47aIX2EEpicR+~I^{*=ggkpG*eJ<|XFM z2{kO@-wGiD6U-1(sUv2+=OBJB6sp-8vDcOOw20635Gv7Yn(Q6aBV$qO?2dPT^;3bY z$UP%+cUNU#jkoch9RxH)eC&r9;&oV62bQz}MG{-ymiE8TtBefZw`M#iBxV``A%bdV zl1C<6zyoSply@Q`PAzSWAN+WRB!(Hq{F=~HDK@TugEl=<+vypr6Jj_z(4O9#)f~yj z*_%xscuk)!ilcVjKf-=zdOTe%(XAjt=WGbIY?Y5!qWSX2gZi&0Zao{Gn4N4mYSR>% z95B?dV<=pv!vl!war6pob$Xt=(~-t)!hI}A+G>!Zp&oO;b|`puurEouw!`q<$j$l= ziI5Ez8YEAWev&@9@Hb5pz(X2L7Ep{tTf$fJow_F;VV)Y-n#s(j=O^Dj>ffFmjQpt2 zZ8pVqH>vDhc8hCsSzH+fm(wgieIl<}$As(hT&M&szXgtkE5EPv!%B6gN-GC%KZ+lc z>dxO9pY!YcjZlIl^kVjZWztM(P+sh z=vYjE5Cmn93e?saUS4+E1b-+=wzPW^SS3&HA2S@k4JpkUeYN^`C!X7=B)qKHQN-8H z?epsBDY(tU&=xtvATQn#grPSgwW;6O2VJ`xk6e&gY@n!@-9%rhqr%)L_ zXd#SdTs===d@t~XDq$nh5e4N>B<0KX$RlgakmtTptdXcq%4huC+`O;$d1v-7m|{mq z^rF?P)dIc{5fdBX`YmqRQ4Q(WB=8xlts<;04L9m0&Xvt59|&fc zxP;#qbPmbIX3Jl3)NYBB8T=hd-dJr7jTYUE)c^VZs^j#EFh8HJ3^6e~9q0TdkOG8%{b})y>DEoS5XpIa^%By9&JYQ zYx-^IGc!7`A7xqd#*FGle8MS`f_WjNU84KwF{KQoHezm--G{YOOO$#6?&BmywLS8#S70D@8aSXsGah)E^E0V;nVCGV()6 zMru$Isq8*9)?H>s0+3D$D0~P4HPl!k)I{Xjj#viJo=Fq%cxG~Yo$~qi)I=|C0ljSv zla+lkh>A+2S=#*GiH6U)g(R}jt^gA#?o?rAC3Lao1}m8S+}RM&|0MNrPg3gn$0(;a zB7^D`IzqRrl?PN<%{rLlBL!!*@ZZ|VM>bnR9eNmL%VVk)Z+akI@j>cF-;Lu-oEV{} zfs_O3-1k3Q03lEHwP&mlRL`aeEJFSDIIO(rmrS|+0xYD+y!j({B3b3uh%SV-Vz6S^ zZ`qdv(%1#Ow)Zg_rt)z*F>o-WkAf5a+!|&_hb?ivm!g@9;Huo48>mj9PtN4DJ+|Jq z#UOBL7Hcn?@TszwQK&^idvwQrs@N|SN{mK(RyrL-N#4IcN_25QrJ9%iQoP!3DN?~- z4wP4T*0xyy&Ka|JXBks7AVI)IQ0ADAR2CU>8{V>u+aJ+vDRxz&7b(=5*(nNWBcuDy zQ1{8J?{x6kb;-6AuEO)z_tZH~bW6JM$c}G_MBjRFzfNgK1sic4_t4Mtn@7q#H_e=r zh-myhQOJM=xuVe776ngj(WuD~4RsQh2t=7gd-e<^(SUT#4s0I0fV61yt0$Ll2Thl- z8n}#zuh+2zZj$A_-B}3OJ``JBmb_Q(j-iw}Z8rdFJ%=s9+}#&b2)g#(q0XU*BJG;G zi7DNMU@wDr<|o<;2mQ=qU89pGdtaROTVjPod^&G1OQzC_OT{PWmImB$!v6AFJDhk+ zXt05ECy{Em+=cSrF>5&9y@*&!?z!>{i};Z7c}!=-PE{sB~vVy1ie@7 z)`@>&`2edHe!qQ@wR-Qz2_eN=p!GJi@ohY_I6|vAmy~3=X-)vBePrGhu^5`ZxZ!_` z!(M|{E7sA++j}+dyWAw7rx*}d!cFx`8%zb?dvG|W9l(U@${IZ3S-|t=&k zvT41GH`vk9Z{40T;R87r-nt&m+^-xogD`FqRbf8IN38AN&tvpQ<#=C{#X9L<`|g*) z?RZ}syLH~O{-Z)wLkM9kYM5an{JGX3GF08Gh;A>o;5f!C>V2~+NP*e{B&*C z3EkWZB`-dmV4I(j5Qe0gzlXvcYcm(kwhU7_ ziP|L>%cWz5inC|(y_rn$-rLfrWm~>mj}C&YQ-h2e&E!6v?W1c_s|2>r|Bw^9#VSpl*1H0j*5tLLvA!x2t{^=${Fr3T9A1?q!g zDT~QREaVJg2Jq(dJjteKT2-_cmIV%|sbb{WS>QeUX(&I~%>h1EZHaz3jURk0BOF*1 z8pu?3hd-!OXB6QO8IP~`x_~j*$PhEsH4Jn=son<+K8*lhOHxSmo81f|5FPSlB3jlDV*#4 zo%>6lv}8M^7F%V}*z7?+9kg%){shj8qN}u^s9`W$O~sa$Y|lXC)z|g396c&!cB5Cd zD0Q>n&-l)3Kt!6t{C(_8ifmL@?M;IZ{L`kX7kxE0*pm?5-XF0yp#n6(O#3}4~+#~-%p5@A)dFKMasCpQiNw! zDuU`;6wF*Q1jfpo;y}h>@Y>okF7vSX`Uxh;c;q$dqeb+Ro}{&V%D)J4M9c5Y!a&+5}vy^?ow_;XdettdCe!vP+d?bmOz z%g@87>_|p!&zm#^D%^`KkWC!Tf8S3`nGRKi>i#@+EUZK z+|;u7UVOdMdnX+oQ;mCyviWIix&smM5vR7R9P3P_{cF7edYliQV`iXH%h4M)aFBKK z)lyq2g%XG#^<&^&Zt#h-*Jq7`s_1)%E?#lMSu@tM4<%Ho_SK!aebnOvI8D`){V+Do zG^%acxo|-V7tGqgr}Gnj>0{cf**5s@0u&wE03%3mtEmk`1S;SN3$T@JB=2D)A);Dg z@HUf}dhy17>xgd-ZJM4T%Dm!tJ%90q8#lkLP$T~Zwmrs9>pyCI{k~=TwHJ{8H4lBq z(5?*Bh^-C%G-LJ@5}Fh|pw}+pN5?6UjT75@t`nAO&@2IJK-*Al%L;!YqH`V~;s@aO zMNXq7n8~)>JY(j;truwU{vsDXM0d=wFzt=rw4==+ZNvM8Cz?)#L&5~Br?#?k=ON0V z#Xm)j>mkRqV=orMt^e$~m}!~>Z_iXqvFJ7u6M;~$_Ro3ycI{8{Rm3C(6Ef;N_07jy zYtyEU-=@1;GlZ}KCMcWonk^Z&3!sh?z>Sd9>*nlhNW!{K+8sR;IB*vfd_n70^#wlV z^V0p6-6qQuuOjoD=ND&(evu%Sf(dMWJx5(Q>I`;G01NIpWuifbK+3F2j|jNK5J`Io zpY?)faS1Y0c|@Swwh5|!8pp+C`nccX;6>N6v1Ibe48R_g0O)(H08_0*QQ4a*V*+SQ zSF>It`b<}U{_gEr#s#{u=w*yn{O2n;D1m}pXR*@GBbkaaPe5Hhp`uA?_OEV?+q!RD z?D~0h^B)zj#=iB1h5~v%a!4B%75vgc_stkD^JS3=^dNi9;LqZpEcSL ztF475HZsjVv0WVoNEeKNE$yoE8B~B&=Fg1Y#&0?%GJ7q3JR0BBLv*hqyP!g z`z9{JY;`pC;LFfYk{L<;-<8lj5(^E?#a}a0N51^R+Zy%>d^#leX-bue{R7c?(c55D z;saPLvSavre>8q8EwzgGW5FT8X}X$ADs1jFv#R+^J&I6l((d^gwDdBwoXbN*aP?OH zm(DNKVIsRx78?U<^BNfyPlkqaF(wv{7Ha8c9YeWuK=4IW$MAB+rC`8Xe&nQ26@Nic zBi2aLG|)GqcR`1Bi?rIDeDvOR9Mq(w>s$niD#1lW*atv$MMFQN(M-+oMG`7Z7GIwy!~I9iz-lY<#n7ie7g?{K5 zS3Tl83J9L;-g2ayXD{baA1RPVtE#mL@=9B=isgix+ zX{aK%h!oHQ{~N?N?&0DwgjnPs$sDNccz4iy_@RK=v*sEtuuV{>@cR1Y`OY2qen$2; zGhYNrejMpwnIHbutdujWukMmXUv7gyMBb**Nk#@0roHknyak9Wb4}f*YjRF$$JvV~ zPmP7G_tzw`=_2KsD5|VTyh;{ew=wf|y-m%eLRZp<(=+K*FSFFopb+Vhefl#UrK~GN zbGvMi8$XuhPj6rTJJApJ2b@4y01Rm=Ie<9>7;~{VBmX%df`i-0N&$*DHGt6uX7{`g zV3%6~`W<0*5_Y7ew0x$9w{G2nN&IL_nQsDGgs|_gTx0S)r>8L{CNkyatR|iFIBA@H zVj#^a=(ARya4me~!10ff;Ov|4yO*|uvR>=_Gj&A1kAYuajvtRGX)gDTiHKMt zvTy!#@K@E5&VBMhR*I(?cNaJg@v$e4PAanG-uJ# z-5qG73N)DLqhZXOXd$hQ&hH28&==(A=89)tB|6^( z77fu~-F#mw@2Kj~u(0mgSqp$BvOkoZ5xk8$;)b4|!3?fEi17jX)0rr)5M6lx{P~lV zl+;5SsFRMz#>a9J`O=mH>~?v8QvC1^4bfk>WgM;mAYa^5r2`g;nTlpCz|`dgbeKC% k)|3LD<9zQC-Cn)8vJ5hL@kAvh_|giL6*OL!$-fEyFF`9x*8l(j literal 0 HcmV?d00001 diff --git a/doc/building-blocks/enhanced-platform-awareness/openness-acc100.md b/doc/building-blocks/enhanced-platform-awareness/openness-acc100.md new file mode 100644 index 00000000..0725fe78 --- /dev/null +++ b/doc/building-blocks/enhanced-platform-awareness/openness-acc100.md @@ -0,0 +1,300 @@ +```text +SPDX-License-Identifier: Apache-2.0 +Copyright (c) 2019-2020 Intel Corporation +``` + +# Using ACC100 eASIC in OpenNESS: Resource Allocation, and Configuration +- [Overview](#overview) +- [Intel® vRAN Dedicated Accelerator ACC100 FlexRAN host interface overview](#intel-vran-dedicated-accelerator-acc100-flexran-host-interface-overview) +- [Intel® vRAN Dedicated Accelerator ACC100 orchestration and deployment with Kubernetes\* for FlexRAN](#intel-vran-dedicated-accelerator-acc100-orchestration-and-deployment-with-kubernetes-for-flexran) +- [Using the Intel® vRAN Dedicated Accelerator ACC100 on OpenNESS](#using-the-intel-vran-dedicated-accelerator-acc100-on-openness) + - [ACC100 (FEC) Ansible installation for OpenNESS Network Edge](#acc100-fec-ansible-installation-for-openness-network-edge) + - [OpenNESS Experience Kit](#openness-experience-kit) + - [FEC VF configuration for OpenNESS Network Edge](#fec-vf-configuration-for-openness-network-edge) + - [Requesting resources and running pods for OpenNESS Network Edge](#requesting-resources-and-running-pods-for-openness-network-edge) + - [Verifying Application POD access and usage of FPGA on OpenNESS Network Edge](#verifying-application-pod-access-and-usage-of-fpga-on-openness-network-edge) +- [Reference](#reference) + +## Overview + +Intel® vRAN Dedicated Accelerator ACC100 plays a key role in accelerating 4G and 5G Virtualized Radio Access Networks (vRAN) workloads, which in turn increases the overall compute capacity of a commercial, off-the-shelf platform. + +Intel® vRAN Dedicated Accelerator ACC100 provides following features: + +- LDPC FEC processing for 3GPP 5G: + - LDPC encoder/decoder + - Code block CRC generation/checking + - Rate matching/de-matching + - HARQ buffer management +- Turbo FEC processing for 3GPP 4G: + - Turbo encoder/decoder + - Code block CRC generation/checking + - Rate matching/de-matching +- Scalable to required system configuration +- Hardware DMA support +- Performance monitoring +- Load balancing supported by the hardware queue manager (QMGR) +- Interface through the DPDK BBDev library and APIs + +Intel® vRAN Dedicated Accelerator ACC100 benefits include: +- Reduced platform power, E2E latency and Intel® CPU core count requirements as well as increases cell capacity than existing programmable accelerator +- Accelerates both 4G and 5G data concurrently +- Lowers development cost using commercial off the shelf (COTS) servers +- Accommodates space-constrained implementations via a low-profile PCIe card form factor. +- Enables a variety of flexible FlexRAN deployments from small cell to macro to Massive +MIMO networks +- Supports extended temperature for the most challenging of RAN deployment scenario’s + +For more information on the [Intel® vRAN Dedicated Accelerator ACC100 see the product brief](https://builders.intel.com/docs/networkbuilders/intel-vran-dedicated-accelerator-acc100-product-brief.pdf). + +This document explains how the ACC100 resource can be used on the Open Network Edge Services Software (OpenNESS) platform for accelerating network functions and edge application workloads. We use the Intel® vRAN Dedicated Accelerator ACC100 to accelerate the LTE/5G Forward Error Correction (FEC) in the 5G or 4G L1 base station network function such as FlexRAN. + +FlexRAN is a reference layer 1 pipeline of 4G eNb and 5G gNb on Intel® architecture. The FlexRAN reference pipeline consists of an L1 pipeline, optimized L1 processing modules, BBU pooling framework, cloud and cloud-native deployment support, and accelerator support for hardware offload. Intel® vRAN Dedicated Accelerator ACC100 card is used by FlexRAN to offload FEC (Forward Error Correction) for 4G and 5G. + +## Intel® vRAN Dedicated Accelerator ACC100 FlexRAN host interface overview +Intel® vRAN Dedicated Accelerator ACC100 card used in the FlexRAN solution exposes the following physical functions to the CPU host: +- One FEC interface that can be used of 4G or 5G FEC acceleration + - The LTE FEC IP components have turbo encoder/turbo decoder and rate matching/de-matching + - The 5GNR FEC IP components have low-density parity-check (LDPC) Encoder / LDPC Decoder, rate matching/de-matching, and UL HARQ combining + +![Intel® vRAN Dedicated Accelerator ACC100 support](acc100-images/acc100-diagram.png) + +## Intel® vRAN Dedicated Accelerator ACC100 orchestration and deployment with Kubernetes\* for FlexRAN +FlexRAN is a low-latency network function that implements the FEC. FlexRAN uses the FEC resources from the ACC100 using POD resource allocation and the Kubernetes\* device plugin framework. Kubernetes provides a device plugin framework that is used to advertise system hardware resources to the Kubelet. Instead of customizing the code for Kubernetes (K8s) itself, vendors can implement a device plugin that can be deployed either manually or as a DaemonSet. The targeted devices include GPUs, high-performance NICs, FPGAs, InfiniBand\* adapters, and other similar computing resources that may require vendor-specific initialization and setup. + +![Intel® vRAN Dedicated Accelerator ACC100 Orchestration and deployment with OpenNESS Network Edge for FlexRAN](acc100-images/acc100-k8s.png) + +_Figure - Intel® vRAN Dedicated Accelerator ACC100 Orchestration and deployment with OpenNESS Network Edge for FlexRAN_ + +## Using the Intel® vRAN Dedicated Accelerator ACC100 on OpenNESS +Further sections provide instructions on how to use the ACC100 eASIC features: configuration and accessing from an application on the OpenNESS Network Edge. + +When the Intel® vRAN Dedicated Accelerator ACC100 is available on the Edge Node platform it exposes the Single Root I/O Virtualization (SRIOV) Virtual Function (VF) devices which can be used to accelerate the FEC in the vRAN workload. To take advantage of this functionality for a cloud-native deployment, the PF (Physical Function) of the device must be bound to the DPDK IGB_UIO userspace driver to create several VFs (Virtual Functions). Once the VFs are created, they must also be bound to a DPDK userspace driver to allocate them to specific K8s pods running the vRAN workload. + +The full pipeline of preparing the device for workload deployment and deploying the workload can be divided into the following stages: + +- Enabling SRIOV, binding devices to appropriate drivers, and the creation of VFs: delivered as part of the Edge Nodes Ansible automation. +- Queue configuration of FPGAs PF/VFs with an aid of [pf-bb-config](https://github.com/intel/pf-bb-config) utility: Docker\* image creation delivered as part of the Edge Nodes Ansible automation. The images being pushed to a local Harbor registry, sample pod (job) deployment via Helm charts. +- Enabling orchestration and allocation of the devices (VFs) to non-root pods requesting the devices: leveraging the support of "accelerator" SRIOV VFs from K8s SRIOV Device Plugin. K8s plugin deployment is delivered as part of the Edge Controller's Ansible automation. +- Simple sample BBDEV application to validate the pipeline (i.e., SRIOV creation - Queue configuration - Device orchestration - Pod deployment): Script delivery and instructions to build Docker image for sample application delivered as part of Edge Apps package. + +### ACC100 (FEC) Ansible installation for OpenNESS Network Edge +To run the OpenNESS package with ACC100 (FEC) functionality, the feature needs to be enabled on both Edge Controller and Edge Node. It can be deployed via the ["flexran" flavor of OpenNESS](https://github.com/otcshare/openness-experience-kits/tree/master/flavors/flexran). + +#### OpenNESS Experience Kit +To enable ACC100 support from OEK, SRIOV must be enabled in OpenNESS: +```yaml +# flavors/flexran/all.yml +kubernetes_cnis: +-

+- sriov +``` + +Also, enable the following options in `flavors/flexran/all.yml`: +The following device config is the default config for the Intel® vRAN Dedicated Accelerator ACC100. +```yaml +# flavors/flexran/all.yml + +acc100_sriov_userspace_enable: true + +acc100_userspace_vf: + enabled: true + vendor_id: "8086" + vf_device_id: "0d5d" + pf_device_id: "0d5c" + vf_number: "2" + vf_driver: "vfio-pci" +``` + +Run setup script `deploy_ne.sh -f flexran`. + +After a successful deployment, the following pods will be available in the cluster: +```shell +kubectl get pods -A + +NAMESPACE NAME READY STATUS RESTARTS AGE +kube-ovn kube-ovn-cni-hdgrl 1/1 Running 0 3d19h +kube-ovn kube-ovn-cni-px79b 1/1 Running 0 3d18h +kube-ovn kube-ovn-controller-578786b499-74vzm 1/1 Running 0 3d19h +kube-ovn kube-ovn-controller-578786b499-j22gl 1/1 Running 0 3d19h +kube-ovn ovn-central-5f456db89f-z7d6x 1/1 Running 0 3d19h +kube-ovn ovs-ovn-46k8f 1/1 Running 0 3d18h +kube-ovn ovs-ovn-5r2p6 1/1 Running 0 3d19h +kube-system coredns-6955765f44-mrc82 1/1 Running 0 3d19h +kube-system coredns-6955765f44-wlvhc 1/1 Running 0 3d19h +kube-system etcd-silpixa00394960 1/1 Running 0 3d19h +kube-system kube-apiserver-silpixa00394960 1/1 Running 0 3d19h +kube-system kube-controller-manager-silpixa00394960 1/1 Running 0 3d19h +kube-system kube-multus-ds-amd64-2zdqt 1/1 Running 0 3d18h +kube-system kube-multus-ds-amd64-db8fd 1/1 Running 0 3d19h +kube-system kube-proxy-dd259 1/1 Running 0 3d19h +kube-system kube-proxy-sgn9g 1/1 Running 0 3d18h +kube-system kube-scheduler-silpixa00394960 1/1 Running 0 3d19h +kube-system kube-sriov-cni-ds-amd64-k9wnd 1/1 Running 0 3d18h +kube-system kube-sriov-cni-ds-amd64-pclct 1/1 Running 0 3d19h +kube-system kube-sriov-device-plugin-amd64-fhbv8 1/1 Running 0 3d18h +kube-system kube-sriov-device-plugin-amd64-lmx9k 1/1 Running 0 3d19h +openness eaa-78b89b4757-xzh84 1/1 Running 0 3d18h +openness edgedns-dll9x 1/1 Running 0 3d18h +openness interfaceservice-grjlb 1/1 Running 0 3d18h +openness nfd-master-dd4ch 1/1 Running 0 3d19h +openness nfd-worker-c24wn 1/1 Running 0 3d18h +openness syslog-master-9x8hc 1/1 Running 0 3d19h +openness syslog-ng-br92z 1/1 Running 0 3d18h +``` + +### FEC VF configuration for OpenNESS Network Edge +To configure the VFs with the necessary number of queues for the vRAN workload the BBDEV configuration utility is going run as a job within a privileged container. The configuration utility is available to run as a Helm chart available from `/opt/openness/helm-charts/bb_config`. + +Sample configMap, which can be configured by changing values if other than typical config is required, with a profile for the queue configuration is provided as part of Helm chart template `/opt/openness/helm-charts/bb_config/templates/acc100-config.yaml` populated with values from `/opt/openness/helm-charts/bb_config/values.yaml`. Helm chart installation requires a provision of hostname for the target node during job deployment. Additionally the default values in Helm chart will deployed FPGA config, a flag needs to be provided to invoke ACC100 config. + +Install the Helm chart by providing configmap and BBDEV config utility job with the following command from `/opt/openness/helm-charts/` on Edge Controller: + +```shell +helm install --set nodeName= --set device=ACC100 intel-acc100-cfg bb_config +``` + +Check if the job has completed and that the state of the pod created for this job is “Completed”. Check the logs of the pod to see a complete successful configuration. +``` +kubectl get pods +kubectl logs intel-acc100-cfg--xxxxx +``` +Expected: `ACC100 PF [0000:af:00.0] configuration complete!` + +To redeploy the job on another node, use the following command: + +``` +helm upgrade --set nodeName= intel-acc100-cfg bb_config +``` + +To uninstall the job, run: +``` +helm uninstall intel-acc100-cfg +``` + +### Requesting resources and running pods for OpenNESS Network Edge +As part of the OpenNESS Ansible automation, a K8s SRIOV device plugin to orchestrate the ACC100 VFs (bound to the userspace driver) is running. This enables the scheduling of pods requesting this device. To check the number of devices available on the Edge Node from Edge Controller, run: + +```shell +kubectl get node -o json | jq '.status.allocatable' + +"intel.com/intel_fec_acc100": "2" +``` + +To request the device as a resource in the pod, add the request for the resource into the pod specification file by specifying its name and amount of resources required. If the resource is not available or the amount of resources requested is greater than the number of resources available, the pod status will be “Pending” until the resource is available. +**NOTE**: The name of the resource must match the name specified in the configMap for the K8s devices plugin [configMap.yml](https://github.com/otcshare/openness-experience-kits/blob/master/roles/kubernetes/cni/sriov/controlplane/files/sriov/templates/configMap.yml). + +A sample pod requesting the ACC100 (FEC) VF may look like this: + +``` +apiVersion: v1 +kind: Pod +metadata: + name: test + labels: + env: test +spec: + containers: + - name: test + image: centos:latest + command: [ "/bin/bash", "-c", "--" ] + args: [ "while true; do sleep 300000; done;" ] + resources: + requests: + intel.com/intel_fec_acc100: '1' + limits: + intel.com/intel_fec_acc100: '1' +``` + +To test the resource allocation to the pod, save the above code snippet to the `sample.yaml` file and create the pod. +``` +kubectl create -f sample.yaml +``` +Once the pod is in the 'Running' state, check that the device was allocated to the pod (a uioX device and an environmental variable with a device PCI address should be available): +``` +kubectl exec -it test -- ls /dev +kubectl exec -it test -- printenv | grep FEC +``` +To check the number of devices currently allocated to pods, run (and search for 'Allocated Resources'): + +``` +kubectl describe node +``` + +### Verifying Application POD access and usage of FPGA on OpenNESS Network Edge +To verify the functionality of all the features are working together (SRIOV binding - K8s device plugin - BBDEV config) and functionality of the ACC100 (FEC) VF inside a non-root pod, build a Docker image and run a simple validation application for the device. + +The automation of the Docker image build is available from the Edge Apps package. The image must be built on the same node that it is meant to be deployed or a server with the same configuration as the node that will run the workload. This is due to the Kernel dependencies of DPDK during the application build. + +Navigate to: + +``` +edgeapps/fpga-sample-app +``` + +Build the image: + +`./build-image.sh` + +From the Edge Controller, deploy the application pod. The pod specification is located at `/fpga`: + +``` +kubectl create -f fpga-sample-app.yaml +``` + +Execute into the application pod and run the sample app: +```shell +# enter the pod +kubectl exec -it pod-bbdev-sample-app -- /bin/bash + +# run test application +./test-bbdev.py --testapp-path ./testbbdev -e="-w ${PCIDEVICE_INTEL_COM_INTEL_FEC_ACC100}" -i -n 1 -b 1 -l 1 -c validation -v ./test_vectors/ldpc_dec_v7813.data + +# sample output +Executing: ./dpdk-test-bbdev -w0000:b0:00.0 -- -n 1 -l 1 -c validation -i -v ldpc_dec_v7813.data -b 1 +EAL: Detected 96 lcore(s) +EAL: Detected 2 NUMA nodes +Option -w, --pci-whitelist is deprecated, use -a, --allow option instead +EAL: Multi-process socket /var/run/dpdk/rte/mp_socket +EAL: Selected IOVA mode 'VA' +EAL: No available hugepages reported in hugepages-1048576kB +EAL: Probing VFIO support... +EAL: VFIO support initialized +EAL: using IOMMU type 1 (Type 1) +EAL: Probe PCI driver: intel_acc100_vf (8086:d5d) device: 0000:b0:00.0 (socket 1) +EAL: No legacy callbacks, legacy socket not created + +=========================================================== +Starting Test Suite : BBdev Validation Tests +Test vector file = ldpc_dec_v7813.data +Device 0 queue 16 setup failed +Allocated all queues (id=16) at prio0 on dev0 +Device 0 queue 32 setup failed +Allocated all queues (id=32) at prio1 on dev0 +Device 0 queue 48 setup failed +Allocated all queues (id=48) at prio2 on dev0 +Device 0 queue 64 setup failed +Allocated all queues (id=64) at prio3 on dev0 +Device 0 queue 64 setup failed +All queues on dev 0 allocated: 64 ++ ------------------------------------------------------- + +== test: validation +dev:0000:b0:00.0, burst size: 1, num ops: 1, op type: RTE_BBDEV_OP_LDPC_DEC +Operation latency: + avg: 31202 cycles, 13.5661 us + min: 31202 cycles, 13.5661 us + max: 31202 cycles, 13.5661 us +TestCase [ 0] : validation_tc passed + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + + Test Suite Summary : BBdev Validation Tests + + Tests Total : 1 + + Tests Skipped : 0 + + Tests Passed : 1 + + Tests Failed : 0 + + Tests Lasted : 413.594 ms + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +``` +The output of the application should indicate a total of ‘1’ tests and ‘1’ test passing; this concludes the validation of the FEC VF working correctly inside a K8s pod. + +## Reference +- [Intel® vRAN Dedicated Accelerator ACC100](https://networkbuilders.intel.com/solutionslibrary/intel-vran-dedicated-accelerator-acc100-product-brief) From 41824c03192d3754c0e3fb0b4a6820a6252432a5 Mon Sep 17 00:00:00 2001 From: Amr Mokhtar Date: Tue, 15 Dec 2020 22:02:26 +0000 Subject: [PATCH 099/148] Mergin tech pubs updates --- openness_releasenotes-o.md | 445 +++++++++++++++++++++++++++++++++++++ openness_releasenotes.md | 375 ++++++++++++++++--------------- 2 files changed, 636 insertions(+), 184 deletions(-) create mode 100644 openness_releasenotes-o.md diff --git a/openness_releasenotes-o.md b/openness_releasenotes-o.md new file mode 100644 index 00000000..aa6b187e --- /dev/null +++ b/openness_releasenotes-o.md @@ -0,0 +1,445 @@ +```text +SPDX-License-Identifier: Apache-2.0 +Copyright (c) 2019-2020 Intel Corporation +``` + +# Release Notes +This document provides high-level system features, issues, and limitations information for Open Network Edge Services Software (OpenNESS). +- [Release history](#release-history) + - [OpenNESS - 19.06](#openness---1906) + - [OpenNESS - 19.09](#openness---1909) + - [OpenNESS - 19.12](#openness---1912) + - [OpenNESS - 20.03](#openness---2003) + - [OpenNESS - 20.06](#openness---2006) + - [OpenNESS - 20.09](#openness---2009) + - [OpenNESS - 20.12](#openness---2012) +- [Changes to Existing Features](#changes-to-existing-features) + - [OpenNESS - 19.06](#openness---1906-1) + - [OpenNESS - 19.06.01](#openness---190601) + - [OpenNESS - 19.09](#openness---1909-1) + - [OpenNESS - 19.12](#openness---1912-1) + - [OpenNESS - 20.03](#openness---2003-1) + - [OpenNESS - 20.06](#openness---2006-1) + - [OpenNESS - 20.09](#openness---2009-1) +- [Fixed Issues](#fixed-issues) + - [OpenNESS - 19.06](#openness---1906-2) + - [OpenNESS - 19.06.01](#openness---190601-1) + - [OpenNESS - 19.06.01](#openness---190601-2) + - [OpenNESS - 19.12](#openness---1912-2) + - [OpenNESS - 20.03](#openness---2003-2) + - [OpenNESS - 20.06](#openness---2006-2) + - [OpenNESS - 20.09](#openness---2009-2) +- [Known Issues and Limitations](#known-issues-and-limitations) + - [OpenNESS - 19.06](#openness---1906-3) + - [OpenNESS - 19.06.01](#openness---190601-3) + - [OpenNESS - 19.09](#openness---1909-2) + - [OpenNESS - 19.12](#openness---1912-3) + - [OpenNESS - 20.03](#openness---2003-3) + - [OpenNESS - 20.06](#openness---2006-3) + - [OpenNESS - 20.09](#openness---2009-3) + - [OpenNESS - 20.12](#openness---2012-1) +- [Release Content](#release-content) + - [OpenNESS - 19.06](#openness---1906-4) + - [OpenNESS - 19.06.01](#openness---190601-4) + - [OpenNESS 19.09](#openness-1909) + - [OpenNESS - 19.12](#openness---1912-4) + - [OpenNESS - 20.03](#openness---2003-4) + - [OpenNESS - 20.06](#openness---2006-4) + - [OpenNESS - 20.09](#openness---2009-4) +- [Hardware and Software Compatibility](#hardware-and-software-compatibility) + - [Intel® Xeon® D Processor](#intel%c2%ae-xeon%c2%ae-d-processor) + - [2nd Generation Intel® Xeon® Scalable Processors](#2nd-generation-intel%c2%ae-xeon%c2%ae-scalable-processors) + - [Intel® Xeon® Scalable Processors](#intel%c2%ae-xeon%c2%ae-scalable-processors) +- [Supported Operating Systems](#supported-operating-systems) +- [Packages Version](#packages-version) + +# Release history + +## OpenNESS - 19.06 +- Edge Cloud Deployment options + - Controller-based deployment of Applications in Docker Containers/VM–using-Libvirt + - Controller + Kubernetes\* based deployment of Applications in Docker\* Containers +- OpenNESS Controller + - Support for Edge Node Orchestration + - Support for Web UI front end +- OpenNESS APIs + - Edge Application APIs + - Edge Virtualization Infrastructure APIs + - Edge Application life cycle APIs + - Core Network Configuration APIs + - Edge Application authentication APIs + - OpenNESS Controller APIs +- Platform Features + - Microservices based Appliance and Controller agent deployment + - Support for DNS for the edge + - CentOS\* 7.6 / CentOS 7.6 + RT kernel + - Basic telemetry support +- Sample Reference Applications + - OpenVINO™ based Consumer Application + - Producer Application supporting OpenVINO™ +- Dataplane + - DPDK/KNI based Dataplane – NTS + - Support for deployment on IP, LTE (S1, SGi and LTE CUPS) +- Cloud Adapters + - Support for running Amazon\* Greengrass\* cores as an OpenNESS application + - Support for running Baidu\* Cloud as an OpenNESS application +- Documentation + - User Guide Enterprise and Operator Edge + - OpenNESS Architecture + - Swagger/Proto buff External API Guide + - 4G/CUPS API whitepaper + - Cloud Connector App note + - OpenVINO™ on OpenNESS App note + +## OpenNESS - 19.09 +- Edge Cloud Deployment options + - Async method for image download to avoid timeout. +- Dataplane + - Support for OVN/OVS based Dataplane and network overlay for Network Edge (based on Kubernetes) +- Cloud Adapters + - Support for running Amazon Green grass cores as an OpenNESS application with OVN/OVS as Dataplane and network overlay +- Support for Inter-App comms + - Support for OVS-DPDK or Linux\* bridge or Default interface for inter-Apps communication for OnPrem deployment +- Accelerator support + - Support for HDDL-R accelerator for interference in a container environment for OnPrem deployment +- Edge Applications + - Early Access Support for Open Visual Cloud (OVC) based Smart City App on OpenNESS OnPrem + - Support for Dynamic use of VPU or CPU for Inferences +- Gateway + - Support for Edge node and OpenNESS Controller gate way to support route-ability +- Documentation + - OpenNESS Architecture (update) + - OpenNESS Support for OVS as dataplane with OVN + - Open Visual Cloud Smart City Application on OpenNESS - Solution Overview + - Using Intel® Movidius™ Myriad™ X High Density Deep Learning (HDDL) solution in OpenNESS + - OpenNESS How-to Guide (update) + +## OpenNESS - 19.12 +- Hardware + - Support for Cascade lake 6252N + - Support for Intel® FPGA Programmable Acceleration Card (Intel® FPGA PAC) N3000 +- Edge Application + - Fully cloud native Open Visual Cloud Smart City Application pipeline on OpenNESS Network edge. +- Edge cloud + - EAA and CNCA microservice as native Kubernetes-managed services + - Support for Kubernetes version 1.16.2 +- Edge Compute EPA features support for Network Edge + - CPU Manager: Support deployment of POD with dedicated pinning + - SRIOV NIC: Support deployment of POD with dedicated SRIOV VF from NIC + - SRIOV FPGA: Support deployment of POD with dedicated SRIOV VF from FPGA + - Topology Manager: Support k8s to manage the resources allocated to workloads in a NUMA topology-aware manner + - BIOS/FW Configuration service - Intel SysCfg based BIOS/FW management service + - Hugepages: Support for allocation of 1G/2M huge pages to the Pod + - Multus: Support for Multiple network interface in the PODs deployed by Kubernetes + - Node Feature discovery: Support detection of Silicon and Software features and automation of deployment of CNF and Applications + - FPGA Remote System Update service: Support the Open Programmable Acceleration Engine (OPAE) (fpgautil) based image update service for FPGA + - Non-Privileged Container: Support deployment of non-privileged pods (CNFs and Applications as reference) +- Edge Compute EPA features support for On-Premises + - Using Intel® Movidius™ Myriad™ X High Density Deep Learning (HDDL) solution in OpenNESS +- OpenNESS Experience Kit for Network and OnPremises edge + - Offline Release Package: Customers should be able to create an installer package that can be used to install OnPremises version of OpenNESS without the need for Internet access. +- 5G NR Edge Cloud deployment support + - 5G NR edge cloud deployment support with SA mode + - AF: Support for 5G NGC Application function as a microservice + - NEF: Support for 5G NGC Network Exposure function as a microservice + - Support for 5G NR UDM, UPF, AMF, PCF and SCF (not part of the release) +- DNS support + - DNS support for UE + - DNS Support for Edge applications +- Documentation + - Completely reorganized documentation structure for ease of navigation + - 5G NR Edge Cloud deployment Whitepaper + - EPA application note for each of the features + +## OpenNESS - 20.03 +- OVN/OVS-DPDK support for dataplane + - Network Edge: Support for kube-ovn CNI with OVS or OVS-DPDK as dataplane. Support for Calico as CNI. + - OnPremises Edge: Support for OVS-DPDK CNI with OVS-DPDK as dataplane supporting application deployed in containers or VMs +- Support for VM deployments on Kubernetes mode + - Kubevirt based VM deployment support + - EPA Support for SRIOV Virtual function allocation to the VMs deployed using Kubernetes +- EPA support - OnPremises + - Support for dedicated core allocation to applications running as VMs or Containers + - Support for dedicated SRIOV VF allocation to applications running in VM or containers + - Support for system resource allocation into the application running as a container + - Mount point for shared storage + - Pass environment variables + - Configure the port rules +- Core Network Feature (5G) + - PFD Management API support (3GPP 23.502 Sec. 52.6.3 PFD Management service) + - AF: Added support for PFD Northbound API + - NEF: Added support for PFD southbound API, and Stubs to loopback the PCF calls. + - kubectl: Enhanced CNCA kubectl plugin to configure PFD parameters + - WEB UI: Enhanced CNCA WEB UI to configure PFD params in OnPerm mode + - Auth2 based authentication between 5G Network functions: (as per 3GPP Standard) + - Implemented oAuth2 based authentication and validation + - AF and NEF communication channel is updated to authenticated based on oAuth2 JWT token in addition to HTTP2. + - HTTPS support + - Enhanced the 5G OAM, CNCA (web-ui and kube-ctl) to HTTPS interface +- Modular Playbook + - Support for customers to choose real-time or non-realtime kernel for an edge node + - Support for customers to choose CNIs - Validated with Kube-OVN and Calico +- Edge Apps + - FlexRAN: Dockerfile and pod specification for the deployment of 4G or 5G FlexRAN + - AF: Dockerfile and pod specification + - NEF: Dockerfile and pod specification + - UPF: Dockerfile and pod specification + +## OpenNESS - 20.06 +- OpenNESS is now available in two distributions + - Open source (Apache 2.0 license) + - Intel Distribution of OpenNESS (Intel Proprietary License) + - Includes all the code from the open source distribution plus additional features and enhancements to improve the user experience + - Access requires a signed license. A request for access can be made at openness.org by navigating to the "Products" section and selecting "Intel Distribution of OpenNESS" + - Both distributions are hosted at github.com/open-ness +- On premises configuration now optionally supports Kubernetes +- Dataplane + - Support for Calico eBPF as CNI + - Performance baselining of the CNIs +- Visual Compute and Media Analytics + - Intel Visual Cloud Accelerator Card - Analytics (VCAC-A) Kubernetes deployment support (CPU, GPU, and VPU) + - Node feature discovery of VCAC-A + - Telemetry support for VCAC-A + - Provide ansible and Helm -playbook support for OVC codecs Intel® Xeon® CPU mode - video analytics service (REST API) for developers +- Edge Applications + - Smart City Application Pipeline supporting CPU or VCAC-A mode with Helm chart + - CDN Content Delivery using NGINX with SR-IOV capability for higher performance with Helm chart + - CDN transcode sample application using Intel® Xeon® CPU optimized media SDK with Helm chart + - Support for Transcoding Service using Intel® Xeon® CPU optimized media SDK with Helm chart + - Intel Edge Insights application support with Helm chart +- Edge Network Functions + - FlexRAN DU with Helm Chart (FlexRAN not part of the release) + - xRAN Fronthaul with Helm CHart (xRAN app not part of the release) + - Core Network Function - Application Function with Helm chart + - Core Network Function - Network Exposure Function With Helm chart + - Core Network Function - UPF (UPF app not part of the release) + - Core network Support functions - OAM and CNTF +- Helm Chart for Kubernetes enhancements + - NFD, CMK, SRIOV-Device plugin and Multus\* + - Support for local Docker registry setup +- Support for deployment-specific Flavors + - Minimal + - RAN - 4G and 5G + - Media Analytics with VCAC-A and with CPU only mode + - CDN - Transcode + - CDN - Content Delivery + - Azure - Deployment of OpenNESS cluster on Microsoft\* Azure\* cloud +- Support for OpenNESS on CSP Cloud + - Azure - Deployment of OpenNESS cluster on Microsoft\* Azure\* cloud +- Telemetry Support + - Support for Collectd backend with hardware from Intel and custom metrics + - cpu, cpufreq, load, hugepages, intel_pmu, intel_rdt, ipmi, ovs_stats, ovs_pmd_stats + - FPGA – PACN3000 (collectd) - Temp, Power draw + - VPU Device memory, VPU device thermal, VPU Device utilization + - Open Telemetry - Support for collector and exporter for metrics (e.g., heartbeat from app) + - Support for PCM counter for Prometheus\* and Grafana\* + - Telemetry Aware Scheduler +- Early Access support for Resource Management Daemon (RMD) + - RMD for cache allocation to the application Pods +- Ability to deploy OpenNESS Master and Node on the same platform + +## OpenNESS - 20.09 +- Native On-premises mode + - Following from the previous release decision of pausing Native on-premises Development the code has been move to a dedicated repository “native-on-prem” + - Kubernetes based solution will now support both Network and on-premises Edge +- Service Mesh support + - Basic support for Service Mesh using istio within an OpenNESS cluster + - Application of Service Mesh openness 5G and Media analytics - A dedicated network for service to service communications +- EAA Update + - EAA microservices has been updated to be more cloud-native friendly +- Edge Insights Application (update) + - Industrial Edge Insights Software update to version 2.3. + - Experience Kit now supports multiple detection video's – Safety equipment detection, PCB default detection and also supports external video streams. + +## OpenNESS - 20.12 +- uCPE/SDWAN +- EMCO-OpenNESS +- Operators +- Offline installer +- Application Data delivery Performance +- CERA on-premises (pushed from 20.09 due to CR for EIS support) +- CSP support for Azure (will be released between 20.09 and 20.12) +- Kubernetes certification for 1.19 + +# Changes to Existing Features + +## OpenNESS - 19.06 +There are no unsupported or discontinued features relevant to this release. + +## OpenNESS - 19.06.01 +There are no unsupported or discontinued features relevant to this release. + +## OpenNESS - 19.09 +There are no unsupported or discontinued features relevant to this release. + +## OpenNESS - 19.12 +- NTS Dataplane support for Network edge is discontinued. +- Controller UI for Network edge has been discontinued except for the CNCA configuration. Customers can optionally leverage the Kubernetes dashboard to onboard applications. +- Edge node only supports non-realtime kernel. + +## OpenNESS - 20.03 +- Support for HDDL-R only restricted to non-real-time or non-customized CentOS 7.6 default kernel. + +## OpenNESS - 20.06 +- Offline install for Native mode OnPremises has be deprecated + +## OpenNESS - 20.09 +- Native on-premises is now located in a dedicated repository with no further feature updates from previous release. + +# Fixed Issues + +## OpenNESS - 19.06 +There are no non-Intel issues relevant to this release. + +## OpenNESS - 19.06.01 +There are no non-Intel issues relevant to this release. + +## OpenNESS - 19.06.01 +- VHOST HugePages dependency +- Bug in getting appId by IP address for the container +- Wrong value of appliance verification key printed by ansible script +- NTS is hanging when trying to add same traffic policy to multiple interfaces +- Application in VM cannot be started +- Bug in libvirt deployment +- Invalid status after app un-deployment +- Application memory field is in MB + +## OpenNESS - 19.12 +- Improved usability/automation in Ansible scripts + +## OpenNESS - 20.03 +- Realtime Kernel support for network edge with K8s. +- Modular playbooks + +## OpenNESS - 20.06 +- Optimized the Kubernetes based deployment by supporting multiple Flavors + +## OpenNESS - 20.09 +- Further optimized the Kubernetes based deployment by supporting multiple Flavors +- Network edge installation time is optimized using pre-built Docker images +- cAdvisor occasional failure issue is resolved + +# Known Issues and Limitations +## OpenNESS - 19.06 +There are no issues relevant to this release. + +## OpenNESS - 19.06.01 +There is one issue relevant to this release: it is not possible to remove the application from Edge Node in case of error during application deployment. The issue concerns applications in a Virtual Machine. + +## OpenNESS - 19.09 +- Gateway in multi-node - will not work when few nodes will have the same public IP (they will be behind one common NAT) +- Ansible in K8s can cause problems when rerun on a machine: + - If after running all 3 scripts + - Script 02 will be run again (it will not remove all necessary K8s related artifacts) + - We would recommend cleaning up the installation on the node + +## OpenNESS - 19.12 +- Gateway in multi-node - will not work when few nodes will have the same public IP (they will be behind one common NAT) +- OpenNESS On-Premises: Cannot remove a failed/disconnected the edge node information/state from the controller +- The CNCA API (4G & 5G) supported in this release is an early access reference implementation and does not support authentication +- Real-time kernel support has been temporarily disabled to address the Kubernetes 1.16.2 and Realtime kernel instability. + +## OpenNESS - 20.03 +- On-Premises edge installation takes more than 1.5 hours because of the Docker image build for OVS-DPDK +- Network edge installation takes more than 1.5 hours because of the Docker image build for OVS-DPDK +- OpenNESS controller allows management NICs to be in the pool of configuration, which might allow configuration by mistake. Thus, disconnecting the node from control plane +- When using the SRIOV EPA feature added in 20.03 with OVNCNI, the container cannot access the CNI port. This is due to the SRIOV port being set by changing the network used by the container from default to a custom network. This overwrites the OVNCNI network setting configured before this to enable the container to work with OVNCNI. Another issue with the SRIOV, is that this also overwrites the network configuration with the EAA and edgedns, agents, which prevents the SRIOV enabled container from communicating with the agents. +- Cannot remove Edge Node from Controller when its offline and traffic policy is configured or the app is deployed. + +## OpenNESS - 20.06 +- On-Premises edge installation takes 1.5hrs because of the Docker image build for OVS-DPDK +- Network edge installation takes 1.5hrs because of docker image build for OVS-DPDK +- OpenNESS controller allows management NICs to be in the pool of configuration, which might allow configuration by mistake and thereby disconnect the node from control plane +- When using the SRIOV EPA feature added in 20.03 with OVNCNI, the container cannot access the CNI port. This is due to the SRIOV port being set by changing the network used by the container from default to a custom network, This overwrites the OVNCNI network setting configured prior to this to enable the container to work with OVNCNI. Another issue with the SRIOV, is that this also overwrites the network configuration with the EAA and edgedns, agents, which prevents the SRIOV enabled container from communicating with the agents. +- Cannot remove Edge Node from Controller when its offline and traffic policy is configured or app is deployed. +- Legacy OnPremises - Traffic rule creation: cannot parse filled and cleared fields +- There is an issue with using CDI when uploading VM images when CMK is enabled due to missing CMK taint toleration. The CDI upload pod does not get deployed and the `virtctl` plugin command times out waiting for the action to complete. A workaround for the issue is to invoke the CDI upload command, edit the taint toleration for the CDI upload to tolerate CMK, update the pod, create the PV, and let the pod run to completion. +- There is a known issue with cAdvisor which in certain scenarios occasionally fails to expose the metrics for the Prometheus endpoint. See the following GitHub\* link: https://github.com/google/cadvisor/issues/2537 + +## OpenNESS - 20.09 +- Pod which uses hugepage get stuck in terminating state on deletion. This is a known issue on Kubernetes 1.18.x and is planned to be fixed in 1.19.x +- Calico cannot be used as secondary CNI with Multus in OpenNESS. It will work only as primary CNI. Calico must be the only network provider in each cluster. We do not currently support migrating a cluster with another network provider to use Calico networking. https://docs.projectcalico.org/getting-started/kubernetes/requirements +- collectd Cache telemetry using RDT does not work when RMD is enabled because of resource conflict. Workaround is to disable collectd RDT plugin when using RMD - this by default is implemented globally. With this workaround customers will be able to allocate the Cache but not use Cache related telemetry. In case where RMD is not being enabled customers who desire RDT telemetry can re-enable collectd RDT. + +## OpenNESS - 20.12 +- CAdvisor CPU utilization of Edge Node is high and could cause a delay to get an interactive SSH session. A work around is to remove CAdvisor if not needed using `helm uninstall cadvisor -n telemetry` + +# Release Content + +## OpenNESS - 19.06 +OpenNESS Edge node, OpenNESS Controller, Common, Spec, and OpenNESS Applications. + +## OpenNESS - 19.06.01 +OpenNESS Edge node, OpenNESS Controller, Common, Spec, and OpenNESS Applications. + +## OpenNESS 19.09 +OpenNESS Edge node, OpenNESS Controller, Common, Spec, and OpenNESS Applications. + +## OpenNESS - 19.12 +OpenNESS Edge node, OpenNESS Controller, Common, Spec, OpenNESS Applications, and Experience kit. + +## OpenNESS - 20.03 +OpenNESS Edge node, OpenNESS Controller, Common, Spec, OpenNESS Applications, and Experience kit. + +## OpenNESS - 20.06 +- Open Source: Edge node, Controller, Epcforedge, Common, Spec, Applications, and Experience kit. +- IDO: IDO Edge node, IDO Controller, IDO Epcforedge, IDO Spec, and IDO Experience kit. + +## OpenNESS - 20.09 +- Open Source: Edge node, Controller, Epcforedge, Common, Spec, Applications and Experience kit. +- IDO: IDO Edge node, IDO Controller, IDO Epcforedge, IDO Spec and IDO Experience kit. + > **NOTE**: Edge applications repo is common to Open Source and IDO + +# Hardware and Software Compatibility +OpenNESS Edge Node has been tested using the following hardware specification: + +## Intel® Xeon® D Processor +- Supermicro\* 3U form factor chassis server, product SKU code: 835TQ-R920B +- Motherboard type: [X11SDV-16C-TP8F](https://www.supermicro.com/products/motherboard/Xeon/D/X11SDV-16C-TP8F.cfm) +- Intel® Xeon® Processor D-2183IT + +## 2nd Generation Intel® Xeon® Scalable Processors + +| | | +|------------------|---------------------------------------------------------------| +| CLX-SP | Compute Node based on CLX-SP(6252N) | +| Board | S2600WFT server board | +| | 2 x Intel® Xeon® Gold 6252N CPU @ 2.30GHz | +| | 2 x associated Heatsink | +| Memory | 12x Micron 16GB DDR4 2400MHz DIMMS* [2666 for PnP] | +| Chassis | 2U Rackmount Server Enclosure | +| Storage | Intel M.2 SSDSCKJW360H6 360G | +| NIC | 1x Intel® Fortville NIC X710DA4 SFP+ ( PCIe card to CPU-0) | +| QAT | Intel® Quick Assist Adapter Device 37c8 | +| | (Symmetrical design) LBG integrated | +| NIC on board | Intel-Ethernet-Controller-I210 (for management) | +| Other card | 2x PCIe Riser cards | + +## Intel® Xeon® Scalable Processors + +| | | +|------------------|---------------------------------------------------------------| +| SKX-SP | Compute Node based on SKX-SP(6148) | +| Board | WolfPass S2600WFQ server board(symmetrical QAT)CPU | +| | 2 x Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz | +| | 2 x associated Heatsink | +| Memory | 12x Micron 16GB DDR4 2400MHz DIMMS* [2666 for PnP] | +| Chassis | 2U Rackmount Server Enclosure | +| Storage | Intel® M.2 SSDSCKJW360H6 360G | +| NIC | 1x Intel® Fortville NIC X710DA4 SFP+ ( PCIe card to CPU-0) | +| QAT | Intel® Quick Assist Adapter Device 37c8 | +| | (Symmetrical design) LBG integrated | +| NIC on board | Intel-Ethernet-Controller-I210 (for management) | +| Other card | 2x PCIe Riser cards | +| HDDL-R | [Mouser Mustang-V100](https://www.mouser.ie/datasheet/2/763/Mustang-V100_brochure-1526472.pdf) | +| VCAC-A | [VCAC-A Accelerator for Media Analytics](https://www.intel.com/content/dam/www/public/us/en/documents/datasheets/media-analytics-vcac-a-accelerator-card-by-celestica-datasheet.pdf) | +| PAC-N3000 | [Intel® FPGA Programmable Acceleration Card (Intel® FPGA PAC) N3000 ](https://www.intel.com/content/www/us/en/programmable/products/boards_and_kits/dev-kits/altera/intel-fpga-pac-n3000/overview.html) | + +# Supported Operating Systems + +OpenNESS was tested on CentOS Linux release 7.8.2003 (Core) +> **NOTE**: OpenNESS is tested with CentOS 7.8 Pre-empt RT kernel to ensure VNFs and Applications can co-exist. There is no requirement from OpenNESS software to run on a Pre-empt RT kernel. + +# Packages Version + +Package: telemetry, cadvisor 0.36.0, grafana 7.0.3, prometheus 2.16.0, prometheus: node exporter 1.0.0-rc.0, golang 1.14.9 docker 19.03.12, kubernetes 1.19.3, dpdk 18.11.6, ovs 2.12.0, ovn 2.12.0, helm 3.0, kubeovn 1.0.1, flannel 0.12.0, calico 3.16.0, multus 3.6, sriov cni 2.3, nfd 0.6.0, cmk v1.4.1, TAS we build from specific commit "a13708825e854da919c6fdf05d50753113d04831" diff --git a/openness_releasenotes.md b/openness_releasenotes.md index d8bf9d9f..957562bd 100644 --- a/openness_releasenotes.md +++ b/openness_releasenotes.md @@ -4,7 +4,7 @@ Copyright (c) 2019-2020 Intel Corporation ``` # Release Notes -This document provides high level system features, issues and limitations information for OpenNESS. +This document provides high-level system features, issues, and limitations information for Open Network Edge Services Software (OpenNESS). - [Release history](#release-history) - [OpenNESS - 19.06](#openness---1906) - [OpenNESS - 19.09](#openness---1909) @@ -51,94 +51,95 @@ This document provides high level system features, issues and limitations inform - [2nd Generation Intel® Xeon® Scalable Processors](#2nd-generation-intel%c2%ae-xeon%c2%ae-scalable-processors) - [Intel® Xeon® Scalable Processors](#intel%c2%ae-xeon%c2%ae-scalable-processors) - [Supported Operating Systems](#supported-operating-systems) -- [Package Versions](#package-versions) +- [Packages Version](#packages-version) # Release history ## OpenNESS - 19.06 -- Edge Cloud Deployment options - - Controller based deployment of Applications in Docker Containers/VM–using-Libvirt - - Controller + Kubernetes based deployment of Applications in Docker Containers -- OpenNESS Controller - - Support for Edge Node Orchestration - - Support for Web UI front end -- OpenNESS APIs - - Edge Application APIs - - Edge Virtualization Infrastructure APIs - - Edge Application life cycle APIs - - Core Network Configuration APIs - - Edge Application authentication APIs +- Edge Cloud Deployment options + - Controller-based deployment of Applications in Docker Containers/VM–using-Libvirt + - Controller + Kubernetes\* based deployment of Applications in Docker\* Containers +- OpenNESS Controller + - Support for Edge Node Orchestration + - Support for Web UI front end +- OpenNESS APIs + - Edge Application APIs + - Edge Virtualization Infrastructure APIs + - Edge Application life cycle APIs + - Core Network Configuration APIs + - Edge Application authentication APIs - OpenNESS Controller APIs -- Platform Features - - Microservices based Appliance and Controller agent deployment - - Support for DNS for the edge - - CentOS 7.6 / CentOS 7.6 + RT kernel +- Platform Features + - Microservices based Appliance and Controller agent deployment + - Support for DNS for the edge + - CentOS\* 7.6 / CentOS 7.6 + RT kernel - Basic telemetry support -- Sample Reference Applications - - OpenVino based Consumer Application - - Producer Application supporting OpenVino -- Dataplane - - DPDK/KNI based Dataplane – NTS +- Sample Reference Applications + - OpenVINO™ based Consumer Application + - Producer Application supporting OpenVINO™ +- Dataplane + - DPDK/KNI based Dataplane – NTS - Support for deployment on IP, LTE (S1, SGi and LTE CUPS) -- Cloud Adapters - - Support for running Amazon Green grass cores as an OpenNESS application - - Support for running Baidu Cloud as an OpenNESS application -- Documentation - - User Guide Enterprise and Operator Edge +- Cloud Adapters + - Support for running Amazon\* Greengrass\* cores as an OpenNESS application + - Support for running Baidu\* Cloud as an OpenNESS application +- Documentation + - User Guide Enterprise and Operator Edge - OpenNESS Architecture - - Swagger/Proto buff External API Guide - - 4G/CUPS API whitepaper + - Swagger/Proto buff External API Guide + - 4G/CUPS API whitepaper - Cloud Connector App note - - Openvino on OpenNESS App note + - OpenVINO™ on OpenNESS App note + ## OpenNESS - 19.09 -- Edge Cloud Deployment options +- Edge Cloud Deployment options - Async method for image download to avoid timeout. -- Dataplane - - Support for OVN/OVS based Dataplane and network overlay for Network Edge (based on Kubernetes) -- Cloud Adapters +- Dataplane + - Support for OVN/OVS based Dataplane and network overlay for Network Edge (based on Kubernetes) +- Cloud Adapters - Support for running Amazon Green grass cores as an OpenNESS application with OVN/OVS as Dataplane and network overlay -- Support for Inter-App comms - - Support for OVS-DPDK or Linux bridge or Default interface for inter-Apps communication for OnPrem deployment -- Accelerator support - - Support for HDDL-R acclerator for interference in container environment for OnPrem deployment -- Edge Applications - - Early Access Support for Open Visual Cloud (OVC) based Smart City App on OpenNESS OnPrem - - Support for Dynamic use of VPU or CPU for Inference +- Support for Inter-App comms + - Support for OVS-DPDK or Linux\* bridge or Default interface for inter-Apps communication for OnPrem deployment +- Accelerator support + - Support for HDDL-R accelerator for interference in a container environment for OnPrem deployment +- Edge Applications + - Early Access Support for Open Visual Cloud (OVC) based Smart City App on OpenNESS OnPrem + - Support for Dynamic use of VPU or CPU for Inferences - Gateway - - Support for Edge node and OpenNESS Controller gate way to support route-ability -- Documentation + - Support for Edge node and OpenNESS Controller gate way to support route-ability +- Documentation - OpenNESS Architecture (update) - OpenNESS Support for OVS as dataplane with OVN - Open Visual Cloud Smart City Application on OpenNESS - Solution Overview - Using Intel® Movidius™ Myriad™ X High Density Deep Learning (HDDL) solution in OpenNESS - OpenNESS How-to Guide (update) - + ## OpenNESS - 19.12 - Hardware - Support for Cascade lake 6252N - - Support for Intel FPGA PAC N3000 + - Support for Intel® FPGA Programmable Acceleration Card (Intel® FPGA PAC) N3000 - Edge Application - - Fully Cloudnative Open Visual Cloud Smart City Application pipeline on OpenNESS Network edge. -- Edge cloud - - EAA and CNCA microservice as native Kubernetes managed services - - Support for Kubernetes version 1.16.2 -- Edge Compute EPA features support for Network Edge - - CPU Manager: Support deployment of POD with dedicated pinning + - Fully cloud native Open Visual Cloud Smart City Application pipeline on OpenNESS Network edge. +- Edge cloud + - EAA and CNCA microservice as native Kubernetes-managed services + - Support for Kubernetes version 1.16.2 +- Edge Compute EPA features support for Network Edge + - CPU Manager: Support deployment of POD with dedicated pinning - SRIOV NIC: Support deployment of POD with dedicated SRIOV VF from NIC - - SRIOV FPGA: Support deployment of POD with dedicated SRIOV VF from FPGA + - SRIOV FPGA: Support deployment of POD with dedicated SRIOV VF from FPGA - Topology Manager: Support k8s to manage the resources allocated to workloads in a NUMA topology-aware manner - - BIOS/FW Configuration service - Intel SysCfg based BIOS/FW management service - - Hugepages: Support for allocation of 1G/2M huge pages to the Pod. + - BIOS/FW Configuration service - Intel SysCfg based BIOS/FW management service + - Hugepages: Support for allocation of 1G/2M huge pages to the Pod - Multus: Support for Multiple network interface in the PODs deployed by Kubernetes - Node Feature discovery: Support detection of Silicon and Software features and automation of deployment of CNF and Applications - - FPGA Remote System Update service: Support Intel OPAE (fpgautil) based image update service for FPGA. + - FPGA Remote System Update service: Support the Open Programmable Acceleration Engine (OPAE) (fpgautil) based image update service for FPGA - Non-Privileged Container: Support deployment of non-privileged pods (CNFs and Applications as reference) -- Edge Compute EPA features support for OnPremises +- Edge Compute EPA features support for On-Premises - Using Intel® Movidius™ Myriad™ X High Density Deep Learning (HDDL) solution in OpenNESS - OpenNESS Experience Kit for Network and OnPremises edge - Offline Release Package: Customers should be able to create an installer package that can be used to install OnPremises version of OpenNESS without the need for Internet access. - 5G NR Edge Cloud deployment support - - 5G NR edge cloud deployment support with SA mode + - 5G NR edge cloud deployment support with SA mode - AF: Support for 5G NGC Application function as a microservice - NEF: Support for 5G NGC Network Exposure function as a microservice - Support for 5G NR UDM, UPF, AMF, PCF and SCF (not part of the release) @@ -146,92 +147,96 @@ This document provides high level system features, issues and limitations inform - DNS support for UE - DNS Support for Edge applications - Documentation - - Completely reorganized documentation structure for ease of navigation + - Completely reorganized documentation structure for ease of navigation - 5G NR Edge Cloud deployment Whitepaper - EPA application note for each of the features ## OpenNESS - 20.03 -- OVN/OVS-DPDK support for dataplane - - Network Edge: Support for kube-ovn CNI with OVS or OVS-DPDK as dataplane. Support for Calico as CNI. +- OVN/OVS-DPDK support for dataplane + - Network Edge: Support for kube-ovn CNI with OVS or OVS-DPDK as dataplane. Support for Calico as CNI. - OnPremises Edge: Support for OVS-DPDK CNI with OVS-DPDK as dataplane supporting application deployed in containers or VMs - Support for VM deployments on Kubernetes mode - - Kubevirt based VM deployment support - - EPA Support for SRIOV Virtual function allocation to the VMs deployed using K8s + - Kubevirt based VM deployment support + - EPA Support for SRIOV Virtual function allocation to the VMs deployed using Kubernetes - EPA support - OnPremises - - Support for dedicated core allocation to application running as VMs or Containers - - Support for dedicated SRIOV VF allocation to application running in VM or containers - - Support for system resource allocation into the application running as container + - Support for dedicated core allocation to applications running as VMs or Containers + - Support for dedicated SRIOV VF allocation to applications running in VM or containers + - Support for system resource allocation into the application running as a container - Mount point for shared storage - Pass environment variables - Configure the port rules -- Core Network Feature (5G) +- Core Network Feature (5G) - PFD Management API support (3GPP 23.502 Sec. 52.6.3 PFD Management service) - AF: Added support for PFD Northbound API - NEF: Added support for PFD southbound API, and Stubs to loopback the PCF calls. - - kubectl: Enhanced CNCA kubectl plugin to configure PFD parameters - - WEB UI: Enhanced CNCA WEB UI to configure PFD params in OnPerm mode + - kubectl: Enhanced CNCA kubectl plugin to configure PFD parameters + - WEB UI: Enhanced CNCA WEB UI to configure PFD params in OnPerm mode - Auth2 based authentication between 5G Network functions: (as per 3GPP Standard) - - Implemented oAuth2 based authentication and validation + - Implemented oAuth2 based authentication and validation - AF and NEF communication channel is updated to authenticated based on oAuth2 JWT token in addition to HTTP2. - - HTTPS support - - Enhanced the 5G OAM, CNCA (web-ui and kube-ctl) to HTTPS interface -- Modular Playbook - - Support for customers to choose real-time or non-realtime kernel for a edge node - - Support for customer to choose CNIs - Validated with Kube-OVN and Calico + - HTTPS support + - Enhanced the 5G OAM, CNCA (web-ui and kube-ctl) to HTTPS interface +- Modular Playbook + - Support for customers to choose real-time or non-realtime kernel for an edge node + - Support for customers to choose CNIs - Validated with Kube-OVN and Calico - Edge Apps - - FlexRAN: dockerfile and pod specification for deployment of 4G or 5G FlexRAN - - AF: dockerfile and pod specification - - NEF: dockerfile and pod specification - - UPF: dockerfile and pod specification + - FlexRAN: Dockerfile and pod specification for the deployment of 4G or 5G FlexRAN + - AF: Dockerfile and pod specification + - NEF: Dockerfile and pod specification + - UPF: Dockerfile and pod specification ## OpenNESS - 20.06 - OpenNESS is now available in two distributions - Open source (Apache 2.0 license) - Intel Distribution of OpenNESS (Intel Proprietary License) - Includes all the code from the open source distribution plus additional features and enhancements to improve the user experience - - Access requires a signed license. A request for access can be made at openness.org by navigating to the “Products” section and selecting “Intel Distribution of OpenNESS” + - Access requires a signed license. A request for access can be made at openness.org by navigating to the "Products" section and selecting "Intel Distribution of OpenNESS" - Both distributions are hosted at github.com/open-ness - On premises configuration now optionally supports Kubernetes - Dataplane - - Support for Calico eBPF as CNI - - Performance baselining of the CNIs -- Visual Compute and Media Analytics - - Intel Visual Cloud Accelerator Card - Analytics (VCAC-A) Kubernetes deployment support (CPU, GPU and VPU) - - Node feature discovery of VCAC-A - - Telemetry support for VCAC-A - - Provide ansible and Helm -playbook support for OVC codecs Intel Xeon CPU mode - video analytics service (REST API) for developers -- Edge Applications + - Support for Calico eBPF as CNI + - Performance baselining of the CNIs +- Visual Compute and Media Analytics + - Intel Visual Cloud Accelerator Card - Analytics (VCAC-A) Kubernetes deployment support (CPU, GPU, and VPU) + - Node feature discovery of VCAC-A + - Telemetry support for VCAC-A + - Provide ansible and Helm -playbook support for OVC codecs Intel® Xeon® CPU mode - video analytics service (REST API) for developers +- Edge Applications - Smart City Application Pipeline supporting CPU or VCAC-A mode with Helm chart - CDN Content Delivery using NGINX with SR-IOV capability for higher performance with Helm chart - - CDN transcode sample application using Intel Xeon CPU optimized media SDK with Helm Chart - - Support for Transcoding Service using Intel Xeon CPU optimized media SDK with Helm chart - - Intel Edge Insights application support with Helm chart -- Edge Network Functions + - CDN transcode sample application using Intel® Xeon® CPU optimized media SDK with Helm chart + - Support for Transcoding Service using Intel® Xeon® CPU optimized media SDK with Helm chart + - Intel Edge Insights application support with Helm chart +- Edge Network Functions - FlexRAN DU with Helm Chart (FlexRAN not part of the release) - - xRAN Fronthaul with Helm CHart (xRAN app not part of the release) -- Helm Chart for Kubernetes enhancements - - NFD, CMK, SRIOV-Device plugin and Multus - - Support for local Docker registry setup -- Support for deployment specific Flavors + - xRAN Fronthaul with Helm CHart (xRAN app not part of the release) + - Core Network Function - Application Function with Helm chart + - Core Network Function - Network Exposure Function With Helm chart + - Core Network Function - UPF (UPF app not part of the release) + - Core network Support functions - OAM and CNTF +- Helm Chart for Kubernetes enhancements + - NFD, CMK, SRIOV-Device plugin and Multus\* + - Support for local Docker registry setup +- Support for deployment-specific Flavors - Minimal - - RAN - 4G and 5G - - Media Analytics with VCAC-A and with CPU only mode + - RAN - 4G and 5G + - Media Analytics with VCAC-A and with CPU only mode - CDN - Transcode - CDN - Content Delivery - - Azure - Deployment of OpenNESS cluster on Microsoft Azure cloud + - Azure - Deployment of OpenNESS cluster on Microsoft\* Azure\* cloud - Support for OpenNESS on CSP Cloud - - Azure - Deployment of OpenNESS cluster on Microsoft Azure cloud + - Azure - Deployment of OpenNESS cluster on Microsoft\* Azure\* cloud - Telemetry Support - - Support for Collectd backend with Intel hardware and custom metrics - - Cpu, cpufreq, load, hugepages, intel_pmu, intel_rdt, ipmi, ovs_stats, ovs_pmd_stats + - Support for Collectd backend with hardware from Intel and custom metrics + - cpu, cpufreq, load, hugepages, intel_pmu, intel_rdt, ipmi, ovs_stats, ovs_pmd_stats - FPGA – PACN3000 (collectd) - Temp, Power draw - - VPU Device memory, VPU device thermal, VPU Device utilization - - Open Telemetry - Support for collector and exporter for metrics ( e.g. heartbeat from app) - - Support for PCM counter for Prometheus and Grafana - - Telemetry Aware Scheduler -- Early Access support for Resource Management Daemon (RMD) - - RMD for cache allocation to the application Pods -- Ability to deploy OpenNESS Master and Node on same platform + - VPU Device memory, VPU device thermal, VPU Device utilization + - Open Telemetry - Support for collector and exporter for metrics (e.g., heartbeat from app) + - Support for PCM counter for Prometheus\* and Grafana\* + - Telemetry Aware Scheduler +- Early Access support for Resource Management Daemon (RMD) + - RMD for cache allocation to the application Pods +- Ability to deploy OpenNESS Master and Node on the same platform ## OpenNESS - 20.09 - Native On-premises mode @@ -241,13 +246,12 @@ This document provides high level system features, issues and limitations inform - Basic support for Service Mesh using istio within an OpenNESS cluster - Application of Service Mesh openness 5G and Media analytics - A dedicated network for service to service communications - EAA Update - - EAA microservices has been updated to be more cloud-native friendly + - EAA microservices has been updated to be more cloud-native friendly - Edge Insights Application (update) - - Industrial Edge Insights Software update to version 2.3. + - Industrial Edge Insights Software update to version 2.3. - Experience Kit now supports multiple detection video's – Safety equipment detection, PCB default detection and also supports external video streams. ## OpenNESS - 20.12 -- Multi-Access - N3IWF - uCPE/SDWAN - EMCO-OpenNESS - Operators @@ -269,9 +273,9 @@ There are no unsupported or discontinued features relevant to this release. There are no unsupported or discontinued features relevant to this release. ## OpenNESS - 19.12 -- NTS Dataplane support for Network edge is discontinued. -- Controller UI for Network edge has be discontinued except for the CNCA configuration. Customers can optionally leverage Kubernetes dashboard to onboard applications. -- Edge node only supports non-realtime kernel. +- NTS Dataplane support for Network edge is discontinued. +- Controller UI for Network edge has been discontinued except for the CNCA configuration. Customers can optionally leverage the Kubernetes dashboard to onboard applications. +- Edge node only supports non-realtime kernel. ## OpenNESS - 20.03 - Support for HDDL-R only restricted to non-real-time or non-customized CentOS 7.6 default kernel. @@ -292,12 +296,12 @@ There are no non-Intel issues relevant to this release. ## OpenNESS - 19.06.01 - VHOST HugePages dependency -- Bug in getting appId by IP address for container +- Bug in getting appId by IP address for the container - Wrong value of appliance verification key printed by ansible script -- NTS is in hanging state when trying to add same traffic policy to multiple interfaces +- NTS is hanging when trying to add same traffic policy to multiple interfaces - Application in VM cannot be started - Bug in libvirt deployment -- Invalid status after app undeployment +- Invalid status after app un-deployment - Application memory field is in MB ## OpenNESS - 19.12 @@ -311,46 +315,46 @@ There are no non-Intel issues relevant to this release. - Optimized the Kubernetes based deployment by supporting multiple Flavors ## OpenNESS - 20.09 -- Further optimized the Kubernetes based deployment by supporting multiple Flavors -- Network edge installation time is optimized using pre-built docker images -- cAdvisor occasional failure issue is resolved +- Further optimized the Kubernetes based deployment by supporting multiple Flavors +- Network edge installation time is optimized using pre-built Docker images +- cAdvisor occasional failure issue is resolved # Known Issues and Limitations ## OpenNESS - 19.06 There are no issues relevant to this release. ## OpenNESS - 19.06.01 -There is one issue relevant to this release: it is not possible to remove application from Edge Node in case of error during application deployment. The issue concerns application in Virtual Machine. +There is one issue relevant to this release: it is not possible to remove the application from Edge Node in case of error during application deployment. The issue concerns applications in a Virtual Machine. ## OpenNESS - 19.09 - Gateway in multi-node - will not work when few nodes will have the same public IP (they will be behind one common NAT) -- Ansible in K8s can cause problems when rerun on a machine: - - If after running all 3 scripts +- Ansible in K8s can cause problems when rerun on a machine: + - If after running all 3 scripts - Script 02 will be run again (it will not remove all necessary K8s related artifacts) - We would recommend cleaning up the installation on the node ## OpenNESS - 19.12 - Gateway in multi-node - will not work when few nodes will have the same public IP (they will be behind one common NAT) -- OpenNESS OnPremises: Can not remove a failed/disconnected the edge node information/state from the controller -- The CNCA APIs (4G & 5G) supported in this release is an early access reference implementation and does not support authentication -- Realtime kernel support has been temporarily disabled to address the Kubernetes 1.16.2 and Realtime kernel instability. +- OpenNESS On-Premises: Cannot remove a failed/disconnected the edge node information/state from the controller +- The CNCA API (4G & 5G) supported in this release is an early access reference implementation and does not support authentication +- Real-time kernel support has been temporarily disabled to address the Kubernetes 1.16.2 and Realtime kernel instability. ## OpenNESS - 20.03 -- On-Premises edge installation takes more than 1.5hrs because of docker image build for OVS-DPDK -- Network edge installation takes more than 1.5hrs because of docker image build for OVS-DPDK -- OpenNESS controller allows management NICs to be in the pool of configuration which might allow configuration by mistake there by disconnecting the node from control plane -- When using the SRIOV EPA feature added in 20.03 with OVNCNI, the container cannot access the CNI port. This is due to the SRIOV port being set by changing the network used by the container from default to a custom network, This overwrites the OVNCNI network setting configured prior to this to enable the container to work with OVNCNI. Another issue with the SRIOV, is that this also overwrites the network configuration with the EAA and edgedns, agents, which prevents the SRIOV enabled container from communicating with the agents. -- Cannot remove Edge Node from Controller when its offline and traffic policy is configured or app is deployed. - +- On-Premises edge installation takes more than 1.5 hours because of the Docker image build for OVS-DPDK +- Network edge installation takes more than 1.5 hours because of the Docker image build for OVS-DPDK +- OpenNESS controller allows management NICs to be in the pool of configuration, which might allow configuration by mistake. Thus, disconnecting the node from control plane +- When using the SRIOV EPA feature added in 20.03 with OVNCNI, the container cannot access the CNI port. This is due to the SRIOV port being set by changing the network used by the container from default to a custom network. This overwrites the OVNCNI network setting configured before this to enable the container to work with OVNCNI. Another issue with the SRIOV, is that this also overwrites the network configuration with the EAA and edgedns, agents, which prevents the SRIOV enabled container from communicating with the agents. +- Cannot remove Edge Node from Controller when its offline and traffic policy is configured or the app is deployed. + ## OpenNESS - 20.06 -- On-Premises edge installation takes 1.5hrs because of docker image build for OVS-DPDK +- On-Premises edge installation takes 1.5hrs because of the Docker image build for OVS-DPDK - Network edge installation takes 1.5hrs because of docker image build for OVS-DPDK -- OpenNESS controller allows management NICs to be in the pool of configuration which might allow configuration by mistake there by disconnecting the node from control plane +- OpenNESS controller allows management NICs to be in the pool of configuration, which might allow configuration by mistake and thereby disconnect the node from control plane - When using the SRIOV EPA feature added in 20.03 with OVNCNI, the container cannot access the CNI port. This is due to the SRIOV port being set by changing the network used by the container from default to a custom network, This overwrites the OVNCNI network setting configured prior to this to enable the container to work with OVNCNI. Another issue with the SRIOV, is that this also overwrites the network configuration with the EAA and edgedns, agents, which prevents the SRIOV enabled container from communicating with the agents. - Cannot remove Edge Node from Controller when its offline and traffic policy is configured or app is deployed. -- Legacy OnPremises - Traffic rule creation: cannot parse filled and cleared field -- There is an issue with using CDI when uploading VM images when CMK is enabled due to missing CMK taint toleration. The CDI upload pod does not get deployed and the `virtctl` plugin command times out waiting for the action to complete. A workaround for the issue is to invoke the CDI upload command, edit the taint toleration for the CDI upload to tolerate CMK, update the pod, create the PV and let the pod run to completion. -- There is a known issue with cAdvisor which in certain scenarios occasionally fails to expose the metrics for Prometheus endpoint, see Git Hub: https://github.com/google/cadvisor/issues/2537 +- Legacy OnPremises - Traffic rule creation: cannot parse filled and cleared fields +- There is an issue with using CDI when uploading VM images when CMK is enabled due to missing CMK taint toleration. The CDI upload pod does not get deployed and the `virtctl` plugin command times out waiting for the action to complete. A workaround for the issue is to invoke the CDI upload command, edit the taint toleration for the CDI upload to tolerate CMK, update the pod, create the PV, and let the pod run to completion. +- There is a known issue with cAdvisor which in certain scenarios occasionally fails to expose the metrics for the Prometheus endpoint. See the following GitHub\* link: https://github.com/google/cadvisor/issues/2537 ## OpenNESS - 20.09 - Pod which uses hugepage get stuck in terminating state on deletion. This is a known issue on Kubernetes 1.18.x and is planned to be fixed in 1.19.x @@ -358,81 +362,84 @@ There is one issue relevant to this release: it is not possible to remove applic - collectd Cache telemetry using RDT does not work when RMD is enabled because of resource conflict. Workaround is to disable collectd RDT plugin when using RMD - this by default is implemented globally. With this workaround customers will be able to allocate the Cache but not use Cache related telemetry. In case where RMD is not being enabled customers who desire RDT telemetry can re-enable collectd RDT. ## OpenNESS - 20.12 -- CAdvisor CPU utilization of Edge Node is high and could cause a delay to get an interactive SSH session. A work around is to remove CAdvisor if not needed using `helm uninstall cadvisor -n telemetry` +- cAdvisor CPU utilization of Edge Node is high and could cause a delay to get an interactive SSH session. A work around is to remove CAdvisor if not needed using `helm uninstall cadvisor -n telemetry` # Release Content ## OpenNESS - 19.06 -OpenNESS Edge node, OpenNESS Controller, Common, Spec and OpenNESS Applications. +OpenNESS Edge node, OpenNESS Controller, Common, Spec, and OpenNESS Applications. ## OpenNESS - 19.06.01 -OpenNESS Edge node, OpenNESS Controller, Common, Spec and OpenNESS Applications. +OpenNESS Edge node, OpenNESS Controller, Common, Spec, and OpenNESS Applications. ## OpenNESS 19.09 -OpenNESS Edge node, OpenNESS Controller, Common, Spec and OpenNESS Applications. +OpenNESS Edge node, OpenNESS Controller, Common, Spec, and OpenNESS Applications. ## OpenNESS - 19.12 -OpenNESS Edge node, OpenNESS Controller, Common, Spec, OpenNESS Applications and Experience kit. +OpenNESS Edge node, OpenNESS Controller, Common, Spec, OpenNESS Applications, and Experience kit. ## OpenNESS - 20.03 -OpenNESS Edge node, OpenNESS Controller, Common, Spec, OpenNESS Applications and Experience kit. +OpenNESS Edge node, OpenNESS Controller, Common, Spec, OpenNESS Applications, and Experience kit. ## OpenNESS - 20.06 -- Open Source: Edge node, Controller, Epcforedge, Common, Spec, Applications and Experience kit. -- IDO: IDO Edge node, IDO Controller, IDO Epcforedge, IDO Spec and IDO Experience kit. +- Open Source: Edge node, Controller, Epcforedge, Common, Spec, Applications, and Experience kit. +- IDO: IDO Edge node, IDO Controller, IDO Epcforedge, IDO Spec, and IDO Experience kit. ## OpenNESS - 20.09 - Open Source: Edge node, Controller, Epcforedge, Common, Spec, Applications and Experience kit. - IDO: IDO Edge node, IDO Controller, IDO Epcforedge, IDO Spec and IDO Experience kit. - > **Note:** Application repo common to Open Source and IDO - + > **NOTE**: Edge applications repo is common to Open Source and IDO + # Hardware and Software Compatibility OpenNESS Edge Node has been tested using the following hardware specification: ## Intel® Xeon® D Processor -- Super Micro 3U form factor chasis server, product SKU code: 835TQ-R920B +- Supermicro\* 3U form factor chassis server, product SKU code: 835TQ-R920B - Motherboard type: [X11SDV-16C-TP8F](https://www.supermicro.com/products/motherboard/Xeon/D/X11SDV-16C-TP8F.cfm) - Intel® Xeon® Processor D-2183IT ## 2nd Generation Intel® Xeon® Scalable Processors -| | | -|------------------|---------------------------------------------------------------| -| CLX-SP | Compute Node based on CLX-SP(6252N) | -| Board | S2600WFT server board | -| | 2 x Intel(R) Xeon(R) Gold 6252N CPU @ 2.30GHz | -| | 2 x associated Heatsink | -| Memory | 12x Micron 16GB DDR4 2400MHz DIMMS * [2666 for PnP] | -| Chassis | 2U Rackmount Server Enclosure | -| Storage | Intel M.2 SSDSCKJW360H6 360G | -| NIC | 1x Intel Fortville NIC  X710DA4  SFP+ ( PCIe card to CPU-0) | -| QAT | Intel  Quick Assist Adapter Device 37c8 | -| | (Symmetrical design) LBG integrated | -| NIC on board | Intel-Ethernet-Controller-I210 (for management) | -| Other card | 2x PCIe Riser cards | +| | | +| ------------ | ---------------------------------------------------------- | +| CLX-SP | Compute Node based on CLX-SP(6252N) | +| Board | S2600WFT server board | +| | 2 x Intel® Xeon® Gold 6252N CPU @ 2.30GHz | +| | 2 x associated Heatsink | +| Memory | 12x Micron 16GB DDR4 2400MHz DIMMS* [2666 for PnP] | +| Chassis | 2U Rackmount Server Enclosure | +| Storage | Intel M.2 SSDSCKJW360H6 360G | +| NIC | 1x Intel® Fortville NIC X710DA4 SFP+ ( PCIe card to CPU-0) | +| QAT | Intel® Quick Assist Adapter Device 37c8 | +| | (Symmetrical design) LBG integrated | +| NIC on board | Intel-Ethernet-Controller-I210 (for management) | +| Other card | 2x PCIe Riser cards | ## Intel® Xeon® Scalable Processors -| | | -|------------------|---------------------------------------------------------------| -| SKX-SP | Compute Node based on SKX-SP(6148) | -| Board | WolfPass S2600WFQ server board(symmetrical QAT)CPU | -| | 2 x Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz | -| | 2 x associated Heatsink | -| Memory | 12x Micron 16GB DDR4 2400MHz DIMMS * [2666 for PnP] | -| Chassis | 2U Rackmount Server Enclosure | -| Storage | Intel M.2 SSDSCKJW360H6 360G | -| NIC | 1x Intel Fortville NIC  X710DA4  SFP+ ( PCIe card to CPU-0) | -| QAT | Intel  Quick Assist Adapter Device 37c8 | -| | (Symmetrical design) LBG integrated | -| NIC on board | Intel-Ethernet-Controller-I210 (for management) | -| Other card | 2x PCIe Riser cards | -| HDDL-R | [Mouser Mustang-V100](https://www.mouser.ie/datasheet/2/763/Mustang-V100_brochure-1526472.pdf) | -| VCAC-A | [VCAC-A Accelerator for Media Analytics](https://www.intel.com/content/dam/www/public/us/en/documents/datasheets/media-analytics-vcac-a-accelerator-card-by-celestica-datasheet.pdf) | -| PAC-N3000 | [Intel® FPGA Programmable Acceleration Card (Intel® FPGA PAC) N3000 ](https://www.intel.com/content/www/us/en/programmable/products/boards_and_kits/dev-kits/altera/intel-fpga-pac-n3000/overview.html) | +| | | +| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| SKX-SP | Compute Node based on SKX-SP(6148) | +| Board | WolfPass S2600WFQ server board(symmetrical QAT)CPU | +| | 2 x Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz | +| | 2 x associated Heatsink | +| Memory | 12x Micron 16GB DDR4 2400MHz DIMMS* [2666 for PnP] | +| Chassis | 2U Rackmount Server Enclosure | +| Storage | Intel® M.2 SSDSCKJW360H6 360G | +| NIC | 1x Intel® Fortville NIC X710DA4 SFP+ ( PCIe card to CPU-0) | +| QAT | Intel® Quick Assist Adapter Device 37c8 | +| | (Symmetrical design) LBG integrated | +| NIC on board | Intel-Ethernet-Controller-I210 (for management) | +| Other card | 2x PCIe Riser cards | +| HDDL-R | [Mouser Mustang-V100](https://www.mouser.ie/datasheet/2/763/Mustang-V100_brochure-1526472.pdf) | +| VCAC-A | [VCAC-A Accelerator for Media Analytics](https://www.intel.com/content/dam/www/public/us/en/documents/datasheets/media-analytics-vcac-a-accelerator-card-by-celestica-datasheet.pdf) | +| PAC-N3000 | [Intel® FPGA Programmable Acceleration Card (Intel® FPGA PAC) N3000 ](https://www.intel.com/content/www/us/en/programmable/products/boards_and_kits/dev-kits/altera/intel-fpga-pac-n3000/overview.html) | # Supported Operating Systems -> OpenNESS was tested on CentOS Linux release 7.8.2003 (Core) : Note: OpenNESS is tested with CentOS 7.8 Pre-empt RT kernel to ensure VNFs and Applications can co-exist. There is not a requirement from OpenNESS software to run on a Pre-empt RT kernel. -# Package Versions -Package: telemetry, cadvisor 0.36.0, grafana 7.0.3, prometheus 2.16.0, prometheus: node exporter 1.0.0-rc.0, golang 1.14.9 docker 19.03.12, kubernetes 1.19.3, dpdk 18.11.6, ovs 2.12.0, ovn 2.12.0, helm 3.0, kubeovn 1.0.1, flannel 0.12.0, calico 3.16.0 , multus 3.6, sriov cni 2.3, nfd 0.6.0, cmk v1.4.1, TAS we build from specific commit “a13708825e854da919c6fdf05d50753113d04831” +OpenNESS was tested on CentOS Linux release 7.8.2003 (Core) +> **NOTE**: OpenNESS is tested with CentOS 7.8 Pre-empt RT kernel to ensure VNFs and Applications can co-exist. There is no requirement from OpenNESS software to run on a Pre-empt RT kernel. + +# Packages Version + +Package: telemetry, cadvisor 0.36.0, grafana 7.0.3, prometheus 2.16.0, prometheus: node exporter 1.0.0-rc.0, golang 1.14.9 docker 19.03.12, kubernetes 1.19.3, dpdk 18.11.6, ovs 2.12.0, ovn 2.12.0, helm 3.0, kubeovn 1.0.1, flannel 0.12.0, calico 3.16.0, multus 3.6, sriov cni 2.3, nfd 0.6.0, cmk v1.4.1, TAS we build from specific commit "a13708825e854da919c6fdf05d50753113d04831" From ffa56034544aa1a1819d98fda4dd2e55e6a6d423 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Tue, 15 Dec 2020 13:41:38 +0800 Subject: [PATCH 100/148] address Neal comments --- doc/building-blocks/emco/openness-emco.md | 101 +++++++++++----------- 1 file changed, 52 insertions(+), 49 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 181c06e4..c085055f 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -12,7 +12,7 @@ Copyright (c) 2020 Intel Corporation - [EMCO API](#emco-api) - [EMCO Authentication and Authorization](#emco-authentication-and-authorization) - [EMCO Installation With OpenNESS Flavor](#emco-installation-with-openness-flavor) - - [Practise with EMCO: SmartCity Deployment](#practise-with-emco-smartcity-deployment) + - [Practice with EMCO: SmartCity Deployment](#practice-with-emco-smartcity-deployment) ## Background Edge Multi-Cluster Orchestration(EMCO), an OpenNESS Building Block, is a Geo-distributed application orchestrator for Kubernetes\*. The main objective of EMCO is automation of the deployment of applications and services across clusters. It acts as a central orchestrator that can manage edge services and network functions across geographically distributed edge clusters from different third parties. Finally, the resource orchestration within a cluster of nodes will leverage Kubernetes* and Helm charts. @@ -20,7 +20,7 @@ Edge Multi-Cluster Orchestration(EMCO), an OpenNESS Building Block, is a Geo-dis EMCO addresses the need for deploying 'composite applications' in multiple geographical locations. > **NOTE**: A 'composite application' is a combination of multiple applications. Based on the deployment intent, various applications of the composite application get deployed at various locations, and get replicated in multiple locations. -Compared with other multipe-clusters orchestration, EMCO focuses on the following functionalies: +Compared with other multipe-clusters orchestration, EMCO focuses on the following functionalities: - Enrolling multiple geographically distributed OpenNESS clusters and third party cloud clusters. - Orchestrating composite applications (composed of multiple individual applications) across the clusters. - Deploying edge services and network functions on to different nodes spread across the different clusters. @@ -29,28 +29,29 @@ Compared with other multipe-clusters orchestration, EMCO focuses on the followin - Supporting onboarding of multiple tenants from different enterprises while ensuring confidentiality and full isolation across the tenants. -The following figure shows the topology overview for the OpenNESS EMCO orchestration with edge and multiple clusters. +The following figure shows the topology overview for the OpenNESS EMCO orchestration with edge and multiple clusters. It also shows an example of deploying SmartCity with EMCO. +> **NOTE**: Smart City sample source code and documentation are available on [GitHub](https://github.com/OpenVisualCloud/Smart-City-Sample) ![OpenNESS EMCO](openness-emco-images/openness-emco-topology.png) -_Figure - Topology Overview with OpenNESS EMCO_ +_Figure 1 - Topology Overview with OpenNESS EMCO_ -All the managed edge clusters and cloud clusters are connected with EMCO cluster through the WAN network. -- The central orchestration (EMCO) cluster installation can use [OpenNESS Central Orchestrator Flavor](../../flavors.md). -- The edge clusters in the diagram can be installed and provisioned by using [OpenNESS Media Analytics Flavor](../../flavors.md). +All the managed edge clusters and cloud clusters are connected with the EMCO cluster through the WAN network. +- The central orchestration (EMCO) cluster installation can use the [OpenNESS Central Orchestrator Flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md). +- The edge clusters in the diagram can be installed and provisioned by using the [OpenNESS Media Analytics Flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md). - The cloud cluster in the diagram can be any type of cloud cluster, for example: Azure Cloud. - The composite application - SmartCity is composed of two parts: edge applications and cloud (web) applications. - The edge application executes media processing and analytics on multiple edge clusters to reduce latency. - The cloud application is like a web application for additional post-processing, such as calculating statistics and display/visualization on the cloud cluster side. - - An EMCO user can deploy the SmartCity applications across the clusters. Besides that, EMCO supports override values, profiles for the operator to satisfy the need of deployments. - - For more details, refer to [SmartCity Deployment Practise with EMCO](#smartcity-deployment-practise-with-emco). + - The EMCO user can deploy the SmartCity applications across the clusters. Besides that, EMCO allows the operator to override configurations and profiles to satisfy deployment needs. + - For more details, refer to [Practice with EMCO: SmartCity Deployment](#practice-with-emco-smartcity-deployment). -This document aims to familiarize the user with [OpenNESS deployment flavor](../../flavors.md) for EMCO installation and provision, and provide instructions accordingly. +This document aims to familiarize the user with [OpenNESS deployment flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md) for EMCO installation and provision, and provide instructions accordingly. ## EMCO Introduction ### EMCO Architecture The following diagram depicts a high level overview of the EMCO architecture. ![OpenNESS EMCO](openness-emco-images/openness-emco-arch.png) -_Figure - EMCO Architecture_ +_Figure 2 - EMCO Architecture_ - Cluster Registration Controller registers clusters by cluster owners. - Distributed Application Scheduler provides a simplified and extensible placement. - Network Configuration Management handles creation/management of virtual and provider networks. @@ -111,7 +112,7 @@ Due to the close relationship with Clusters, which are provided by Cluster Regis ![Mapping between Logical Clouds and Clusters](openness-emco-images/openness-emco-lccl.png) -_Figure - Mapping between Logical Clouds and Clusters_ +_Figure 3 - Mapping between Logical Clouds and Clusters_ ##### Lifecycle Operations Prerequisites to using Logical Clouds: @@ -148,49 +149,53 @@ The OVN Action Controller (ovnaction) microservice is an action controller which The traffic controller microservice provides a way to create network policy resources across edge clusters. It provides inbound RESTful APIs to create intents to open the traffic from clients, and provides change and delete APIs for update and deletion of traffic intents. Using the information provided through intents, it also creates a network policy resource for each of the application servers on the corresponding edge cluster. > **NOTE**:For network policy to work, edge cluster must have network policy support using CNI such as calico. -#### Resource Syncronizer +#### Resource Synchronizer This microservice is the one which deploys the resources in edge/cloud clusters. 'Resource contexts' created by various microservices are used by this microservice. It takes care of retrying, in case the remote clusters are not reachable temporarily. #### Generic Action Controller -The generic action controller microservice is an action controller which may be registered with the central orchestrator. It can acheive the following usecases: +The generic action controller microservice is an action controller which may be registered with the central orchestrator. It can achieve the following usecases: - Create a new Kubernetes* object and deploy that along with a specific application which is part of the composite Application. There are two variations here: - Default : Apply the new object to every instance of the app in every cluster where the app is deployed. - Cluster-Specific : Apply the new object only where the app is deployed to a specific cluster, denoted by a cluster-name or a list of clusters denoted by a cluster-label. -- Modify an existing Kubernetes* object which may have been deployed using the helm chart for an app, or may have been newly created by the above mentioned usecase. Modification may correspond to specific fields in the YAML definition of the object. +- Modify an existing Kubernetes* object which may have been deployed using the Helm chart for an app, or may have been newly created by the above mentioned usecase. Modification may correspond to specific fields in the YAML definition of the object. -To acheive both the usecases, the controller exposes REST APIs to create, update and delete the following: +To achieve both the usecases, the controller exposes RESTful APIs to create, update and delete the following: - Resource - Specifies the newly defined object or an existing object. -- Customization - Specifies the modifications(using JSON Patching) to be applied on the objects. +- Customization - Specifies the modifications (using JSON Patching) to be applied on the objects. ### EMCO Terminology | | | |------------------------|----------------------------------------------------------------------------------------------------------------------------------| -| Cluster Provider | The provider is someone who owns clusters and registers them. | -| Projects | The project resource provides means for a collection of applications to be grouped. | +| Cluster Provider | The provider is someone who owns clusters and registers them. | +| Projects | The project resource provides means for a collection of applications to be grouped. | | | Several applications can exist under a specific project. | | | Projects allows for grouping of applications under a common tenant to be defined. | +|------------------------|----------------------------------------------------------------------------------------------------------------------------------| | Composite application | Composite application is combination of multiple applications. | | | Based on the deployment intent, various applications of the composite application get deployed at various locations. | | | Also, some applications of the composite application get replicated in multiple locations. | -| Deployment Intent | EMCO does not expect the editing of helm charts provided by application/Network-function vendors by DevOps admins. | +|------------------------|----------------------------------------------------------------------------------------------------------------------------------| +| Deployment Intent | EMCO does not expect the editing of Helm charts provided by application/Network-function vendors by DevOps admins. | | | Any customization and additional K8s resources that need to be present with the application are specified as deployment intents. | +|------------------------|----------------------------------------------------------------------------------------------------------------------------------| | Placement Intent | EMCO supports to create generic placement intents for a given composite application. | | | Normally, EMCO scheduler calls placement controllers first to figure out the edge/cloud locations for a given application. | | | Finally works with 'resource synchronizer & status collector' to deploy K8s resources on various Edge/Cloud clusters. | +|------------------------|----------------------------------------------------------------------------------------------------------------------------------| ### EMCO API -For user interaction, EMCO provides [RESTAPI](https://github.com/otcshare/EMCO/blob/main/docs/emco_apis.yaml). Apart from that, EMCO also provides CLI. For the detailed usage, refer to [EMCO CLI](https://github.com/otcshare/EMCO/tree/main/src/tools/emcoctl) -> **NOTE**: The EMCO REST API is the foundation for the other interaction facilities like the EMCO CLI and even EMCO GUI (third party developed right now) +For user interaction, EMCO provides [RESTful API](https://github.com/otcshare/EMCO/blob/main/docs/emco_apis.yaml). Apart from that, EMCO also provides CLI. For the detailed usage, refer to [EMCO CLI](https://github.com/otcshare/EMCO/tree/main/src/tools/emcoctl) +> **NOTE**: The EMCO RESTful API is the foundation for the other interaction facilities like the EMCO CLI and even EMCO GUI (third party developed right now) ### EMCO Authentication and Authorization EMCO uses Istio and other open source solutions to provide Multi-tenancy solution leveraging Istio Authorization and Authentication frameworks. This is achieved without adding any logic in EMCO microservices. -- Authentication and Authorization for the EMCO users is done at the Isito Ingress Gateway, where all the traffic enters the cluster. +- Authentication and Authorization for the EMCO users is done at the Istio Ingress Gateway, where all the traffic enters the cluster. -- Istio alongwith autherservice (istio ecosystem project) enables request-level authentication with JSON Web Token (JWT) validation. Authservice is an entity that works along side with Envoy proxy. It is used to work with external IAM systems (OAUTH2). Many Enterprises have their own OAUTH2 server for authenticating users and provide roles. +- Istio along with autherservice (istio ecosystem project) enables request-level authentication with JSON Web Token (JWT) validation. Authservice is an entity that works along side with Envoy proxy. It is used to work with external IAM systems (OAUTH2). Many Enterprises have their own OAUTH2 server for authenticating users and provide roles. - Authservice and ISTIO can be configured to talk to multiple OAUTH2 servers. Using this capability EMCO can support multiple tenants, for example one tenant belonging to one project. @@ -200,13 +205,13 @@ The following figure shows various Emco services running in a cluster with Istio ![OpenNESS EMCO](openness-emco-images/emco-istio-arch.png) -_Figure - EMCO setup with Istio and Authservice_ +_Figure 4 - EMCO setup with Istio and Authservice_ The following figure shows the authentication flow with EMCO, Istio and Authservice ![OpenNESS EMCO](openness-emco-images/emco-istio-auth.png) -_Figure - EMCO Authenication with external OATH2 Server_ +_Figure 5 - EMCO Authenication with external OATH2 Server_ Detailed steps for configuring EMCO with Istio can be found in [Emco Integrity and Access Management](https://github.com/otcshare/EMCO/tree/main/docs/user/Emco_Integrity_Access_Management.md) document. @@ -219,16 +224,14 @@ Steps for EMCO Authentication and Authorization Setup: - Configure Istio Ingress gateway resources for Emco Services - Configure Istio Ingess gateway to enable running along with Authservice - Apply EnvoyFilter for Authservice -- Apply Authenication and Authorization Policies +- Apply Authentication and Authorization Policies ### EMCO Installation With OpenNESS Flavor -EMCO supports [multiple deployment options](https://github.com/otcshare/EMCO/tree/main/deployments). OpenNESS offers the `central_orchestrator` to automate EMCO build and deployment as mentioned below. -The first step is to prepare one server environment which needs to fulfill the [Preconditions](../../getting-started/network-edge/controller-edge-node-setup.md#preconditions). - -Then Place the EMCO server hostname in `[controller_group]` group in `inventory.ini` file of openness-experience-kit. +EMCO supports [multiple deployment options](https://github.com/otcshare/EMCO/tree/main/deployments). [OpenNESS Experience Kit](https://github.com/otcshare/specs/blob/master/doc/getting-started/openness-experience-kits.md) offers the `central_orchestrator` flavor to automate EMCO build and deployment as mentioned below. +- The first step is to prepare one server environment which needs to fulfill the [Preconditions](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#preconditions). +- Then place the EMCO server hostname in `[controller_group]` group in `inventory.ini` file of openness-experience-kit. > **NOTE**: `[edgenode_group]` and `[edgenode_vca_group]` are not required for configuration, since EMCO micro services just need to be deployed on the Kubernetes* control plane node. - -Run script `./deploy_ne.sh -f central_orchestrator`. Deployment should complete successfully. In the flavor, harbor registry is deployed to provide images services as well. +- Run script `./deploy_ne.sh -f central_orchestrator`. Deployment should complete successfully. In the flavor, harbor registry is deployed to provide images services as well. ```shell # kubectl get pods -A @@ -268,30 +271,30 @@ kube-system ovs-ovn-jq6dn 1/1 Running ``` -## Practise with EMCO: SmartCity Deployment -- One OpenNESS edge cluster (representing regional office) and One legacy K8s Cluster (representing cloud) are connected to the OpenNESS EMCO cluster. +## Practice with EMCO: SmartCity Deployment - The SmartCity application is a sample application that is built on top of the OpenVINO™ and Open Visual Cloud software stacks for media processing and analytics. - - The whole application is composed of two parts: + - The composite application is composed of two parts: - EdgeApp (multiple OpenNESS edge clusters) - WebApp (cloud application for additional post-processing such as calculating statistics and display/visualization) +- One OpenNESS edge cluster (representing regional office) and One legacy K8s Cluster (representing cloud) are connected to the OpenNESS EMCO cluster. - The whole deployment architecture diagram is as shown below: ![OpenNESS EMCO](openness-emco-images/openness-emco-smtc.png) -_Figure - SmartCity Deployment Architecture Overview_ +_Figure 6 - SmartCity Deployment Architecture Overview_ -The typical steps involved in the cluster registration and deployment of the application using OpenNESS EMCO are as following: +The typical steps involved in the cluster registration and deployment of the application using OpenNESS EMCO are as follows: - Prerequisites - - Make One OpenNESS Edge Cluster Ready with any OpenNESS Flavor (OpenNESS Application Node Flavor is proposed) - - Make One Legacy K8s Cluster Ready (Simulate cloud cluster) - - Prepare One Server with a Vanilla CentOS for EMCO (Only one server is required for EMCO cluster) + - Make one OpenNESS edge cluster ready. + - Make one legacy K8s cluster ready (Simulate cloud cluster). + - Prepare One server with a vanilla CentOS\* 7.8.2003 for EMCO (Only one server is required for EMCO cluster). - EMCO Installation -- Clusters Setup +- Cluster Setup - Project Setup - Logical Cloud Setup - Deploy SmartCity Application -### Clusters Setup -In the step, cluster provider will be created and clusters will be registered in the EMCO. +### Cluster Setup +In the step, cluster provider will be created. And both the edge cluster and the cloud cluster will be registered in the EMCO. 1. After [EMCO Installation With OpenNESS Flavor](#emco-installation), logon to the EMCO server and maker sure that Harbor and EMCO microservices are in running status. @@ -309,7 +312,7 @@ docker login ${HARBORRHOST} -u admin -p ${HARBORRPW} ``` > **NOTE**: should be `:30003`. -3. On EMCO server, download the [scripts](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco). +3. On the EMCO server, download the [scripts,profiles and configmap JSON files](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco). 4. Run the command for the environment setup with success return as below: ```shell @@ -368,7 +371,7 @@ http://localhost:31298/v2 URL: projects/project_smtc/composite-apps/composite_smtc/v1/deployment-intent-groups/smtc-deployment-intent-group/instantiate Response Code: 202 Response: ``` -2. On both edge cluster and cloud cluster, manually create `tunnel_secret` as below: +2. On both the edge cluster and the cloud cluster, manually create `tunnel_secret` as below: ```shell #!/usr/bin/env bash PRIKEY=/root/tunnel_secret/id_rsa @@ -416,11 +419,11 @@ cloud-web-64fb95884f-m9fns 1/1 Running 0 20h From a web browser, launch the Smart City web UI at URL `https://`. The GUI shows like: ![OpenNESS EMCO](openness-emco-images/openness-emco-smtcui.png) -_Figure - SmartCity UI_ +_Figure 7 - SmartCity UI_ ### SmartCity Termination -Run the command for the SmartCity termination with expected result as below: +Run the command for the SmartCity application termination with expected result as below: ```shell # cd cli-scripts/ # ./88_terminate.sh @@ -430,5 +433,5 @@ http://localhost:31298/v2 URL: projects/project_smtc/composite-apps/composite_smtc/v1/deployment-intent-groups/smtc-deployment-intent-group/terminate Response Code: 202 Response: ``` -After termination, SmartCity Application will be deleted from the clusters. +After termination, the SmartCity application will be deleted from the clusters. From a4acba3c48831338910054ae5b996b3fc6342d5b Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Tue, 15 Dec 2020 13:44:39 +0800 Subject: [PATCH 101/148] correct section link issue --- doc/building-blocks/emco/openness-emco.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index c085055f..49a42629 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -296,7 +296,7 @@ The typical steps involved in the cluster registration and deployment of the app ### Cluster Setup In the step, cluster provider will be created. And both the edge cluster and the cloud cluster will be registered in the EMCO. -1. After [EMCO Installation With OpenNESS Flavor](#emco-installation), logon to the EMCO server and maker sure that Harbor and EMCO microservices are in running status. +1. After [EMCO Installation With OpenNESS Flavor](#emco-installation-with-openness-flavor), logon to the EMCO host server and maker sure that Harbor and EMCO microservices are in running status. 2. On the edge and cloud cluster, run the following command to make Docker logon the Harbor deployed on the EMCO server: ```shell From d1f5ff3cb22aac51631417e4ec0377bb9bf9021f Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Tue, 15 Dec 2020 13:56:51 +0800 Subject: [PATCH 102/148] correct table --- doc/building-blocks/emco/openness-emco.md | 41 +++++++++-------------- 1 file changed, 15 insertions(+), 26 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 49a42629..764cf412 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -15,7 +15,7 @@ Copyright (c) 2020 Intel Corporation - [Practice with EMCO: SmartCity Deployment](#practice-with-emco-smartcity-deployment) ## Background -Edge Multi-Cluster Orchestration(EMCO), an OpenNESS Building Block, is a Geo-distributed application orchestrator for Kubernetes\*. The main objective of EMCO is automation of the deployment of applications and services across clusters. It acts as a central orchestrator that can manage edge services and network functions across geographically distributed edge clusters from different third parties. Finally, the resource orchestration within a cluster of nodes will leverage Kubernetes* and Helm charts. +Edge Multi-Cluster Orchestration(EMCO), an OpenNESS Building Block, is a Geo-distributed application orchestrator for Kubernetes\*. The main objective of EMCO is automation of the deployment of applications and services across clusters. It acts as a central orchestrator that can manage edge services and network functions across geographically distributed edge clusters from different third parties. Finally, the resource orchestration within a cluster of nodes will leverage Kubernetes\* and Helm charts. EMCO addresses the need for deploying 'composite applications' in multiple geographical locations. > **NOTE**: A 'composite application' is a combination of multiple applications. Based on the deployment intent, various applications of the composite application get deployed at various locations, and get replicated in multiple locations. @@ -63,7 +63,7 @@ _Figure 2 - EMCO Architecture_ - Monitoring covers distributed application. #### Cluster Registration -A microservice exposes RESTful API. User can register cluster providers and clusters of those providers via these APIs. After preparing edge clusters and cloud clusters, which can be any Kubernetes* cluster, user can onboard those clusters to EMCO by creating a cluster provider and then adding clusters to the cluster provider. After cluster providers are created, the KubeConfig files of edge and cloud clusters should be provided to EMCO as part of the multi-part POST call to the Cluster API. +A microservice exposes RESTful API. User can register cluster providers and clusters of those providers via these APIs. After preparing edge clusters and cloud clusters, which can be any Kubernetes\* cluster, user can onboard those clusters to EMCO by creating a cluster provider and then adding clusters to the cluster provider. After cluster providers are created, the KubeConfig files of edge and cloud clusters should be provided to EMCO as part of the multi-part POST call to the Cluster API. Additionally, after a cluster is created, labels and key value pairs can be added to the cluster via the EMCO API. Clusters can be specified by label when preparing placement intents. > **NOTE**: The cluster provider is someone who owns clusters and registers them to EMCO. If an Enterprise has clusters, for example from AWS, then the cluster provider for those clusters from AWS is still considered as from that Enterprise. AWS is not the provider. Here, the provider is someone who owns clusters and registers them here. Since, AWS does not register their clusters here, AWS is not considered as cluster provider in this context. @@ -104,7 +104,7 @@ The Network Configuration Management microservice supports operations on the net - stop: In some cases, if the remote cluster is intermittently unreachable, the Resource Synchronizer will continue retrying an instantiate or terminate operation. The stop operation can be used to force the retry operation to stop, and the instantate or terminate operation will be completed (with a failed status). In the case of terminate, this allows the deployment intent group resource to be deleted via the API, since deletion is prevented until a deployment intent group resource has reached a completed terminate operation status. #### Distributed Cloud Manager -The Distributed Cloud Manager (DCM) provides the Logical Cloud abstraction and effectively completes the concept of "multi-cloud". One Logical Cloud is a grouping of one or many clusters, each with their own control plane, specific configurations and geo-location, which get partitioned for a particular EMCO project. This partitioning is made via the creation of distinct, isolated namespaces in each of the (Kubernetes*) clusters that thus make up the Logical Cloud. +The Distributed Cloud Manager (DCM) provides the Logical Cloud abstraction and effectively completes the concept of "multi-cloud". One Logical Cloud is a grouping of one or many clusters, each with their own control plane, specific configurations and geo-location, which get partitioned for a particular EMCO project. This partitioning is made via the creation of distinct, isolated namespaces in each of the Kubernetes\* clusters that thus make up the Logical Cloud. A Logical Cloud is the overall target of a Deployment Intent Group and is a mandatory parameter (the specific applications under it further refine what gets run and in which location). A Logical Cloud must be explicitly created and instantiated before a Deployment Intent Group can be instantiated. @@ -123,7 +123,7 @@ The basic flow of lifecycle operations to get a Logical Cloud up and running via * Create a Logical Cloud specifying the following attributes: - Level: either 1 or 0, depending on whether an admin or a custom/user cloud is sought - more on the differences below. - (*for Level-1 only*) Namespace name - the namespace to use in all of the Clusters of the Logical Cloud. - - (*for Level-1 only*) User name - the name of the user that will be authenticating to the Kubernetes* APIs to access the namespaces created. + - (*for Level-1 only*) User name - the name of the user that will be authenticating to the Kubernetes\* APIs to access the namespaces created. - (*for Level-1 only*) User permissions - permissions that the user specified will have in the namespace specified, in all of the clusters. * (*for Level-1 only*) Create resource quotas and assign them to the Logical Cloud created: this specifies what quotas/limits the user will face in the Logical Cloud, for each of the Clusters. * Assign the Clusters previously created with the project-less Cluster Registration API to the newly-created Logical Cloud. @@ -168,24 +168,13 @@ To achieve both the usecases, the controller exposes RESTful APIs to create, upd - Customization - Specifies the modifications (using JSON Patching) to be applied on the objects. ### EMCO Terminology -| | | -|------------------------|----------------------------------------------------------------------------------------------------------------------------------| -| Cluster Provider | The provider is someone who owns clusters and registers them. | -| Projects | The project resource provides means for a collection of applications to be grouped. | -| | Several applications can exist under a specific project. | -| | Projects allows for grouping of applications under a common tenant to be defined. | -|------------------------|----------------------------------------------------------------------------------------------------------------------------------| -| Composite application | Composite application is combination of multiple applications. | -| | Based on the deployment intent, various applications of the composite application get deployed at various locations. | -| | Also, some applications of the composite application get replicated in multiple locations. | -|------------------------|----------------------------------------------------------------------------------------------------------------------------------| -| Deployment Intent | EMCO does not expect the editing of Helm charts provided by application/Network-function vendors by DevOps admins. | -| | Any customization and additional K8s resources that need to be present with the application are specified as deployment intents. | -|------------------------|----------------------------------------------------------------------------------------------------------------------------------| -| Placement Intent | EMCO supports to create generic placement intents for a given composite application. | -| | Normally, EMCO scheduler calls placement controllers first to figure out the edge/cloud locations for a given application. | -| | Finally works with 'resource synchronizer & status collector' to deploy K8s resources on various Edge/Cloud clusters. | -|------------------------|----------------------------------------------------------------------------------------------------------------------------------| +| Term | Description | +|:-----: | ----- | +| Cluster Provider |

The provider is someone who owns clusters and registers them.

| +| Projects |

The project resource provides means for a collection of applications to be grouped. Several applications can exist under a specific project. Projects allows for grouping of applications under a common tenant to be defined.

| +| Composite application |

Composite application is combination of multiple applications. Based on the deployment intent, various applications of the composite application get deployed at various locations. Also, some applications of the composite application get replicated in multiple locations.

| +| Deployment Intent |

EMCO does not expect the editing of Helm charts provided by application/Network-function vendors by DevOps admins. Any customization and additional K8s resources that need to be present with the application are specified as deployment intents.

| +| Placement Intent |

EMCO supports to create generic placement intents for a given composite application. Normally, EMCO scheduler calls placement controllers first to figure out the edge/cloud locations for a given application. Finally works with 'resource synchronizer & status collector' to deploy K8s resources on various Edge/Cloud clusters.

| ### EMCO API For user interaction, EMCO provides [RESTful API](https://github.com/otcshare/EMCO/blob/main/docs/emco_apis.yaml). Apart from that, EMCO also provides CLI. For the detailed usage, refer to [EMCO CLI](https://github.com/otcshare/EMCO/tree/main/src/tools/emcoctl) @@ -201,7 +190,7 @@ EMCO uses Istio and other open source solutions to provide Multi-tenancy solutio - Using Istio AuthorizationPolicy access to different EMCO resources can be controlled based on roles defined for the users. -The following figure shows various Emco services running in a cluster with Istio. +The following figure shows various EMCO services running in a cluster with Istio. ![OpenNESS EMCO](openness-emco-images/emco-istio-arch.png) @@ -213,7 +202,7 @@ The following figure shows the authentication flow with EMCO, Istio and Authserv _Figure 5 - EMCO Authenication with external OATH2 Server_ -Detailed steps for configuring EMCO with Istio can be found in [Emco Integrity and Access Management](https://github.com/otcshare/EMCO/tree/main/docs/user/Emco_Integrity_Access_Management.md) document. +Detailed steps for configuring EMCO with Istio can be found in [EMCO Integrity and Access Management](https://github.com/otcshare/EMCO/tree/main/docs/user/Emco_Integrity_Access_Management.md) document. Steps for EMCO Authentication and Authorization Setup: - Install and Configure Keycloak Server to be used in the setup. This server runs outside EMCO cluster @@ -221,14 +210,14 @@ Steps for EMCO Authentication and Authorization Setup: - Install Istio in the Kubernetes* cluster where EMCO is running - Enable Sidecar Injection in EMCO namesapce - Install EMCO in EMCO namespace (with Istio sidecars) -- Configure Istio Ingress gateway resources for Emco Services +- Configure Istio Ingress gateway resources for EMCO Services - Configure Istio Ingess gateway to enable running along with Authservice - Apply EnvoyFilter for Authservice - Apply Authentication and Authorization Policies ### EMCO Installation With OpenNESS Flavor EMCO supports [multiple deployment options](https://github.com/otcshare/EMCO/tree/main/deployments). [OpenNESS Experience Kit](https://github.com/otcshare/specs/blob/master/doc/getting-started/openness-experience-kits.md) offers the `central_orchestrator` flavor to automate EMCO build and deployment as mentioned below. -- The first step is to prepare one server environment which needs to fulfill the [Preconditions](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#preconditions). +- The first step is to prepare one server environment which needs to fulfill the [preconditions](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#preconditions). - Then place the EMCO server hostname in `[controller_group]` group in `inventory.ini` file of openness-experience-kit. > **NOTE**: `[edgenode_group]` and `[edgenode_vca_group]` are not required for configuration, since EMCO micro services just need to be deployed on the Kubernetes* control plane node. - Run script `./deploy_ne.sh -f central_orchestrator`. Deployment should complete successfully. In the flavor, harbor registry is deployed to provide images services as well. From 8bda95c37496cf415c060b7942d072f00f15c777 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Tue, 15 Dec 2020 14:00:48 +0800 Subject: [PATCH 103/148] correct typo --- doc/building-blocks/emco/openness-emco.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 764cf412..9392bcea 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -172,9 +172,9 @@ To achieve both the usecases, the controller exposes RESTful APIs to create, upd |:-----: | ----- | | Cluster Provider |

The provider is someone who owns clusters and registers them.

| | Projects |

The project resource provides means for a collection of applications to be grouped. Several applications can exist under a specific project. Projects allows for grouping of applications under a common tenant to be defined.

| -| Composite application |

Composite application is combination of multiple applications. Based on the deployment intent, various applications of the composite application get deployed at various locations. Also, some applications of the composite application get replicated in multiple locations.

| +| Composite application |

The composite application is combination of multiple applications. Based on the deployment intent, various applications of the composite application get deployed at various locations. Also, some applications of the composite application get replicated in multiple locations.

| | Deployment Intent |

EMCO does not expect the editing of Helm charts provided by application/Network-function vendors by DevOps admins. Any customization and additional K8s resources that need to be present with the application are specified as deployment intents.

| -| Placement Intent |

EMCO supports to create generic placement intents for a given composite application. Normally, EMCO scheduler calls placement controllers first to figure out the edge/cloud locations for a given application. Finally works with 'resource synchronizer & status collector' to deploy K8s resources on various Edge/Cloud clusters.

| +| Placement |

EMCO supports to create generic placement intents for a given composite application. Normally, EMCO scheduler calls placement controllers first to figure out the edge/cloud locations for a given application. Finally works with 'resource synchronizer & status collector' to deploy K8s resources on various Edge/Cloud clusters.

| ### EMCO API For user interaction, EMCO provides [RESTful API](https://github.com/otcshare/EMCO/blob/main/docs/emco_apis.yaml). Apart from that, EMCO also provides CLI. For the detailed usage, refer to [EMCO CLI](https://github.com/otcshare/EMCO/tree/main/src/tools/emcoctl) From 751245ee5ddeca9d0772de0ffac9567807a3fd91 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Tue, 15 Dec 2020 15:01:42 +0800 Subject: [PATCH 104/148] tune procedure --- doc/building-blocks/emco/openness-emco.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 9392bcea..3006df69 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -294,7 +294,7 @@ HARBORRHOST= cd /etc/docker/certs.d/ mkdir ${HARBORRHOST} cd ${HARBORRHOST} -echo -n | openssl s_client -showcerts -connect ${HARBORRHOST} 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > harbor.crt +curl -sk -X GET https://${HARBORRHOST}/api/v2.0/systeminfo/getcert -H "accept: application/json" -o harbor.crt HARBORRPW=Harbor12345 docker login ${HARBORRHOST} -u admin -p ${HARBORRPW} @@ -306,7 +306,7 @@ docker login ${HARBORRHOST} -u admin -p ${HARBORRPW} 4. Run the command for the environment setup with success return as below: ```shell # cd cli-scripts/ -# ./env_setup.sh +# ./setup_env.sh ``` 5. Run the command for the clusters setup with expected result as below: From 861a92fa34bc2e25d4665a41be1029488d8f9aee Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Wed, 16 Dec 2020 13:14:19 +0800 Subject: [PATCH 105/148] SMTC notes for manual step , and remove Azure cloud since it is planned for 21.03 --- doc/building-blocks/emco/openness-emco.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 3006df69..9c7a2dd3 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -38,7 +38,7 @@ _Figure 1 - Topology Overview with OpenNESS EMCO_ All the managed edge clusters and cloud clusters are connected with the EMCO cluster through the WAN network. - The central orchestration (EMCO) cluster installation can use the [OpenNESS Central Orchestrator Flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md). - The edge clusters in the diagram can be installed and provisioned by using the [OpenNESS Media Analytics Flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md). -- The cloud cluster in the diagram can be any type of cloud cluster, for example: Azure Cloud. +- The cloud cluster in the diagram can be a legancy Kubernetes\* cluster. - The composite application - SmartCity is composed of two parts: edge applications and cloud (web) applications. - The edge application executes media processing and analytics on multiple edge clusters to reduce latency. - The cloud application is like a web application for additional post-processing, such as calculating statistics and display/visualization on the cloud cluster side. @@ -265,7 +265,7 @@ kube-system ovs-ovn-jq6dn 1/1 Running - The composite application is composed of two parts: - EdgeApp (multiple OpenNESS edge clusters) - WebApp (cloud application for additional post-processing such as calculating statistics and display/visualization) -- One OpenNESS edge cluster (representing regional office) and One legacy K8s Cluster (representing cloud) are connected to the OpenNESS EMCO cluster. +- One OpenNESS edge cluster (representing regional office) and One legacy K8s Cluster (representing cloud) are connected to the OpenNESS EMCO. - The whole deployment architecture diagram is as shown below: ![OpenNESS EMCO](openness-emco-images/openness-emco-smtc.png) @@ -376,6 +376,7 @@ CRT=/root/tunnel_secret/self.crt SELFKEY=/root//tunnel_secret/self.key kubectl create secret generic self-signed-certificate --from-file=${CRT} --from-file=${SELFKEY} ``` +> **NOTE**: Actually EMCO supports generic K8S resource configuration including secret for the clusters. But the SmartCity application needs the above manual steps to create secrets from the specific information which is only accessiable by th edge cluster and the cloud cluster. 4. Verify SmartCity Application Deployment Information. The pods on the edge cluster are in the running status as shown as below: From 204f0d4c5851533fb31eddfb218f248b5f75d388 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Wed, 16 Dec 2020 17:07:34 +0800 Subject: [PATCH 106/148] add more notes about secret --- doc/building-blocks/emco/openness-emco.md | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 9c7a2dd3..04b9ae49 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -30,22 +30,21 @@ Compared with other multipe-clusters orchestration, EMCO focuses on the followin The following figure shows the topology overview for the OpenNESS EMCO orchestration with edge and multiple clusters. It also shows an example of deploying SmartCity with EMCO. -> **NOTE**: Smart City sample source code and documentation are available on [GitHub](https://github.com/OpenVisualCloud/Smart-City-Sample) ![OpenNESS EMCO](openness-emco-images/openness-emco-topology.png) _Figure 1 - Topology Overview with OpenNESS EMCO_ All the managed edge clusters and cloud clusters are connected with the EMCO cluster through the WAN network. -- The central orchestration (EMCO) cluster installation can use the [OpenNESS Central Orchestrator Flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md). -- The edge clusters in the diagram can be installed and provisioned by using the [OpenNESS Media Analytics Flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md). -- The cloud cluster in the diagram can be a legancy Kubernetes\* cluster. -- The composite application - SmartCity is composed of two parts: edge applications and cloud (web) applications. +- The central orchestration (EMCO) cluster can be installed and provisioned by using the [OpenNESS Central Orchestrator Flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md). +- The edge clusters and the cloud cluster can be installed and provisioned by using the [OpenNESS Flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md). +- The composite application - [SmartCity](https://github.com/OpenVisualCloud/Smart-City-Sample) is composed of two parts: edge application and cloud (web) application. - The edge application executes media processing and analytics on multiple edge clusters to reduce latency. - The cloud application is like a web application for additional post-processing, such as calculating statistics and display/visualization on the cloud cluster side. - The EMCO user can deploy the SmartCity applications across the clusters. Besides that, EMCO allows the operator to override configurations and profiles to satisfy deployment needs. - - For more details, refer to [Practice with EMCO: SmartCity Deployment](#practice-with-emco-smartcity-deployment). + - For more details about the practice, refer to [Practice with EMCO: SmartCity Deployment](#practice-with-emco-smartcity-deployment). + +This document aims to familiarize the user with EMCO and [OpenNESS deployment flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md) for EMCO installation and provision, and provide instructions accordingly. -This document aims to familiarize the user with [OpenNESS deployment flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md) for EMCO installation and provision, and provide instructions accordingly. ## EMCO Introduction ### EMCO Architecture The following diagram depicts a high level overview of the EMCO architecture. @@ -271,11 +270,10 @@ kube-system ovs-ovn-jq6dn 1/1 Running _Figure 6 - SmartCity Deployment Architecture Overview_ -The typical steps involved in the cluster registration and deployment of the application using OpenNESS EMCO are as follows: +The typical steps involved in the cluster registration and deployment of the application using EMCO are as follows: - Prerequisites - - Make one OpenNESS edge cluster ready. - - Make one legacy K8s cluster ready (Simulate cloud cluster). - - Prepare One server with a vanilla CentOS\* 7.8.2003 for EMCO (Only one server is required for EMCO cluster). + - Make one edge cluster and one cloud cluster ready by using OpenNESS Flavor. + - Prepare One server with a vanilla CentOS\* 7.8.2003 for EMCO (Only one server is required for EMCO installation). - EMCO Installation - Cluster Setup - Project Setup @@ -376,7 +374,8 @@ CRT=/root/tunnel_secret/self.crt SELFKEY=/root//tunnel_secret/self.key kubectl create secret generic self-signed-certificate --from-file=${CRT} --from-file=${SELFKEY} ``` -> **NOTE**: Actually EMCO supports generic K8S resource configuration including secret for the clusters. But the SmartCity application needs the above manual steps to create secrets from the specific information which is only accessiable by th edge cluster and the cloud cluster. +> **NOTE**: Actually EMCO supports generic K8S resource configuration including configmap, secret and networkpolicy...etc. In the practice, only offer the example usage about how to use [EMCO for configmap configuration](https://github.com/otcshare/edgeapps/blob/master/applications/smart-city-app/emco/cli-scripts/04_apps_template.yaml) to the clusters. +> **NOTE**: [SmartCity application](https://github.com/OpenVisualCloud/Smart-City-Sample) secrets need the specific information only accessiable by th edge cluster and the cloud cluster, we use manual steps here. 4. Verify SmartCity Application Deployment Information. The pods on the edge cluster are in the running status as shown as below: From 2da1f2e32cd6a465bd5bb28b504c541b2f84b359 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Wed, 16 Dec 2020 17:29:02 +0800 Subject: [PATCH 107/148] correct some description about edge cluster and cloud cluster --- doc/building-blocks/emco/openness-emco.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 04b9ae49..166c6e07 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -260,17 +260,14 @@ kube-system ovs-ovn-jq6dn 1/1 Running ``` ## Practice with EMCO: SmartCity Deployment -- The SmartCity application is a sample application that is built on top of the OpenVINO™ and Open Visual Cloud software stacks for media processing and analytics. - - The composite application is composed of two parts: - - EdgeApp (multiple OpenNESS edge clusters) - - WebApp (cloud application for additional post-processing such as calculating statistics and display/visualization) -- One OpenNESS edge cluster (representing regional office) and One legacy K8s Cluster (representing cloud) are connected to the OpenNESS EMCO. -- The whole deployment architecture diagram is as shown below: +- The [SmartCity application](https://github.com/OpenVisualCloud/Smart-City-Sample) is a sample application that is built on top of the OpenVINO™ and Open Visual Cloud software stacks for media processing and analytics. The composite application is composed of two parts: EdgeApp + WebApp (cloud application for additional post-processing such as calculating statistics and display/visualization) +- The edge cluster (representing regional office), the cloud cluster and the EMCO are connected with each others. +- The whole deployment architecture diagram is shown as below: ![OpenNESS EMCO](openness-emco-images/openness-emco-smtc.png) _Figure 6 - SmartCity Deployment Architecture Overview_ -The typical steps involved in the cluster registration and deployment of the application using EMCO are as follows: +The example steps are shown as follows: - Prerequisites - Make one edge cluster and one cloud cluster ready by using OpenNESS Flavor. - Prepare One server with a vanilla CentOS\* 7.8.2003 for EMCO (Only one server is required for EMCO installation). From 8ce9bb10d8748b0f1003221c545893f7ec386195 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Wed, 16 Dec 2020 17:49:21 +0800 Subject: [PATCH 108/148] add note about why use docker logon to access harbor --- doc/building-blocks/emco/openness-emco.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 166c6e07..ab6e5ae1 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -282,7 +282,7 @@ In the step, cluster provider will be created. And both the edge cluster and the 1. After [EMCO Installation With OpenNESS Flavor](#emco-installation-with-openness-flavor), logon to the EMCO host server and maker sure that Harbor and EMCO microservices are in running status. -2. On the edge and cloud cluster, run the following command to make Docker logon the Harbor deployed on the EMCO server: +2. On the edge and cloud cluster, run the following command to make Docker logon the Harbor deployed on the EMCO server, thus the clusters can pull SmartCity images from the Harbor: ```shell HARBORRHOST= From 8ab2c2f3d37df927d590de2ce11122536d0d983c Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Wed, 16 Dec 2020 18:01:52 +0800 Subject: [PATCH 109/148] correct some typo --- doc/building-blocks/emco/openness-emco.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index ab6e5ae1..fa1ecd48 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -371,7 +371,7 @@ CRT=/root/tunnel_secret/self.crt SELFKEY=/root//tunnel_secret/self.key kubectl create secret generic self-signed-certificate --from-file=${CRT} --from-file=${SELFKEY} ``` -> **NOTE**: Actually EMCO supports generic K8S resource configuration including configmap, secret and networkpolicy...etc. In the practice, only offer the example usage about how to use [EMCO for configmap configuration](https://github.com/otcshare/edgeapps/blob/master/applications/smart-city-app/emco/cli-scripts/04_apps_template.yaml) to the clusters. +> **NOTE**: Actually EMCO supports generic K8S resource configuration including configmap, secret,etc. In the practice, only offer the example usage about how to use [EMCO for configmap configuration](https://github.com/otcshare/edgeapps/blob/master/applications/smart-city-app/emco/cli-scripts/04_apps_template.yaml) to the clusters. > **NOTE**: [SmartCity application](https://github.com/OpenVisualCloud/Smart-City-Sample) secrets need the specific information only accessiable by th edge cluster and the cloud cluster, we use manual steps here. 4. Verify SmartCity Application Deployment Information. From 425b53f22dc2eca032bc2704c944a7c4d52ff068 Mon Sep 17 00:00:00 2001 From: Krishnamurthy Jambur <47258934+krishnajs@users.noreply.github.com> Date: Wed, 16 Dec 2020 14:40:32 +0000 Subject: [PATCH 110/148] Update flavors.md (#381) --- doc/flavors.md | 130 +++++++++++++++++++++++++++++++------------------ 1 file changed, 82 insertions(+), 48 deletions(-) diff --git a/doc/flavors.md b/doc/flavors.md index 8ec016e3..dc0fbe49 100644 --- a/doc/flavors.md +++ b/doc/flavors.md @@ -5,16 +5,22 @@ Copyright (c) 2020 Intel Corporation # OpenNESS Deployment Flavors This document introduces the supported deployment flavors that are deployable through the OpenNESS Experience Kits (OEK). -- [Minimal Flavor](#minimal-flavor) -- [FlexRAN Flavor](#flexran-flavor) -- [Service Mesh Flavor](#service-mesh-flavor) -- [Media Analytics Flavor](#media-analytics-flavor) -- [Media Analytics Flavor with VCAC-A](#media-analytics-flavor-with-vcac-a) -- [CDN Transcode Flavor](#cdn-transcode-flavor) -- [CDN Caching Flavor](#cdn-caching-flavor) -- [Orchestration Flavor](#orchestration-flavor) - -## Minimal Flavor +- [CERA Minimal Flavor](#cera-minimal-flavor) +- [CERA Access Edge Flavor](#cera-access-edge-flavor) +- [CERA Media Analytics Flavor](#cera-media-analytics-flavor) +- [CERA Media Analytics Flavor with VCAC-A](#cera-media-analytics-flavor-with-vcac-a) +- [CERA CDN Transcode Flavor](#cera-cdn-transcode-flavor) +- [CERA CDN Caching Flavor](#cera-cdn-caching-flavor) +- [CERA Core Control Plane Flavor](#cera-core-control-plane-flavor) +- [CERA Core User Plane Flavor](#cera-core-user-plane-flavor) +- [CERA Untrusted Non3gpp Access Flavor](#cera-untrusted-non3gpp-access-flavor) +- [CERA Near Edge Flavor](#cera-near-edge-flavor) +- [CERA 5G On-Prem Flavor](#cera-5g-on-prem-flavor) +- [Central Orchestrator Flavor](#central-orchestrator-flavor) +- [Reference Service Mesh](#reference-service-mesh) + +## CERA Minimal Flavor + The pre-defined *minimal* deployment flavor provisions the minimal set of configurations for bringing up the OpenNESS network edge deployment. Steps to install this flavor are as follows: @@ -29,7 +35,8 @@ This deployment flavor enables the following ingredients: * The default Kubernetes CNI: `kube-ovn` * Telemetry -## FlexRAN Flavor +## CERA Access Edge Flavor + The pre-defined *flexran* deployment flavor provisions an optimized system configuration for vRAN workloads on Intel Xeon servers. It also provisions for deployment of PACN3000 FPGA tools and components enabling the offload of acceleration of FEC (Forward Error Correction) to the FPGA. Steps to install this flavor are as follows: @@ -55,40 +62,8 @@ This deployment flavor enables the following ingredients: * Tapology Manager * RMD operator -## Service Mesh Flavor -The pre-defined *service-mesh* deployment flavor installs the OpenNESS service mesh that is based on [Istio](https://istio.io/). - -Steps to install this flavor are as follows: -1. Configure OEK as described in the [OpenNESS Getting Started Guide for Network Edge](getting-started/network-edge/controller-edge-node-setup.md). -2. Run OEK deployment script: - ```shell - $ deploy_ne.sh -f service-mesh - ``` - -This deployment flavor enables the following ingredients: -* Node Feature Discovery -* The default Kubernetes CNI: `kube-ovn` -* Istio service mesh -* Kiali management console -* Telemetry - -> **NOTE:** Kiali management console username can be changed by editing the variable `istio_kiali_username`. By default `istio_kiali_password` is randomly generated and can be retirieved by running `kubectl get secrets/kiali -n istio-system -o json | jq -r '.data.passphrase' | base64 -d` on the Kubernetes controller. +## CERA Media Analytics Flavor -Following parameters in the flavor/all.yaml can be customize for Istio deployment: - -``` -# Istio deployment profile possible values: default, demo, minimal, remote -istio_deployment_profile: "default" - -# Kiali -istio_kiali_username: "admin" -istio_kiali_password: "{{ lookup('password', '/dev/null length=16') }}" -istio_kiali_nodeport: 30001 -``` - -> **NOTE:** If creating a customized flavor, the Istio service mesh installation can be included in the Ansible playbook by setting the flag `ne_istio_enable: true` in the flavor file. - -## Media Analytics Flavor The pre-defined *media-analytics* deployment flavor provisions an optimized system configuration for media analytics workloads on Intel Xeon servers. It also provisions a set of video analytics services based on the [Video Analytics Serving](https://github.com/intel/video-analytics-serving) for analytics pipeline management and execution. Steps to install this flavor are as follows: @@ -109,7 +84,8 @@ This deployment flavor enables the following ingredients: * Istio service mesh - conditional * Kiali management console - conditional -## Media Analytics Flavor with VCAC-A +## CERA Media Analytics Flavor with VCAC-A + The pre-defined *media-analytics-vca* deployment flavor provisions an optimized system configuration for media analytics workloads leveraging VCAC-A acceleration. It also provisions a set of video analytics services based on the [Video Analytics Serving](https://github.com/intel/video-analytics-serving) for analytics pipeline management and execution. Steps to install this flavor are as follows: @@ -136,7 +112,8 @@ This deployment flavor enables the following ingredients: * Video analytics services * Telemetry -## CDN Transcode Flavor +## CERA CDN Transcode Flavor + The pre-defined *cdn-transcode* deployment flavor provisions an optimized system configuration for cdn transcode sample workloads on Intel Xeon servers. Steps to install this flavor are as follows: @@ -151,7 +128,8 @@ This deployment flavor enables the following ingredients: * The default Kubernetes CNI: `kube-ovn` * Telemetry -## CDN Caching Flavor +## CERA CDN Caching Flavor + The pre-defined *cdn-caching* deployment flavor provisions an optimized system configuration for cdn content delivery workloads on Intel Xeon servers. Steps to install this flavor are as follows: @@ -167,8 +145,30 @@ This deployment flavor enables the following ingredients: * Telemetry * Kubernetes Topology Manager policy: `single-numa-node` +## CERA Core Control Plane Flavor + +Available in Intel Distribution of OpenNESS + +## CERA Core User Plane Flavor + +Available in Intel Distribution of OpenNESS + +## CERA Untrusted Non3gpp Access Flavor + +Available in Intel Distribution of OpenNESS + +## CERA Near Edge Flavor + +Available in Intel Distribution of OpenNESS + +## CERA 5G On-Prem Flavor + +Available in Intel Distribution of OpenNESS + +## Central Orchestrator Flavor + +Central Orchestrator Flavor is used to deploy EMCO. -## Orchestration Flavor The pre-defined *orchestration* deployment flavor provisions an optimized system configuration for emco (central orchestrator) workloads on Intel Xeon servers. It also provisions a set of central orchestrator services for [edge, multiple clusters orchestration](building-blocks/emco/openness-emco.md). Steps to install this flavor are as follows: @@ -182,3 +182,37 @@ This deployment flavor enables the following ingredients: * Harbor Registry * The default Kubernetes CNI: `kube-ovn` * EMCO services + +## Reference Service Mesh + +The pre-defined *service-mesh* deployment flavor installs the OpenNESS service mesh that is based on [Istio](https://istio.io/). + +Steps to install this flavor are as follows: +1. Configure OEK as described in the [OpenNESS Getting Started Guide for Network Edge](getting-started/network-edge/controller-edge-node-setup.md). +2. Run OEK deployment script: + ```shell + $ deploy_ne.sh -f service-mesh + ``` + +This deployment flavor enables the following ingredients: +* Node Feature Discovery +* The default Kubernetes CNI: `kube-ovn` +* Istio service mesh +* Kiali management console +* Telemetry + +> **NOTE:** Kiali management console username can be changed by editing the variable `istio_kiali_username`. By default `istio_kiali_password` is randomly generated and can be retirieved by running `kubectl get secrets/kiali -n istio-system -o json | jq -r '.data.passphrase' | base64 -d` on the Kubernetes controller. + +Following parameters in the flavor/all.yaml can be customize for Istio deployment: + +``` +# Istio deployment profile possible values: default, demo, minimal, remote +istio_deployment_profile: "default" + +# Kiali +istio_kiali_username: "admin" +istio_kiali_password: "{{ lookup('password', '/dev/null length=16') }}" +istio_kiali_nodeport: 30001 +``` + +> **NOTE:** If creating a customized flavor, the Istio service mesh installation can be included in the Ansible playbook by setting the flag `ne_istio_enable: true` in the flavor file. \ No newline at end of file From 129098f019d34d3183c2324e101612e286caf910 Mon Sep 17 00:00:00 2001 From: Amr Mokhtar Date: Wed, 16 Dec 2020 17:08:06 +0000 Subject: [PATCH 111/148] Update Jekyll docs with the newly added docs --- _data/navbars/devkits.yml | 11 ++++++++++ _data/navbars/introduction.yml | 7 +++++- ...tures.yaml => reference-architectures.yml} | 22 ++++++++++++++++++- _data/navbars/release-history.yml | 4 ++-- 4 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 _data/navbars/devkits.yml rename _data/navbars/{reference-architectures.yaml => reference-architectures.yml} (62%) diff --git a/_data/navbars/devkits.yml b/_data/navbars/devkits.yml new file mode 100644 index 00000000..18c8cedf --- /dev/null +++ b/_data/navbars/devkits.yml @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright (c) 2020 Intel Corporation + +title: "Development Kits" +path: /devkits/ +order: 7 +section: + - title: OpenNESS Development Kit for Microsoft Azure + path: /doc/devkits/openness-azure-devkit + meta_title: OpenNESS Development Kit for Microsoft Azure + meta_description: This devkit supports the use of OpenNESS in cloud solutions. It leverages the Microsoft Azure Stack for OpenNESS deployment. diff --git a/_data/navbars/introduction.yml b/_data/navbars/introduction.yml index 38cbf161..baabe3b1 100644 --- a/_data/navbars/introduction.yml +++ b/_data/navbars/introduction.yml @@ -2,9 +2,14 @@ # Copyright (c) 2020 Intel Corporation title: "Introduction" -path: /architecture/ +path: /introduction/ order: 0 section: + - title: OpenNESS Overview + path: /doc/overview + meta_title: OpenNESS Overview + meta_description: OpenNESS is an edge computing software toolkit that enables highly optimized and performant edge platforms to on-board and manage applications and network functions with cloud-like agility across any type of network. + - title: OpenNESS Architecture & Solution Overview path: /doc/architecture meta_title: OpenNESS Architecture And Solution Overview diff --git a/_data/navbars/reference-architectures.yaml b/_data/navbars/reference-architectures.yml similarity index 62% rename from _data/navbars/reference-architectures.yaml rename to _data/navbars/reference-architectures.yml index 0a768832..98cdf818 100644 --- a/_data/navbars/reference-architectures.yaml +++ b/_data/navbars/reference-architectures.yml @@ -12,7 +12,12 @@ section: path: /doc/reference-architectures/core-network/openness_epc meta_title: Edge Cloud Deployment with 3GPP 4G LTE CUPS of EPC meta_description: OpenNESS is an open source edge computing platform that enables Service Providers and Enterprises to deploy applications and services on a network edge. - + + - title: 5G Non-Stand Alone (NSA) + path: /doc/reference-architectures/core-network/openness_5g_nsa + meta_title: Edge Cloud Deployment with 3GPP 5G Non Stand Alone + meta_description: OpenNESS is an open source edge computing platform that enables Service Providers and Enterprises to deploy applications and services on a network edge. + - title: Next-Gen Core (NGC) path: /doc/reference-architectures/core-network/openness_ngc meta_title: Edge Cloud Deployment with 3GPP 5G Stand Alone @@ -35,3 +40,18 @@ section: path: /doc/reference-architectures/ran/openness_xran meta_title: 5GNR FlexRAN Front Haul functional units deployment with OpenNESS based on O-RAN specifications at the Network Edge meta_description: 5GNR FlexRAN Front Haul functional units deployment with OpenNESS based on O-RAN specifications at the Network Edge. + + - title: Converged Edge Reference Architecture Near Edge + path: /doc/reference-architectures/CERA-Near-Edge + meta_title: Converged Edge Reference Architecture Near Edge + meta_description: Reference architecture combines wireless and high performance compute for IoT, AI, video and other services. + + - title: Converged Edge Reference Architecture On Premises Edge + path: /doc/reference-architectures/CERA-5G-On-Prem + meta_title: Converged Edge Reference Architecture On Premises Edge + meta_description: Reference architecture combines wireless and high performance compute for IoT, AI, video and other services. + + - title: SDWAN in OpenNESS + path: /doc/reference-architectures/openness_sdwan + meta_title: SDWAN in OpenNESS + meta_description: OpenNESS provides a reference solution for SD-WAN consisting of building blocks for cloud-native deployments. diff --git a/_data/navbars/release-history.yml b/_data/navbars/release-history.yml index e211318d..5e1ccabd 100644 --- a/_data/navbars/release-history.yml +++ b/_data/navbars/release-history.yml @@ -2,8 +2,8 @@ # Copyright (c) 2020 Intel Corporation title: "Release history" -path: /openness_releasenotes/ -order: 7 +path: /release-notes/ +order: 8 section: - title: Release Notes path: /openness_releasenotes From 49b1b3a0318c7f8311210ec0d528e992827a54db Mon Sep 17 00:00:00 2001 From: Amr Mokhtar Date: Wed, 16 Dec 2020 19:09:39 +0000 Subject: [PATCH 112/148] minor updates --- _data/navbars/applications-onboarding.yml | 5 +++++ doc/overview.md | 19 ++++++++++--------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/_data/navbars/applications-onboarding.yml b/_data/navbars/applications-onboarding.yml index 2d58682a..d99fe102 100644 --- a/_data/navbars/applications-onboarding.yml +++ b/_data/navbars/applications-onboarding.yml @@ -20,6 +20,11 @@ section: meta_title: Edge Application Agent (EAA) meta_description: OpenNESS enables Edge Applications to produce, discover and consume services that are available on the OpenNESS cluster through the Edge Application Agent (EAA) APIs. + - title: Certificate Signing + path: /doc/applications-onboard/openness-certsigner + meta_title: Certificate Signing + meta_description: Each application that needs the TLS authentication certificate should generate it using the Certificate Signer by sending a CSR via Certificate Requester + - title: Interface Service path: /doc/applications-onboard/openness-interface-service meta_title: OpenNESS Applications Onboard - OpenNESS Interface Service diff --git a/doc/overview.md b/doc/overview.md index f1a6db2a..19c16748 100644 --- a/doc/overview.md +++ b/doc/overview.md @@ -2,13 +2,16 @@ SPDX-License-Identifier: Apache-2.0 Copyright (c) 2019-2020 Intel Corporation ``` -- [OpenNESS Overview](#openness-overview) - - [Introduction to OpenNESS](#introduction-to-openness) - - [Why consider OpenNESS](#why-consider-openness) - - [Building Blocks](#building-blocks) - - [Distributions](#distributions) - - [Consumption Models](#consumption-models) + + # OpenNESS Overview + +- [Introduction to OpenNESS](#introduction-to-openness) +- [Why consider OpenNESS](#why-consider-openness) +- [Building Blocks](#building-blocks) +- [Distributions](#distributions) +- [Consumption Models](#consumption-models) + ## Introduction to OpenNESS OpenNESS is an edge computing software toolkit that enables highly optimized and performant edge platforms to on-board and manage applications and network functions with cloud-like agility across any type of network. @@ -39,7 +42,7 @@ As the industry seeks to settle on a consistent cloud native platform approach c OpenNESS brings together the best of breed cloud native frameworks to build a horizontal edge computing platform to address these challenges. -**Benefits of OpenNESS**: +**Benefits of OpenNESS** Edge Performant & Optimized: @@ -60,8 +63,6 @@ Ease of Use, Consumability & Time to Market (TTM) OpenNESS is composed of a set of Building Blocks, each intended to offer a set of capabilities for edge solutions. - - | Building Block | Summary | | -------------------------------- | ------------------------------------------------------------ | | Multi-Access Networking | 3GPP Network function microservices enabling deployment of an edge cloud in a 5G network | From 34108034219fe4d171537b5ac45237b6b59346bf Mon Sep 17 00:00:00 2001 From: damiankopyto <48013534+damiankopyto@users.noreply.github.com> Date: Wed, 16 Dec 2020 19:48:52 +0000 Subject: [PATCH 113/148] Initial draft for offline support (#367) * Initial draft for offline support Co-authored-by: Krishnamurthy Jambur <47258934+krishnajs@users.noreply.github.com> --- .../network-edge/offline-edge-deployment.md | 157 ++++++++++++++++++ .../offline-images/offline-copy.png | Bin 0 -> 35821 bytes .../offline-images/offline-flow.png | Bin 0 -> 46342 bytes .../offline-images/offline-ssh.png | Bin 0 -> 30053 bytes 4 files changed, 157 insertions(+) create mode 100644 doc/getting-started/network-edge/offline-edge-deployment.md create mode 100644 doc/getting-started/network-edge/offline-images/offline-copy.png create mode 100644 doc/getting-started/network-edge/offline-images/offline-flow.png create mode 100644 doc/getting-started/network-edge/offline-images/offline-ssh.png diff --git a/doc/getting-started/network-edge/offline-edge-deployment.md b/doc/getting-started/network-edge/offline-edge-deployment.md new file mode 100644 index 00000000..8374ca48 --- /dev/null +++ b/doc/getting-started/network-edge/offline-edge-deployment.md @@ -0,0 +1,157 @@ +```text +SPDX-License-Identifier: Apache-2.0 +Copyright (c) 2019-2020 Intel Corporation +``` + +- [OpenNESS Network Edge: Offline Deployment](#openness-network-edge-offline-deployment) + - [OpenNESS support in offline environment](#openness-support-in-offline-environment) + - [Setup prerequisites](#setup-prerequisites) + - [Creating the offline package from an online node](#creating-the-offline-package-from-an-online-node) + - [Placing the complete offline package in offline environment](#placing-the-complete-offline-package-in-offline-environment) + - [Deployment in offline environment](#deployment-in-offline-environment) +# OpenNESS Network Edge: Offline Deployment + +## OpenNESS support in offline environment + +The OpenNESS projects supports a deployment of the solution in an air-gapped, offline environment. The support is currently limited to "[flexran" deployment flavor of OpenNESS Experience Kit](https://github.com/otcshare/openness-experience-kits/tree/master/flavors/flexran) only and it allows for offline deployment of vRAN specific components. Internet connection is needed to create the offline package, a script to download and build all necessary components will create an archive of all the necessary files. Once the offline package is created the installation of OpenNESS Experience Kits will be commenced as usual, in the same way as the default online installation would. + +It can be deployed in two different scenarios. The first scenario is to deploy the OpenNESS Experience Kits from the online "jumper" node which is being used to create the offline package, this internet connected node must have a network connection to the air-gapped/offline nodes. The second scenario is to copy the whole OpenNESS Experience Kit directory with the already archived packages to the air-gapped/offline environment (for example via USB or other media or means) and run the OpenNESS Experience Kit from within the offline environment. All the nodes within the air-gapped/offline cluster need to able to SSH into each other. + +Figure 1. Scenario one - online node connected to the air-gapped network +![Scenario one - online node connected to the air-gapped network](offline-images/offline-ssh.png) +Figure 2. Scenario two - OEK copied to the air-gapped network +![Scenario two - OEK copied to the air-gapped network](offline-images/offline-copy.png) + +## Setup prerequisites + +* A node with access to internet to create the offline package. +* Cluster set up in an air-gapped environment. +* Clean setup, see [pre-requisites](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#preconditions) +* [Optional] If OEK is run from an online jumper node, the node needs to be able to SSH into each machine in air-gapped environment. +* [Optional] A media such as USB drive to copy the offline OEK package to the air-gapped environment if there is no connection from online node. +* All the nodes in air-gapped environment must be able to SSH to each other without requiring password input, see [getting-started.md](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#exchanging-ssh-keys-between-hosts). +* The control plane node needs to be able to SSH itself. +* The time and date of the nodes in offline environment is manually synchronized by the cluster's admin. +* User provided files - OPAE_SDK_1.3.7-5_el7.zip and syscfg_package.zip + +## Creating the offline package from an online node + +To create the offline package the user must have an access to an online node from which the offline package creator can download all necessary files and build Docker images. The list of files to be downloaded/build is provided in a form of a package definition list (Only package definition list for "flexran" flavor of OpenNESS is provided at the time of writing). Various categories of files to be downloaded are provided within this list including: RPMs, PIP pacakges, Helm charts, Dockerfiles, Go modules, and miscellaneous downloads. According to the category of a file the logic of offline package creator script will handle the download/build accordingly. Some files such as proprietary packages need to be provided by user in specified directories (see following steps). Once the offline package creator collects all necessary components it will pack them into an archive and then place them in appropriate place within the OpenNESS Experience Kits directory. Once the packages are archived the OpenNESS Experience Kits are ready to be deployed in air-gapped environment. The following diagram illustrates the workflow of the offline package creator. Additional information regarding the offline package creator can be found in the [README.md file](https://github.com/otcshare/openness-experience-kits/blob/master/offline_package_creator/README.md). + +Figure 3. Offline package creator workflow +![OPC flow](offline-images/offline-flow.png) + +To run the offline package creator run the following steps (user should not be a "root" user but does need "sudo" privileges to create the package, RT components will require installation of RT kernel on the node by the OPC): + +Clone the OpenNESS Experience Kits repo to an online node: + +```shell +# https://github.com/otcshare/openness-experience-kits.git +``` + +Navigate to offline package creator directory: + +```shell +# cd openness-experience-kits/offline_package_creator/ +``` + +Create a directory from which user provided files can be accessed: + +```shell +# mkdir /// +``` + +Copy the 'OPAE_SDK_1.3.7-5_el7.zip' file (optional but necessary by default - to be done when OPAE is enabled in "flexran" flavor of OEK) and syscfg_package.zip (optional but necessary by default- to be done when BIOS config is enabled in "flexran" flavor of OEK) to the provided directory: + +```shell +# cp OPAE_SDK_1.3.7-5_el7.zip /// +# cp syscfg_package.zip /// +``` + +Edit [openness-experience-kits/offline_package_creator/scripts/initrc](https://github.com/otcshare/openness-experience-kits/blob/master/offline_package_creator/scripts/initrc) file and update with GitHub username/token if necessary, HTTP/GIT proxy if behind firewall and provide paths to file dependencies. + +```shell +# otcshare token +GITHUB_USERNAME="" +GITHUB_TOKEN="" + +# User add ones +HTTP_PROXY="http://
:" #Add proxy first +GIT_PROXY="http://
:" + +# location of OPAE_SDK_1.3.7-5_el7.zip +BUILD_OPAE=disable +DIR_OF_OPAE_ZIP="///" + +# location of syscfg_package.zip +BUILD_BIOSFW=disable +DIR_OF_BIOSFW_ZIP="///" + +# location of the zip packages for collectd-fpga +BUILD_COLLECTD_FPGA=disable +DIR_OF_FPGA_ZIP="///" +``` + +Start the offline package creator script [openness-experience-kits/offline_package_creator/offline_package_creator.sh](https://github.com/otcshare/openness-experience-kits/blob/master/offline_package_creator/offline_package_creator.sh) + +```shell +# bash offline_package_creator.sh all +``` + +The script will download all the files define in the [pdl_flexran.yml](https://github.com/otcshare/openness-experience-kits/blob/master/offline_package_creator/package_definition_list/pdl_flexran.yml) and build other necessary images, then copy them to a designated directory. Once the script is finished executing the user should expect three files under the `openness-experience-kits/roles/offline_roles/unpack_offline_package/files` directory: + +```shell +# ls openness-experience-kits/roles/offline_roles/unpack_offline_package/files + +checksum.txt prepackages.tar.gz opcdownloads.tar.gz +``` + +Once the archive packages are created and placed in the OEK, the OEK is ready to be configured for offline/air-gapped installation. + +## Placing the complete offline package in offline environment + +User has two options of deploying the OEK for offline/air-gapped environment. Please refer to Figure 1 and Figure 2 of this document for diagrams. + +Scenario 1: User will deploy the OEK from an online node with a network connection to the offline/air-gapped environment. In this case if the online node is the same one as the one on which the offline package creator was run and created the archive files for OEK than the OEK directory does not need to be moved and will be used as is. The online node is expected to have a password-less SSH connection with all the offline nodes enabled - all the offline nodes are expected to have a password-less SSH connection between control plane and node and vice-versa, and the control plane node needs to be able to SSH itself. + +Scenario 2: User will deploy the OEK from a node within the offline/air-gapped environment. In this case the user needs to copy the whole OEK directory containing the archived files from [previous section](#creating-the-offline-package-from-an-online-node) from the online node to one of the nodes in the offline environment via USB drive or alternative media. It is advisable that the offline node used to run the OEK is a separate node to the actual cluster, if the node is also used as part of the cluster it will reboot during the script run due to kernel upgrade and the OEK will need to be run again - this may have un-forseen consequences. All the offline nodes are expected to have a password-less SSH connection between control plane and node and vice-versa, and the control plane node needs to be able to SSH itself. + +Regardless of the scenario in which the OEK will be deployed the deployment method is the same. + +## Deployment in offline environment + +Once all the previous steps provided within this document are completed and the OEK with offline archives is placed on the node which will run the OEK automation, the user should get familiar with the ["Running-playbooks"](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#running-playbooks) and ["Preconditions"](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#preconditions) sections of getting started guide and deploy the OpenNESS as per usual deployment steps. Please note only deployment of "flexran" flavour is supported for offline/air-gapped environment, other flavours/configurations and default deployment may fail due to missing dependencies, the support for ACC100 accelerator is not available for offline deployment of "flexran" flavour at the time of writing. Both multi-node and single node modes are supported. + +During the deployment of the offline version of the OEK the archived files created by the offline package creator will be extracted and placed in appropriate directory. The OEK will set up a local file share server on the control plane node and move the files to the said server. The OEK will also create a local yum repo. All the files and packages will be pulled from this file share server by nodes across the air-gapped OpenNESS cluster. During the execution of the OEK the Ansible scripts will follow the same logic as per the online mode with the difference that all the components will be pulled locally from the file share server instead of the internet. + +The following are the specific steps to enable offline/air-gaped deployment from OEK: + +Enable the offline deployment in [openness-experience-kits/group_vars/all/10-default.yml](https://github.com/otcshare/openness-experience-kits/blob/master/group_vars/all/10-default.yml) + +```yaml +## Offline Mode support +offline_enable: True +``` + +Make sure the time on offline nodes is synchronized. + +Make sure nodes can access each other through SSH without password. +Make sure cotrol-plane node can SSH itself. ie: + +```shell +# hostname -I + +# ssh-copy-id +``` + +Make sure the CPUs allocation in "flexran" flavor is configured as desired, [see configs in flavor directory](https://github.com/otcshare/openness-experience-kits/tree/master/flavors/flexran). + +Deploy OpenNESS using FlexRAN flavor for multi or single node: + +```shell +# ./deploy_ne.sh -f flexran +``` +OR +```shell +# ./deploy_ne.sh -f flexran single +``` diff --git a/doc/getting-started/network-edge/offline-images/offline-copy.png b/doc/getting-started/network-edge/offline-images/offline-copy.png new file mode 100644 index 0000000000000000000000000000000000000000..35df385b9b74634c18bda7c12d294f5c26593e53 GIT binary patch literal 35821 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

P>E(DRp?X78j!#Kwi$JYr6(D`c9c@ zngUoN)l$dADql<5&0j2r1MDRRVCzPDVR7Gcy3-wGi;_a{2CyxytS&yZ@Eu%UUIt2{ zY}&HUVRgT$v+*DCBiRH3&oz~k$V$t{F%-~l&6c!HcS2H?$_(iYVzom>ufaxbcel}L zhhkMCDoK@xc_-f$+)9z@celAbRnm{gi&bWYt&LNaX~Ah8Sq39bB5$SBCYzJb#;vQX8y~Ok7WTmw2@twy zfjf1V8f)JaO$uL8v=3;%So%;furudzZB0;UVLEs?s$@rqioDQO2_PdSX^XlN^A0R- zJbflye`CmDQ2~j3lWO0Z8#l9e1oWs{4IdfuEw8RJ?w-;2alag@)23c9z`70#t$C-w z>(ANw?I@kGbJK=43mmCiNxz$0TEG=q){UAeOrq$}2iThbe?6|=0W}q~g5qMXrML z^Prl4$Rq&Ks_J>f0-p@*PIZ|jdAVHxd-YLm#wte?%vy*%Q2aFG+ zL(H%0{)R-`VfXeZV$!OEy6?rId|HT}@C*Q~6O$UhSLAK&B zUw-GmmqP_YpC3-!kT3GG|CYlbSu*|?e1PGx2p&Pv?+ZiB!oVC60lrZ8rcXvgx9%d@ z`xCd&cXyU!{dlGD7hRUk(0i#PN?8tt8S~naKdB;H8?;_Ce|vXyN8g41RlM+yH0w^% zM_5hX+}d6d$Ch-v4otBn*e6m%gbYEG424q3hp|hWaw4DgXB5$9dg3k|ju{-Q2H$LH zl#x^j8P{oMNb2XXT}LPbsAb?GEj5H^BhxG_d0iFm3o|G=RnEK8zdEz`bA zfVf)1oJyDcsLO0HT4!&%aV|3BY5K108_0a&S-nhV1vzgrdwd9pXYsb|nn1s9slCOF z4}^is23JGa8p zo!e=p4#eAOG!9NkCHbw%cx)*((-i*WK!DfCUBz-}DZ%Az_PO_71p74@{rrLpgzjz<@W{4>I z_udnv0uyY6NAdL3F*gNy_c6(>$QWN480H2S@PTQ-afyOMwcI%VPb8PXpujPdo z6$8>5`xWsqP)mTw4wua3QE)aIGj?Ch=XT`(W zq=#(E*ywV%T3y^xlxU$MS2=oM;d*vcvArlQj{4`jQ`c6{?kpY1erre^!0Y~)ojrDs zECuPB!n9i+I}iNAvHWbC(Js6|KPye^_JM4Dq1e+VTNAgp7ZnErl-gZRSGg0WFFaw+ z4tw~PdBH$MIAELlpYK9_Y!u&hmxOf;?;uV$5S7h#VjIiWOhbJ4EN|Z z(lk>=E6SvE(0x>0dyq{%`O3?A{X~otTV>?WzPJ4Y0}*A%!5jj%PuKzs3z4w;v^?|l z(o3cN`=Klxw|cs#v_u^SHn#f=Uyd>)=19O-XMG zbsZT<3M$S2XMaj?tp$le>;d=?$)_M6s$*HaxI12^bNB8#h;U&f$vn7xWa*df?Cx_3 W@cb-n9qo+#^9|WMGMQ5Mef|%6hVuyk literal 0 HcmV?d00001 diff --git a/doc/getting-started/network-edge/offline-images/offline-flow.png b/doc/getting-started/network-edge/offline-images/offline-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..0b01a301c484c13a7b74c7859446543122b1fda9 GIT binary patch literal 46342 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 literal 0 HcmV?d00001 diff --git a/doc/getting-started/network-edge/offline-images/offline-ssh.png b/doc/getting-started/network-edge/offline-images/offline-ssh.png new file mode 100644 index 0000000000000000000000000000000000000000..c6efe0a6f60a0b98e0d27a46d2de7fbd70f1ae17 GIT binary patch literal 30053 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 C!a_6v literal 0 HcmV?d00001 From 3535949ace611afe594aa8901761bce6b408d5de Mon Sep 17 00:00:00 2001 From: damiankopyto <48013534+damiankopyto@users.noreply.github.com> Date: Wed, 16 Dec 2020 20:03:26 +0000 Subject: [PATCH 114/148] TopologuManager update (#370) Co-authored-by: Krishnamurthy Jambur <47258934+krishnajs@users.noreply.github.com> --- .../enhanced-platform-awareness/openness-topology-manager.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/building-blocks/enhanced-platform-awareness/openness-topology-manager.md b/doc/building-blocks/enhanced-platform-awareness/openness-topology-manager.md index af50b1e1..e5f60e13 100644 --- a/doc/building-blocks/enhanced-platform-awareness/openness-topology-manager.md +++ b/doc/building-blocks/enhanced-platform-awareness/openness-topology-manager.md @@ -41,7 +41,7 @@ cpu: # CPU policy - possible values: none (disabled), static (default) policy: "static" # Reserved CPUs - reserved_cpus: 1 + reserved_cpus: "0,1" # Kubernetes Topology Manager policy - possible values: none (disabled), best-effort (default), restricted, single-numa-node topology_manager: @@ -50,7 +50,7 @@ topology_manager: Where `` can be `none`, `best-effort`, `restricted` or `single-numa-node`. Refer to the [Kubernetes Documentation](https://kubernetes.io/docs/tasks/administer-cluster/topology-manager/) for details of these policies. -You can also set `kubernetes_reserved_cpus` to a number that suits you best. This parameter specifies the number of logical CPUs that will be reserved for a Kubernetes system Pods. +You can also set `reserved_cpus` to a number that suits you best. This parameter specifies the logical CPUs that will be reserved for a Kubernetes system Pods and OS daemons. ### Usage To use Topology Manager create a Pod with a `guaranteed` QoS class (requests equal to limits). For example: From 5c33b1b6da07bcf15cca83d5313e7098d91e580a Mon Sep 17 00:00:00 2001 From: damiankopyto <48013534+damiankopyto@users.noreply.github.com> Date: Wed, 16 Dec 2020 20:17:48 +0000 Subject: [PATCH 115/148] Update ran doc 20.12 (#371) Co-authored-by: Krishnamurthy Jambur <47258934+krishnajs@users.noreply.github.com> --- .../ran/openness_ran.md | 31 +++++++++++++------ 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/doc/reference-architectures/ran/openness_ran.md b/doc/reference-architectures/ran/openness_ran.md index 8631c8c2..3f1eeaba 100644 --- a/doc/reference-architectures/ran/openness_ran.md +++ b/doc/reference-architectures/ran/openness_ran.md @@ -59,7 +59,13 @@ This section explains the steps involved in building the FlexRAN image. Only L1 >**NOTE**: The environmental variables path must be updated according to your installation and file/directory names. 4. Build L1, WLS interface between L1, L2, and L2-Stub (testmac): `./flexran_build.sh -r 5gnr_sub6 -m testmac -m wls -m l1app -b -c` -5. Once the build has completed, copy the required binary files to the folder where the Docker\* image is built. The list of binary files that are used is documented in [dockerfile](https://github.com/otcshare/edgeapps/blob/master/network-functions/ran/5G/flexRAN-gnb/Dockerfile) +5. Once the build has completed, copy the required binary files to the folder where the Docker\* image is built. This can be done by using a provided example [build-du-dev-image.sh](https://github.com/otcshare/edgeapps/blob/master/network-functions/ran/5G/du-dev/build-du-dev-image.sh) script from Edge Apps OpenNESS repository, it will copy the files from the paths provided as environmental variables in previous step. The script will copy the files into the right directory containing the Dockerfile and commence the docker build. + ```shell + git clone https://github.com/otcshare/edgeapps.git + cd edgeapps/network-functions/ran/5G/du-dev + ./build-du-dev-image.sh + ``` + The list of binary files that are used is documented in [dockerfile](https://github.com/otcshare/edgeapps/blob/master/network-functions/ran/5G/flexRAN-gnb/Dockerfile) - ICC, IPP mpi and mkl Runtime - DPDK build target directory - FlexRAN test vectors (optional) @@ -67,18 +73,23 @@ This section explains the steps involved in building the FlexRAN image. Only L1 - FlexRAN SDK modules - FlexRAN WLS share library - FlexRAN CPA libraries -6. `cd` to the folder where the Docker image is built and start the docker build `docker build -t : .` -The following example reflects the Docker image [expected by Helm chart](https://github.com/otcshare/edgeapps/blob/master/network-functions/ran/charts/flexran/values.yaml): + + +6. The following example reflects the Docker image [expected by Helm chart](https://github.com/otcshare/edgeapps/blob/master/network-functions/ran/charts/du-dev/values.yaml), user needs to adjust the IP address and port of the Harbor registry where Docker image will be pushed: ```shell - docker build -t flexran5g:3.10.0-1062.12.1.rt56 . + image: + repository: :/intel/flexran5g # Change Me! - please provide IP address and port + # of Harbor registry where FlexRAN docker image is uploaded + tag: 3.10.0-1127.19.1.rt56 # The tag identifying the FlexRAN docker image, + # the kernel version used to build FlexRAN can be used as tag ``` 7. Tag the image and push to a local Harbor registry (Harbor registry deployed as part of OpenNESS Experience Kit) ```shell - docker tag flexran5g :/intel/flexran5g:3.10.0-1062.12.1.rt56 + docker tag flexran5g :/intel/flexran5g:3.10.0-1127.19.1.rt56 - docker push :/intel/flexran5g:3.10.0-1062.12.1.rt56 + docker push :/intel/flexran5g:3.10.0-1127.19.1.rt56 ``` By the end of step 7, the FlexRAN Docker image is created and available in the Harbor registry. This image is copied to the edge node where FlexRAN will be deployed and that is installed with OpenNESS Network edge with all the required EPA features including Intel® FPGA Programmable Acceleration Card (Intel® FPGA PAC) N3000. Please refer to the document [Using FPGA in OpenNESS: Programming, Resource Allocation, and Configuration](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-fpga.md) for details on setting up Intel® FPGA PAC N3000 with vRAN FPGA image. @@ -99,7 +110,7 @@ Instructions on how to configure the kernel command line in OpenNESS can be foun # Deploying and Running the FlexRAN pod -1. Deploy the OpenNESS cluster with [SRIOV for FPGA enabled](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-fpga.md#fpga-fec-ansible-installation-for-openness-network-edge). +1. Deploy the OpenNESS cluster with [SRIOV for FPGA enabled](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md#fpga-fec-ansible-installation-for-openness-network-edge). 2. Confirm that there are no FlexRAN pods and the FPGA configuration pods are not deployed using `kubectl get pods`. 3. Confirm that all the EPA microservice and enhancements (part of OpenNESS playbook) are deployed `kubectl get po --all-namespaces`. ```yaml @@ -134,12 +145,12 @@ Instructions on how to configure the kernel command line in OpenNESS can be foun openness syslog-ng-n7zfm 1/1 Running 16 7d19h ``` 4. Deploy the Kubernetes job to program the [FPGA](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-fpga.md#fpga-programming-and-telemetry-on-openness-network-edge) -5. Deploy the Kubernetes job to configure the [BIOS](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-bios.md) (note: only works on select Intel development platforms) -6. Deploy the Kubernetes job to configure the [Intel PAC N3000 FPGA](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-fpga.md#fec-vf-configuration-for-openness-network-edge) +5. Deploy the Kubernetes job to configure the [BIOS](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-bios.md) (note: only works on select Intel development platforms) +6. Deploy the Kubernetes job to configure the [Intel PAC N3000 FPGA](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md#fec-vf-configuration-for-openness-network-edge) 7. Deploy the FlexRAN Kubernetes pod using a helm chart provided in Edge Apps repository at `edgeapps/network-functions/ran/charts`: ```shell - helm install flexran-pod flexran + helm install flexran-pod du-dev ``` 8. `exec` into FlexRAN pod `kubectl exec -it flexran -- /bin/bash` From 62be8a169c389458b287ec6574641905738716e0 Mon Sep 17 00:00:00 2001 From: Amr Mokhtar Date: Wed, 16 Dec 2020 20:20:43 +0000 Subject: [PATCH 116/148] scattered updated --- _data/navbars/devkits.yml | 11 ----------- .../enhanced-platform-awareness/index.html | 2 +- doc/building-blocks/index.html | 14 ++++++++++++++ doc/orchestration/index.html | 14 ++++++++++++++ doc/orchestration/openness-helm.md | 16 ++++++++-------- doc/reference-architectures/index.html | 14 ++++++++++++++ index.html | 2 +- 7 files changed, 52 insertions(+), 21 deletions(-) delete mode 100644 _data/navbars/devkits.yml create mode 100644 doc/building-blocks/index.html create mode 100644 doc/orchestration/index.html create mode 100644 doc/reference-architectures/index.html diff --git a/_data/navbars/devkits.yml b/_data/navbars/devkits.yml deleted file mode 100644 index 18c8cedf..00000000 --- a/_data/navbars/devkits.yml +++ /dev/null @@ -1,11 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 -# Copyright (c) 2020 Intel Corporation - -title: "Development Kits" -path: /devkits/ -order: 7 -section: - - title: OpenNESS Development Kit for Microsoft Azure - path: /doc/devkits/openness-azure-devkit - meta_title: OpenNESS Development Kit for Microsoft Azure - meta_description: This devkit supports the use of OpenNESS in cloud solutions. It leverages the Microsoft Azure Stack for OpenNESS deployment. diff --git a/doc/building-blocks/enhanced-platform-awareness/index.html b/doc/building-blocks/enhanced-platform-awareness/index.html index d31f9d8c..4289955e 100644 --- a/doc/building-blocks/enhanced-platform-awareness/index.html +++ b/doc/building-blocks/enhanced-platform-awareness/index.html @@ -10,5 +10,5 @@ ---

You are being redirected to the OpenNESS Docs.

diff --git a/doc/building-blocks/index.html b/doc/building-blocks/index.html new file mode 100644 index 00000000..f1499d27 --- /dev/null +++ b/doc/building-blocks/index.html @@ -0,0 +1,14 @@ + + +--- +title: OpenNESS Documentation +description: Home +layout: openness +--- +

You are being redirected to the OpenNESS Docs.

+ diff --git a/doc/orchestration/index.html b/doc/orchestration/index.html new file mode 100644 index 00000000..6bbee5e8 --- /dev/null +++ b/doc/orchestration/index.html @@ -0,0 +1,14 @@ + + +--- +title: OpenNESS Documentation +description: Home +layout: openness +--- +

You are being redirected to the OpenNESS Docs.

+ diff --git a/doc/orchestration/openness-helm.md b/doc/orchestration/openness-helm.md index d5a5ec07..50919e9c 100644 --- a/doc/orchestration/openness-helm.md +++ b/doc/orchestration/openness-helm.md @@ -2,14 +2,14 @@ SPDX-License-Identifier: Apache-2.0 Copyright (c) 2020 Intel Corporation ``` + # Helm support in OpenNESS -- [Helm support in OpenNESS](#helm-support-in-openness) - - [Introduction](#introduction) - - [Architecture](#architecture) - - [Helm Installation](#helm-installation) - - [Helm Charts](#helm-charts) - - [References](#references) +- [Introduction](#introduction) +- [Architecture](#architecture) +- [Helm Installation](#helm-installation) +- [Helm Charts](#helm-charts) +- [References](#references) ## Introduction Helm is a package manager for Kubernetes\*. It allows developers and operators to easily package, configure, and deploy applications and services onto Kubernetes clusters. For details refer to the [Helm Website](https://helm.sh). With OpenNESS, Helm is used to extend the [OpenNESS Experience Kits](https://github.com/otcshare/openness-experience-kits) Ansible\* playbooks to deploy Kubernetes packages. Helm adds considerable flexibility. It enables users to upgrade an existing installation without requiring a re-install. It provides the option to selectively deploy individual microservices if a full installation of OpenNESS is not needed. And it provides a standard process to deploy different applications or network functions. This document aims to familiarize the user with Helm and provide instructions on how to use the specific Helm charts available for OpenNESS. @@ -55,12 +55,12 @@ OpenNESS provides the following helm charts: The EPA, Telemetry, and k8s plugins helm chart files will be saved in a specific directory on the OpenNESS controller. To modify the directory, change the following variable `ne_helm_charts_default_dir` in the `group_vars/all/10-default.yml` file: ```yaml - ne_helm_charts_default_dir: /opt/openness/helm-chartss/ + ne_helm_charts_default_dir: /opt/openness/helm-charts/ ``` To check helm charts files, run the following command on the OpenNESS controller: ```bash - $ ls /opt/openness/helm-chartss/ + $ ls /opt/openness/helm-charts/ vpu-plugin gpu-plugin node-feature-discovery prometheus ``` diff --git a/doc/reference-architectures/index.html b/doc/reference-architectures/index.html new file mode 100644 index 00000000..a1c1b84c --- /dev/null +++ b/doc/reference-architectures/index.html @@ -0,0 +1,14 @@ + + +--- +title: OpenNESS Documentation +description: Home +layout: openness +--- +

You are being redirected to the OpenNESS Docs.

+ diff --git a/index.html b/index.html index bb24dd2a..fd9122d4 100644 --- a/index.html +++ b/index.html @@ -10,5 +10,5 @@ ---

You are being redirected to the OpenNESS Docs.

From 066d06bfb64bf6b18153d6ce4cbc38f73d7e0d10 Mon Sep 17 00:00:00 2001 From: damiankopyto <48013534+damiankopyto@users.noreply.github.com> Date: Wed, 16 Dec 2020 20:24:11 +0000 Subject: [PATCH 117/148] Update fpga doc (#375) Update fpga doc Co-authored-by: Krishnamurthy Jambur <47258934+krishnajs@users.noreply.github.com> --- .../openness-fpga.md | 122 +++++++----------- 1 file changed, 50 insertions(+), 72 deletions(-) diff --git a/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md b/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md index 228a68a6..83a3b807 100644 --- a/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md +++ b/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md @@ -66,19 +66,26 @@ When the Intel® FPGA PAC N3000 is programmed with a vRAN 5G image, it exposes t The full pipeline of preparing the device for workload deployment and deploying the workload can be divided into the following stages (subfeatures): -- Programming the FPGA with RTL factory and user images: feature installation via Ansible\* automation and a K8s kubectl plugin are provided to use the feature. +- Programming the FPGA with RTL user images: feature installation via Ansible\* automation and a K8s kubectl plugin are provided to use the feature. - Enabling SRIOV, binding devices to appropriate drivers, and the creation of VFs: delivered as part of the Edge Nodes Ansible automation. -- Queue configuration of FPGAs PF/VFs with an aid of DPDK Baseband Device (BBDEV) config utility: Docker\* image creation delivered as part of the Edge Nodes Ansible automation (dependency on the config utility from the FlexRAN package). The images being pushed to a local Harbor registry, sample pod (job) deployment via Helm charts. +- Queue configuration of FPGAs PF/VFs with an aid of DPDK Baseband Device (BBDEV) config utility: Docker\* image creation delivered as part of the Edge Nodes Ansible automation. The images being pushed to a local Harbor registry, sample pod (job) deployment via Helm charts. - Enabling orchestration and allocation of the devices (VFs) to non-root pods requesting the devices: leveraging the support of FPGA SRIOV VFs from K8s SRIOV Device Plugin. K8s plugin deployment is delivered as part of the Edge Controller's Ansible automation. -- Simple sample BBDEV application to validate the pipeline (i.e., SRIOV creation - Queue configuration - Device orchestration - Pod deployment): Script delivery and instructions to build Docker image for sample application delivered as part of Edge Apps package. +- Simple sample DPDK BBDEV application to validate the pipeline (i.e., SRIOV creation - Queue configuration - Device orchestration - Pod deployment): Script delivery and instructions to build Docker image for sample application delivered as part of Edge Apps package. It is assumed that the FPGA is always used with the OpenNESS Network Edge, paired with the Multus\* plugin to enable the workload pod with a default K8s network interface. The Multus CNI is a container network interface (CNI) plugin for Kubernetes that enables attaching multiple network interfaces to pods. +It is also assumed that the Intel® FPGA PAC N3000 MAX10 build version of the card used for OpenNESS setup is at least version 2.0.x and has RoT capability, ie: +```shell +Board Management Controller, MAX10 NIOS FW version D.2.0.19 +Board Management Controller, MAX10 Build version D.2.0.6 +``` +For information on how to update and flash the MAX10 to supported version see [Intel® FPGA PAC N3000 documentation](https://www.intel.com/content/www/us/en/programmable/documentation/xgz1560360700260.html#wzl1570122399760). + ### FPGA (FEC) Ansible installation for OpenNESS Network Edge To run the OpenNESS package with FPGA (FEC) functionality, the feature needs to be enabled on both Edge Controller and Edge Node. #### OpenNESS Experience Kit -To enable FPGA support from OEK, change the variable `ne_opae_fpga_enable` in `group_vars/all/10-default.yml` to `true`: +To enable FPGA support from OEK, change the variable `ne_opae_fpga_enable` in `group_vars/all/10-default.yml` (or flavour alternative file) to `true`: ```yaml # group_vars/all/10-default.yml ne_opae_fpga_enable: true @@ -88,7 +95,7 @@ Additionally, SRIOV must be enabled in OpenNESS: ```yaml # group_vars/all/10-default.yml kubernetes_cnis: -- kubeovn +-
- sriov ``` @@ -110,15 +117,11 @@ fpga_userspace_vf: The following packages need to be placed into specific directories for the feature to work: -1. A clean copy of `bbdev_config_service` needs to be placed in the `openness-experience-kits/fpga_config` directory. The package can be obtained as part of the 19.10 release of FlexRAN. To obtain the package, contact your Intel representative or visit the [Resource Design Center](https://cdrdv2.intel.com/v1/dl/getContent/615743 ). - -2. The OPAE package `n3000-1-3-5-beta-rte-setup.zip` needs to be placed inside the `openness-experience-kits/opae_fpga` directory. The package can be obtained as part of Intel® FPGA PAC N3000 OPAE beta release. To obtain the package, contact your Intel representative or visit the [Resource Design Center](https://cdrdv2.intel.com/v1/dl/getContent/616082). - -3. The factory image configuration package `n3000-1-3-5-beta-cfg-2x2x25g-setup.zip` needs to be placed inside the `openness-experience-kits/opae_fpga` directory. The package can be obtained as part of PAC N3000 OPAE beta release. To obtain the package, contact your Intel representative or visit the [Resource Design Center](https://cdrdv2.intel.com/v1/dl/getContent/616080). +1. The OPAE package `OPAE_SDK_1.3.7-5_el7.zip` needs to be placed inside the `openness-experience-kits/opae_fpga` directory. The package can be obtained as part of Intel® FPGA PAC N3000 OPAE beta release. To obtain the package, contact your Intel representative. Run setup script `deploy_ne.sh`. -After a successful deployment, the following pods will be available in the cluster: +After a successful deployment, the following pods will be available in the cluster (CNI pods may vary depending on deployment): ```shell kubectl get pods -A @@ -154,39 +157,50 @@ openness syslog-ng-br92z 1/1 Running 0 ``` ### FPGA programming and telemetry on OpenNESS Network Edge -To program the FPGA factory image (one-time secure upgrade) or the user image (5GN FEC vRAN) of the Intel® FPGA PAC N3000 via OPAE a `kubectl` plugin for K8s is provided. The plugin also allows for obtaining basic FPGA telemetry. This plugin will deploy K8s jobs that run to completion on the desired host and display the logs/output of the command. +It is expected the the factory image of the Intel® FPGA PAC N3000 is of version 2.0.x. To program the user image (5GN FEC vRAN) of the Intel® FPGA PAC N3000 via OPAE a `kubectl` plugin for K8s is provided - it is expected that the provided user image is signed or un-signed (development purposes) by the user, see the [documentation](https://www.intel.com/content/www/us/en/programmable/documentation/pei1570494724826.html) for more information on how to sign/un-sign the image file. The plugin also allows for obtaining basic FPGA telemetry. This plugin will deploy K8s jobs that run to completion on the desired host and display the logs/output of the command. The following are the operations supported by the `kubectl rsu` K8s plugin. They are run from the Edge Controller: -1. To display currently supported capabilities and information on how to use them, run: +1. To check the version of the MAX10 image and FW run: +``` +kubectl rsu get fme -n +Board Management Controller, MAX10 NIOS FW version D.2.0.19 +Board Management Controller, MAX10 Build version D.2.0.6 +//****** FME ******// +Object Id : 0xEF00000 +PCIe s:b:d.f : 0000:1b:00.0 +Device Id : 0x0b30 +Numa Node : 0 +Ports Num : 01 +Bitstream Id : 0x2315842A010601 +Bitstream Version : 0.2.3 +Pr Interface Id : a5d72a3c-c8b0-4939-912c-f715e5dc10ca +Boot Page : user +``` +2. To display currently supported capabilities and information on how to use them, run: ``` kubectl rsu -h ``` -2. To run one time secure upgrade of the factory image, run: -``` -kubectl rsu flash -n -``` -3. To display information about RSU supported devices that can be used to program the FPGA, and to list FPGA user images available on the host, run: +2. To display information about RSU supported devices that can be used to program the FPGA, and to list FPGA user images available on the host, run: ``` kubectl rsu discover -n ``` -4. To copy and sign a user image to the desired platform, run the following command to copy an already signed image add `--no-sign` to the command: -To obtain a user FPGA image for 5GNR vRAN such as `ldpc5g_2x2x25g`, contact your Intel Representative. +3. To copy and the user image to the desired platform, run the following command. +To obtain a user FPGA image for 5GNR vRAN such as `2x2x25G-5GLDPC-v1.6.1-3.0.0`, contact your Intel Representative. ``` kubectl rsu load -f -n ``` -5. To program the FPGA with user image (vRAN for 5GNR), run: +4. To program the FPGA with user image (vRAN for 5GNR), run: ``` kubectl rsu program -f -n -d ``` -6. To obtain basic telemetry (temperature, power usage, and FPGA image information, etc.), run: +5. To obtain basic telemetry (temperature, power usage, and FPGA image information, etc.), run: ``` kubectl rsu get temp -n kubectl rsu get power -n kubectl rsu get fme -n - # Sample output for correctly programmed card with `get fme` command //****** FME ******// Object Id : 0xED00000 @@ -200,62 +214,28 @@ Pr Interface Id : a5d72a3c-c8b0-4939-912c-f715e5dc10ca Boot Page : user ``` 7. For more information on the usage of each `kubectl rsu` plugin capability, run each command with the `-h` argument. +8. To monitor progress of deployed jobs run: +``` +kubectl logs -f +``` To run vRAN workloads on the Intel® FPGA PAC N3000, the FPGA must be programmed with the appropriate factory and user images per the instructions. -Additionally, in a scenario where the user wants to manually deploy a K8s job for OPAE without the use of the `kubectl rsu` plugin, the following sample `.yml` specification can be used as a template. The provided `args` needs to be changed accordingly; this job can be run with `kubectl create -f sample.yml`: - -```yaml -apiVersion: batch/v1 -kind: Job -metadata: - name: fpga-opae-job -spec: - template: - spec: - containers: - - securityContext: - privileged: true - name: fpga-opea - image: fpga-opae-pacn3000:1.0 - imagePullPolicy: Never - command: [ "/bin/bash", "-c", "--" ] - args: [ "./check_if_modules_loaded.sh && fpgasupdate /root/images/ && rsu bmcimg (RSU_PCI_bus_function_id)" ] - volumeMounts: - - name: class - mountPath: /sys/devices - readOnly: false - - name: image-dir - mountPath: /root/images - readOnly: false - volumes: - - hostPath: - path: "/sys/devices" - name: class - - hostPath: - path: "/temp/vran_images" - name: image-dir - restartPolicy: Never - nodeSelector: - kubernetes.io/hostname: samplenodename - - backoffLimit: 0 -``` #### Telemetry monitoring - Support for monitoring temperature and power telemetry of the Intel® FPGA PAC N3000 is also provided from OpenNESS with a CollectD collector that is configured for the `flexran` flavor. Intel® FPGA PAC N3000 telemetry monitoring is provided to CollectD as a plugin. It collects the temperature and power metrics from the card and exposes them to Prometheus\* from which the user can easily access the metrics. For more information on how to enable telemetry for FPGA in OpenNESS, see the [telemetry whitepaper](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-telemetry.md#collectd). + Support for monitoring temperature and power telemetry of the Intel® FPGA PAC N3000 is also provided from OpenNESS with a CollectD collector that is configured for the `flexran` flavor. Intel® FPGA PAC N3000 telemetry monitoring is provided to CollectD as a plugin. It collects the temperature and power metrics from the card and exposes them to Prometheus\* from which the user can easily access the metrics. For more information on how to enable telemetry for FPGA in OpenNESS, see the [telemetry whitepaper](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-telemetry.md#collectd). ![PACN3000 telemetry](fpga-images/openness-fpga4.png) ### FEC VF configuration for OpenNESS Network Edge -To configure the VFs with the necessary number of queues for the vRAN workload the BBDEV configuration utility is run as a job within a privileged container. The configuration utility is available to run as a Helm chart available from `/opt/openness/helm-chartss/fpga_config`. +To configure the VFs with the necessary number of queues for the vRAN workload the BBDEV configuration utility is run as a job within a privileged container. The configuration utility is available to run as a Helm chart available from `/opt/openness/helm-charts/bb_config`. -Sample configMap, which can be configured by changing values if other than typical config is required, with a profile for the queue configuration is provided as part of Helm chart template `/opt/openness/helm-chartss/fpga_config/templates/fpga-config.yaml` populated with values from `/opt/openness/helm-chartss/fpga_config/values.yaml`. Helm chart installation requires a provision of hostname for the target node during job deployment. +Sample configMap, which can be configured by changing values if other than typical configuration is required, with a profile for the queue configuration, is provided as part of Helm chart template `/opt/openness/helm-charts/bb_config/templates/fpga-config.yaml` populated with values from `/opt/openness/helm-charts/bb_config/values.yaml`. Helm chart installation requires a provision of hostname for the target node during job deployment. -Install the Helm chart by providing configmap and BBDEV config utility job with the following command from `/opt/openness/helm-chartss/` on Edge Controller: +Install the Helm chart by providing configmap and BBDEV config utility job with the following command from `/opt/openness/helm-charts/` on Edge Controller: ```shell -helm install --set nodeName= intel-fpga-cfg fpga_config +helm install --set nodeName= intel-fpga-cfg bb_config ``` Check if the job has completed and that the state of the pod created for this job is “Completed”. Check the logs of the pod to see a complete successful configuration. @@ -268,7 +248,7 @@ Expected: `Mode of operation = VF-mode FPGA_LTE PF [0000:xx:00.0] configuration To redeploy the job on another node, use the following command: ``` -helm upgrade --set nodeName= intel-fpga-cfg fpga_config +helm upgrade --set nodeName= intel-fpga-cfg bb_config ``` To uninstall the job, run: @@ -286,7 +266,7 @@ kubectl get node -o json | jq '.status.allocatable' ``` To request the device as a resource in the pod, add the request for the resource into the pod specification file by specifying its name and amount of resources required. If the resource is not available or the amount of resources requested is greater than the number of resources available, the pod status will be “Pending” until the resource is available. -**NOTE**: The name of the resource must match the name specified in the configMap for the K8s devices plugin (`./fpga/configMap.yml`). +**NOTE**: The name of the resource must match the name specified in the configMap for the K8s devices plugin [configMap.yml](https://github.com/otcshare/openness-experience-kits/blob/master/roles/kubernetes/cni/sriov/controlplane/files/sriov/templates/configMap.yml). A sample pod requesting the FPGA (FEC) VF may look like this: @@ -336,13 +316,11 @@ Navigate to: edgeapps/fpga-sample-app ``` -Copy the necessary `dpdk_19.11_new.patch` file into the directory. This patch is available as part of FlexRAN 20.02 release package. To obtain the FlexRAN patch allowing 5G functionality for BBDEV in DPDK, contact your Intel representative or visit the [Resource Design Center](https://cdrdv2.intel.com/v1/dl/getContent/615743). - Build the image: `./build-image.sh` -From the Edge Controller, deploy the application pod. The pod specification is located at `/fpga`: +From the Edge Controlplane, deploy the application pod. The pod specification is located at `/opt/openness/edgenode/edgecontroller/fpga/fpga-sample-app.yaml`: ``` kubectl create -f fpga-sample-app.yaml @@ -354,7 +332,7 @@ Execute into the application pod and run the sample app: kubectl exec -it pod-bbdev-sample-app -- /bin/bash # run test application -./test-bbdev.py --testapp-path ./testbbdev -e="-w ${PCIDEVICE_INTEL_COM_INTEL_FEC_5G}" -i -n 1 -b 1 -l 1 -c validation -v ./test_vectors/ldpc_dec_v7813.data +./test-bbdev.py --testapp-path ./dpdk-test-bbdev -e="-w ${PCIDEVICE_INTEL_COM_INTEL_FEC_5G}" -i -n 1 -b 1 -l 1 -c validation -v ldpc_dec_v7813.data # sample output EAL: Detected 48 lcore(s) From 548c5a2536526bd12758202b29148134e26f970e Mon Sep 17 00:00:00 2001 From: Amr Mokhtar Date: Wed, 16 Dec 2020 21:10:18 +0000 Subject: [PATCH 118/148] fixes --- _data/navbars/building-blocks.yml | 4 +- _data/navbars/reference-architectures.yml | 15 -- _data/navbars/release-history.yml | 2 +- doc/architecture.md | 75 ++++---- doc/building-blocks/emco/index.html | 14 ++ doc/building-blocks/emco/openness-emco.md | 202 ++++++++++++---------- 6 files changed, 168 insertions(+), 144 deletions(-) create mode 100644 doc/building-blocks/emco/index.html diff --git a/_data/navbars/building-blocks.yml b/_data/navbars/building-blocks.yml index 25bbf949..904907ac 100644 --- a/_data/navbars/building-blocks.yml +++ b/_data/navbars/building-blocks.yml @@ -86,10 +86,10 @@ section: meta_title: Kubernetes Dashboard in OpenNESS meta_description: OpenNESS supports Kubernetes Dashboard that can be used to inspect and manage Kubernetes cluster. - - title: "Edge Multi-Cluster Orchestrator" + - title: Multi-Cluster Orchestration path: section: - - title: EMCO White Paper + - title: Edge Multi-Cluster Orchestrator (EMCO) path: /doc/building-blocks/emco/openness-emco meta_title: Edge Multi-Cluster Orchestrator meta_description: Geo-Distributed multiple clusters application orchestration. diff --git a/_data/navbars/reference-architectures.yml b/_data/navbars/reference-architectures.yml index 98cdf818..be6ef611 100644 --- a/_data/navbars/reference-architectures.yml +++ b/_data/navbars/reference-architectures.yml @@ -40,18 +40,3 @@ section: path: /doc/reference-architectures/ran/openness_xran meta_title: 5GNR FlexRAN Front Haul functional units deployment with OpenNESS based on O-RAN specifications at the Network Edge meta_description: 5GNR FlexRAN Front Haul functional units deployment with OpenNESS based on O-RAN specifications at the Network Edge. - - - title: Converged Edge Reference Architecture Near Edge - path: /doc/reference-architectures/CERA-Near-Edge - meta_title: Converged Edge Reference Architecture Near Edge - meta_description: Reference architecture combines wireless and high performance compute for IoT, AI, video and other services. - - - title: Converged Edge Reference Architecture On Premises Edge - path: /doc/reference-architectures/CERA-5G-On-Prem - meta_title: Converged Edge Reference Architecture On Premises Edge - meta_description: Reference architecture combines wireless and high performance compute for IoT, AI, video and other services. - - - title: SDWAN in OpenNESS - path: /doc/reference-architectures/openness_sdwan - meta_title: SDWAN in OpenNESS - meta_description: OpenNESS provides a reference solution for SD-WAN consisting of building blocks for cloud-native deployments. diff --git a/_data/navbars/release-history.yml b/_data/navbars/release-history.yml index 5e1ccabd..6a43ea2c 100644 --- a/_data/navbars/release-history.yml +++ b/_data/navbars/release-history.yml @@ -3,7 +3,7 @@ title: "Release history" path: /release-notes/ -order: 8 +order: 7 section: - title: Release Notes path: /openness_releasenotes diff --git a/doc/architecture.md b/doc/architecture.md index 97296d00..bbb2183d 100644 --- a/doc/architecture.md +++ b/doc/architecture.md @@ -2,48 +2,45 @@ SPDX-License-Identifier: Apache-2.0 Copyright (c) 2019-2020 Intel Corporation ``` - - # OpenNESS Architecture and Solution Overview -- [OpenNESS Architecture and Solution Overview](#openness-architecture-and-solution-overview) - - [Architecture Overview](#architecture-overview) - - [Logical](#logical) - - [Architecture](#architecture) - - [OpenNESS Kubernetes Control Plane](#openness-kubernetes-control-plane) - - [OpenNESS Edge Node](#openness-edge-node) - - [Building Blocks, Kubernetes Extensions, and Enhancements](#building-blocks-kubernetes-extensions-and-enhancements) - - [Multi-Access Networking](#multi-access-networking) - - [Edge Multi-Cluster Orchestration](#edge-multi-cluster-orchestration) - - [Resource Management](#resource-management) - - [Resource Identification](#resource-identification) - - [Resource Allocation](#resource-allocation) - - [Resource Monitoring](#resource-monitoring) - - [Accelerators](#accelerators) - - [Dataplane/Container Network Interfaces](#dataplanecontainer-network-interfaces) - - [Edge Aware Service Mesh](#edge-aware-service-mesh) - - [Telemetry and Monitoring](#telemetry-and-monitoring) - - [Edge Services](#edge-services) - - [Software Development Kits](#software-development-kits) - - [Converged Edge Reference Architecture](#converged-edge-reference-architecture) - - [CERA Minimal Flavor](#cera-minimal-flavor) - - [CERA Access Edge Flavor](#cera-access-edge-flavor) - - [CERA Near Edge Flavor](#cera-near-edge-flavor) - - [CERA SD-WAN Edge Flavor](#cera-sd-wan-edge-flavor) - - [CERA SD-WAN Hub Flavor](#cera-sd-wan-hub-flavor) - - [CERA Media Analytics Flavor with VCAC-A](#cera-media-analytics-flavor-with-vcac-a) - - [CERA Media Analytics Flavor](#cera-media-analytics-flavor) - - [CERA CDN Transcode Flavor](#cera-cdn-transcode-flavor) - - [CERA CDN Caching Flavor](#cera-cdn-caching-flavor) - - [CERA Core Control Plane Flavor](#cera-core-control-plane-flavor) - - [CERA Core User Plane Flavor](#cera-core-user-plane-flavor) - - [CERA for Untrusted Non-3GPP Access Flavor](#cera-for-untrusted-non-3gpp-access-flavor) - - [Reference Edge Apps and Network Functions](#reference-edge-apps-and-network-functions) - - [OpenNESS Optimized Commercial Applications](#openness-optimized-commercial-applications) - - [OpenNESS DevKit for Microsoft Azure](#openness-devkit-for-microsoft-azure) - - [Other References](#other-references) - - [List of Abbreviations](#list-of-abbreviations) +- [Architecture Overview](#architecture-overview) + - [Logical](#logical) + - [Architecture](#architecture) + - [OpenNESS Kubernetes Control Plane](#openness-kubernetes-control-plane) + - [OpenNESS Edge Node](#openness-edge-node) +- [Building Blocks, Kubernetes Extensions, and Enhancements](#building-blocks-kubernetes-extensions-and-enhancements) + - [Multi-Access Networking](#multi-access-networking) + - [Edge Multi-Cluster Orchestration](#edge-multi-cluster-orchestration) + - [Resource Management](#resource-management) + - [Resource Identification](#resource-identification) + - [Resource Allocation](#resource-allocation) + - [Resource Monitoring](#resource-monitoring) + - [Accelerators](#accelerators) + - [Dataplane/Container Network Interfaces](#dataplanecontainer-network-interfaces) + - [Edge Aware Service Mesh](#edge-aware-service-mesh) + - [Telemetry and Monitoring](#telemetry-and-monitoring) + - [Edge Services](#edge-services) + - [Software Development Kits](#software-development-kits) +- [Converged Edge Reference Architecture](#converged-edge-reference-architecture) + - [CERA Minimal Flavor](#cera-minimal-flavor) + - [CERA Access Edge Flavor](#cera-access-edge-flavor) + - [CERA Near Edge Flavor](#cera-near-edge-flavor) + - [CERA SD-WAN Edge Flavor](#cera-sd-wan-edge-flavor) + - [CERA SD-WAN Hub Flavor](#cera-sd-wan-hub-flavor) + - [CERA Media Analytics Flavor with VCAC-A](#cera-media-analytics-flavor-with-vcac-a) + - [CERA Media Analytics Flavor](#cera-media-analytics-flavor) + - [CERA CDN Transcode Flavor](#cera-cdn-transcode-flavor) + - [CERA CDN Caching Flavor](#cera-cdn-caching-flavor) + - [CERA Core Control Plane Flavor](#cera-core-control-plane-flavor) + - [CERA Core User Plane Flavor](#cera-core-user-plane-flavor) + - [CERA for Untrusted Non-3GPP Access Flavor](#cera-for-untrusted-non-3gpp-access-flavor) +- [Reference Edge Apps and Network Functions](#reference-edge-apps-and-network-functions) +- [OpenNESS Optimized Commercial Applications](#openness-optimized-commercial-applications) + - [OpenNESS DevKit for Microsoft Azure](#openness-devkit-for-microsoft-azure) +- [Other References](#other-references) +- [List of Abbreviations](#list-of-abbreviations) ## Architecture Overview diff --git a/doc/building-blocks/emco/index.html b/doc/building-blocks/emco/index.html new file mode 100644 index 00000000..0d4fe09d --- /dev/null +++ b/doc/building-blocks/emco/index.html @@ -0,0 +1,14 @@ + + +--- +title: OpenNESS Documentation +description: Home +layout: openness +--- +

You are being redirected to the OpenNESS Docs.

+ diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 181c06e4..4ca3fa06 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -2,17 +2,35 @@ SPDX-License-Identifier: Apache-2.0 Copyright (c) 2020 Intel Corporation ``` + # Edge Multi-Cluster Orchestrator (EMCO) -- [Edge Multi-Cluster Orchestrator (EMCO)](#edge-multi-cluster-orchestrator-emco) - - [Background](#background) - - [EMCO Introduction](#emco-introduction) - - [EMCO Architecture](#emco-architecture) - - [EMCO Terminology](#emco-terminology) - - [EMCO API](#emco-api) - - [EMCO Authentication and Authorization](#emco-authentication-and-authorization) - - [EMCO Installation With OpenNESS Flavor](#emco-installation-with-openness-flavor) - - [Practise with EMCO: SmartCity Deployment](#practise-with-emco-smartcity-deployment) +- [Background](#background) +- [EMCO Introduction](#emco-introduction) + - [EMCO Architecture](#emco-architecture) + - [Cluster Registration](#cluster-registration) + - [Distributed Application Scheduler](#distributed-application-scheduler) + - [Lifecycle Operations](#lifecycle-operations) + - [Network Configuration Management](#network-configuration-management) + - [Lifecycle Operations](#lifecycle-operations-1) + - [Distributed Cloud Manager](#distributed-cloud-manager) + - [Lifecycle Operations](#lifecycle-operations-2) + - [Level-1 Logical Clouds](#level-1-logical-clouds) + - [Level-0 Logical Clouds](#level-0-logical-clouds) + - [OVN Action Controller](#ovn-action-controller) + - [Traffic Controller](#traffic-controller) + - [Resource Syncronizer](#resource-syncronizer) + - [Generic Action Controller](#generic-action-controller) + - [EMCO Terminology](#emco-terminology) + - [EMCO API](#emco-api) + - [EMCO Authentication and Authorization](#emco-authentication-and-authorization) + - [EMCO Installation With OpenNESS Flavor](#emco-installation-with-openness-flavor) +- [Practise with EMCO: SmartCity Deployment](#practise-with-emco-smartcity-deployment) + - [Clusters Setup](#clusters-setup) + - [Project Setup](#project-setup) + - [Logical Cloud Setup](#logical-cloud-setup) + - [Deploy SmartCity Application](#deploy-smartcity-application) + - [SmartCity Termination](#smartcity-termination) ## Background Edge Multi-Cluster Orchestration(EMCO), an OpenNESS Building Block, is a Geo-distributed application orchestrator for Kubernetes\*. The main objective of EMCO is automation of the deployment of applications and services across clusters. It acts as a central orchestrator that can manage edge services and network functions across geographically distributed edge clusters from different third parties. Finally, the resource orchestration within a cluster of nodes will leverage Kubernetes* and Helm charts. @@ -167,10 +185,11 @@ To acheive both the usecases, the controller exposes REST APIs to create, update - Customization - Specifies the modifications(using JSON Patching) to be applied on the objects. ### EMCO Terminology + | | | |------------------------|----------------------------------------------------------------------------------------------------------------------------------| -| Cluster Provider | The provider is someone who owns clusters and registers them. | -| Projects | The project resource provides means for a collection of applications to be grouped. | +| Cluster Provider | The provider is someone who owns clusters and registers them. | +| Projects | The project resource provides means for a collection of applications to be grouped. | | | Several applications can exist under a specific project. | | | Projects allows for grouping of applications under a common tenant to be defined. | | Composite application | Composite application is combination of multiple applications. | @@ -296,40 +315,45 @@ In the step, cluster provider will be created and clusters will be registered in 1. After [EMCO Installation With OpenNESS Flavor](#emco-installation), logon to the EMCO server and maker sure that Harbor and EMCO microservices are in running status. 2. On the edge and cloud cluster, run the following command to make Docker logon the Harbor deployed on the EMCO server: -```shell -HARBORRHOST= -cd /etc/docker/certs.d/ -mkdir ${HARBORRHOST} -cd ${HARBORRHOST} -echo -n | openssl s_client -showcerts -connect ${HARBORRHOST} 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > harbor.crt + ```shell + HARBORRHOST= -HARBORRPW=Harbor12345 -docker login ${HARBORRHOST} -u admin -p ${HARBORRPW} -``` -> **NOTE**: should be `:30003`. + cd /etc/docker/certs.d/ + mkdir ${HARBORRHOST} + cd ${HARBORRHOST} + echo -n | openssl s_client -showcerts -connect ${HARBORRHOST} 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > harbor.crt + + HARBORRPW=Harbor12345 + docker login ${HARBORRHOST} -u admin -p ${HARBORRPW} + ``` + + > **NOTE**: should be `:30003`. 3. On EMCO server, download the [scripts](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco). 4. Run the command for the environment setup with success return as below: -```shell -# cd cli-scripts/ -# ./env_setup.sh -``` + + ```shell + # cd cli-scripts/ + # ./env_setup.sh + ``` 5. Run the command for the clusters setup with expected result as below: -```shell -# cd cli-scripts/ -# ./01_apply.sh -.... -URL: cluster-providers/smartcity-cluster-provider/clusters/edge01/labels Response Code: 201 Response: {"label-name":"LabelSmartCityEdge"} -URL: cluster-providers/smartcity-cluster-provider/clusters/cloud01/labels Response Code: 201 Response: {"label-name":"LabelSmartCityCloud"} -``` + ```shell + # cd cli-scripts/ + # ./01_apply.sh + + .... + URL: cluster-providers/smartcity-cluster-provider/clusters/edge01/labels Response Code: 201 Response: {"label-name":"LabelSmartCityEdge"} + URL: cluster-providers/smartcity-cluster-provider/clusters/cloud01/labels Response Code: 201 Response: {"label-name":"LabelSmartCityCloud"} + ``` ### Project Setup Run the command for the project setup with expected result as below: + ```shell # cd cli-scripts/ # ./02_apply.sh @@ -341,7 +365,8 @@ URL: projects Response Code: 201 Response: {"metadata":{"name":"project_smtc","d ### Logical Cloud Setup -Run the command for the logical cloud setup with expected result as below. +Run the command for the logical cloud setup with expected result as below: + ```shell # cd cli-scripts/ # ./03_apply.sh @@ -358,69 +383,73 @@ URL: projects/project_smtc/logical-clouds/default/instantiate Response Code: 200 ### Deploy SmartCity Application 1. Run the command for the SmartCity application deployment with expected result as below: -```shell -# cd cli-scripts/ -# ./04_apply.sh - -http://localhost:31298/v2 -URL: projects/project_smtc/composite-apps/composite_smtc/v1/deployment-intent-groups/smtc-deployment-intent-group/approve Response Code: 202 Response: -http://localhost:31298/v2 -URL: projects/project_smtc/composite-apps/composite_smtc/v1/deployment-intent-groups/smtc-deployment-intent-group/instantiate Response Code: 202 Response: -``` -2. On both edge cluster and cloud cluster, manually create `tunnel_secret` as below: -```shell -#!/usr/bin/env bash -PRIKEY=/root/tunnel_secret/id_rsa -PUBKEY=/root/tunnel_secret/id_rsa.pub -KNOWHOSTS=/root/tunnel_secret/known_hosts -kubectl create secret generic tunnel-secret --from-file=${PRIKEY} --from-file=${PUBKEY} --from-file=${KNOWHOSTS} -``` - -3. On the cloud cluster, manually create `self-signed-certificate` as below: -```shell -#!/usr/bin/env bash -CRT=/root/tunnel_secret/self.crt -SELFKEY=/root//tunnel_secret/self.key -kubectl create secret generic self-signed-certificate --from-file=${CRT} --from-file=${SELFKEY} -``` + ```shell + # cd cli-scripts/ + # ./04_apply.sh -4. Verify SmartCity Application Deployment Information. -The pods on the edge cluster are in the running status as shown as below: + http://localhost:31298/v2 + URL: projects/project_smtc/composite-apps/composite_smtc/v1/deployment-intent-groups/smtc-deployment-intent-group/approve Response Code: 202 Response: + http://localhost:31298/v2 + URL: projects/project_smtc/composite-apps/composite_smtc/v1/deployment-intent-groups/smtc-deployment-intent-group/instantiate Response Code: 202 Response: + ``` -```shell -# kubectl get pods -NAME READY STATUS RESTARTS AGE -traffic-office1-alert-5b56f5464c-ldwrf 1/1 Running 0 20h -traffic-office1-analytics-traffic-6b995d4d6-nhf2p 1/1 Running 0 20h -traffic-office1-camera-discovery-78bccbdb44-k2ffx 1/1 Running 0 20h -traffic-office1-cameras-6cb67ccc84-8zkjg 1/1 Running 0 20h -traffic-office1-db-84bcfd54cd-ht52s 1/1 Running 1 20h -traffic-office1-db-init-64fb9db988-jwjv9 1/1 Running 0 20h -traffic-office1-mqtt-f9449d49c-dwv6l 1/1 Running 0 20h -traffic-office1-mqtt2db-5649c4778f-vpxhq 1/1 Running 0 20h -traffic-office1-smart-upload-588d95f78d-8x6dt 1/1 Running 1 19h -traffic-office1-storage-7889c67c57-kbkjd 1/1 Running 1 19h -``` +2. On both edge cluster and cloud cluster, manually create `tunnel_secret` as below: -The pods on the cloud cluster are in the running status as shown as below: -```shell -# kubectl get pods -NAME READY STATUS RESTARTS AGE -cloud-db-5d6b57f947-qhjz6 1/1 Running 0 20h -cloud-storage-5658847d79-66bxz 1/1 Running 0 96m -cloud-web-64fb95884f-m9fns 1/1 Running 0 20h -``` + ```shell + #!/usr/bin/env bash + PRIKEY=/root/tunnel_secret/id_rsa + PUBKEY=/root/tunnel_secret/id_rsa.pub + KNOWHOSTS=/root/tunnel_secret/known_hosts + kubectl create secret generic tunnel-secret --from-file=${PRIKEY} --from-file=${PUBKEY} --from-file=${KNOWHOSTS} + ``` -5. Verify Smart City GUI -From a web browser, launch the Smart City web UI at URL `https://`. The GUI shows like: -![OpenNESS EMCO](openness-emco-images/openness-emco-smtcui.png) +3. On the cloud cluster, manually create `self-signed-certificate` as below: -_Figure - SmartCity UI_ + ```shell + #!/usr/bin/env bash + CRT=/root/tunnel_secret/self.crt + SELFKEY=/root//tunnel_secret/self.key + kubectl create secret generic self-signed-certificate --from-file=${CRT} --from-file=${SELFKEY} + ``` + +4. Verify SmartCity Application Deployment Information. The pods on the edge cluster are in the running status as shown as below: + + ```shell + # kubectl get pods + NAME READY STATUS RESTARTS AGE + traffic-office1-alert-5b56f5464c-ldwrf 1/1 Running 0 20h + traffic-office1-analytics-traffic-6b995d4d6-nhf2p 1/1 Running 0 20h + traffic-office1-camera-discovery-78bccbdb44-k2ffx 1/1 Running 0 20h + traffic-office1-cameras-6cb67ccc84-8zkjg 1/1 Running 0 20h + traffic-office1-db-84bcfd54cd-ht52s 1/1 Running 1 20h + traffic-office1-db-init-64fb9db988-jwjv9 1/1 Running 0 20h + traffic-office1-mqtt-f9449d49c-dwv6l 1/1 Running 0 20h + traffic-office1-mqtt2db-5649c4778f-vpxhq 1/1 Running 0 20h + traffic-office1-smart-upload-588d95f78d-8x6dt 1/1 Running 1 19h + traffic-office1-storage-7889c67c57-kbkjd 1/1 Running 1 19h + ``` + + The pods on the cloud cluster are in the running status as shown as below: + + ```shell + # kubectl get pods + NAME READY STATUS RESTARTS AGE + cloud-db-5d6b57f947-qhjz6 1/1 Running 0 20h + cloud-storage-5658847d79-66bxz 1/1 Running 0 96m + cloud-web-64fb95884f-m9fns 1/1 Running 0 20h + ``` + +5. Verify Smart City GUI. From a web browser, launch the Smart City web UI at URL `https://`. The GUI shows like: + + ![OpenNESS EMCO](openness-emco-images/openness-emco-smtcui.png) + + _Figure - SmartCity UI_ ### SmartCity Termination Run the command for the SmartCity termination with expected result as below: + ```shell # cd cli-scripts/ # ./88_terminate.sh @@ -431,4 +460,3 @@ URL: projects/project_smtc/composite-apps/composite_smtc/v1/deployment-intent-gr ``` After termination, SmartCity Application will be deleted from the clusters. - From 7b0db834666b439760eebe3a6dcc5a23199bbef4 Mon Sep 17 00:00:00 2001 From: Amr Mokhtar Date: Wed, 16 Dec 2020 21:53:41 +0000 Subject: [PATCH 119/148] update release notes --- openness_releasenotes.md | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/openness_releasenotes.md b/openness_releasenotes.md index 957562bd..5c4ce03b 100644 --- a/openness_releasenotes.md +++ b/openness_releasenotes.md @@ -46,6 +46,7 @@ This document provides high-level system features, issues, and limitations infor - [OpenNESS - 20.03](#openness---2003-4) - [OpenNESS - 20.06](#openness---2006-4) - [OpenNESS - 20.09](#openness---2009-4) + - [OpenNESS - 20.12](#openness---2012-2) - [Hardware and Software Compatibility](#hardware-and-software-compatibility) - [Intel® Xeon® D Processor](#intel%c2%ae-xeon%c2%ae-d-processor) - [2nd Generation Intel® Xeon® Scalable Processors](#2nd-generation-intel%c2%ae-xeon%c2%ae-scalable-processors) @@ -252,14 +253,11 @@ This document provides high-level system features, issues, and limitations infor - Experience Kit now supports multiple detection video's – Safety equipment detection, PCB default detection and also supports external video streams. ## OpenNESS - 20.12 -- uCPE/SDWAN -- EMCO-OpenNESS -- Operators -- Offline installer -- Application Data delivery Performance -- CERA on-premises (pushed from 20.09 due to CR for EIS support) -- CSP support for Azure (will be released between 20.09 and 20.12) -- Kubernetes certification for 1.19 +- Early access release of Edge Multi-Cluster Orchestration(EMCO), a Geo-distributed application orchestrator for Kubernetes. This release supports EMCO deploying and managing the life cycle of the Smart City Application pipeline on the edge cluster. +- Reference implementation of the offline installation package for the Converged Edge Reference Architecture (CERA) Access Edge flavor enabling installation of Kubernetes and related enhancements for Access edge deployments. +- Azure Development kit (Devkit) supporting the installation of an OpenNESS Kubernetes cluster on the Microsoft* Azure* cloud. This is typically used by a customer who wants to develop applications and services for the edge using OpenNESS building blocks. +- Intel® vRAN Dedicated Accelerator ACC100: Kubernetes Cloud-native deployment supporting higher capacity 4G/LTE and 5G vRANs cells/carriers for FEC offload. +- Major system Upgrades: Kubernetes 1.19.2, CentOS 7.8, Calico 3.16, and Kube-OVN 1.5.2 # Changes to Existing Features @@ -327,14 +325,14 @@ There are no issues relevant to this release. There is one issue relevant to this release: it is not possible to remove the application from Edge Node in case of error during application deployment. The issue concerns applications in a Virtual Machine. ## OpenNESS - 19.09 -- Gateway in multi-node - will not work when few nodes will have the same public IP (they will be behind one common NAT) +- Gateway in multi-node - will not work when few nodes will have the same public IP (they will be behind one common NAT) - Ansible in K8s can cause problems when rerun on a machine: - If after running all 3 scripts - Script 02 will be run again (it will not remove all necessary K8s related artifacts) - We would recommend cleaning up the installation on the node ## OpenNESS - 19.12 -- Gateway in multi-node - will not work when few nodes will have the same public IP (they will be behind one common NAT) +- Gateway in multi-node - will not work when few nodes will have the same public IP (they will be behind one common NAT) - OpenNESS On-Premises: Cannot remove a failed/disconnected the edge node information/state from the controller - The CNCA API (4G & 5G) supported in this release is an early access reference implementation and does not support authentication - Real-time kernel support has been temporarily disabled to address the Kubernetes 1.16.2 and Realtime kernel instability. @@ -359,7 +357,7 @@ There is one issue relevant to this release: it is not possible to remove the ap ## OpenNESS - 20.09 - Pod which uses hugepage get stuck in terminating state on deletion. This is a known issue on Kubernetes 1.18.x and is planned to be fixed in 1.19.x - Calico cannot be used as secondary CNI with Multus in OpenNESS. It will work only as primary CNI. Calico must be the only network provider in each cluster. We do not currently support migrating a cluster with another network provider to use Calico networking. https://docs.projectcalico.org/getting-started/kubernetes/requirements -- collectd Cache telemetry using RDT does not work when RMD is enabled because of resource conflict. Workaround is to disable collectd RDT plugin when using RMD - this by default is implemented globally. With this workaround customers will be able to allocate the Cache but not use Cache related telemetry. In case where RMD is not being enabled customers who desire RDT telemetry can re-enable collectd RDT. +- Collectd Cache telemetry using RDT does not work when RMD is enabled because of resource conflict. Workaround is to disable collectd RDT plugin when using RMD - this by default is implemented globally. With this workaround customers will be able to allocate the Cache but not use Cache related telemetry. In case where RMD is not being enabled customers who desire RDT telemetry can re-enable collectd RDT. ## OpenNESS - 20.12 - cAdvisor CPU utilization of Edge Node is high and could cause a delay to get an interactive SSH session. A work around is to remove CAdvisor if not needed using `helm uninstall cadvisor -n telemetry` @@ -388,7 +386,12 @@ OpenNESS Edge node, OpenNESS Controller, Common, Spec, OpenNESS Applications, an ## OpenNESS - 20.09 - Open Source: Edge node, Controller, Epcforedge, Common, Spec, Applications and Experience kit. - IDO: IDO Edge node, IDO Controller, IDO Epcforedge, IDO Spec and IDO Experience kit. - > **NOTE**: Edge applications repo is common to Open Source and IDO + +## OpenNESS - 20.12 +- Open Source: Edge node, Controller, Epcforedge, Common, Spec, Applications and Experience kit. +- IDO: IDO Edge node, IDO Controller, IDO Epcforedge, IDO Spec and IDO Experience kit. + +> **NOTE**: Edge applications repo is common to Open Source and IDO # Hardware and Software Compatibility OpenNESS Edge Node has been tested using the following hardware specification: From b78b47bcd74e4dab5f634bf168f951322ef40539 Mon Sep 17 00:00:00 2001 From: Amr Mokhtar Date: Wed, 16 Dec 2020 22:06:00 +0000 Subject: [PATCH 120/148] update release notes --- openness_releasenotes.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/openness_releasenotes.md b/openness_releasenotes.md index 5c4ce03b..3fbdc39b 100644 --- a/openness_releasenotes.md +++ b/openness_releasenotes.md @@ -21,6 +21,7 @@ This document provides high-level system features, issues, and limitations infor - [OpenNESS - 20.03](#openness---2003-1) - [OpenNESS - 20.06](#openness---2006-1) - [OpenNESS - 20.09](#openness---2009-1) + - [OpenNESS - 20.12](#openness---2012-1) - [Fixed Issues](#fixed-issues) - [OpenNESS - 19.06](#openness---1906-2) - [OpenNESS - 19.06.01](#openness---190601-1) @@ -37,7 +38,7 @@ This document provides high-level system features, issues, and limitations infor - [OpenNESS - 20.03](#openness---2003-3) - [OpenNESS - 20.06](#openness---2006-3) - [OpenNESS - 20.09](#openness---2009-3) - - [OpenNESS - 20.12](#openness---2012-1) + - [OpenNESS - 20.12](#openness---2012-2) - [Release Content](#release-content) - [OpenNESS - 19.06](#openness---1906-4) - [OpenNESS - 19.06.01](#openness---190601-4) @@ -46,11 +47,11 @@ This document provides high-level system features, issues, and limitations infor - [OpenNESS - 20.03](#openness---2003-4) - [OpenNESS - 20.06](#openness---2006-4) - [OpenNESS - 20.09](#openness---2009-4) - - [OpenNESS - 20.12](#openness---2012-2) + - [OpenNESS - 20.12](#openness---2012-3) - [Hardware and Software Compatibility](#hardware-and-software-compatibility) - - [Intel® Xeon® D Processor](#intel%c2%ae-xeon%c2%ae-d-processor) - - [2nd Generation Intel® Xeon® Scalable Processors](#2nd-generation-intel%c2%ae-xeon%c2%ae-scalable-processors) - - [Intel® Xeon® Scalable Processors](#intel%c2%ae-xeon%c2%ae-scalable-processors) + - [Intel® Xeon® D Processor](#intel-xeon-d-processor) + - [2nd Generation Intel® Xeon® Scalable Processors](#2nd-generation-intel-xeon-scalable-processors) + - [Intel® Xeon® Scalable Processors](#intel-xeon-scalable-processors) - [Supported Operating Systems](#supported-operating-systems) - [Packages Version](#packages-version) @@ -284,6 +285,9 @@ There are no unsupported or discontinued features relevant to this release. ## OpenNESS - 20.09 - Native on-premises is now located in a dedicated repository with no further feature updates from previous release. +## OpenNESS - 20.12 +There are no unsupported or discontinued features relevant to this release. + # Fixed Issues ## OpenNESS - 19.06 From 57fca6a0212636b9e5747427ebf9a6267473671e Mon Sep 17 00:00:00 2001 From: Ritu Sood Date: Wed, 16 Dec 2020 17:52:56 -0800 Subject: [PATCH 121/148] Update some high level overview section Signed-off-by: Ritu Sood --- .../emco-geo-distributed.png | Bin 0 -> 93420 bytes doc/building-blocks/emco/openness-emco.md | 19 +++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 doc/building-blocks/emco/openness-emco-images/emco-geo-distributed.png diff --git a/doc/building-blocks/emco/openness-emco-images/emco-geo-distributed.png b/doc/building-blocks/emco/openness-emco-images/emco-geo-distributed.png new file mode 100644 index 0000000000000000000000000000000000000000..604066736c830108763ee3b199b9d2f3f47ffd5e GIT binary patch literal 93420 zcmeFZWmuGL*ET%E$bd>CNF%LucSuQhcQ+Ce(hQx_-O`-`(nE-JH!7fnq@*-_C&u;M z?|nVrwtc_8U+)iU$Al@$OQ1d=cmM){P^BcrltCaw;8%n(WCY;H zb5dzA@B{3mEFl7_93k2S{F>1NPr>=nb~F0pw&ftM>>Lpr$I1RUPOeExHP^p~u+mbp$5W1x7o4f((3%LmC5N|N2b?x&NUh?EasBtRk|* z|6C$+h(KWY=Mpk^Fe>w(OJZ7K(3IbI5s}n?4w1dPA8;KdQx2H=@9iJ|-`oG+&H3dF z{~tXkilo~hZLxinP5P`{%g z+SRH&=8ak&qv@Dd-t$I@B1!Chts<;AXyWu`;Sj?v&ml(!CYD|duLQF*32!AHzBM}W zINd5KN48IJ<}%qa<&n(nvrQM}9{&28MHg$+gGr*F=5Gc9I~Zd>FMe%A-&DQx>5i}_ zaBmFp(giERK1MB0d!tAdt{t~2C4Ro?bfJ8}M;S5qhdy{@NR8zhBQ%`q>N=j?I@Mkd zA2emEen5_<3c=KyqQ4@9JFEh%-_Ve|%b+muxqjV5n5o`ORD3b!>L7jf~UQMkNGp5Ropu}EB5;WcFJ@6!F&?6oWNJk z))cS@={Pp|&rc>ZEKkhm=k4(Wp(#%XI91>6^5*yRbQBzF6&ZM_jCYywQX}`I1( zkk_pH98_c7S|mS`JDs_NfGS#!EF0Gc4ght^&W7!8Wb97dG6=l1DP=+X36BgFdW?kpJq6IgVR$k+m}dC{WV!dNJXWI9LS<(r-;RLGptdgYN7OnCe&tCRTIN``@+2!sfQzz~b!MaOaQ zniuaU?s7xx@txOS3>s^^Nc$lU+hTo3$jLS_=peRoE6^0H8hU5$ zA1-(Mv{F^)5+$}aZD91I8VnWvh?Bm}xpm#<^XHi{%m`_R=&}#okFzbTHN+01-KhrC z8#|P~g1=tFDYL_(!3~8C^0#Z(^&wH;&DuL@1!?>SId|cP$gkvClgk&_uL_#B!nk8j z>7C6^1S6H2Q8MR%NM~q4v!8K97F;$cPqCZ~3yz$_2;Xv>b$SY3d)Kxmr6ym^$5}Iz zW3lvHX)9a{kH)JPE>Iw0YT}Fgh;a)D?`hshxGGt(8n7Fg{UA9-Pn=qx$Q0H_RorJ< zAGwAp{HJTWYgCCJ+G6^W<>$y|_P=r7+M%Rq5x|_`iOalHVp}99qTVsR{|ZNm+jMTa zGK3=_-vm|>MKw-Y-NPI>%F6*>5o)?(|JV)6Q%6=}e<0WWr5nj~-#rIYuhvS4b2_hd zbBButpPyKf<=)!`@i`&u$0bg}8#&++d+lpim?rW2C3N-5arw|yy0yiI#ywWW+^@$n z_FsqLl=i@;aUv)mCttQ2E}t~)Jf2__&E15 zJ3Bhj0?9LZ(@jkqJx%t=`=+VQVul)!Hy%d$tNB06jy`;V5|!E1lz_qvlaXz1c83A@ z$s0P*zgEOk>AuV+pp8_N{N41?kYZ>1L`m2|u{F1X1Cj3bmscut;#6Bj$OI)M` znQyPvzB=XjmxwPwVz1T%5^aXI5vYe!swjeE_$dUTb420wJG{C@&@L|)Y81 zq38l$@bp=sZiv_ypJ^;;nn%4yc@4pfZfn*~9Xu?mv_MRLZKL}w#gqpX$uuu z=EYM9@-F$w&kQRQRVxdrt`8gwT|JeDobr_3(RCL7h-7cdb8zfpP+M-0qJeR`W z?}E{i!Ykx9n1L+CrA1Em?>TvXEvbb|bC4dXMUu(#9_wPR*v3Qhj~pX!;g4Z%hP!Z8 zRAy#{mux$TbipoL2V!fh2tH{hYb>{FU1YAPG|1{&$zS20aCo@jfM3#
    Q}=v6QO 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 **NOTE**: A 'composite application' is a combination of multiple applications. Based on the deployment intent, various applications of the composite application get deployed at various locations, and get replicated in multiple locations. +Increasingly we see a requirement of deploying 'composite applications' in multiple geographical locations. Some of the catalyst for this change are: +- Latency - Requirements for new low latency application use cases such as AR/VR. Need for ultra low latency response needed in IIOT and other cases. This requires running some parts of the applications on edges close to the user +- Bandwidth - processing data on edges to avoid costs associated with transporting the data to clouds for processing, +- Context/Promixity - running some part of the applications on edges near the user that require local context +- Privacy/Legal - Some data can have legal requirements to not leave a geographic location + +![OpenNESS EMCO](openness-emco-images/emco-geo-distributed.png) +_Figure 1 - Orchestrate GeoDitributed Edge Applications_ + +> **NOTE**: A 'composite application' is a combination of multiple applications with each application packaged as a Helm chart. Based on the deployment intent, various applications of the composite application get deployed at various locations, and get replicated in multiple locations. + +Life cycle management of composite applications is complex. Instantiation and terminations of the complex application across multiple K8s clusters (Edges and Clouds), monitoring the status of the complex application deployment, Day 2 operations (Modification of the deployment intent, upgrades etc..) are few complex operations. + +Number of K8s clusters (Edges or clouds) could be in tens of thousands, number of complex applications that need to be managed could be in hundreds, number of applications in a complex application could be in tens and number of micro-services in each application of the complex application can be in tens. Moreover, there can be multiple deployments of the same complex applications for different purposes. To reduce the complexity, all these operations are to be automated. There shall be one-click deployment of the complex applications and one simple dashboard to know the status of the complex application deployment at any time. Hence, there is a need for Multi-Edge and Multi-Cloud distributed application orchestrator. + Compared with other multipe-clusters orchestration, EMCO focuses on the following functionalities: - Enrolling multiple geographically distributed OpenNESS clusters and third party cloud clusters. - Orchestrating composite applications (composed of multiple individual applications) across the clusters. From cd395082632fb7451709cb0ad54119344164ba13 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Thu, 17 Dec 2020 15:10:33 +0800 Subject: [PATCH 122/148] hddl update with 2012 --- .../openness_hddl.md | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/doc/building-blocks/enhanced-platform-awareness/openness_hddl.md b/doc/building-blocks/enhanced-platform-awareness/openness_hddl.md index 04b47bbe..40ce50f8 100644 --- a/doc/building-blocks/enhanced-platform-awareness/openness_hddl.md +++ b/doc/building-blocks/enhanced-platform-awareness/openness_hddl.md @@ -27,17 +27,26 @@ Each implementation for each hardware is an inference engine plugin. The plugin for the Intel® Movidius™ Myriad™ X HDDL solution, or IE HDDL plugin for short, supports the Intel® Movidius™ Myriad™ X HDDL Solution hardware PCIe card. It communicates with the Intel® Movidius™ Myriad™ X HDDL HAL API to manage multiple Intel® Movidius™ Myriad™ X devices in the card, and it schedules deep-learning neural networks and inference tasks to these devices. ## HDDL OpenNESS Integration +OpenNESS provides support for the deployment of OpenVINO™ applications and workloads accelerated through Intel® Vision Accelerator Design with the Intel® Movidius™ VPU HDDL-R add-in card. As a prerequisite for enabling the support, it is required for the HDDL add-in card to be inserted into the PCI slot of the Edge Node platform. The support is then enabled by setting the appropriate flag - 'ne_hddl_enable' in the '/group_vars/all/10-default.yml' before running OEK playbooks. +> **NOTE** +> * *No pre-defined flavor is provided for HDDL. If user wants to enable HDDL with flavor, can set flag - 'ne_hddl_enable' in the 'flavors//all.yml'. +> * *node* with HDDL card inserted will be labelled as 'hddl-zone=true'. -OpenNESS provides support for the deployment of OpenVINO™ applications and workloads accelerated through Intel® Vision Accelerator Design with the Intel® Movidius™ VPU HDDL-R add-in card. As a prerequisite for enabling the support, it is required for the HDDL add-in card to be inserted into the PCI slot of the Edge Node platform. The support is then enabled by setting the appropriate flag in a configuration file before deployment of the Edge Node software toolkit. +The OEK automation script for HDDL will involve the following steps: +- Download the HDDL DaemonSet yaml file from [Open Visual Cloud dockerfiles software](https://github.com/OpenVisualCloud/Dockerfiles) and templates it. +- Download the OpenVINO™, install kernel-devel and then install HDDL dependencies. +- Build the HDDLDdaemon image. +- Label the node with 'hddl-zone=true'. +- HDDL Daemon automatically brings up on the node with label 'hddl-zone=true'. -With a correct configuration during the Edge Node bring up, an automated script will install all components necessary, such as kernel drivers required for the correct operation of the Vision Processing Units (VPUs) and 'udev rules' required for correct kernel driver assignment and booting of these devices on the Edge Node host platform. +The HDDL Daemon provides the backend service to manage VPUs and dispatch inference tasks to VPUs. OpenVINO™-based applications that utilizes HDDL hardware need to access the device node '/dev/ion' and domain socket under '/var/tmp' to communicate with the kernel and HDDL service. +> **NOTE** +> * *Due to kernel version or iommu incompatibility,the ion driver is not enabled. Then shared memory - '/dev/shm' will be used as fallback. -After the OpenNESS automated script installs all necessary tools and components for Edge Node bring up, another automated script responsible for deployment of all micro-services is run. As part of this particular script, a Docker\* container running a 'hddl-service' is started if the option for HDDL support is enabled. This container, which is part of OpenNESS system services, is a privileged container with 'SYS_ADMIN' capabilities and access to the host’s devices. - -The 'hddl-service' container is running the HDDL Daemon which is responsible for bringing up the HDDL Service within the container. The HDDL Service enables the communication between the OpenVino™ applications required to run inference on HDDL devices and VPUs needed to run the workload. This communication is done via a socket, which is created by the HDDL service. The default location of the socket is the `/var/tmp/`directory of the Edge Node host. The application container requiring HDDL acceleration needs to be exposed to this socket. ![HDDL-Block-Diagram](hddl-images/hddlservice.png) + ## Summary The Intel® Movidius™ Myriad™ X HDDL solution integrates multiple Intel® Movidius™ Myriad™ X brand SoCs in a PCIe add-in card form factor or a module form factor to build a scalable, high-capacity, deep-learning solution. OpenNESS provides a toolkit for customers to put together deep-learning solutions at the edge. To take it further for efficient resource usage, OpenNESS provides a mechanism to use CPU or VPU depending on the load or any other criteria. From fa35e8ee5f2317f62f05d1ae1b921d0362ddd76a Mon Sep 17 00:00:00 2001 From: Eric Multanen Date: Wed, 16 Dec 2020 23:22:56 -0800 Subject: [PATCH 123/148] Add EMCO sequence diagrams Add some description and diagrams to illustrate use of placement and action controllers in EMCO. Also, the status monitoring and query process. Signed-off-by: Eric Multanen --- .../openness-emco-images/emco-dig-create.png | Bin 0 -> 137384 bytes .../emco-dig-instantiate.png | Bin 0 -> 264411 bytes .../emco-register-controllers.png | Bin 0 -> 100881 bytes doc/building-blocks/emco/openness-emco.md | 68 +++++++++++++----- 4 files changed, 50 insertions(+), 18 deletions(-) create mode 100755 doc/building-blocks/emco/openness-emco-images/emco-dig-create.png create mode 100755 doc/building-blocks/emco/openness-emco-images/emco-dig-instantiate.png create mode 100755 doc/building-blocks/emco/openness-emco-images/emco-register-controllers.png diff --git a/doc/building-blocks/emco/openness-emco-images/emco-dig-create.png b/doc/building-blocks/emco/openness-emco-images/emco-dig-create.png new file mode 100755 index 0000000000000000000000000000000000000000..786baa9fa7b5cb45f46c865cb8186451cdb80733 GIT binary patch literal 137384 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 KGK}kJw7=zmY=b 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Þ-{Iz(|IVCnn#f;M>$7_`E*kONww=q}qR^$p58jw_U1-1T z5iCry5>dCaH`0FYmGJ4(!)BQv2*JqEH6{@Pw>cxS%AGpjUNJW77Oc@Cb)i;()&-+3 zuy(Li6XF>Ce8NQEsyIq4t<2c%S#?1yt%D_gVenbUYW-qap_E^D^~PMa#)^<_UT+EM zURIbv8G0=oX_{!?P%%AuEvKZP(=?mn1`!bzEbE3b9?tTuUe-DcCDdTe%WLbo5WXbgoVTCn{NTo_j1~@gv zB#>7=7cHXr<=dy(V0n;>=Ke;}nWn=?(#w0nXG0G{oBi|;atQdf+m3@MH>HI7=Scmz|r*6GC; zok`Qz5fVIA(1JWH@jj1Qut9{jRT=*g{%Gfs&>W0?!V zRwFCw_xAeUr+;uwo4P80`9bEmY20C#`%v}OP(%ON?1hk!PTTK$#m!qVczY5!u-zHJ zHROhuwA?2uq@eBU&j=oOD2z8|i2m{vZ3j_(CG@^p;RKZeN~ zO?gIDHyst%+5}gEhvE47Dt?zSl`nos!EEvk$k==N%kE=iI8xCV$tclCwMGbjY;@tw zsa0`Kf-)YYKJCE@3q}M2Kg(Udu_;kP#> zxtr-pgy?=vv<~Zp0xL!Vo_;uWi>)=4o~Ck#70d(vDjWG8+CO=IB?QV7|KVV!PXH1! zt~E-mKId-cDYA+pz^$k9qZ8X+{b;*fwIHLybAW~>h}ymuMMx!Fxc+-2f$@GGsw zitPU^e*#5k;6ZYRweyB1lS<|85-z`6g$GN7ibe2CW)YW*jd zd<>rdt!!QBDk&1<**NcukOJJ91Zx=0j9Mk(gb8E8u+AZ1a78NB!sHX0-!5&4OpXh! zj1rv8`B~%YsqGiywq-#|f)Zc4C(x?H1@yV_v5M0n>8%$(iYY|=z>KI_uMG-))9waY zupV*ADeuda4MuBhCeo4D9uFvRnr

    The AppContext is a set of records maintained in the EMCO etcd data store which maintains the collection of resources and clusters associated with a deployable EMCO resource (e.g. Deployment Intent Group)..

    | +| Cluster Provider |

    The provider is someone who owns clusters and registers them.

    | +| Projects |

    The project resource provides means for a collection of applications to be grouped. Several applications can exist under a specific project. Projects allows for grouping of applications under a common tenant to be defined.

    | +| Composite application |

    The composite application is combination of multiple applications. Based on the deployment intent, various applications of the composite application get deployed at various locations. Also, some applications of the composite application get replicated in multiple locations.

    | +| Deployment Intent |

    EMCO does not expect the editing of Helm charts provided by application/Network-function vendors by DevOps admins. Any customization and additional K8s resources that need to be present with the application are specified as deployment intents.

    | +| Deployment Intent Group |

    The Deployment Intent Group represents an instance of a composite application that can be deployed with a specified composite profile and a specified set of deployment intents which will control the placement and other configuration of the application resources.

    | +| Placement |

    EMCO supports to create generic placement intents for a given composite application. Normally, EMCO scheduler calls placement controllers first to figure out the edge/cloud locations for a given application. Finally works with 'resource synchronizer & status collector' to deploy K8s resources on various Edge/Cloud clusters.

    | + ### EMCO Architecture The following diagram depicts a high level overview of the EMCO architecture. ![OpenNESS EMCO](openness-emco-images/openness-emco-arch.png) -_Figure 2 - EMCO Architecture_ +_Figure 3 - EMCO Architecture_ - Cluster Registration Controller registers clusters by cluster owners. - Distributed Application Scheduler provides a simplified and extensible placement. - Network Configuration Management handles creation/management of virtual and provider networks. @@ -99,6 +111,7 @@ The Distributed Application Scheduler supports operations on a deployment intent - status: (may be invoked at any step) provides information on the status of the deployment intent group. - terminate: terminates the application resources of an instantiated application from all of the clusters to which it was deployed. In some cases, if a remote cluster is intermittently unreachable, the instantiate operation may still retry the instantiate operation for that cluster. The terminate operation will cause the instantiate operation to complete (i.e. fail), before the termination operation is performed. - stop: In some cases, if the remote cluster is intermittently unreachable, the Resource Synchronizer will continue retrying an instantiate or terminate operation. The stop operation can be used to force the retry operation to stop, and the instantiate or terminate operation will complete (with a failed status). In the case of terminate, this allows the deployment intent group resource to be deleted via the API, since deletion is prevented until a deployment intent group resource has reached a completed terminate operation status. +Refer to [EMCO Resource Lifecycle Operations](https://github.com/otcshare/EMCO/tree/main/docs/user/Resource_Lifecycle.md) for more details. #### Network Configuration Management The network configuration management (NCM) microservice provides the following functionalities: @@ -124,7 +137,7 @@ Due to the close relationship with Clusters, which are provided by Cluster Regis ![Mapping between Logical Clouds and Clusters](openness-emco-images/openness-emco-lccl.png) -_Figure 3 - Mapping between Logical Clouds and Clusters_ +_Figure 4 - Mapping between Logical Clouds and Clusters_ ##### Lifecycle Operations Prerequisites to using Logical Clouds: @@ -161,9 +174,6 @@ The OVN Action Controller (ovnaction) microservice is an action controller which The traffic controller microservice provides a way to create network policy resources across edge clusters. It provides inbound RESTful APIs to create intents to open the traffic from clients, and provides change and delete APIs for update and deletion of traffic intents. Using the information provided through intents, it also creates a network policy resource for each of the application servers on the corresponding edge cluster. > **NOTE**:For network policy to work, edge cluster must have network policy support using CNI such as calico. -#### Resource Synchronizer -This microservice is the one which deploys the resources in edge/cloud clusters. 'Resource contexts' created by various microservices are used by this microservice. It takes care of retrying, in case the remote clusters are not reachable temporarily. - #### Generic Action Controller The generic action controller microservice is an action controller which may be registered with the central orchestrator. It can achieve the following usecases: @@ -179,14 +189,36 @@ To achieve both the usecases, the controller exposes RESTful APIs to create, upd - Resource - Specifies the newly defined object or an existing object. - Customization - Specifies the modifications (using JSON Patching) to be applied on the objects. -### EMCO Terminology -| Term | Description | -|:-----: | ----- | -| Cluster Provider |

    The provider is someone who owns clusters and registers them.

    | -| Projects |

    The project resource provides means for a collection of applications to be grouped. Several applications can exist under a specific project. Projects allows for grouping of applications under a common tenant to be defined.

    | -| Composite application |

    The composite application is combination of multiple applications. Based on the deployment intent, various applications of the composite application get deployed at various locations. Also, some applications of the composite application get replicated in multiple locations.

    | -| Deployment Intent |

    EMCO does not expect the editing of Helm charts provided by application/Network-function vendors by DevOps admins. Any customization and additional K8s resources that need to be present with the application are specified as deployment intents.

    | -| Placement |

    EMCO supports to create generic placement intents for a given composite application. Normally, EMCO scheduler calls placement controllers first to figure out the edge/cloud locations for a given application. Finally works with 'resource synchronizer & status collector' to deploy K8s resources on various Edge/Cloud clusters.

    | +#### Resource Synchronizer +This microservice is the one which deploys the resources in edge/cloud clusters. 'Resource contexts' created by various microservices are used by this microservice. It takes care of retrying, in case the remote clusters are not reachable temporarily. + +#### Placment and Action Controllers in EMCO +This section illustrates some key aspects of the EMCO controller architecture. Depending on the needs of a composite application, intents that handle specific operations for application resources (e.g. addition, modification, etc.) can be created via the APIs provided by the corresponding controller API. The following diagram shows the sequence of interactions to register controllers with EMCO. + +![OpenNESS EMCO](openness-emco-images/emco-register-controllers.png) + +_Figure 5 - Register placement and action controllers with EMCO_ + +This diagram illustrates the sequence of operations taken to prepare a Deployment Intent Group that utilizes some intents supported by controllers. The desired set of controllers and associated intents are included in the definition of a Deployment Intent Group to satisfy the requirements of a specific deployed instance of a composite application. + +![OpenNESS EMCO](openness-emco-images/emco-dig-create.png) + +_Figure 6 - Create a Deployment Intent Group_ + +When the Deployment Intent Group is instantiated, the identified set of controllers are invoked in order to perform their specific operations. + +![OpenNESS EMCO](openness-emco-images/emco-dig-instantiate.png) + +_Figure 7 - Instantiate a Deployment Intent Group_ + +In this initial release of EMCO, a built-in generic placement controller is provided in the `orchestrator`. As described above, the three provided action controllers are the OVN Action, Traffic and Generic Action controllers. + +#### Status Monitoring and Queries in EMCO +When a resource like a Deployment Intent Group is instantiated, status information about both the deployment and the deployed resources in the cluster are collected and made available for query by the API. The following diagram illustrates the key components involved. For more information about status queries see [EMCO Resource Lifecycle Operations](https://github.com/otcshare/EMCO/tree/main/docs/user/Resource_Lifecycle.md) . + +![OpenNESS EMCO](openness-emco-images/emco-status-monitoring.png) + +_Figure 8 - Status Monitoring and Query Sequence ### EMCO API For user interaction, EMCO provides [RESTful API](https://github.com/otcshare/EMCO/blob/main/docs/emco_apis.yaml). Apart from that, EMCO also provides CLI. For the detailed usage, refer to [EMCO CLI](https://github.com/otcshare/EMCO/tree/main/src/tools/emcoctl) @@ -206,13 +238,13 @@ The following figure shows various EMCO services running in a cluster with Istio ![OpenNESS EMCO](openness-emco-images/emco-istio-arch.png) -_Figure 4 - EMCO setup with Istio and Authservice_ +_Figure 9 - EMCO setup with Istio and Authservice_ The following figure shows the authentication flow with EMCO, Istio and Authservice ![OpenNESS EMCO](openness-emco-images/emco-istio-auth.png) -_Figure 5 - EMCO Authenication with external OATH2 Server_ +_Figure 10 - EMCO Authenication with external OATH2 Server_ Detailed steps for configuring EMCO with Istio can be found in [EMCO Integrity and Access Management](https://github.com/otcshare/EMCO/tree/main/docs/user/Emco_Integrity_Access_Management.md) document. @@ -278,7 +310,7 @@ kube-system ovs-ovn-jq6dn 1/1 Running - The whole deployment architecture diagram is shown as below: ![OpenNESS EMCO](openness-emco-images/openness-emco-smtc.png) -_Figure 6 - SmartCity Deployment Architecture Overview_ +_Figure 11 - SmartCity Deployment Architecture Overview_ The example steps are shown as follows: - Prerequisites @@ -418,7 +450,7 @@ cloud-web-64fb95884f-m9fns 1/1 Running 0 20h From a web browser, launch the Smart City web UI at URL `https://`. The GUI shows like: ![OpenNESS EMCO](openness-emco-images/openness-emco-smtcui.png) -_Figure 7 - SmartCity UI_ +_Figure 12 - SmartCity UI_ ### SmartCity Termination From 6c185c331f55cad34575981825bad96b8ba1e03c Mon Sep 17 00:00:00 2001 From: Eric Multanen Date: Wed, 16 Dec 2020 23:34:57 -0800 Subject: [PATCH 124/148] Add missing EMCO diagram Add diagram that should have been included in the previous commit. Signed-off-by: Eric Multanen --- .../emco-status-monitoring.png | Bin 0 -> 216080 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 doc/building-blocks/emco/openness-emco-images/emco-status-monitoring.png diff --git a/doc/building-blocks/emco/openness-emco-images/emco-status-monitoring.png b/doc/building-blocks/emco/openness-emco-images/emco-status-monitoring.png new file mode 100755 index 0000000000000000000000000000000000000000..a145f937622654e73bca311f5cbc3e7e6aa2e129 GIT binary patch literal 216080 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%0A)840?yz~ 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 literal 0 HcmV?d00001 From 33b1188e8a68a4b694e112d8cf43b0f6a81fd3c0 Mon Sep 17 00:00:00 2001 From: Eric Multanen Date: Wed, 16 Dec 2020 23:37:16 -0800 Subject: [PATCH 125/148] Minor fixes Signed-off-by: Eric Multanen --- doc/building-blocks/emco/openness-emco.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index a06caff9..4fbf858f 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -214,11 +214,11 @@ _Figure 7 - Instantiate a Deployment Intent Group_ In this initial release of EMCO, a built-in generic placement controller is provided in the `orchestrator`. As described above, the three provided action controllers are the OVN Action, Traffic and Generic Action controllers. #### Status Monitoring and Queries in EMCO -When a resource like a Deployment Intent Group is instantiated, status information about both the deployment and the deployed resources in the cluster are collected and made available for query by the API. The following diagram illustrates the key components involved. For more information about status queries see [EMCO Resource Lifecycle Operations](https://github.com/otcshare/EMCO/tree/main/docs/user/Resource_Lifecycle.md) . +When a resource like a Deployment Intent Group is instantiated, status information about both the deployment and the deployed resources in the cluster are collected and made available for query by the API. The following diagram illustrates the key components involved. For more information about status queries see [EMCO Resource Lifecycle Operations](https://github.com/otcshare/EMCO/tree/main/docs/user/Resource_Lifecycle.md). ![OpenNESS EMCO](openness-emco-images/emco-status-monitoring.png) -_Figure 8 - Status Monitoring and Query Sequence +_Figure 8 - Status Monitoring and Query Sequence_ ### EMCO API For user interaction, EMCO provides [RESTful API](https://github.com/otcshare/EMCO/blob/main/docs/emco_apis.yaml). Apart from that, EMCO also provides CLI. For the detailed usage, refer to [EMCO CLI](https://github.com/otcshare/EMCO/tree/main/src/tools/emcoctl) From 737b5a300ed498c4b4ed2783679515837e163a73 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Thu, 17 Dec 2020 17:48:12 +0800 Subject: [PATCH 126/148] update docs with marcin comments --- doc/building-blocks/emco/openness-emco.md | 121 +++++++++++----------- 1 file changed, 60 insertions(+), 61 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 4fbf858f..a7a9f6fc 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -12,17 +12,17 @@ Copyright (c) 2020 Intel Corporation - [EMCO API](#emco-api) - [EMCO Authentication and Authorization](#emco-authentication-and-authorization) - [EMCO Installation With OpenNESS Flavor](#emco-installation-with-openness-flavor) - - [Practice with EMCO: SmartCity Deployment](#practice-with-emco-smartcity-deployment) + - [EMCO Example: SmartCity Deployment](#emco-example-smartcity-deployment) ## Background Edge Multi-Cluster Orchestration(EMCO), an OpenNESS Building Block, is a Geo-distributed application orchestrator for Kubernetes\*. EMCO operates at a higher level than Kubernetes and interacts with multiple of edges and clouds running Kubernetes. The main objective of EMCO is automation of the deployment of applications and services across multiple clusters. It acts as a central orchestrator that can manage edge services and network functions across geographically distributed edge clusters from different third parties. Increasingly we see a requirement of deploying 'composite applications' in multiple geographical locations. Some of the catalyst for this change are: -- Latency - Requirements for new low latency application use cases such as AR/VR. Need for ultra low latency response needed in IIOT and other cases. This requires running some parts of the applications on edges close to the user -- Bandwidth - processing data on edges to avoid costs associated with transporting the data to clouds for processing, +- Latency - requirements for new low latency application use cases such as AR/VR. Need for ultra low latency response needed in IIOT and other cases. This requires running some parts of the applications on edges close to the user +- Bandwidth - processing data on edges to avoid costs associated with transporting the data to clouds for processing, - Context/Promixity - running some part of the applications on edges near the user that require local context -- Privacy/Legal - Some data can have legal requirements to not leave a geographic location +- Privacy/Legal - some data can have legal requirements to not leave a geographic location ![OpenNESS EMCO](openness-emco-images/emco-geo-distributed.png) _Figure 1 - Orchestrate GeoDitributed Edge Applications_ @@ -33,13 +33,13 @@ Life cycle management of composite applications is complex. Instantiation and te Number of K8s clusters (Edges or clouds) could be in tens of thousands, number of complex applications that need to be managed could be in hundreds, number of applications in a complex application could be in tens and number of micro-services in each application of the complex application can be in tens. Moreover, there can be multiple deployments of the same complex applications for different purposes. To reduce the complexity, all these operations are to be automated. There shall be one-click deployment of the complex applications and one simple dashboard to know the status of the complex application deployment at any time. Hence, there is a need for Multi-Edge and Multi-Cloud distributed application orchestrator. -Compared with other multipe-clusters orchestration, EMCO focuses on the following functionalities: +Compared with other multiple-clusters orchestration, EMCO focuses on the following functionalities: - Enrolling multiple geographically distributed OpenNESS clusters and third party cloud clusters. -- Orchestrating composite applications (composed of multiple individual applications) across the clusters. -- Deploying edge services and network functions on to different nodes spread across the different clusters. -- Monitoring the health of the deployed edge services/network functions across the clusters. +- Orchestrating composite applications (composed of multiple individual applications) across different clusters. +- Deploying edge services and network functions on to different nodes spread across different clusters. +- Monitoring the health of the deployed edge services/network functions across different clusters. - Orchestrating edge services and network functions with deployment intents based on compute, acceleration, and storage requirements. -- Supporting onboarding of multiple tenants from different enterprises while ensuring confidentiality and full isolation across the tenants. +- Supporting multiple tenants from different enterprises while ensuring confidentiality and full isolation between the tenants. The following figure shows the topology overview for the OpenNESS EMCO orchestration with edge and multiple clusters. It also shows an example of deploying SmartCity with EMCO. @@ -53,8 +53,7 @@ All the managed edge clusters and cloud clusters are connected with the EMCO clu - The composite application - [SmartCity](https://github.com/OpenVisualCloud/Smart-City-Sample) is composed of two parts: edge application and cloud (web) application. - The edge application executes media processing and analytics on multiple edge clusters to reduce latency. - The cloud application is like a web application for additional post-processing, such as calculating statistics and display/visualization on the cloud cluster side. - - The EMCO user can deploy the SmartCity applications across the clusters. Besides that, EMCO allows the operator to override configurations and profiles to satisfy deployment needs. - - For more details about the practice, refer to [Practice with EMCO: SmartCity Deployment](#practice-with-emco-smartcity-deployment). + - The EMCO user can deploy the SmartCity applications across the clusters. Besides that, EMCO allows the operator to override configurations and profiles to satisfy deployment needs. This document aims to familiarize the user with EMCO and [OpenNESS deployment flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md) for EMCO installation and provision, and provide instructions accordingly. @@ -90,10 +89,10 @@ _Figure 3 - EMCO Architecture_ A microservice exposes RESTful API. User can register cluster providers and clusters of those providers via these APIs. After preparing edge clusters and cloud clusters, which can be any Kubernetes\* cluster, user can onboard those clusters to EMCO by creating a cluster provider and then adding clusters to the cluster provider. After cluster providers are created, the KubeConfig files of edge and cloud clusters should be provided to EMCO as part of the multi-part POST call to the Cluster API. Additionally, after a cluster is created, labels and key value pairs can be added to the cluster via the EMCO API. Clusters can be specified by label when preparing placement intents. -> **NOTE**: The cluster provider is someone who owns clusters and registers them to EMCO. If an Enterprise has clusters, for example from AWS, then the cluster provider for those clusters from AWS is still considered as from that Enterprise. AWS is not the provider. Here, the provider is someone who owns clusters and registers them here. Since, AWS does not register their clusters here, AWS is not considered as cluster provider in this context. +> **NOTE**: The cluster provider is someone who owns clusters and registers them to EMCO. If an Enterprise has clusters, for example from AWS, then the cluster provider for those clusters from AWS is still considered as from that Enterprise. AWS is not the provider. Here, the provider is someone who owns clusters and registers them here. Since AWS does not register their clusters here, AWS is not considered cluster provider in this context. #### Distributed Application Scheduler -The distributed application scheduler microservice provides the following functionalities: +The distributed application scheduler microservice: - Project Management provides multi-tenancy in the application from a user perspective. - Composite App Management manages composite apps that are collections of Helm Charts, one per application. - Composite Profile Management manages composite profiles that are collections of profile, one per application. @@ -114,7 +113,7 @@ The Distributed Application Scheduler supports operations on a deployment intent Refer to [EMCO Resource Lifecycle Operations](https://github.com/otcshare/EMCO/tree/main/docs/user/Resource_Lifecycle.md) for more details. #### Network Configuration Management -The network configuration management (NCM) microservice provides the following functionalities: +The network configuration management (NCM) microservice: - Provider Network Management to create provider networks. - Virtual Network Management to create dynamic virtual networks. - Controller Registration manages network plugin controllers, priorities etc. @@ -222,13 +221,13 @@ _Figure 8 - Status Monitoring and Query Sequence_ ### EMCO API For user interaction, EMCO provides [RESTful API](https://github.com/otcshare/EMCO/blob/main/docs/emco_apis.yaml). Apart from that, EMCO also provides CLI. For the detailed usage, refer to [EMCO CLI](https://github.com/otcshare/EMCO/tree/main/src/tools/emcoctl) -> **NOTE**: The EMCO RESTful API is the foundation for the other interaction facilities like the EMCO CLI and even EMCO GUI (third party developed right now) +> **NOTE**: The EMCO RESTful API is the foundation for the other interaction facilities like the EMCO CLI, EMCO GUI (available in the future) and other orchestrators. ### EMCO Authentication and Authorization -EMCO uses Istio and other open source solutions to provide Multi-tenancy solution leveraging Istio Authorization and Authentication frameworks. This is achieved without adding any logic in EMCO microservices. -- Authentication and Authorization for the EMCO users is done at the Istio Ingress Gateway, where all the traffic enters the cluster. +EMCO uses Istio and other open source solutions to provide Multi-tenancy solution leveraging Istio Authorization and Authentication frameworks. This is achieved without adding any logic to EMCO microservices. +- Authentication and Authorization for EMCO users is done at the Istio Ingress Gateway, where all the traffic enters the cluster. -- Istio along with autherservice (istio ecosystem project) enables request-level authentication with JSON Web Token (JWT) validation. Authservice is an entity that works along side with Envoy proxy. It is used to work with external IAM systems (OAUTH2). Many Enterprises have their own OAUTH2 server for authenticating users and provide roles. +- Istio along with autherservice (Istio ecosystem project) enables request-level authentication with JSON Web Token (JWT) validation. Authservice is an entity that works along side with Envoy proxy. It is used to work with external IAM systems (OAUTH2). Many Enterprises have their own OAUTH2 server for authenticating users and provide roles. - Authservice and ISTIO can be configured to talk to multiple OAUTH2 servers. Using this capability EMCO can support multiple tenants, for example one tenant belonging to one project. @@ -249,13 +248,13 @@ _Figure 10 - EMCO Authenication with external OATH2 Server_ Detailed steps for configuring EMCO with Istio can be found in [EMCO Integrity and Access Management](https://github.com/otcshare/EMCO/tree/main/docs/user/Emco_Integrity_Access_Management.md) document. Steps for EMCO Authentication and Authorization Setup: -- Install and Configure Keycloak Server to be used in the setup. This server runs outside EMCO cluster +- Install and Configure Keycloak Server to be used in the setup. This server runs outside the EMCO cluster - Create a new realm, add users and roles to Keycloak - Install Istio in the Kubernetes* cluster where EMCO is running - Enable Sidecar Injection in EMCO namesapce - Install EMCO in EMCO namespace (with Istio sidecars) - Configure Istio Ingress gateway resources for EMCO Services -- Configure Istio Ingess gateway to enable running along with Authservice +- Configure Istio Ingress gateway to enable running along with Authservice - Apply EnvoyFilter for Authservice - Apply Authentication and Authorization Policies @@ -268,43 +267,43 @@ EMCO supports [multiple deployment options](https://github.com/otcshare/EMCO/tre ```shell # kubectl get pods -A -NAMESPACE NAME READY STATUS RESTARTS AGE -emco clm-6979f6c886-tjfrv 1/1 Running 0 104m -emco dcm-549974b6fc-42fbm 1/1 Running 0 104m -emco etcd-5f646586cb-p7ctj 1/1 Running 0 104m -emco mongo-5f7d44fbc5-n74lm 1/1 Running 0 104m -emco ncm-58b85b4688-tshmc 1/1 Running 0 104m -emco orchestrator-78b76cb547-xrvz5 1/1 Running 0 104m -emco ovnaction-5d8d4447f9-nn7l6 1/1 Running 0 104m -emco rsync-58b75849dd-99z6t 1/1 Running 0 104m -harbor harbor-app-harbor-chartmuseum-78c8d5567c-zfm68 1/1 Running 0 125m -harbor harbor-app-harbor-clair-779df4555b-bc4xv 2/2 Running 1 125m -harbor harbor-app-harbor-core-86745c7fdd-rqfl8 1/1 Running 0 125m -harbor harbor-app-harbor-database-0 1/1 Running 0 125m -harbor harbor-app-harbor-jobservice-b44ffbcdd-kxxbm 1/1 Running 0 125m -harbor harbor-app-harbor-nginx-8f4b9595-mthng 1/1 Running 0 125m -harbor harbor-app-harbor-notary-server-64c6df8547-w6zxt 1/1 Running 0 125m -harbor harbor-app-harbor-notary-signer-68cf88854b-h97mk 1/1 Running 0 125m -harbor harbor-app-harbor-portal-fd5ff4bc9-qn9hq 1/1 Running 0 125m -harbor harbor-app-harbor-redis-0 1/1 Running 0 125m -harbor harbor-app-harbor-registry-68699595cb-cdddd 2/2 Running 0 125m -harbor harbor-app-harbor-trivy-0 1/1 Running 0 125m -kube-system coredns-f9fd979d6-j4j2m 1/1 Running 0 125m -kube-system coredns-f9fd979d6-x546t 1/1 Running 0 125m -kube-system etcd-211node 1/1 Running 0 128m -kube-system kube-apiserver-211node 1/1 Running 0 128m -kube-system kube-controller-manager-211node 1/1 Running 0 128m -kube-system kube-ovn-cni-pvbfl 1/1 Running 0 125m -kube-system kube-ovn-controller-54d8c5d5ff-jjgk6 1/1 Running 0 125m -kube-system kube-ovn-pinger-tst92 1/1 Running 0 125m -kube-system kube-proxy-llqzr 1/1 Running 0 128m -kube-system kube-scheduler-211node 1/1 Running 0 128m -kube-system ovn-central-54f768b868-vtmjl 1/1 Running 0 127m -kube-system ovs-ovn-jq6dn 1/1 Running 0 127m +NAMESPACE NAME READY STATUS RESTARTS AGE +emco clm-6979f6c886-tjfrv 1/1 Running 0 14m +emco dcm-549974b6fc-42fbm 1/1 Running 0 14m +emco etcd-5f646586cb-p7ctj 1/1 Running 0 14m +emco mongo-5f7d44fbc5-n74lm 1/1 Running 0 14m +emco ncm-58b85b4688-tshmc 1/1 Running 0 14m +emco orchestrator-78b76cb547-xrvz5 1/1 Running 0 14m +emco ovnaction-5d8d4447f9-nn7l6 1/1 Running 0 14m +emco rsync-58b75849dd-99z6t 1/1 Running 0 14m +harbor harbor-app-harbor-chartmuseum-78c8d5567c-zfm68 1/1 Running 0 15m +harbor harbor-app-harbor-clair-779df4555b-bc4xv 2/2 Running 1 15m +harbor harbor-app-harbor-core-86745c7fdd-rqfl8 1/1 Running 0 15m +harbor harbor-app-harbor-database-0 1/1 Running 0 15m +harbor harbor-app-harbor-jobservice-b44ffbcdd-kxxbm 1/1 Running 0 15m +harbor harbor-app-harbor-nginx-8f4b9595-mthng 1/1 Running 0 15m +harbor harbor-app-harbor-notary-server-64c6df8547-w6zxt 1/1 Running 0 15m +harbor harbor-app-harbor-notary-signer-68cf88854b-h97mk 1/1 Running 0 15m +harbor harbor-app-harbor-portal-fd5ff4bc9-qn9hq 1/1 Running 0 15m +harbor harbor-app-harbor-redis-0 1/1 Running 0 15m +harbor harbor-app-harbor-registry-68699595cb-cdddd 2/2 Running 0 15m +harbor harbor-app-harbor-trivy-0 1/1 Running 0 15m +kube-system coredns-f9fd979d6-j4j2m 1/1 Running 0 15m +kube-system coredns-f9fd979d6-x546t 1/1 Running 0 15m +kube-system etcd-211node 1/1 Running 0 18m +kube-system kube-apiserver-211node 1/1 Running 0 18m +kube-system kube-controller-manager-211node 1/1 Running 0 18m +kube-system kube-ovn-cni-pvbfl 1/1 Running 0 15m +kube-system kube-ovn-controller-54d8c5d5ff-jjgk6 1/1 Running 0 15m +kube-system kube-ovn-pinger-tst92 1/1 Running 0 15m +kube-system kube-proxy-llqzr 1/1 Running 0 18m +kube-system kube-scheduler-211node 1/1 Running 0 18m +kube-system ovn-central-54f768b868-vtmjl 1/1 Running 0 17m +kube-system ovs-ovn-jq6dn 1/1 Running 0 17m ``` -## Practice with EMCO: SmartCity Deployment +## EMCO Example: SmartCity Deployment - The [SmartCity application](https://github.com/OpenVisualCloud/Smart-City-Sample) is a sample application that is built on top of the OpenVINO™ and Open Visual Cloud software stacks for media processing and analytics. The composite application is composed of two parts: EdgeApp + WebApp (cloud application for additional post-processing such as calculating statistics and display/visualization) - The edge cluster (representing regional office), the cloud cluster and the EMCO are connected with each others. - The whole deployment architecture diagram is shown as below: @@ -315,12 +314,12 @@ _Figure 11 - SmartCity Deployment Architecture Overview_ The example steps are shown as follows: - Prerequisites - Make one edge cluster and one cloud cluster ready by using OpenNESS Flavor. - - Prepare One server with a vanilla CentOS\* 7.8.2003 for EMCO (Only one server is required for EMCO installation). -- EMCO Installation -- Cluster Setup -- Project Setup -- Logical Cloud Setup -- Deploy SmartCity Application + - Prepare one server with a vanilla CentOS\* 7.8.2003 for EMCO installation. +- EMCO installation +- Cluster setup +- Project setup +- Logical cloud Setup +- Deploy SmartCity application ### Cluster Setup In the step, cluster provider will be created. And both the edge cluster and the cloud cluster will be registered in the EMCO. @@ -416,7 +415,7 @@ CRT=/root/tunnel_secret/self.crt SELFKEY=/root//tunnel_secret/self.key kubectl create secret generic self-signed-certificate --from-file=${CRT} --from-file=${SELFKEY} ``` -> **NOTE**: Actually EMCO supports generic K8S resource configuration including configmap, secret,etc. In the practice, only offer the example usage about how to use [EMCO for configmap configuration](https://github.com/otcshare/edgeapps/blob/master/applications/smart-city-app/emco/cli-scripts/04_apps_template.yaml) to the clusters. +> **NOTE**: Actually EMCO supports generic K8S resource configuration including configmap, secret,etc. The example offers the usage about [configmap configuration](https://github.com/otcshare/edgeapps/blob/master/applications/smart-city-app/emco/cli-scripts/04_apps_template.yaml) to the clusters. > **NOTE**: [SmartCity application](https://github.com/OpenVisualCloud/Smart-City-Sample) secrets need the specific information only accessiable by th edge cluster and the cloud cluster, we use manual steps here. 4. Verify SmartCity Application Deployment Information. From cc02620788d7d7ce32b38e478db8cd5a50210ba9 Mon Sep 17 00:00:00 2001 From: Preeti4x <75366059+Preeti4x@users.noreply.github.com> Date: Thu, 17 Dec 2020 16:29:08 +0530 Subject: [PATCH 127/148] Update openness-acc100.md (#383) Editorial review is complete. --- .../openness-acc100.md | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/doc/building-blocks/enhanced-platform-awareness/openness-acc100.md b/doc/building-blocks/enhanced-platform-awareness/openness-acc100.md index 0725fe78..d7ebf534 100644 --- a/doc/building-blocks/enhanced-platform-awareness/openness-acc100.md +++ b/doc/building-blocks/enhanced-platform-awareness/openness-acc100.md @@ -5,21 +5,21 @@ Copyright (c) 2019-2020 Intel Corporation # Using ACC100 eASIC in OpenNESS: Resource Allocation, and Configuration - [Overview](#overview) -- [Intel® vRAN Dedicated Accelerator ACC100 FlexRAN host interface overview](#intel-vran-dedicated-accelerator-acc100-flexran-host-interface-overview) -- [Intel® vRAN Dedicated Accelerator ACC100 orchestration and deployment with Kubernetes\* for FlexRAN](#intel-vran-dedicated-accelerator-acc100-orchestration-and-deployment-with-kubernetes-for-flexran) +- [Intel® vRAN Dedicated Accelerator ACC100 FlexRAN Host Interface Overview](#intel-vran-dedicated-accelerator-acc100-flexran-host-interface-overview) +- [Intel® vRAN Dedicated Accelerator ACC100 Orchestration and Deployment with Kubernetes\* for FlexRAN](#intel-vran-dedicated-accelerator-acc100-orchestration-and-deployment-with-kubernetes-for-flexran) - [Using the Intel® vRAN Dedicated Accelerator ACC100 on OpenNESS](#using-the-intel-vran-dedicated-accelerator-acc100-on-openness) - - [ACC100 (FEC) Ansible installation for OpenNESS Network Edge](#acc100-fec-ansible-installation-for-openness-network-edge) + - [ACC100 (FEC) Ansible Installation for OpenNESS Network Edge](#acc100-fec-ansible-installation-for-openness-network-edge) - [OpenNESS Experience Kit](#openness-experience-kit) - - [FEC VF configuration for OpenNESS Network Edge](#fec-vf-configuration-for-openness-network-edge) - - [Requesting resources and running pods for OpenNESS Network Edge](#requesting-resources-and-running-pods-for-openness-network-edge) - - [Verifying Application POD access and usage of FPGA on OpenNESS Network Edge](#verifying-application-pod-access-and-usage-of-fpga-on-openness-network-edge) + - [FEC VF Configuration for OpenNESS Network Edge](#fec-vf-configuration-for-openness-network-edge) + - [Requesting Resources and Running Pods for OpenNESS Network Edge](#requesting-resources-and-running-pods-for-openness-network-edge) + - [Verifying Application POD Access and Usage of FPGA on OpenNESS Network Edge](#verifying-application-pod-access-and-usage-of-fpga-on-openness-network-edge) - [Reference](#reference) ## Overview Intel® vRAN Dedicated Accelerator ACC100 plays a key role in accelerating 4G and 5G Virtualized Radio Access Networks (vRAN) workloads, which in turn increases the overall compute capacity of a commercial, off-the-shelf platform. -Intel® vRAN Dedicated Accelerator ACC100 provides following features: +Intel® vRAN Dedicated Accelerator ACC100 provides the following features: - LDPC FEC processing for 3GPP 5G: - LDPC encoder/decoder @@ -37,21 +37,21 @@ Intel® vRAN Dedicated Accelerator ACC100 provides following features: - Interface through the DPDK BBDev library and APIs Intel® vRAN Dedicated Accelerator ACC100 benefits include: -- Reduced platform power, E2E latency and Intel® CPU core count requirements as well as increases cell capacity than existing programmable accelerator +- Reduced platform power, E2E latency and Intel® CPU core count requirements as well as increase in cell capacity than existing programmable accelerator - Accelerates both 4G and 5G data concurrently - Lowers development cost using commercial off the shelf (COTS) servers -- Accommodates space-constrained implementations via a low-profile PCIe card form factor. +- Accommodates space-constrained implementations via a low-profile PCIe* card form factor. - Enables a variety of flexible FlexRAN deployments from small cell to macro to Massive MIMO networks -- Supports extended temperature for the most challenging of RAN deployment scenario’s +- Supports extended temperature for the most challenging of RAN deployment scenarios -For more information on the [Intel® vRAN Dedicated Accelerator ACC100 see the product brief](https://builders.intel.com/docs/networkbuilders/intel-vran-dedicated-accelerator-acc100-product-brief.pdf). +For more information, see product brief in [Intel® vRAN Dedicated Accelerator ACC100](https://builders.intel.com/docs/networkbuilders/intel-vran-dedicated-accelerator-acc100-product-brief.pdf). This document explains how the ACC100 resource can be used on the Open Network Edge Services Software (OpenNESS) platform for accelerating network functions and edge application workloads. We use the Intel® vRAN Dedicated Accelerator ACC100 to accelerate the LTE/5G Forward Error Correction (FEC) in the 5G or 4G L1 base station network function such as FlexRAN. FlexRAN is a reference layer 1 pipeline of 4G eNb and 5G gNb on Intel® architecture. The FlexRAN reference pipeline consists of an L1 pipeline, optimized L1 processing modules, BBU pooling framework, cloud and cloud-native deployment support, and accelerator support for hardware offload. Intel® vRAN Dedicated Accelerator ACC100 card is used by FlexRAN to offload FEC (Forward Error Correction) for 4G and 5G. -## Intel® vRAN Dedicated Accelerator ACC100 FlexRAN host interface overview +## Intel® vRAN Dedicated Accelerator ACC100 FlexRAN Host Interface Overview Intel® vRAN Dedicated Accelerator ACC100 card used in the FlexRAN solution exposes the following physical functions to the CPU host: - One FEC interface that can be used of 4G or 5G FEC acceleration - The LTE FEC IP components have turbo encoder/turbo decoder and rate matching/de-matching @@ -59,8 +59,8 @@ Intel® vRAN Dedicated Accelerator ACC100 card used in the FlexRAN solution expo ![Intel® vRAN Dedicated Accelerator ACC100 support](acc100-images/acc100-diagram.png) -## Intel® vRAN Dedicated Accelerator ACC100 orchestration and deployment with Kubernetes\* for FlexRAN -FlexRAN is a low-latency network function that implements the FEC. FlexRAN uses the FEC resources from the ACC100 using POD resource allocation and the Kubernetes\* device plugin framework. Kubernetes provides a device plugin framework that is used to advertise system hardware resources to the Kubelet. Instead of customizing the code for Kubernetes (K8s) itself, vendors can implement a device plugin that can be deployed either manually or as a DaemonSet. The targeted devices include GPUs, high-performance NICs, FPGAs, InfiniBand\* adapters, and other similar computing resources that may require vendor-specific initialization and setup. +## Intel® vRAN Dedicated Accelerator ACC100 Orchestration and Deployment with Kubernetes\* for FlexRAN +FlexRAN is a low-latency network function that implements the FEC. FlexRAN uses the FEC resources from the ACC100 using POD resource allocation and the Kubernetes\* device plugin framework. Kubernetes* provides a device plugin framework that is used to advertise system hardware resources to the Kubelet. Instead of customizing the code for Kubernetes* (K8s) itself, vendors can implement a device plugin that can be deployed either manually or as a DaemonSet. The targeted devices include GPUs, high-performance NICs, FPGAs, InfiniBand\* adapters, and other similar computing resources that may require vendor-specific initialization and setup. ![Intel® vRAN Dedicated Accelerator ACC100 Orchestration and deployment with OpenNESS Network Edge for FlexRAN](acc100-images/acc100-k8s.png) @@ -78,7 +78,7 @@ The full pipeline of preparing the device for workload deployment and deploying - Enabling orchestration and allocation of the devices (VFs) to non-root pods requesting the devices: leveraging the support of "accelerator" SRIOV VFs from K8s SRIOV Device Plugin. K8s plugin deployment is delivered as part of the Edge Controller's Ansible automation. - Simple sample BBDEV application to validate the pipeline (i.e., SRIOV creation - Queue configuration - Device orchestration - Pod deployment): Script delivery and instructions to build Docker image for sample application delivered as part of Edge Apps package. -### ACC100 (FEC) Ansible installation for OpenNESS Network Edge +### ACC100 (FEC) Ansible Installation for OpenNESS Network Edge To run the OpenNESS package with ACC100 (FEC) functionality, the feature needs to be enabled on both Edge Controller and Edge Node. It can be deployed via the ["flexran" flavor of OpenNESS](https://github.com/otcshare/openness-experience-kits/tree/master/flavors/flexran). #### OpenNESS Experience Kit @@ -144,9 +144,9 @@ openness syslog-ng-br92z 1/1 Running 0 ``` ### FEC VF configuration for OpenNESS Network Edge -To configure the VFs with the necessary number of queues for the vRAN workload the BBDEV configuration utility is going run as a job within a privileged container. The configuration utility is available to run as a Helm chart available from `/opt/openness/helm-charts/bb_config`. +To configure the VFs with the necessary number of queues for the vRAN workload, the BBDEV configuration utility is going to run as a job within a privileged container. The configuration utility is available to run as a Helm chart available from `/opt/openness/helm-charts/bb_config`. -Sample configMap, which can be configured by changing values if other than typical config is required, with a profile for the queue configuration is provided as part of Helm chart template `/opt/openness/helm-charts/bb_config/templates/acc100-config.yaml` populated with values from `/opt/openness/helm-charts/bb_config/values.yaml`. Helm chart installation requires a provision of hostname for the target node during job deployment. Additionally the default values in Helm chart will deployed FPGA config, a flag needs to be provided to invoke ACC100 config. +Sample configMap, which can be configured by changing values, if other than typical config is required, with a profile for the queue configuration is provided as part of Helm chart template `/opt/openness/helm-charts/bb_config/templates/acc100-config.yaml` populated with values from `/opt/openness/helm-charts/bb_config/values.yaml`. Helm chart installation requires a provision of hostname for the target node during job deployment. Additionally, the default values in Helm chart will deploy FPGA config, a flag needs to be provided to invoke ACC100 config. Install the Helm chart by providing configmap and BBDEV config utility job with the following command from `/opt/openness/helm-charts/` on Edge Controller: @@ -154,7 +154,7 @@ Install the Helm chart by providing configmap and BBDEV config utility job with helm install --set nodeName= --set device=ACC100 intel-acc100-cfg bb_config ``` -Check if the job has completed and that the state of the pod created for this job is “Completed”. Check the logs of the pod to see a complete successful configuration. +Verify if the job has completed and that the state of the pod created for this job is “Completed”. Check the logs of the pod to see a complete successful configuration. ``` kubectl get pods kubectl logs intel-acc100-cfg--xxxxx @@ -172,7 +172,7 @@ To uninstall the job, run: helm uninstall intel-acc100-cfg ``` -### Requesting resources and running pods for OpenNESS Network Edge +### Requesting Resources and Running Pods for OpenNESS Network Edge As part of the OpenNESS Ansible automation, a K8s SRIOV device plugin to orchestrate the ACC100 VFs (bound to the userspace driver) is running. This enables the scheduling of pods requesting this device. To check the number of devices available on the Edge Node from Edge Controller, run: ```shell @@ -181,7 +181,7 @@ kubectl get node -o json | jq '.status.allocatable' "intel.com/intel_fec_acc100": "2" ``` -To request the device as a resource in the pod, add the request for the resource into the pod specification file by specifying its name and amount of resources required. If the resource is not available or the amount of resources requested is greater than the number of resources available, the pod status will be “Pending” until the resource is available. +To request the device as a resource in the pod, add the request for the resource into the pod specification file by specifying its name and the amount of resources required. If the resource is not available or the amount of resources requested is greater than the number of resources available, the pod status will be “Pending” until the resource is available. **NOTE**: The name of the resource must match the name specified in the configMap for the K8s devices plugin [configMap.yml](https://github.com/otcshare/openness-experience-kits/blob/master/roles/kubernetes/cni/sriov/controlplane/files/sriov/templates/configMap.yml). A sample pod requesting the ACC100 (FEC) VF may look like this: @@ -221,7 +221,7 @@ To check the number of devices currently allocated to pods, run (and search for kubectl describe node ``` -### Verifying Application POD access and usage of FPGA on OpenNESS Network Edge +### Verifying Application POD Access and Usage of FPGA on OpenNESS Network Edge To verify the functionality of all the features are working together (SRIOV binding - K8s device plugin - BBDEV config) and functionality of the ACC100 (FEC) VF inside a non-root pod, build a Docker image and run a simple validation application for the device. The automation of the Docker image build is available from the Edge Apps package. The image must be built on the same node that it is meant to be deployed or a server with the same configuration as the node that will run the workload. This is due to the Kernel dependencies of DPDK during the application build. From 84c9068e1588c17c4c5c6886f5129de924ce0f56 Mon Sep 17 00:00:00 2001 From: Amr Mokhtar Date: Thu, 17 Dec 2020 12:39:11 +0000 Subject: [PATCH 128/148] Added CDI know issue --- openness_releasenotes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/openness_releasenotes.md b/openness_releasenotes.md index 3fbdc39b..f11a3641 100644 --- a/openness_releasenotes.md +++ b/openness_releasenotes.md @@ -365,6 +365,7 @@ There is one issue relevant to this release: it is not possible to remove the ap ## OpenNESS - 20.12 - cAdvisor CPU utilization of Edge Node is high and could cause a delay to get an interactive SSH session. A work around is to remove CAdvisor if not needed using `helm uninstall cadvisor -n telemetry` +- An issue appears when the KubeVirt Containerized Data Importer (CDI) upload pod is deployed with Kube-OVN CNI, the deployed pods readiness probe fails and pod is never in ready state. It is advised that the user uses other CNI such as Calico CNI when using CDI with OpenNESS # Release Content From b0f852ec2c74715ab884bd1ab2f9dd9741a1a08a Mon Sep 17 00:00:00 2001 From: damiankopyto <48013534+damiankopyto@users.noreply.github.com> Date: Thu, 17 Dec 2020 13:01:21 +0000 Subject: [PATCH 129/148] kubevirt update (#385) kubevirt update --- doc/applications-onboard/openness-network-edge-vm-support.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/applications-onboard/openness-network-edge-vm-support.md b/doc/applications-onboard/openness-network-edge-vm-support.md index 9bdf094f..8ad9e2aa 100644 --- a/doc/applications-onboard/openness-network-edge-vm-support.md +++ b/doc/applications-onboard/openness-network-edge-vm-support.md @@ -164,6 +164,8 @@ To deploy a sample stateful VM with persistent storage and additionally use a Ge >**NOTE**: Each stateful VM with a new Persistent Volume Claim (PVC) requires a new Persistent Volume (PV) to be created. See more in the [limitations section](#limitations). Also, CDI needs two PVs when creating a PVC and loading a VM image from the qcow2 file: one PV for the actual PVC to be created and one PV to translate the qcow2 image to raw input. +>**NOTE**: An issue appears when the CDI upload pod is deployed with Kube-OVN CNI, the deployed pods readiness probe fails and pod is never in ready state. It is advised that the user uses other CNI such as Calico CNI when using CDI with OpenNESS. + 1. Create a persistent volume for the VM: - Edit the sample yaml with the hostname of the node: @@ -254,6 +256,8 @@ To deploy a sample stateful VM with persistent storage and additionally use a Ge ```shell [root@controller ~]# kubectl get vmi ``` +>**NOTE**: The user should verify that there is no K8s network policy that would block the traffic to the VM (ie. `block-all-ingress policy`). If such policy exists it should be either removed or a new policy should be created to allow traffic. To check current network policies run: `kubectl get networkpolicy -A`. See K8s [documentation for more information on network policies](https://kubernetes.io/docs/concepts/services-networking/network-policies/). + 13. SSH into the VM: ```shell [root@controller ~]# ssh From 12d791da374a0e96bae1f8d157113f345109cb8c Mon Sep 17 00:00:00 2001 From: damiankopyto <48013534+damiankopyto@users.noreply.github.com> Date: Thu, 17 Dec 2020 13:12:45 +0000 Subject: [PATCH 130/148] Update 2012 (#386) Update 2012 --- .../openness-telemetry.md | 29 ++++++------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/doc/building-blocks/enhanced-platform-awareness/openness-telemetry.md b/doc/building-blocks/enhanced-platform-awareness/openness-telemetry.md index 18254093..fa5357df 100644 --- a/doc/building-blocks/enhanced-platform-awareness/openness-telemetry.md +++ b/doc/building-blocks/enhanced-platform-awareness/openness-telemetry.md @@ -149,7 +149,7 @@ Node Exporter is a Prometheus exporter that exposes hardware and OS metrics of * #### VCAC-A -Node Exporter also enables exposure of telemetry from Intel's VCAC-A card to Prometheus. The telemetry from the VCAC-A card is saved into a text file; this text file is used as an input to the Node Exporter. More information on VCAC-A usage in OpenNESS is available [here](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-vcac-a.md). +Node Exporter also enables exposure of telemetry from Intel's VCAC-A card to Prometheus. The telemetry from the VCAC-A card is saved into a text file; this text file is used as an input to the Node Exporter. More information on VCAC-A usage in OpenNESS is available [here](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-vcac-a.md). ### cAdvisor @@ -164,20 +164,7 @@ It collects and aggregates data about running containers such as resource usage, ### CollectD -CollectD is a daemon/collector enabling the collection of hardware metrics from computers and network equipment. It provides support for CollectD plugins, which extends its functionality for specific metrics collection such as Intel® RDT, Intel PMU, and ovs-dpdk. The metrics collected are easily exposed to the Prometheus monitoring tool via the usage of the `write_prometheus` plugin. In OpenNESS, CollectD is supported with the help of the [OPNFV Barometer project](https://wiki.opnfv.org/display/fastpath/Barometer+Home) - using its Docker image and available plugins. As part of the OpenNESS release, a CollectD plugin for - -Search Results - - -Enter your search term: - - -042 - -Your search came up with the following results: - -Intel® FPGA Accelerator Packaging Utility -Intel® FPGA Programmable Acceleration Card (Intel® FPGA PAC) N3000 telemetry is now available from OpenNESS (power and temperature telemetry). In OpenNESS, the CollectD pod is deployed as a K8s `Daemonset` on every available Edge Node, and it is deployed as a privileged container. +CollectD is a daemon/collector enabling the collection of hardware metrics from computers and network equipment. It provides support for CollectD plugins, which extends its functionality for specific metrics collection such as Intel® RDT, Intel PMU, and ovs-dpdk. The metrics collected are easily exposed to the Prometheus monitoring tool via the usage of the `write_prometheus` plugin. In OpenNESS, CollectD is supported with the help of the [OPNFV Barometer project](https://wiki.opnfv.org/display/fastpath/Barometer+Home) - using its Docker image and available plugins. As part of the OpenNESS release, a CollectD plugin for Intel® FPGA Programmable Acceleration Card (Intel® FPGA PAC) N3000 telemetry is now available from OpenNESS (power and temperature telemetry). In OpenNESS, the CollectD pod is deployed as a K8s `Daemonset` on every available Edge Node, and it is deployed as a privileged container. #### Plugins @@ -202,7 +189,7 @@ The various OEK flavors are enabled for CollectD deployment as follows: 1. Select the flavor for the deployment of CollectD from the OEK during OpenNESS deployment; the flavor is to be selected with `telemetry_flavor: `. - In the event of using the `flexran` profile, `n3000-1-3-5-beta-cfg-2x2x25g-setup.zip` and `n3000-1-3-5-beta-rte-setup.zip` need to be available in `./openness-experience-kits/opae_fpga` directory; for details about the packages, see [FPGA support in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-fpga.md#edge-controller) + In the event of using the `flexran` profile, `OPAE_SDK_1.3.7-5_el7.zip` needs to be available in `./openness-experience-kits/opae_fpga` directory; for details about the packages, see [FPGA support in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md#edge-controller) 2. To access metrics available from CollectD, connect to the Prometheus [dashboard](#prometheus). 3. Look up an example the CollectD metric by specifying the metric name (ie. `collectd_cpufreq`) and pressing `execute` under the `graph` tab. ![CollectD Metric](telemetry-images/collectd_metric.png) @@ -211,10 +198,11 @@ The various OEK flavors are enabled for CollectD deployment as follows: OpenTelemetry is a project providing APIs and libraries that enable the collection of telemetry from edge services and network functions. This project provides a mechanism to capture application metrics and traces within applications with support for multiple programming languages. The captured metrics are exposed to OpenTelemetry agents and collectors responsible for the handling of data and forwarding it to the desired back-end application(s) for processing and analysis. Among the supported back-ends are popular projects such as Prometheus (metrics), Jaeger, and Zipkin (traces). A concept of receiver and exporter exists within the Open Telemetry agent and collector. The receiver provides a mechanism to receive the data into the agent or collector. Multiple receivers are supported and at least one or more must be configured. On the opposite end, an exporter provides a mechanism to export data to the receiver, similarly multiple exporters are supported and one or more must be set up. -As part of the OpenNESS release, only the support for collecting metrics and exposing them to Prometheus is enabled. The deployment model chosen for Open Telemetry is to deploy a global collector pod receiving data from multiple agents, the agents are to be deployed as side-car containers for each instance of the application pod. +As part of the OpenNESS release, only the support for collecting metrics and exposing them to Prometheus is enabled. The deployment model chosen for Open Telemetry is to deploy a global collector pod receiving data from multiple agents, the agents are to be deployed as side-car containers for each instance of the application pod. + - The application exports data to the agent locally. - The agent receives the data and exports it to the collector by specifying the collector’s K8s service name and port via TLS secured connection. -- The collector exposes all the available data received from multiple agents on an endpoint which is being scraped by Prometheus. +- The collector exposes all the available data received from multiple agents on an endpoint which is being scraped by Prometheus. OpenCensus exporter/receiver is used in the default OpenNESS configuration for agent and collector to collect metrics from an application. A sample application pod generating random numbers, aggregating those numbers and exposing the metrics, and containing a reference side-car OpenTelemetry agent is available in the Edge Apps repository. @@ -273,10 +261,11 @@ Processor Counter Monitor (PCM) is an application programming interface (API) an ### TAS -[Telemetry Aware Scheduler](https://github.com/intel/telemetry-aware-scheduling) enables the user to make K8s scheduling decisions based on the metrics available from telemetry. This is crucial for a variety of Edge use-cases and workloads where it is critical that the workloads are balanced and deployed on the best suitable node based on hardware ability and performance. The user can create a set of policies defining the rules to which pod placement must adhere. Functionality to de-schedule pods from given nodes if a rule is violated is also provided. TAS consists of a TAS Extender which is an extension to the K8s scheduler. It correlates the scheduling policies with deployment strategies and returns decisions to the K8s Scheduler. It also consists of a TAS Controller that consumes TAS policies and makes them locally available to TAS components. A metrics pipeline that exposes metrics to a K8s API must be established for TAS to be able to read in the metrics. In OpenNESS, the metrics pipeline consists of: +[Telemetry Aware Scheduler](https://github.com/intel/telemetry-aware-scheduling) enables the user to make K8s scheduling decisions based on the metrics available from telemetry. This is crucial for a variety of Edge use-cases and workloads where it is critical that the workloads are balanced and deployed on the best suitable node based on hardware ability and performance. The user can create a set of policies defining the rules to which pod placement must adhere. Functionality to de-schedule pods from given nodes if a rule is violated is also provided. TAS consists of a TAS Extender which is an extension to the K8s scheduler. It correlates the scheduling policies with deployment strategies and returns decisions to the K8s Scheduler. It also consists of a TAS Controller that consumes TAS policies and makes them locally available to TAS components. A metrics pipeline that exposes metrics to a K8s API must be established for TAS to be able to read in the metrics. In OpenNESS, the metrics pipeline consists of: + - Prometheus: responsible for collecting and providing metrics. - Prometheus Adapter: exposes the metrics from Prometheus to a K8s API and is configured to provide metrics from Node Exporter and CollectD collectors. -TAS is enabled by default in OEK, a sample scheduling policy for TAS is provided for [VCAC-A node deployment](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-vcac-a.md#telemetry-support). +TAS is enabled by default in OEK, a sample scheduling policy for TAS is provided for [VCAC-A node deployment](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-vcac-a.md#telemetry-support). #### Usage From 47021c8ea5303f176f41f5adaa7ff26841d75415 Mon Sep 17 00:00:00 2001 From: Krishnamurthy Jambur <47258934+krishnajs@users.noreply.github.com> Date: Thu, 17 Dec 2020 14:01:02 +0000 Subject: [PATCH 131/148] Create openness-azure-devkit.md (#376) * Create openness-azure-devkit.md --- doc/devkits/openness-azure-devkit.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 doc/devkits/openness-azure-devkit.md diff --git a/doc/devkits/openness-azure-devkit.md b/doc/devkits/openness-azure-devkit.md new file mode 100644 index 00000000..17a69f9b --- /dev/null +++ b/doc/devkits/openness-azure-devkit.md @@ -0,0 +1,17 @@ +```text +SPDX-License-Identifier: Apache-2.0 +Copyright (c) 2020 Intel Corporation +``` + +# OpenNESS Devkit for Azure + +## Introduction + +This devkit supports the use of OpenNESS in cloud solutions. It leverages the Azure Stack for OpenNESS deployment. +The devkit offers a quick and easy way to deploy OpenNESS on cloud for developers and businesses. It contains templates +for automated depoyment, and supports deployment using Porter. It enables cloud solutions supported by Intel's processors. + +## Getting Started + +Following document contains steps for quick deployment on Azure: +* [openness-experience-kits/cloud/README.md: Deployment and setup guide](https://github.com/open-ness/openness-experience-kits/blob/master/cloud/README.md) From dc4483e53f5a24c8d4197ff13e11ba5f9d5835eb Mon Sep 17 00:00:00 2001 From: Cezary Marczak <57795129+cezaryxmarczak@users.noreply.github.com> Date: Thu, 17 Dec 2020 15:18:55 +0100 Subject: [PATCH 132/148] OP-5797 Certificate Signer Documentation (#365) --- README.md | 41 +-- .../network-edge-applications-onboarding.md | 294 +++++++++++++++--- .../openness-certsigner.md | 189 +++++++++++ doc/applications-onboard/openness-eaa.md | 27 +- 4 files changed, 465 insertions(+), 86 deletions(-) create mode 100644 doc/applications-onboard/openness-certsigner.md diff --git a/README.md b/README.md index 573dda67..e157f52c 100644 --- a/README.md +++ b/README.md @@ -5,20 +5,20 @@ Copyright (c) 2019-2020 Intel Corporation # OpenNESS Quick Start - ## Network Edge - ### Step 1. Get Hardware ► Step 2. [Getting started](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md) ► Step 3. [Applications Onboarding](https://github.com/otcshare/specs/blob/master/doc/applications-onboard/network-edge-applications-onboarding.md) + ## Network Edge + ### Step 1. Get Hardware ► Step 2. [Getting started](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md) ► Step 3. [Applications Onboarding](https://github.com/otcshare/specs/blob/master/doc/applications-onboard/network-edge-applications-onboarding.md) # OpenNESS solution documentation index -Below is the complete list of OpenNESS solution documentation +Below is the complete list of OpenNESS solution documentation -## Architecture +## Architecture * [architecture.md: OpenNESS Architecture overview](https://github.com/otcshare/specs/blob/master/doc/architecture.md) * [flavors.md: OpenNESS Deployment Flavors](https://github.com/otcshare/specs/blob/master/doc/flavors.md) -## Getting Started - Setup +## Getting Started - Setup * [getting-started: Folder containing how to get started with installing and trying OpenNESS Network Edge solutions](https://github.com/otcshare/specs/blob/master/doc/getting-started) * [openness-experience-kits.md: Overview of the OpenNESS Experience kits that are used to install the Network Edge solutions](https://github.com/otcshare/specs/blob/master/doc/getting-started/openness-experience-kits.md) @@ -26,7 +26,7 @@ Below is the complete list of OpenNESS solution documentation * [controller-edge-node-setup.md: Started here for installing and trying OpenNESS Network Edge](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md) * [supported-epa.md: List of Silicon and Software EPA that are features that are supported in OpenNESS Network Edge](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/supported-epa.md) -## Application onboarding - Deployment +## Application onboarding - Deployment * [applications-onboard: Now that you have installed OpenNESS platform start in this folder to onboard sample application on OpenNESS Network Edge](https://github.com/otcshare/specs/blob/master/doc/applications-onboard) * [network-edge-applications-onboarding.md: Steps for onboarding sample application on OpenNESS Network Edge](https://github.com/otcshare/specs/blob/master/doc/applications-onboard/network-edge-applications-onboarding.md) @@ -34,6 +34,7 @@ Below is the complete list of OpenNESS solution documentation * [openness-interface-service.md: Using network interfaces management service](https://github.com/otcshare/specs/blob/master/doc/applications-onboard/openness-interface-service.md) * [using-openness-cnca.md: Steps for configuring 4G CUPS or 5G Application Function for Edge deployment for Network Edge](https://github.com/otcshare/specs/blob/master/doc/applications-onboard/using-openness-cnca.md) * [openness-eaa.md: Edge Application Agent: Description of Edge Application APIs and Edge Application Authentication APIs](https://github.com/otcshare/specs/blob/master/doc/applications-onboard/openness-eaa.md) + * [openness-certsigner.md: Steps for issuing platform certificates](https://github.com/otcshare/specs/blob/master/doc/applications-onboard/openness-certsigner.md) ## Radio Access Network (RAN) * [ran: Folder containing details of 4G and 5G RAN deployment support](https://github.com/otcshare/specs/tree/master/doc/reference-architectures/ran) @@ -41,14 +42,14 @@ Below is the complete list of OpenNESS solution documentation * [openness_xran.md: Whitepaper detailing O-RAN Sample Application deployment support on OpenNESS](https://github.com/otcshare/specs/blob/master/doc/reference-architectures/ran/openness_xran.md) -## Core Network - 4G and 5G +## Core Network - 4G and 5G * [core-network: Folder containing details of 4G CUPS and 5G edge cloud deployment support](https://github.com/otcshare/specs/tree/master/doc/reference-architectures/core-network) * [openness_epc.md: Whitepaper detailing the 4G CUPS support for Edge cloud deployment in OpenNESS for Network Edge](https://github.com/otcshare/specs/blob/master/doc/reference-architectures/core-network/openness_epc.md) * [openness_ngc.md: Whitepaper detailing the 5G Edge Cloud deployment support in OpenNESS for Network Edge](https://github.com/otcshare/specs/blob/master/doc/reference-architectures/core-network/openness_ngc.md) * [openness_upf.md: Whitepaper detailing the UPF, AF, NEF deployment support on OpenNESS for Network Edge](https://github.com/otcshare/specs/blob/master/doc/reference-architectures/core-network/openness_upf.md) -## Enhanced Platform Awareness +## Enhanced Platform Awareness * [enhanced-platform-awareness: Folder containing individual Silicon and Software EPA that are features that are supported in OpenNESS and Network Edge](https://github.com/otcshare/specs/tree/master/doc/building-blocks/enhanced-platform-awareness) * [openness-hugepage.md: Hugepages support for Edge Applications and Network Functions](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-hugepage.md) @@ -71,7 +72,7 @@ Below is the complete list of OpenNESS solution documentation * [openness-ovn.md: OpenNESS Support for OVS as dataplane with OVN](https://github.com/otcshare/specs/blob/master/doc/building-blocks/dataplane/openness-ovn.md) * [openness-userspace-cni.md: Userspace CNI - Container Network Interface Kubernetes plugin](https://github.com/otcshare/specs/blob/master/doc/building-blocks/dataplane/openness-userspace-cni.md) -## Edge Applications +## Edge Applications * [applications: Folder Containing resource material for Edge Application developers](https://github.com/otcshare/specs/blob/master/doc/applications) * [openness_appguide.md: How to develop or Port existing cloud application to the Edge cloud based on OpenNESS](https://github.com/otcshare/specs/blob/master/doc/applications/openness_appguide.md) @@ -80,13 +81,13 @@ Below is the complete list of OpenNESS solution documentation * [openness_va_services.md: Video Analytics Services for OpenNESS](https://github.com/otcshare/specs/blob/master/doc/applications/openness_va_services.md) * [openness_service_mesh.md: Service Mesh support in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/applications/openness_service_mesh.md) -## Cloud Adapters +## Cloud Adapters * [cloud-adapters: How to deploy public cloud IoT gateways on OpenNESS Edge Cloud](https://github.com/otcshare/specs/blob/master/doc/cloud-adapters) * [openness_awsgreengrass.md: Deploying single or multiple instance of Amazon Greengrass IoT gateway on OpenNESS edge cloud as an edge application](https://github.com/otcshare/specs/blob/master/doc/cloud-adapters/openness_awsgreengrass.md) * [openness_baiducloud.md: Deploying single or multiple instance of Baidu IoT gateway on OpenNESS edge cloud as an edge application](https://github.com/otcshare/specs/blob/master/doc/cloud-adapters/openness_baiducloud.md) -## API and Schema +## API and Schema * [Edge Application API: EAA](https://www.openness.org/api-documentation/?api=eaa) * [Edge Application Authentication API](https://www.openness.org/api-documentation/?api=auth) @@ -96,15 +97,15 @@ Below is the complete list of OpenNESS solution documentation ## Orchestration * [openness-helm.md: Helm support in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/orchestration/openness-helm.md) -## Release history +## Release history * [openness_releasenotes.md: This document provides high level system features, issues and limitations information for OpenNESS](https://github.com/otcshare/specs/blob/master/openness_releasenotes.md) -## Related resources +## Related resources -* [OpenNESS Website - Developers : Website containing developer resources](https://www.openness.org/developers) +* [OpenNESS Website - Developers : Website containing developer resources](https://www.openness.org/developers) * [Intel Network Builders OpenNESS training ](https://builders.intel.com/university/networkbuilders/coursescategory/open-network-edge-services-software-openness) - + ## List of Abbreviations - 3GPP: Third Generation Partnership Project - CUPS: Control and User Plane Separation of EPC Nodes @@ -134,8 +135,8 @@ Below is the complete list of OpenNESS solution documentation - SGW-U: Serving Gateway - User Plane Function - TAC: Tracking Area Code - UE: User Equipment (in the context of LTE) -- VIM: Virtual Infrastructure Manager -- UUID: Universally Unique IDentifier +- VIM: Virtual Infrastructure Manager +- UUID: Universally Unique IDentifier - AMF: Access and Mobility Mgmt Function - SMF: Session Management Function - AUSF: Authentication Server Function @@ -148,8 +149,8 @@ Below is the complete list of OpenNESS solution documentation - AF: Application Function - SR-IOV: Single Root I/O Virtualization - NUMA: Non-Uniform Memory Access -- COTS: Commercial Off-The-Shelf +- COTS: Commercial Off-The-Shelf - DU: Distributed Unit of RAN - CU: Centralized Unit of RAN -- OEK: OpenNESS Experience Kit -- IDO: Intel Distribution of OpenNESS +- OEK: OpenNESS Experience Kit +- IDO: Intel Distribution of OpenNESS diff --git a/doc/applications-onboard/network-edge-applications-onboarding.md b/doc/applications-onboard/network-edge-applications-onboarding.md index 13f4ed1e..a41b2c69 100644 --- a/doc/applications-onboard/network-edge-applications-onboarding.md +++ b/doc/applications-onboard/network-edge-applications-onboarding.md @@ -1,5 +1,5 @@ ```text -SPDX-License-Identifier: Apache-2.0 +SPDX-License-Identifier: Apache-2.0 Copyright (c) 2019-2020 Intel Corporation ``` @@ -17,10 +17,10 @@ Copyright (c) 2019-2020 Intel Corporation - [Onboarding OpenVINO application](#onboarding-openvino-application) - [Prerequisites](#prerequisites-1) - [Setting up networking interfaces](#setting-up-networking-interfaces) - - [Deploying the application](#deploying-the-application) + - [Deploying the Application](#deploying-the-application) - [Applying Kubernetes network policies](#applying-kubernetes-network-policies-1) - [Setting up Edge DNS](#setting-up-edge-dns) - - [Starting traffic from client simulator](#starting-traffic-from-client-simulator) + - [Starting traffic from Client Simulator](#starting-traffic-from-client-simulator) - [Onboarding Smart City sample application](#onboarding-smart-city-sample-application) - [Setting up networking interfaces](#setting-up-networking-interfaces-1) - [Building Smart City ingredients](#building-smart-city-ingredients) @@ -29,7 +29,7 @@ Copyright (c) 2019-2020 Intel Corporation - [Enhanced Platform Awareness](#enhanced-platform-awareness) - [VM support for Network Edge](#vm-support-for-network-edge) - [Troubleshooting](#troubleshooting) - - [Useful commands:](#useful-commands) + - [Useful Commands:](#useful-commands) # Introduction This document aims to familiarize users with the Open Network Edge Services Software (OpenNESS) application on-boarding process for the Network Edge. This document provides instructions on how to deploy an application from the Edge Controller to Edge Nodes in the cluster; it also provides sample deployment scenarios and traffic configuration for the application. The applications will be deployed from the Edge Controller via the Kubernetes `kubectl` command-line utility. Sample specification files for application onboarding are also provided. @@ -40,13 +40,13 @@ The following application onboarding steps assume that OpenNESS was installed th # Building applications Users must provide the application to be deployed on the OpenNESS platform for Network Edge. The application must be provided in a Docker\* image format that is available either from an external Docker repository (Docker Hub) or a locally built Docker image. The image must be available on the Edge Node, which the application will be deployed on. -> **Note**: The Harbor registry setup is out of scope for this document. If users already have a docker container image file and would like to copy it to the node manually, they can use the `docker load` command to add the image. The success of using a pre-built Docker image depends on the application dependencies that users must know. +> **Note**: The Harbor registry setup is out of scope for this document. If users already have a docker container image file and would like to copy it to the node manually, they can use the `docker load` command to add the image. The success of using a pre-built Docker image depends on the application dependencies that users must know. -The OpenNESS [edgeapps](https://github.com/otcshare/edgeapps) repository provides images for OpenNESS supported applications. Pull the repository to your Edge Node to build the images. +The OpenNESS [edgeapps](https://github.com/otcshare/edgeapps) repository provides images for OpenNESS supported applications. Pull the repository to your Edge Node to build the images. -This document explains the build and deployment of two applications: -1. Sample application: a simple “Hello, World!” reference application for OpenNESS -2. OpenVINO™ application: A close to real-world inference application +This document explains the build and deployment of two applications: +1. Sample application: a simple “Hello, World!” reference application for OpenNESS +2. OpenVINO™ application: A close to real-world inference application ## Building sample application images The sample application is available in [the edgeapps repository](https://github.com/otcshare/edgeapps/tree/master/sample-app); further information about the application is contained within the `Readme.md` file. @@ -86,7 +86,7 @@ The following steps are required to build the sample application Docker images f Additionally, an application to generate sample traffic is provided. The application should be built on a separate host, which generates the traffic. -1. To build the client simulator application image from the application directory, navigate to the `./clientsim` directory and run: +1. To build the client simulator application image from the application directory, navigate to the `./clientsim` directory and run: ``` ./build-image.sh ``` @@ -118,17 +118,17 @@ Kubernetes NetworkPolicy is a mechanism that enables control over how pods are a ```yml apiVersion: networking.k8s.io/v1 kind: NetworkPolicy - metadata: + metadata: name: eaa-prod-cons-policy namespace: default spec: podSelector: {} - policyTypes: + policyTypes: - Ingress ingress: - - from: + - from: - ipBlock: - cidr: 10.16.0.0/16 + cidr: 10.16.0.0/16 ports: - protocol: TCP port: 80 @@ -146,40 +146,137 @@ Kubernetes NetworkPolicy is a mechanism that enables control over how pods are a 1. To deploy a sample producer application, create the following `sample_producer.yml` pod specification file. ```yml + --- + apiVersion: v1 + kind: ServiceAccount + metadata: + name: producer + + --- + kind: ClusterRoleBinding + apiVersion: rbac.authorization.k8s.io/v1 + metadata: + name: producer-csr-requester + roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: csr-requester + subjects: + - kind: ServiceAccount + name: producer + namespace: default + + --- + apiVersion: v1 + kind: ConfigMap + metadata: + name: producer-csr-config + data: + certrequest.json: | + { + "CSR": { + "Name": "producer", + "Subject": { + "CommonName": "ExampleNamespace:ExampleProducerAppID" + }, + "DNSSANs": [], + "IPSANs": [], + "KeyUsages": [ + "digital signature", "key encipherment", "client auth" + ] + }, + "Signer": "openness.org/certsigner", + "WaitTimeout": "5m" + } + + --- apiVersion: apps/v1 kind: Deployment metadata: name: producer - spec: + labels: + app: producer + spec: replicas: 1 - selector: - matchLabels: - app: producer - template: + selector: + matchLabels: + app: producer + template: metadata: labels: app: producer spec: - tolerations: - - key: node-role.kube-ovn/master - effect: NoSchedule + securityContext: + runAsUser: 1000 + runAsGroup: 3000 + serviceAccountName: producer + initContainers: + - name: alpine + image: alpine:latest + command: ["/bin/sh"] + args: ["-c", "cp /root/ca-certrequester/cert.pem /root/certs/root.pem"] + imagePullPolicy: IfNotPresent + securityContext: + runAsUser: 0 + runAsGroup: 0 + resources: + requests: + cpu: "0.1" + limits: + cpu: "0.1" + memory: "128Mi" + volumeMounts: + - name: ca-certrequester + mountPath: /root/ca-certrequester + - name: certs + mountPath: /root/certs + - name: certrequester + image: certrequester:1.0 + args: ["--cfg", "/home/certrequester/config/certrequest.json"] + imagePullPolicy: Never + resources: + requests: + cpu: "0.1" + limits: + cpu: "0.1" + memory: "128Mi" + volumeMounts: + - name: config + mountPath: /home/certrequester/config/ + - name: certs + mountPath: /home/certrequester/certs/ containers: - - name: producer - image: producer:1.0 - imagePullPolicy: Never - ports: - - containerPort: 80 - - containerPort: 443 + - name: producer + image: producer:1.0 + imagePullPolicy: Never + volumeMounts: + - name: certs + mountPath: /home/sample/certs/ + ports: + - containerPort: 443 + volumes: + - name: config + configMap: + name: producer-csr-config + - name: ca-certrequester + secret: + secretName: ca-certrequester + - name: certs + emptyDir: {} ``` 2. Deploy the pod: ``` kubectl create -f sample_producer.yml ``` -3. Check that the pod is running: +3. Accept the producer's CSR: + ``` + kubectl certificate approve producer + ``` +4. Check that the pod is running: ``` kubectl get pods | grep producer ``` -4. Verify logs of the sample application producer: +5. Verify logs of the sample application producer: ``` kubectl logs -f @@ -187,19 +284,65 @@ Kubernetes NetworkPolicy is a mechanism that enables control over how pods are a The Example Producer eaa.openness [{ExampleNotification 1.0.0 Description for Event #1 by Example Producer}]}]} Sending notification ``` -5. Verify logs of EAA +6. Verify logs of EAA ``` - kubectl logs -f -n openness + kubectl logs -f -n openness Expected output: RequestCredentials request from CN: ExampleNamespace:ExampleProducerAppID, from IP: properly handled ``` -6. To deploy a sample consumer application, create the following `sample_consumer.yml` pod specification file. +7. To deploy a sample consumer application, create the following `sample_consumer.yml` pod specification file. ```yml + --- + apiVersion: v1 + kind: ServiceAccount + metadata: + name: consumer + + --- + kind: ClusterRoleBinding + apiVersion: rbac.authorization.k8s.io/v1 + metadata: + name: consumer-csr-requester + roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: csr-requester + subjects: + - kind: ServiceAccount + name: consumer + namespace: default + + --- + apiVersion: v1 + kind: ConfigMap + metadata: + name: consumer-csr-config + data: + certrequest.json: | + { + "CSR": { + "Name": "consumer", + "Subject": { + "CommonName": "ExampleNamespace:ExampleConsumerAppID" + }, + "DNSSANs": [], + "IPSANs": [], + "KeyUsages": [ + "digital signature", "key encipherment", "client auth" + ] + }, + "Signer": "openness.org/certsigner", + "WaitTimeout": "5m" + } + + --- apiVersion: apps/v1 kind: Deployment metadata: name: consumer + labels: + app: consumer spec: replicas: 1 selector: @@ -210,33 +353,84 @@ Kubernetes NetworkPolicy is a mechanism that enables control over how pods are a labels: app: consumer spec: - tolerations: - - key: node-role.kube-ovn/master - effect: NoSchedule + securityContext: + runAsUser: 1000 + runAsGroup: 3000 + serviceAccountName: consumer + initContainers: + - name: alpine + image: alpine:latest + command: ["/bin/sh"] + args: ["-c", "cp /root/ca-certrequester/cert.pem /root/certs/root.pem"] + imagePullPolicy: IfNotPresent + securityContext: + runAsUser: 0 + runAsGroup: 0 + resources: + requests: + cpu: "0.1" + limits: + cpu: "0.1" + memory: "128Mi" + volumeMounts: + - name: ca-certrequester + mountPath: /root/ca-certrequester + - name: certs + mountPath: /root/certs + - name: certrequester + image: certrequester:1.0 + args: ["--cfg", "/home/certrequester/config/certrequest.json"] + imagePullPolicy: Never + resources: + requests: + cpu: "0.1" + limits: + cpu: "0.1" + memory: "128Mi" + volumeMounts: + - name: config + mountPath: /home/certrequester/config/ + - name: certs + mountPath: /home/certrequester/certs/ containers: - - name: consumer - image: consumer:1.0 - imagePullPolicy: Never - ports: - - containerPort: 80 - - containerPort: 443 - ``` -7. Deploy the pod: + - name: consumer + image: consumer:1.0 + imagePullPolicy: Never + volumeMounts: + - name: certs + mountPath: /home/sample/certs/ + ports: + - containerPort: 443 + volumes: + - name: config + configMap: + name: consumer-csr-config + - name: ca-certrequester + secret: + secretName: ca-certrequester + - name: certs + emptyDir: {} + ``` +8. Accept the consumer's CSR: + ``` + kubectl certificate approve consumer + ``` +9. Deploy the pod: ``` kubectl create -f sample_consumer.yml ``` -8. Check that the pod is running: +10. Check that the pod is running: ``` kubectl get pods | grep consumer ``` -9. Verify logs of the sample application consumer: +11. Verify logs of the sample application consumer: ``` kubectl logs -f Expected output: Received notification ``` -10. Verify logs of EAA +12. Verify logs of EAA ``` kubectl logs -f @@ -283,7 +477,7 @@ This section guides users through the complete process of onboarding the OpenVIN ... 0000:86:00.0 | 3c:fd:fe:b2:42:d0 | detached ... - + kubectl interfaceservice attach 0000:86:00.0 ... Interface: 0000:86:00.0 successfully attached @@ -478,7 +672,7 @@ kubectl interfaceservice get ## Running Smart City 1. On the Camera simulator machines, assign an IP address to the ethernet interface which the dataplane traffic will be transmitted through to the edge office1 and office2 nodes: - + On camera-sim1: ```shell ip a a 192.168.1.10/24 dev @@ -530,7 +724,7 @@ kubectl interfaceservice get 5. From the web browser, launch the Smart City web UI at the URL `https:///` -## Inter application communication +## Inter application communication The IAC is available via the default overlay network used by Kubernetes - Kube-OVN. For more information on Kube-OVN, refer to the Kube-OVN support in OpenNESS [documentation](https://github.com/otcshare/specs/blob/master/doc/dataplane/openness-interapp.md#interapp-communication-support-in-openness-network-edge) diff --git a/doc/applications-onboard/openness-certsigner.md b/doc/applications-onboard/openness-certsigner.md new file mode 100644 index 00000000..014fb98e --- /dev/null +++ b/doc/applications-onboard/openness-certsigner.md @@ -0,0 +1,189 @@ +```text +SPDX-License-Identifier: Apache-2.0 +Copyright (c) 2020 Intel Corporation +``` + +# Certificate Signer +- [Overview](#overview) +- [Usage](#usage) + - [Deployment](#deployment) + +## Overview +Each application that needs the TLS authentication certificate should generate it using the Certificate Signer by sending a CSR via Certificate Requester. + +## Usage +Generally the CSR will be sent from a Pod's Certificate Requester InitContainer which then needs to be approved by an administrator using `kubectl certificate approve `. + +After that the Certificate Requester saves the certificate and key under `/home/certrequester/certs/cert.pem` and `/home/certrequester/certs/key.pem`. + +Application can use the certificate by having a shared volume mounted under `/home/certrequester/certs` in Certificate Requester container and under a requried path in its service container. + +Each application needs to perform mutual TLS authentication with the [EAA](openness-eaa.md). To achieve that, the application should trust the CA certificate `root.pem` that is stored in `ca-certrequester` Kubernetes Secret. + +### Deployment +In order to use Certificate Requester the following Kubernetes entities needs to be created: + +1. RBAC Service Account and Cluster Role Binding to a `csr-requester` Cluster Role. + + ```yml + --- + apiVersion: v1 + kind: ServiceAccount + metadata: + name: service-acc + + --- + kind: ClusterRoleBinding + apiVersion: rbac.authorization.k8s.io/v1 + metadata: + name: service-csr-requester + roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: csr-requester + subjects: + - kind: ServiceAccount + name: service-acc + namespace: default + ``` + +2. JSON CSR config: + - *CSR.Name*: Kubernetes CSR name + - *CSR.Subject*: https://golang.org/pkg/crypto/x509/pkix/#Name + - *CSR.DNSSANs*: A list of DNS SANs + - *CSR.IPSANs*: A list of IP SANs + - *CSR.KeyUsages*: Specifies valid usage contexts for keys, list of elements of type https://godoc.org/k8s.io/api/certificates/v1#KeyUsage + - *Signer*: Specifies Kubernetes Signer that will handle the CSR. OpenNESS Certificate Signer name should be used: "*openness.org/certsigner*" + - *WaitTimeout*: Specifies how much time the CSR can wait until it's approved before deletion. + + Sample config: + ```yml + --- + apiVersion: v1 + kind: ConfigMap + metadata: + name: service-csr-config + data: + certrequest.json: | + { + "CSR": { + "Name": "service", + "Subject": { + "CommonName": "ExampleNamespace:ExampleProducerAppID" + }, + "DNSSANs": [], + "IPSANs": [], + "KeyUsages": [ + "digital signature", "key encipherment", "client auth" + ] + }, + "Signer": "openness.org/certsigner", + "WaitTimeout": "5m" + } + ``` + +3. Sample deployment: + + ```yml + --- + apiVersion: apps/v1 + kind: Deployment + metadata: + name: service + labels: + app: service + spec: + replicas: 1 + selector: + matchLabels: + app: service + template: + metadata: + labels: + app: service + spec: + securityContext: + runAsUser: 1000 + runAsGroup: 3000 + serviceAccountName: service-acc + initContainers: + - name: alpine + image: alpine:3.12.0 + command: ["/bin/sh"] + args: ["-c", "cp /root/ca-certrequester/cert.pem /root/certs/root.pem"] + imagePullPolicy: IfNotPresent + securityContext: + runAsUser: 0 + runAsGroup: 0 + resources: + requests: + cpu: "0.1" + limits: + cpu: "0.1" + memory: "128Mi" + volumeMounts: + - name: ca-certrequester + mountPath: /root/ca-certrequester + - name: certs + mountPath: /root/certs + - name: certrequester + image: certrequester:1.0 + args: ["--cfg", "/home/certrequester/config/certrequest.json"] + imagePullPolicy: Never + resources: + requests: + cpu: "0.1" + limits: + cpu: "0.1" + memory: "128Mi" + volumeMounts: + - name: config + mountPath: /home/certrequester/config/ + - name: certs + mountPath: /home/certrequester/certs/ + containers: + - name: service + image: service:1.0 + imagePullPolicy: Never + volumeMounts: + - name: certs + mountPath: /home/sample/certs/ + ports: + - containerPort: 443 + volumes: + - name: config + configMap: + name: service-csr-config + - name: ca-certrequester + secret: + secretName: ca-certrequester + - name: certs + emptyDir: {} + ``` + After applying such deployment we can check the Pod and CSR status: + + ```bash + $ kubectl get pods + NAME READY STATUS RESTARTS AGE + service-7b6b4c7bdf-4xv6g 0/1 Init:1/2 0 9s + $ kubectl get csr + NAME AGE SIGNERNAME REQUESTOR CONDITION + service 11s openness.org/certsigner system:serviceaccount:default:service Pending + ``` + + To approve the CSR and start the Service: + + ``` + $ kubectl certificate approve service + certificatesigningrequest.certificates.k8s.io/service approved + $ kubectl get csr + NAME AGE SIGNERNAME REQUESTOR CONDITION + service 82m openness.org/certsigner system:serviceaccount:default:service Approved,Issued + $ kubectl get pods + NAME READY STATUS RESTARTS AGE + service-7b6b4c7bdf-4xv6g 1/1 Running 0 54s + ``` + +4. Cleanup can be perfomed by: + - deleting the entities defined in a YAML file in the previous step: `kubectl delete -f ` + - deleting the CSR: `kubectl delete csr service` diff --git a/doc/applications-onboard/openness-eaa.md b/doc/applications-onboard/openness-eaa.md index b81f3097..ecb5ebb6 100644 --- a/doc/applications-onboard/openness-eaa.md +++ b/doc/applications-onboard/openness-eaa.md @@ -5,13 +5,13 @@ Copyright (c) 2020 Intel Corporation # Edge Application Agent (EAA) - [Edge Application APIs](#edge-application-apis) -- [Edge Application Authentication APIs](#edge-application-authentication-apis) +- [Edge Application Authentication](#edge-application-authentication) #### Edge Application API support -There are two types of applications that can be deployed on the Edge Node: -- **Producer Application**: The OpenNESS Producer application is an edge compute application that provides services to other applications running on the edge compute platform (location services, mapping services, transcoding services, etc.) -- **Consumer Application**: The OpenNESS Consumer application is an edge compute application that serves end users traffic directly (CDN App, Augmented Reality App, VR Application, Infotainment Application, etc.). Pre-existing cloud applications that do not intend to call the EAA APIs but would like to serve the users (without any changes to the implementation) on the edge also fall into this category. +There are two types of applications that can be deployed on the Edge Node: +- **Producer Application**: The OpenNESS Producer application is an edge compute application that provides services to other applications running on the edge compute platform (location services, mapping services, transcoding services, etc.) +- **Consumer Application**: The OpenNESS Consumer application is an edge compute application that serves end users traffic directly (CDN App, Augmented Reality App, VR Application, Infotainment Application, etc.). Pre-existing cloud applications that do not intend to call the EAA APIs but would like to serve the users (without any changes to the implementation) on the edge also fall into this category. API endpoint for edge applications is implemented in the EAA (Edge Application Agent) microservice and is implemented in Go lang. APIs are classified into: @@ -25,25 +25,20 @@ API endpoint for edge applications is implemented in the EAA (Edge Application A | **Edge Service list subscription** | This API endpoint allows a Consumer Application to get the list of Producer Application services it has been availed of\. | CDN Application can call this API to check if it has subscribed to Location and Transcoding services\. | ### Edge Application APIs -Edge Application APIs are implemented by the EAA. Edge Application APIs are important APIs for Edge application developers. EAA APIs are implemented as HTTPS REST. There are two types of use cases: -1. **Porting an existing Public/Private Cloud application to the edge compute based on OpenNESS**: This is a scenario where a customer wants to run existing apps in the public cloud on OpenNESS edge without calling any APIs or changing code. In this case, the only requirement is for an Application image (VM/Container) should be uploaded to the controller and provisioned on the Edge Node using OpenNESS Controller. In this case, the Application cannot call any EAA APIs and consume services on the edge compute. It just services end-user traffic. -3. **Native Edge compute Application calling EAA APIs**: This is a scenario where a customer wants to develop Edge compute applications that take advantage of Edge compute services resulting in a more tactile application that responds to the changing user, network, or resource scenarios. +Edge Application APIs are implemented by the EAA. Edge Application APIs are important APIs for Edge application developers. EAA APIs are implemented as HTTPS REST. There are two types of use cases: +1. **Porting an existing Public/Private Cloud application to the edge compute based on OpenNESS**: This is a scenario where a customer wants to run existing apps in the public cloud on OpenNESS edge without calling any APIs or changing code. In this case, the only requirement is for an Application image (VM/Container) should be uploaded to the controller and provisioned on the Edge Node using OpenNESS Controller. In this case, the Application cannot call any EAA APIs and consume services on the edge compute. It just services end-user traffic. +3. **Native Edge compute Application calling EAA APIs**: This is a scenario where a customer wants to develop Edge compute applications that take advantage of Edge compute services resulting in a more tactile application that responds to the changing user, network, or resource scenarios. OpenNESS supports the deployment of both types of applications mentioned above. The Edge Application Agent is a service that runs on the Edge Node and operates as a discovery service and basic message bus between applications via `pubsub`. The connectivity and discoverability of applications by one another is governed by an entitlement system and is controlled by policies set with the OpenNESS Controller. The entitlement system is still in development but currently allows all applications on the executing Edge Node to discover one another as well as publish and subscribe to all notifications. The Figure below provides the sequence diagram of the supported APIs for the application. -More details about the APIs can be found here [Edge Application APIs](https://www.openness.org/api-documentation/?api=eaa) +More details about the APIs can be found here [Edge Application APIs](https://www.openness.org/api-documentation/?api=eaa) ![Edge Application APIs](eaa-images/openness-eaa.png) _Figure - Edge Application API Sequence Diagram_ -### Edge Application Authentication APIs -OpenNESS supports the authentication of Edge compute apps that intend to call EAA APIs. Applications are authenticated by the Edge Node microservice issuing the requesting application a valid TLS certificate after validating the identity of the application. In the OpenNESS solution, the Application can only be provisioned by the OpenNESS controller. There are two categories of Applications as discussed above and here is the implication for the authentication. -1. **Existing public cloud application ported to OpenNESS**: In this scenario, a customer may want to run existing apps in the public cloud on OpenNESS edge without calling any APIs or changing code. In this case, the Application cannot call any EAA APIs and consume services on the edge compute. It just services end-user traffic. Thus, the Application will not call an authentication API to acquire a TLS certificate. -2. **Native Edge compute Application calling EAA APIs**: In this scenario, a customer may want to develop Edge compute applications that take advantage of the Edge compute services resulting in a more tactile application that responds to the changing user, network, or resource scenarios. Such applications should first call authentication APIs and acquire a TLS certificate. Authentication of Applications that provide services to other Applications on the edge compute (Producer Apps) is mandatory. +### Edge Application Authentication -For applications executing on the Local breakout, the Authentication is not applicable since it is not provisioned by the OpenNESS controller. +Connection to the EAA can be established after performing mutual TLS authentication. To achieve that the application needs to generate its certificate using Certificate Signer and should trust the CA certificate `root.pem` that is stored in `ca-certrequester` Kubernetes Secret. -Authentication APIs are implemented as HTTP REST APIs. - -More details about the APIs can be found at [Application Authentication APIs](https://www.openness.org/api-documentation/?api=auth). +The details can be found on the [Certificate Signer page](openness-certsigner.md). From 38cdac331433cb72138db7b1ada6628c689bda13 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Thu, 17 Dec 2020 23:47:16 +0800 Subject: [PATCH 133/148] fix typo errors --- doc/building-blocks/emco/openness-emco.md | 69 ++++++++--------------- 1 file changed, 23 insertions(+), 46 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index a7a9f6fc..f35ef98b 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -266,41 +266,18 @@ EMCO supports [multiple deployment options](https://github.com/otcshare/EMCO/tre - Run script `./deploy_ne.sh -f central_orchestrator`. Deployment should complete successfully. In the flavor, harbor registry is deployed to provide images services as well. ```shell -# kubectl get pods -A -NAMESPACE NAME READY STATUS RESTARTS AGE -emco clm-6979f6c886-tjfrv 1/1 Running 0 14m -emco dcm-549974b6fc-42fbm 1/1 Running 0 14m -emco etcd-5f646586cb-p7ctj 1/1 Running 0 14m -emco mongo-5f7d44fbc5-n74lm 1/1 Running 0 14m -emco ncm-58b85b4688-tshmc 1/1 Running 0 14m -emco orchestrator-78b76cb547-xrvz5 1/1 Running 0 14m -emco ovnaction-5d8d4447f9-nn7l6 1/1 Running 0 14m -emco rsync-58b75849dd-99z6t 1/1 Running 0 14m -harbor harbor-app-harbor-chartmuseum-78c8d5567c-zfm68 1/1 Running 0 15m -harbor harbor-app-harbor-clair-779df4555b-bc4xv 2/2 Running 1 15m -harbor harbor-app-harbor-core-86745c7fdd-rqfl8 1/1 Running 0 15m -harbor harbor-app-harbor-database-0 1/1 Running 0 15m -harbor harbor-app-harbor-jobservice-b44ffbcdd-kxxbm 1/1 Running 0 15m -harbor harbor-app-harbor-nginx-8f4b9595-mthng 1/1 Running 0 15m -harbor harbor-app-harbor-notary-server-64c6df8547-w6zxt 1/1 Running 0 15m -harbor harbor-app-harbor-notary-signer-68cf88854b-h97mk 1/1 Running 0 15m -harbor harbor-app-harbor-portal-fd5ff4bc9-qn9hq 1/1 Running 0 15m -harbor harbor-app-harbor-redis-0 1/1 Running 0 15m -harbor harbor-app-harbor-registry-68699595cb-cdddd 2/2 Running 0 15m -harbor harbor-app-harbor-trivy-0 1/1 Running 0 15m -kube-system coredns-f9fd979d6-j4j2m 1/1 Running 0 15m -kube-system coredns-f9fd979d6-x546t 1/1 Running 0 15m -kube-system etcd-211node 1/1 Running 0 18m -kube-system kube-apiserver-211node 1/1 Running 0 18m -kube-system kube-controller-manager-211node 1/1 Running 0 18m -kube-system kube-ovn-cni-pvbfl 1/1 Running 0 15m -kube-system kube-ovn-controller-54d8c5d5ff-jjgk6 1/1 Running 0 15m -kube-system kube-ovn-pinger-tst92 1/1 Running 0 15m -kube-system kube-proxy-llqzr 1/1 Running 0 18m -kube-system kube-scheduler-211node 1/1 Running 0 18m -kube-system ovn-central-54f768b868-vtmjl 1/1 Running 0 17m -kube-system ovs-ovn-jq6dn 1/1 Running 0 17m - +# kubectl get pods -n emco +NAMESPACE NAME READY STATUS RESTARTS AGE +emco clm-6979f6c886-tjfrv 1/1 Running 0 14m +emco dcm-549974b6fc-42fbm 1/1 Running 0 14m +emco dtc-948874b6fc-p2fbx 1/1 Running 0 14m +emco etcd-5f646586cb-p7ctj 1/1 Running 0 14m +emco gac-788874b6fc-p1kjx 1/1 Running 0 14m +emco mongo-5f7d44fbc5-n74lm 1/1 Running 0 14m +emco ncm-58b85b4688-tshmc 1/1 Running 0 14m +emco orchestrator-78b76cb547-xrvz5 1/1 Running 0 14m +emco ovnaction-5d8d4447f9-nn7l6 1/1 Running 0 14m +emco rsync-99b85b4x88-ashmc 1/1 Running 0 14m ``` ## EMCO Example: SmartCity Deployment @@ -423,17 +400,17 @@ The pods on the edge cluster are in the running status as shown as below: ```shell # kubectl get pods -NAME READY STATUS RESTARTS AGE -traffic-office1-alert-5b56f5464c-ldwrf 1/1 Running 0 20h -traffic-office1-analytics-traffic-6b995d4d6-nhf2p 1/1 Running 0 20h -traffic-office1-camera-discovery-78bccbdb44-k2ffx 1/1 Running 0 20h -traffic-office1-cameras-6cb67ccc84-8zkjg 1/1 Running 0 20h -traffic-office1-db-84bcfd54cd-ht52s 1/1 Running 1 20h -traffic-office1-db-init-64fb9db988-jwjv9 1/1 Running 0 20h -traffic-office1-mqtt-f9449d49c-dwv6l 1/1 Running 0 20h -traffic-office1-mqtt2db-5649c4778f-vpxhq 1/1 Running 0 20h -traffic-office1-smart-upload-588d95f78d-8x6dt 1/1 Running 1 19h -traffic-office1-storage-7889c67c57-kbkjd 1/1 Running 1 19h +NAME READY STATUS RESTARTS AGE +traffic-office1-alert-5b56f5464c-ldwrf 1/1 Running 0 20h +traffic-office1-analytics-traffic-6b995d4d6-nhf2p 1/1 Running 0 20h +traffic-office1-camera-discovery-78bccbdb44-k2ffx 1/1 Running 0 20h +traffic-office1-cameras-6cb67ccc84-8zkjg 1/1 Running 0 20h +traffic-office1-db-84bcfd54cd-ht52s 1/1 Running 1 20h +traffic-office1-db-init-64fb9db988-jwjv9 1/1 Running 0 20h +traffic-office1-mqtt-f9449d49c-dwv6l 1/1 Running 0 20h +traffic-office1-mqtt2db-5649c4778f-vpxhq 1/1 Running 0 20h +traffic-office1-smart-upload-588d95f78d-8x6dt 1/1 Running 1 19h +traffic-office1-storage-7889c67c57-kbkjd 1/1 Running 1 19h ``` The pods on the cloud cluster are in the running status as shown as below: From 13b95c97476c7cc92ccc25ff9fe79e792fa187df Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Fri, 18 Dec 2020 00:50:53 +0800 Subject: [PATCH 134/148] address review comments about ion --- .../hddl-images/hddlservice.png | Bin 36868 -> 12536 bytes .../openness_hddl.md | 6 ++---- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/doc/building-blocks/enhanced-platform-awareness/hddl-images/hddlservice.png b/doc/building-blocks/enhanced-platform-awareness/hddl-images/hddlservice.png index 415e1c6e7072d5c7d23f1e06b15f6e6ab1f1e64e..118f5206cfba3cd8a245f5ecba045184dab66ada 100644 GIT binary patch literal 12536 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 EH}IVZ!~g&Q literal 36868 zcmeFYcT`i|zBY;#d=(K<=^&yaB2^%CEC>n;0s_*4h;*p|LJMF6DFKlxT_d3M9zu(V z5a~^7LMRbJODLfxgxnS1z0W=SJ9mt8zdQClf|;LTX{Z0!M>rI@{B+Z{?X~Oa zmSp}Ur)s(DHY7Uo+2Q~0QF86$Jk{yX9vpCH-j~P4JN8@l<-c!Y|Au$_pM3;ge1+_@ zJ@95>)!Oe~eOGF{!=sc@zn$+@8{~S58y2N1iOZc08M4ob3#N#Kqda_-gPofUoNz0v z$xBdWH4_in9}~wVFvEfMUS!ut7~?usNo#-q@!aaTHf6O2g7OJOqm3#;Jv_Gs?~yW^ z{YKAtB*mD&b&0aNRodIa9lPyXn7$TVT*bG9Zdp@daCzYYvxK!@oXY%81_%0&+qW&t z2jTmj`=ib}-@$8~uaQ(y=}uQy?H;wab;(9pXGwucv1bp#y6)Crdrq>oudBqu3Y!=$ z9Rv^=c?F~=aV|F?^I(1wv?S#Dp*B>hp`gL-5UDxA#w+?`58>?5QIOHg7X?Uk6+XJ` z2`Kt(xu#C9UL~QrPYLa2V{o>6gcvio1TmzI5I-R(uCCSlZL3y3@>!)xHwo)2WwyaR z46O_hFy$w5$NclZ)N_;HJM>!qGG;M(?B$cDzI^2e*;GJX)wkn&c=aY_pa{3@)UPw> z!n^JSceEiriWAcgjQx$e0^bTDf#4+OMM;cSFE?a(EU3p};M=?@@>;L8uGX!Ml%*#@3b#KVk^x)JR0c;b6!) z`K;&;H?tC}0j0Rx*^x5iH2BXiSqb68GzIW+JwBS;GY=Jbh}$+b$nlf!;pf@;832)LMUUO>DD0LNR z>EoWCS}T6u&=&4fcR6OWy5cB9Fg&YQ6If1}AvXW~wA}2ww~w;-n7_k=piZ8OKZ+0o zk+-?VIb%&T(ziT#TUE(fW)qk@3kbV=MQxR(hPxru=`TXwRoj*=e5LuJ<`3aKW}gv- z)n}7KioJ#<=A`e92oB9|@;Y=s$gX!cu^=4M#jIPH6Bs8er+fYkI|~e(S|4$ecAsLP z<}#|12C+OneimBNRSd3*mCxjXOoEi;yoy9UFqNg#-MYP470_{sf&NP9y$ERm_tO>q zc#rjNmBk+)5p@y?zLInc1$<`0xrS17Criv$b;TS*@Z_T3K9EwwzUq8aZ7mXzyR)BB zHM@*kcGyZjBw}i-_2S`D(Vk^K(O0+PT({nJhpxx41$&1Y5m5n*(z;&*b#cwVK*V-1 zs%m~dz}b&bQ!mgYBS~6aMKn&njhR(maPk|ks3S;_pEu~<>J&aSC-4reY_&L6cuYAq z+_1@Xcn{rDpie}@BUS!(ThXaZqv0;6@dHrl2gjiwM%EK(bR9594d#5IBEsJ?&T-hV za74S?^cpk9Cr&&!Q)LB)^5+@+(mULb$xYTg`kdbI5n-_cPW5xT>pT0^C#ztE2C`U7)aqMMHMg=35EOQdueKur15>aTRW z(gt_>@ujSU)r_JN3}+ERS=Z-QtX-df6FE?^AT+}Eu;^Q{od#y1b-h98RI@9?1ofD^ zeYmeTm(LTgUe;yvzI5K9eNSZjL**0urcbuBFHImO_pR&!hWuWN?FjJle{mMCV4TSN>W74`#%EgDo!*Ji?aGHubqo- zHIkyQ3LXht_!!*#RjP zh7d=%_vh*PjiD=e*)-o@zRvA?4Msa5R9g;J*>PI&F{t$3{JYaEkdyxQA+RppQnef^ z)hb@9slmXnj#V_E`2G&MMM@<*l$qPFo@NdS4)}J1&E)Y$e@TMzMB@fmlEp{cka6^6 zXr}to7oVrR?m+6Y&Z-dz>=KpDg2AJU2j{&TfgsJ8Xq0Jm`+3|&Uu7!kmFh4sj@QPr z{P^N&R~#EyB4KOAGnK*tjB{W8ApUC}->tKzpAn8L?@!v)`pmy=skfUcu^w1%{*d|? zB_%OIb`#m$p9m+==3DQ$Rsor4sP(hy^#Q2}>HEi1@Phe`pVkDf;d148OxO|y8TEszJ+ATAEqWj))Q!q$r97xtn zT%1NF4dgE;t8E-}QQ4LslCPy|zJzFqxhboH#LQPpliF#}QTpB?U;yLDFla|wQfwWN zy;0uxEM!9U(<&`~p25!LA32`K`&K=F%3&rs#8@V>!(C zaOg`HGtl+~!w5cflQu*RGDwUf=Janb8r-5NKdz|oKN+rZ1Xu*mHiEKq{%&9zunwkY zMeMgH(vs$cHc>tk1#E%bpLgMQR>ic@VWs^oj53ul@304!$X%mCmB7T%r#<|@G-U$* z6B;hQ+1aBek7RlBG;u`}_*ztZILvQLZ7ySG0D6Yya$3yub)M$`4qgAxB2X|(nDf*F z4_)WBn8d98jRxC;jRe70alTl$00NKt`d!`5lsFq83}sB%{11dRojw3Q{EG9G_LZ>* zIKSbdW*OOAH^yn3rRgbXstLvW!bFedy-aa(5S8W1jGOW!w4E%cr-esf4y{Y!bPU>=^b}qVS(-=CkwyZlh{O? zaG+h1zPIr5c$!;YmNnE(12gSxptrDD>QMt^QlNi%cw3m^ugh)y>$%Ppv`1NcMc)@R zkvLFbB2HgV5qGOG$Fs4pFy|j=UU4zkF0NaGJ;geCpawg47O2n8+CaziOZ$Go)-ZA| zDO@@fwM&5k*B6+b(63v{UoDi!hU0beHu69U*cQ|_K2cvuBv;VyF0f{E>l^u?mC)%o zyV`CA>21D4^k~c&bh5c=W`D(B2QnFW7N(WGmTIr*b$@L~ zbiuKxgMMXOWXtg)MlKn`H)7ICNQT`JZi!qMnkA{KZ`&#N&W5zvza4S&6-H#Qr|R`P z;_}q?AJ3E%HrG+T3N&Dv`hdgSkPKdZ^(vvDaSbjG+p6r|^1RT84W=aOtGcc3i@coq zLZHooK(~?lBIAg-Iqln3qHlv{C5-EcS#ve>V$>4qW+|&QVsc(nh}a>Kj=haz6ji1r zL{uLQDW0KL#ElZ=exGE{*efRUVCULt%;}GIDB;}EY^7xIw(T`yRp7Gi_5=hm{W-xK z5q&4x8(|wQ=`G41N3nvD5$LhXbYk8a`Xd|GezOf;q4?7GgR_Q`+J-LJb080)# zV8g!cr)TVV-`_b;{m?6qZHe?m7LD*HlnaIi>yCi2Ry`W^V`gvrBwuz;2QTQoqLue* zh-Z3fUwn2X;LC5z|H75`lQv^$ zyqf^aLZH2W1niDSUlM{6;OWRn7`*8g?s9BnFs#iEvvjd%No7gi14vt>KT%Q>8~{0E z_x98^ZPOAY7}A)|M(OYb-Kt#J9rSAvpTI1Co@($j38zFiW%OU^rSK{U92CMprn z*q>wTn$OQ<;}V^U#-KNc=iCSyvecc$Le|^(TI+nnkDLX`qW45uVleP*21d3keMBv9 zzW!0Mp<32Vz?ax@IOL&_!Se0bWAOJ_LTkdA6`kb{5|T(0N$pZ*17VO(%#w!4f-<;Xjc>Z7)n~RRiXJXY*2yIsTHj-Gz_s~pdU;kG?EQ{t= z{-E$h_aJf@yg}rE`5dArc@A)C=G?VS8?8SE1f<2-Kod9 zkjK_CHawPCHi0Tic6@sZ$+u(hD`0;VQy14nssg})%xPvi^0*_zCwjhfRq9sTbjOv~ zSHvDh(b@u$xdpzBF8h15`_oUzFl z-U+&&*}U7+4-Be0#QBZXA^)iJdR2HWmv0v0#9fd_fF58V-uGPkPQv4(kMp(3A=YnOHC(0-q24m7e`|V?#Pu{qhawZwm6M6e)dX-S?%nv;km$r zeXjQQxje`s@|c4q2RUbNUAPff7I;Cd^AO7u7bYtNlRjALEmyT#HNTR<$|_qFlp9Hh!85SS?I^7!ZRf4um)3;yt9ow|*~1pD9zKYlK(d4D^A z>MwILbeB(@<^3cCdHt1sbxTrvL%Yn9y)YtuhaE`T5B?GF1S0Rt;uJ1`^ zbK2~UJFURYKykVM@=EB#sCCwsHw_7A4`P-Gm!zF*L@&Zew5!!_`(CIi2vP3MP5nXs zemo-fG3!4PZ1IoY8N~9fuh!~#9+Krzn8^1Em2vwNoYR-syO}43C;?;?s=rMYFB_0B z{HEn(Cp`R0_e06vhna7S3$lA4CTM*pR+bx~%!RLpG#}~C#zyc=jFt$ki0A*-zWq9u zq)jz#{cJ@y4LKiDVIvsNhmp;gj)he1PYVP7yD?}MnxOpGGZLA|z%uIgZ1I^gF{3$5`uiZy5HHP2==L?QWv}O)JZ)b3 zudjGK49^*&@Y1}$9~1A+Qs*I?iv49d_^IKh@^{tm;}s1ztMlAc6TGqrYT6&-{fp-7 zsY*kfgBZaS04Vi^GpCcw0}p89{d+p8Ws5rmitg>hP>&FZZarz(3cTBq7_07A_W7G} z)pf^I0nH&M8v4DyNmojZhc85{uP>O`4W#=7JARd831l9SBk$W)t?P70Ctg z0SaAAZ>v#istuX#Xee*JyY)4}TXQDZq}M(JGkPvgP&B`gSTrv6U_%)$$3ApkrN>~I z<~h6p#Lo?@Ah*ii#eHqnnpR&gU|r@N+6uyP4rjL195yGtrBo?>xPxJlhE0rXs+Dqx zGb~l3Km#46H)+U{>LgduZuj3(tpA0r{hz{jJ%(n5W{%AqJpZuzCv00wCD1Kfv zZvZyUZPhj<^upZdVHPQ)5%a|F$48!rnUg7{AxQ&>I7KY|O3$PpHn$4vE-vW*gbDIu z(f~KRZ1}o9Xt`XcoGmc@LPpFxIiKSemg+lGQ*;1J&e^MS%D6WL=;mkEP)Q{X6)5$R zxUibc(hvoZ%3Ijm5d7X;qTl#ehR$G#^ALrb2vF)g%oMkA;O0si=SLE!&hMmfHt#r1 zjoj-!PT;2Bmv*DVTcaU}XwkUmcx2rpS}if_m%o0}g)f2I^+2)fQ3eW#B9O`FMPK40 zxkOy6f8Tyx4xP*#0Q_!ae;Xw2Q74}3TKd2_8)h{AyfU~&3csE_2P@PY!whB(H#~@$ zr+1j8xf!K_q;pLQ)ATZc4T&eu0lW4^9Bw46l++*9Q~GfQ%Vvii^BqYnslAZf8=~mJ z^JZRDdpkK?0!RidG8PBHPju5{?ZR7)qGy|EJ12S4%ig= zb{KG=8|-X>7_zuQJ3L%v_y?TY>=9_Zcc2iZMqlWD&n5cdZONH!<>}XnextTdq5Yxx z?XxrG9at&z_aMKuwKxuZ)41b(6*Kp^V=Hye$m~jo%@EwIab|X&Hoh$Ba zoH<^TIu6*lsj&D2%MHy_z_9Sdn=2emyVA}>jBUnj@y1LkLj}YK7_H~#oWFUUJctjx zH-qDO!^SE4Fqo2VTsQxzp6L>lxrpa?`08CZJ1xN^M z3P}i6o`G2h*h4CsuF!yHBZ29}3UaQ)MLzfdVlENAmm^PL`11=#x*^?;`sK1Q!ufBi zSa8Z{%kVs{sJ_kNR-;46TzP&pDi_pLu6z@>hT#x05a@)16tNRpwSbp)`z@PoaB_Wb z_1+rm9{(Y7tB)*r!@C?W=GE}-M^@SEpL0& zPUcMPF-p_k?3^q(B!H5t=f&_t#1lq4FmaSKah6&6^Ad{^7?h1;<{Xd(pUCYxu(2pS zJX#N(@HJD}nR@l69^tc)+x@NN3_^xL+@8?(_Jd#q#U*Vtd?K?MI^TFi)d}TKD{8tG zJE1%u=Sx*wK;K(OM^ev|e;FIs(a6o;DpYiUv)w?%rJj=d2fjUe=vQqM zUzpCs%;FEP$vp@6Dz7!5278X$qWTeRPKax_#9tCeOaHu)sG8JvrOE{*t@GflXf_AC z?+sT5Phpfiz?4*v#_9l=|B@vHF@u8uO-8iMa}D=^tWTx>`UG5@eC<(|u*fN_h>Tm2 zMRmv1g?jtJ2cYiKzAcMa6Bu=}*Djy7=s{FrsSw|~_G2D|0;0wx##8W~^$^=zDAsNM zv?fFPP#YoE_2^5)W-lXypPkdRW=Y~;CtFB_F}o|bG+96ev!BwVEC#BeZvl0Ec&VV^ zqmS=z59te5lD#%DP4Fp{$#T%)M$UcHPR$=bvFqi8CeE%JuF_X>MX?wc!PX#3H-J0_ z^-+KW!I(`Y>~5K=*9Dvt`83&YX#(%NjuWX^dLg)1=n5(EKf z3+Y_{D>Lzu=+h1N7%kGp?}IL1!wYy0SY}n~+w&F7@?Ll*xG+DfCj|s66s-#6uvL)u zxs;~$B%G7eUgbgopJ^zAhKe`YMvaTHuxyAjQyFJ78AxSMV#v#9Hh^C?Cb_*$D=IW) zx4wXj;jFfY;U34mXP`{-~v=S!e-n7TX42G`tecc?cT8n2N3%fCS@Y}~^1ldrQN%F={g6Px7B zqZbgqcES*w)cZxs3nnJ}9cAI6)M2XiQ>b^zA5I25VeP`yk+6FgM>Ba^k|dl=jy4u= z1{5lI>RhGn{mNh0y`6ZM=N@b_NdBxtCa$oxW7T}<(o^21+|&1!d(EgS}DtG zm{UL*a&mpO1^{n)I9sWm5A-k@ag1?*<;ex0$$N4dMoFJMv#cK$e>6JxOD}&jc%h)s z+b+?JPUO7V66L3!ci^dSUGg*`jU`Yr5qUTI% z?+ba}aF@Skk;u<(9}v!SM16pY`pEZoyA#FXb&YdR2LQ%M9b-El7M8a3KTkAlsi9Wx zfG?{ax1m|M%m4W7K=^1;VyjkEsqem#!{?_h{(AZr-hITZ^IFVB`IU>>Dk=6d7dB!B zP7JM|7>XR#E}-J#s_>*}8z537On>zjds<5q^5grzokq_KAv>fZsJrw#0f z{1fL*%m1MX!`kKS+G22gztO6B@7L*$V;_=i6OHf3^u(}~UcJnQh4ebmKxk+Em!^U! zzG?ge&}`DVA;!52uVb)H^LM&8=Ow=XSTrCrfrzm|x5Qaa#gqd!_ZzAg^1A(oE~OMT z*_c_$*0oPEtF+CmU7H5r4Z{U+l6@aPS4{PBbIX>g+Fo)!$FSf&$-|hszs`F(vG zjSjF@9fBAx`rvgrgE5EgKN>T{GTse1=g%gED}{Ra->!sB!n!$s&U#G-F7?ItbB=09 z#;#NSONhM&&OI4(fwhF#IZ{W6#iUTjh%Rm$wxZ`;Se&-xg=QmlHbtmv_Hq0xC(7oJ z`5DbkO$bZ*>aKFQLFD_l)Sm?@7WpklqGe|)E!sY&yEj|cKdel@0$Tgf8zY5d=hSK< z`)2mujJZIc;WoB_PBc$d8GqxqXc=_x(NN88;pmlc)4D;O0}+#o6g=IA^uF;2@_xWA z?6+iA7AS?H_w2##fdR{G7`qvTc_@&PhR*;}1jA1USmrG`jqot2uFbyp^(&HM$g8by z@oavgKbOvt!`VbdgJT}bkVmK#>gc%_4jV&mkLFy#3H;VS-VU;{h&sVBf^N0^7p^r< zhtGxRpmUYD%iU%>9GqV+9(JF&42hD(WL%dtR^%wCSuJ#;pLuOoj>whyQ;j3<0}n~#4R1xV&^X%|G()wKUt>Bj$5GXOx&e-)5aS3J9?d)+}k zWww)|%_Lp_kgFZ{#AdZyx;`)~qYP7l5;k57@T>o%e4Q)1(@61Y3WdrCm85{5EZzr- z=dU)iruY2pj8zVl>|fis>l=X5C8vbR4!QlwgF&PuAl_I8Q-M_U4;L_?r8&>MeaeQR0OC8TsRmN<{~hn39Ptk}SkBc{7oegkb@3KWYPrw`#F$Ps zdi2~#wK0Bc!N6bvA4F-B+M0ltt$^JDTInIPS%XR58jF^4sR2!@L3*?OBN4$YzC37o#_%fy>wU})r=SIzV(8`>BjEcrK z&Y?bm&8M`XVk~x@E8T7QIlxJ7+yYi@quL|nI*1Ry(}r^rJvcVf=q~dXUIq|9#wvuE zIr}1=sXB~M_fiC8>c#C>vz5L23*)ZodK-$|wOOi4%JpX~zE>fmNQ@IYg5 z^FlsRyTv}G7~EmoxM@^36NT4q51HZW?qrM7q^1g~*r6Gda#@L;Y>VBS|wm z9Y&{HlCpuP{oVc-yX?MXax;ogD=NL8xgXAz?WjqJ3%&?|rlyYgZ-%ds*0q-7%uHXq zJBRyOfbddHa{eMTxwrerK@S3nBF7_1)VXEJCY#?4=cNOz2v>&hfMgl76l$M);gLUE zQoj!8>xgdys18-D58*BW;qDlqNcBZBE2AFg+hkE^1nwsC$rcC=lotT0!o5y$eIeCY zZs(>ie!&d``C$FT-;j<$N7uAJva3P=M+U8KR2q`2r<1foSN1|9PZrpyCfL zN5kV#xePCD-9ppN8o-g8jPJyB!23}m+M+t<5%1Se0G{vv$6}7{@0;%pYV(mzI~6uw zEzaYlVP6BxC3|J8c7aa!A9U|-8wg;XBt6>UQgdCvGz&{Q;3t7T9;7lFxCAteHP=9G zIVvhhfms04Jd9Z90t94?KhAvV;An+f%UpVX)lx~fAIS1~JU_dvT#dzFAFopJ(8-2@ zW_?v4JwSZiaE!$c{G;$)DU+|I6LI`#6746ilSfV3f^R_>J zpTum~OR8`7F+*dn66kW4#=c&SGtG3hK8#2@$6j;WA5)W`N1ge@8)-@$EFW(%G$ zLI`|!&d>E(E`N1N_){-4BJN1Llt51-TuOn~9Jb|Lk^*a7PZ9@g4hf*7r(?;e{D5@d zVP|j+7rk2l95+qb0}KWX%yWskF9HHE{z=tqAno(Fe(`wm&+o*kPQ8?Ubp_l>6Pdw?6lF(j`=c8bfl-o;VSJm~?+yQM*VGgjz9o)nb|fkszx3 z%5p##3Z>vQ_Ca(;QH(wA=oI0&@))V}h{nt=vGA?$d}&d8IWopEr5--|6oB zVq8B0W~N`33FgIn+_StPyPXcIm+u;90XOF`dG03zZuM^0r{Jhl2I>kPhk*qA7`O`j z`@c{i{u|2Jf8DnI7d+;-q6x$-QxPKnpGAuQsn`NDD^mXdHYEp4@n5SjaN*yo1pPPI z;s1ZczttlD)vbp!{AdRT$A+?1t|5<-*0Lbp$5UgruLAM4xR?_2T;=p?Y&|FS(U(i?r7G4V#A|+SW4~v{gCq0Wf#jvpYF}csNGvz{+pV z)mTIHk%sF?9EvG+=*Ypd0-E3_YRCM=;`sizrN(LH1tLh^H|lZ9AmmX=CK+x4>7b{g zW_wyMu~bo}GDo;m64t;+zHJPWX{T>w?%;6sA?-i&L`DB0UhZJS%gVjv4pRYS#bFBV z+h=l0g58CbMS
    Ig9!4e?$2Ee{(h_jwJlbi}*E0&&KbdzaE-tfa0vs&z=p&|8qq9 z!z(-hF29k<6DgxIOIrrSa1v54@T7n)<^>YqY%CXuPEr zu^U~lq@$;?H|{gU%bL5?6A+3A^zt#>la_5gz#{^=RtHQQnr-~P<9rC*2KP87ysW8| zmC*Fkdkf{+45f+C!GW2&+U`uVjP%lvLvbFvrtY~jY5-IwV78Ojrh|^(Xgua`-VNst z{=9SQQHWCDcbnpL2lVm-XWEFM@wI+%5FH-1G^2>L3UpXA&QkGT-Euv;|4CT*sMz>% z@cuAP*Lf*`0s(Y0JcVEP8fR-tr37~Hr*pY3r>#h`Y+jzSf4g(Od>zX@SN$khCUEGh z-e4?ih>RO*Xe~|G3yPS1$Z%?qb zg5(<8VR?WhtUPsb(ozV;h{fqHgfcejacN3TNS0seVJQdJMwVBk%@aqA#(nq2qByh- ztY}{YIv+0e1{#i2=I^wUh9{m>HUN^6Co?J=7SqmPygG9kN_}Q(+^P+;TEg!>h6^=Ns59Pj_`=1a;B0HZIosAtef2<~ z=htokfg?Y>B3_)gzMWi4TEDZ>>6&>**f8)@(u!mgQl<%rVAMaNTwKiuvyO9V5|6_~ zeD<#d*E|WSqYmnv6ZR<(mYaE?g!k#>b*q2icM2&fjp&uoSI^m*GN!Yfg6XiA`V&We;@&lOb3XN7R~a>A0C%HX62rZvY^VYulrJ{5o+`Gud*2 zz6(XS7hj&V1Ppy@)yRK`74+Nm>i&$1X)9~mAYT4=x59p)MUN9dX~)(7Eoio|N9oHF zKh%H2k>iZV>MZNq3UsOm41xSibmlm zag0_Sp%umP}L~Hwfvt9!+9lDa*S*yCNxTQN7p1 zIqfUn6qJay3uq1ECc35td#p7cx$#YJI$n4p%Tio@bF32Ly5UY8&|%eh_9G%;XW`M_ z{jVAQisKN2hG#!nQ-(Q|ia(+KU&VnI0)(l^7yD2Ba69jeLmo$ATWvfFpFVx_co^*A zfFJNDcvN+gW{pfj9*b|QyZ9v`qq7;yL3?iw#qoxU3zMaPwTNr7wDrdSc|A--h7qN7 zy)g7!B*td#4S{0e5|ZP(!FheAO#`#9W3whA{R7poS$I6kPi&2QrPi9FW+m&{gir@- zzB$Aa27Um%prLloUens^>Z5vpsR8eCv<71&n0Wf1ZzzI4p%)jrK8{jQS>q=8zhYmz z`E+F0u?A)gcMB4zcKXShvGYM6v?e01ky91&C32IffbY^X400)o;y4TEIFhMx>IZAt z13!U`K3laADp%;&Sl$pzSFP5FjKzo!9Wo8<&K|f^a`uq0K0$hTZTd^*&O2_R><@}O zj}{Mxdl2@_jv8*r$JVDAJvv1Hc8WWuSU}1kDJj> z8K$AS-BCk(ebtvA=^TzT3HFaX#-j3d|1b#}r>gjs;fTyMzwrZX7by{PJw1E^} z@b3Y%93{aXyn>UKEY!HL6fd*l=*N@DuwLkaQVZy-Zg1C_A2z!P@FSGk z*3VbFY2}v05ByO24LO`aUx9DS{%U$Q`&jSrtU*#dhbEeqjI*%bTQ0yV16qo@^+tOi zAR^{94}#mQ?_YhmIO}LUgnhK4YQ(iRGQPvx*Rf({)fE=hj746(%=I?%Y{#WV-C}Xk z-D4KM!dOXHZ!|DV;a$9(Ebx@al*0{Y3Vh$!(e10a?RG!(r%@w~q-RR;vIsKVM$P`o zg%@8hFTO3-bfqyDkly`g0S|_SrF^2o3RKd;123}Cc26Sj9iSTe3fD_|JoblS?y&<+%j6DTE)l3ehYv`D_i1P7gEir{QP(L|NczNC60i*Seg}0v1j@=O zVE&4uPxajuCMx#^aD1p#lj@Br(#V{t;}EYC$iG=1r64#{&oI==vbCz|$ro!=>@yG zU=Q=4#t%TzTnXLubcbgFqZu>nq4emI+wFa$JyK|(qb!%J*xF4OCdODa5dI)kXBU7^ zi^@KnMBm%pMn5o<&Y0Y4F$%tG(KMerqiDO;iT_nQ35nWDJ0;ww0(%>@moU;^oJdBI zT~P{G$WX!&Veyc2!_tbAo4$v9e>|-jqj~V{v5e~r+*SkFl!s!2q#(We712w8ud*Ek zAN^s|0@d`M{+8|*92WWEv9z)aaprb207)#b_3tyG4l}*39ayNFsTtxpXWKKGnQZwr zwSBXKYfe$)Od~WW&M6cqiANm*;Moh$X^YUaq{uUGb_+4wmECRoxUHc#tzOB(0*W~A zo^PZX9=lM2^#0nkjD}hpeWvBEW+cZ4plZGfkW|>(g|)JdjZTiPc#HQk%%;XrGk_{(3Zjn&kT68kPzTZZ)G-m-&BhS9^LS}a2xTwVg@nv*sa zUq&(Ly)|g-)-Z=)IeLwovE#`jEJO&IE#FRf;Fp@>m&u3}5ng{9YKQL34cza<9$>kV zd4F?7(kocjsP;_uQl}jN?LrceRQ$mk03Sc}gEcu7=DT9oE4^rG5ApOF>f)8TOwbBudmELXiUMjMMUnLGE*-B z)S|;X=S`xp-LyXRZ1xlO{lnMD+`{i>Mn7$t?mmtSnz3lLH}SPxa(ZD@iW$+f5!nhN zN2Z*ijRxWY{h6hJYsM>UVyK+W^+%;NfF4M&F9`J*Tl>awE_=Ze9sTIg#8gn{D($e$ zQ1|1Zci5QkS(uD;%U8*nWBadKw66XGReDj~zF&Yg06QP*47QvAvSQ+J zz+9U%f@Bj9IJ>?bU3oW+Y#KtGVPgMw*TNtscpnZTD>^qmsL|y|KbzdBf@fuyF1S|_ zKbdj)YOwqV(7TKc1>{wE(Nc9+1OcIg^DB16pO!(!O}&81sch!-`~+YiV=H|O1N!*- zq;XF6-X58uJGq|^JvaHH1;}IhZZ?od{dwR#3URLgPpc~TG9`;nj*sw`$VKl>_v84$ zyKP%PVbC)vB%kBgTkJF$UV-zmOHpN8OPG}e_l7A^xSMACh~E~$vMI@u)Y^0h4Ft&* z$=y}g!HOf4XwdKJm@TUfmrp&c-+Z<(n)|YnkIT-hZ=-r20Ayp(KnsUvM(F_-9${uO ze6jLvI%2X(2FY?cHY}y7lD-sc?l$IGXdTsGlbZwwwKMT0btsOZ>cNX&PHA+m4gmqM zUzV@t%*O>2M}bE%eI)K;nn0(21_z)m?>jE@hQ2($@rq)gZx-^r(5D$&*!cqPCYH~S z_I2Z9O!LCXTM4YaExRLg@W!Cky=KVHtL$0$8`nX&Jz7{5-4XyhPtT!R$!ER#2=nRl z7h2GIFzj*RG zP)s1+y=m_KMsyHm>i|-*#`?V}*hi~wnPizO(VMM(bEQ(zp!a9DPj~2NR!AjiBrn@4 zA>G-}V*3MXtdch9QP_Kjpj^9))3@~;f-RV#h7vRa_Jx~V@3cUIsIrt%yF zyIgXaXqst^j(D9mlA*8_sQstW+TJ-HtuUZq~{KmQt(l_(KRXJEKHx`fZi> z-7iS%z&5hS-Ac-OO!xZSGWUo;ywsA?qEA%7oZjH&LzvKe)OHeTEE>xYE$-^BqIC{- z;RF(b3=E*~XTsrwI=u|_5m<3;%!;F`&`$G<6=%bj(%Rbx@1Hp!UCqVy@y-|XsK6?M z?D$rstEK|U>(?g{(SVhP#RlA>4dDM_Uzc=7Y?1*+RhE>jzBMYE{bFlTU_;7z4>_sy z2CbDSqZ`r4f_4a<}l zqc!rRa+=?6IQw>1mK6V;_LtN#CH0_)W&$|Cbp^9GRh$A;>`Ek75~=N6Njj>1x^!=& zT~y#6?xwIhLssdE?*5wxei@+Oa%!Fw6Vwrz{lg8vj9#Y=WjEk_hn{>>KF7K4zMTdo zRy(+1RrYdyFA_yH{BZ%TsMgosLv@dAG(#o<4G{S92Z=lH8iMC0n~smv8-vc%r*MN3(|E516JaIg?&ZhY zPYCjqoZ|z9_{Ya~OO)%8X=Mt?9*Nkym5};vIrgOW6L3gqF4EXTV;@YzTN<7 zGVnZ7rx2aRh#(7G>sbUyv!4m7Za+ym8luZp;G0Mt^CXJm%R~>;0Zj4PQc4{%Roa=$v&;X& zPdcHimG$+``Mx5PhN>&r1BPCHjXER@RuSK#SAovPoh9bft#tSI>P0U-4Xta;>!8tRIpWSS&lxnGL^5u` z9^KBf!Ee(Wsu{Q-58X++dnNsSihR>#&EAP>vq}dAoyInMYj&vAQ>{|NM!H^E=i7<> zH$Ieaz3Y?jwsyYVbk1xT?p7(?c^tU*jlqG;OE1khiSUQ&_3}E`T8Q_q#t4GP2T_7O zU9ebwo>p3Pw1!NLXLWBDL+%@V<^6TYd%=`hXy=Z*3=TTXpbxHi7mkH68Ji}@AJ8Nt z>B;MDmC`wkWBy-@d8#coBPL@ev+*NA$1rbnttBYW>O_QZ2cWO`BrXy?bil1`=w|fTGZlmkfRfIq0T#5cXMf290I$}@5ShDj}c(QY? z95Q?x!7pWC7E1j&6QsRMFP_+rVRMMMo&`HVzxS>4i`w2R{-|uPjf(r9UCwV)>OIdXS2`D(kqLyy0(@wn|k;>{H0DMt-~Ul;e=-1p?(j;4=#Pu`9Wfd(&4tvt7T=C=D$ zJXWM64%cOo+@TW|1+gJ{Fe$99 z$}`hcf4Cg$W$@v8B+grpx@d+@1LW)L#yuKUUv{CT-@!q%ZSq4TD=QyB+j;H!hX9*X z%W{fI>jx0W&LabMpR~WMlB3sHej8t%N1nXTo#Clfx0`0ks&`O+Zw9Y7(4C!?Ub1Y_ zx%pyaYL_*ya~!96tH;I)5?DulT|AJao^*|8*>$!NIp_AET)Mv(o_SfOP>9lK_L;E| z*ad9V(()Xk*MelcuXCu>8%aH_x^#MYnWCA&+7xuhogFYu!IDHN?}^+9V-q_6{ma)E~W3-X<+$Q1-Nk4vA4451BarP3T6)7U6OqyEDf+@i)b|b9(zZ8J?CYe zQ~U}kmUkY~E1n`mrQAIT-T`M6~N zmu>55(fepW9DdhakX5r@ntm0;pUpQ|CwlTc=-!fPNFD>5J?Fr`on3EIxBST=l^WBH ze+S+pR}KPnC3M=~Rrui$luI{e1!gf`S zPMi_%yq;KK&o@K6Ti<*o^9M8=&`ZO5zl1P$*CbmQv)*d7g8=Kn%~Q5T?QJjKD$o=k z4^E*&3L6(~3PS0cvzV4GKTU62Y?(rl*{-?IUMtG@2EB;bsD%6^MYcmJ%wv$j5=f)* zrz@|3o7e&ho4t`LU0(Hqc<-lROKS!BQauz$YV6{<(cb-<5?e~|e#{=}0#Rm5jaPXp_b2djt2Dq%- z-FZ%tHCIqm#^-y9jn&4Rnp~k0A)aH{jKj-Eu+KAw0~{b9cB2voHL`^T`p0YHhN_nJ zHr8I`Ce>ABx-M^7baL_taTX6g7t!&10>yu>f^Y>f>!i{`s9j<8! z@*HAE<9(=Pt^!EeBchnIBXgkuOlcUIJtw@gs~TuAZzC(WNrW;+-sPsdprSMx`{hGq zOY4yB&Sq)1mL!xDpx@lwfFpkvCkiosS3_KVLpQ6~y$k8{gvHO^{Lf{@kSf?JqqqV~ z8Ghj|)i;CFUwei2*0}pZ7x|WxrJnE4$f=W@Z|M;~q3LT#^j*v65_4^RHi(i5P_`v__=0Y?FN&eVlUoBTx;o=K8H>C9KrH=iX zk2FYOt70gq7Mb z=yK#~wxN}qq^gjJMMXLPe=LN!UGb)3SMl1A#f2OxmCQIc8xNrK__Nhw6VNNQP;mVu zU&Y2^n{-yiI3Vh`nv}M1o%B2YOm9eLw_HbClXMIDkS|rum&32+ecN`6&Fo};+u^5! zA0YjVtSa*LsAI?DG^q0%pT*S0J>CRfxxBi_B2!HEpvkevg{(xqSoPTo$-K4TC3Eq) zhI;Y**P~tx@k3a@Szg^CIrhfHvL%yh0UTq00Sa)QgfZ^2IiQ|bFMjD-Wa}v}h*h!< zYQz)mGM~3(#$lW4%GhiWCC`-&$J5ICw@QB&x32+J-);Eyx|rDw`hz!5kQ=28;A~oi za2CIy+WOtf*UcwYKg-)`Lp~@-?I1WeqOw8Q|rW4I7y?lGE!|&oNlMM4X@frY1~5U&E4VMT*G`J zQ@W)9+IiB=1dYX-{E>BE3A6FS?E6wKbaO1xG?bqlTm)>rEztDR2BR@Hafq(A1`ay* zi=N9eY{i9!y0Ga(y+&&8G4CeakcmAiuAWAfr$~V4?9RI}mlZXnQB0Nk-@35d zrCs)uh~M8G4rzvhtxJhBe z#_gEk_az%QsH8sO065s!MkOW#es5Gt)z+OjJD6XJdVi=l*m?Z3@rQ5`M66BL<=`)! ziemZdM~^o8l?XPZ0Uco>*ZbBd>BBY(rYVb0GQL1maaui%JCv0+ypA&vdBbWzJ7yxO zFMNl9(c3I7<9r?K=&2SDfJ-QN_YJUlXTL(dKMuf<`r)QbU2RClP~>=`ISaL$c@mc0 zBiIf&0D9o}5*WmDRr_(^?|9~EVv5|bs3&k_cy6;rdG*^z+r=@*d>>ME_a$n~{;k6w z#4`Gxr)*)RL3|w=Dqn?cmL30(_TD?HsdZiZMn%D;h=@oB1r?DdC{3CTP*D)2D3KzF z0+G-=1Qi6O>Jq^vRgoePIs^y_NEMLY2_dx5Lk}$^`JRbu?Y+(!`;71GGro6>?;Y=( zKh{_YapswGKIMMy`}$o|5t|TdR&$2P`mo8F-6^bIn5bG@5;lxJTEEfaG4VlqXeHrE z;^zT#xOu1TNr#5lL*4de)2XGkxe2AVjSSL-tXma=OYFt-dKH2jZk0+A27WE6R?@bM zVQh*Gs5c#@x2oSRAHdLafHrXP`(8i$VoqKxEMIR3o;7N+gy) zER_R7CfUy-m>my$_qM0Mu3N@$r&e=#OE zUC3%!KFHOodWJ1J8!J!nwVvdw2{_Hz%-L61z)$4ItHq$2phUUPg`opEKn7oAEa=#w zOHsM)+dHk$`onW=@2VKI+4mPW1?lSY=nhaj?#TN{yIwnPWqp`0*~2`y7a!uT!QZ+f zJNWEdcajT9o)lI|$+fjMSYfA+g@Rbvw~`llK3RwuG;!CQX+w|>=xV4b@=0T!QI_}4 zqGCF@j1OwuRPg;*3P#n9vEQ$_1=`QLr6}R#j)q?J7-nee)!R|G!tB& zn$~bMeMuN#XRNP8`|K(2A|Z}+$Vs*HkEED)ycbLRXNn$Uymr>XMC-)7YMuI{i|SjQ zFVY>Srtmj;Uz{lNqF%76<7 zLoey9HKU%~2<~Y}%KTDpwp~{E-cFFXaj38PuWNP0;ii6a#`fm*z+8|u`TRxgnEom~ zI9vU*&ljbto^_WMid8IFy-GkEo zplo%n+m<+{3T-O9q*BOcEAxZ9r`WrHXATyO=C`l8X3>3j52W0*YwOcpHH=`6;43Fr z5jwzDK&!f0aZ<}jFdYBw)>X>J1p6UZyUbpf_RtynLB%5*lpGMhvL<8p7I4^k{1!T< zTE{xm5%69fb0?8wwIkEb%&ErWjOW6%t!5+zCamg@DDxU7lKDFns>42#)i-;Krn5sE z^>gqkx6STPXPRgYe`0(r++Q=0sq5GyuuFxP#Ji6iUFNO!bub1QJk8Y_`+P6C2svBP8ZcADD* zsJ1JPwH&CSyjdaqWs(nI*G`~$0Z{!skWHU-CH%3 zZueN_rIw6W=SU$``bW!aYMfJ?iB=j-fYS7*sMhGAfP%rSecu!}>H5GOHa-|ZcB5F~ z-1i4!gx&buFC^+yW?XzUaC15? zQlBE#W8f7O;%2s#w>tVlzZSiAZhG*OH{E!>vN^!PF?LQVf8jvv!o`gs!+5b2!_D~F zXq{F`92%>)lF^|26dR6nRV`PYo#CpP4262s&4fK6D`(+3Dmv{xrMUzouwmSP&0 z(>6{ZBjgsYG8Detky%3(0k=0adn8>khP=h!y!qOhlVlz`hEqf?MTz_@2bzULVGkpa z8UFeRF`;DMlZx0icmVTd|#We z$YCk%j=CRhi0^X_$oKqgW6BQqZm|~Q5rh~-MzS-k2{IKp$XysQ{_xs_nm4IovU|z>*i~ z;4n9aXP>kGJgf+j7IR#{>{} zzeNt{4k{uz9d3f$b)$&qY>ID{7QR9RJrMd6|x!J=U5eY_CSdDWE=h@4SV`su0c+x#!CF?yR zff6z12KBIKYeB1{9x`Mvxq_$VOLH#{%kHj;)$qGkwgpQ5yW7t+pTo49Q*#~1R$sD9 z3d+g3ku$O{l}iS6NfhG`ZRh^CI}{`G|n5zk1HhSPReHX z=00$r;7N59N^#bBf+%%y+RsE*^_-;Ck{*{EcR$!v$IShdJ?1T#oTh<&V61rhB9$bw zQg=w5z7!SFe5%&!ZZ5!!`sW`5?8(N4=Bm_z3o58S6d>xBgLThUcXXr5Alo-a2dyuV zueWHX3tgqiR!^$ObZ}^2!0U4=o=)Iz!BG!ICzWh3M@<+aw>eJ9iM}s${Wsk z-71(5Vt52y9DjSYW3)El{e@R6Eh;jCzK-k495YXvk$P|1bBQ-R{Ki67GkX#@9Ew4q zz-8@r?6dWb)tC0(tZN7jWz)s!i8IYS)4Y#{lhKL9DIc3$Y8YYtHh#|K&ZqvXXQ)%H z*|!-kr2c6-e1MFftHWVc)qG+JM#5^a{+K6k2W=TSw-s?}F=2gkC94_iS?XUr-NLE9 zSx&&d#~WupMOr$G?x)SU4qvX`{+WEvHL-C;quj}tE_Ndd6KZ}fh$rx9z&$OvD)kej zT>MM-w2R5kVn?`d`K91pdNh2BrMtbX0jrQKZc~rOg&G>yK*Qhg?Xb_Kc zXAf~h3vr>GBvsm88~6Q)Kg2--x0U<-Ej=)x2G6%HmE8w+mD~zVmF(hxGiZ4AE+KT} zXB-H_WzTw)tmv~PR~rbp0oM;d09G<>J!FoMEq&1EyE3%9R;u_1Sg}QupIuUE_lV-3 zdXg3oz`)&YtV;DFT9eTfFRPP?upeq^n-cUd;~*I*k0*ysfB+M~RyPPYC$s6ZRVOlf zg}ojF@q6V-$bDnAbY`l@oinD0^MsweuWzf5k?F-RVU1hv2Q(7tc_hfZiE z*0FZy|Gd2FMd=pDLLi~8r2!d)qd`g5<~hFBJ60SbN5k#c2RqA~FPh@?wER(=Uu%&q zu`$L2JWZujwR^b_vXzPckZv`mlvrwr4hlx@A9_w-FMLYccPlr|es%lBn~^6KtIx~b zT>mTvfZKY%=;ZfD!2q?q#>#uyItu=p1CzpfUG!`DbZS&FK_MkgHKi1LFaR%pb*M?k zVc+L&`ju5)e5*Q!H%P03P{VB7U9U1v%3dK|AHpo?+IDA5 z9Qlrr|EjvZII(6<>`>pu5HQ9H91)Q&&lzTdv z!7nb9uXKE85svFk-S?N|dh3*EY(&`bpI+FafJ9|AW16YC&itHi!7Ovhf8~EH%eMOq z_?;LWcnrhr4r<8KQ+mqyEbc1$G#*wvMCZnKebGT%M7#vJ_LL0Q0M zzA%l%Sf5@Q-hS6#KHGOx7}PXk8ccfgvD5x@@x0$vv;gjTM-2RDHFz2*S59{{h$Y79 zDwCpIJ8p<^*;_b+?|A(>S36Q~1>Mc0#PLykMALnij}SizIuJ_oey+vwuJFHoWN)Co z5FIwUH}zL1yTjkzjyaX=`C=NH`+=(I3g*xEzkI{Hsz!k?SWrnGEei0{aHh^+FeL(; z8z2AeG2u?$r*ZFk2UMtY1)Y$#qL(Q(_+Lp_2uP+&Vmmtjq^pONzw*4f?*_ST>|B^# zs4sQ%J|M9I;=*=q;dph*H$9TP#qH^T>UE~z*svif-r57V6tw`{P@xMNAZpDl6Lu>n z*+WNbsp^y1KiF75_{p8mc6UN^H)tp)qYX*zBh^%&cE=e$|!fD-#Y0SIAUd&=0uI?>O$hIX! zA7h=)AEUJdrjcLYbI$nH=>O{d-GT6(3jiHL9y-JWFaYWgD;6g@H;Q`!@gh?akN{Lh zEkT->cqd@Vgu)iIs;j7NFINBh^APmsb{$W=4l7^>neK2yN8!2Q2tNuCz@Zx?RpdEdP_{q=p2B)M>C;z6so5e}lnk`n$Q zf^TX5(?IiYBo2JZpmGj)?P5wj49%an&R+pD_qVH1x9)uV zmK)flLBM3?g;V2unbI|OzG4M^1ppDy$70aOGSJ6wrOlncfq#$`1dXCg-lLpCG1A!8 z-6v$2E;U0T&GV{z3Hk12!!KO|!58F#MFkVnKGoR=vuQHEBj+_C!!w{efDTH*5NWbN zdQdB2rk1-+AY#uu>;+0w0L?L3@P#<8gUg24sv|M5b*Odc!VRhk@$SC*1CQU|?kMUV`lv9p zp{z;eCzi+&k1##I`0JeWx}#wS_j^>o5%%@}w&7 zGpT)6>}-LU69WYbL`i~MuYa0Uu_w}ddo1xS5Kbi>+WE<5KScY>)q!5Ys6%S2rnc>q z8u94eOm|pz?!v?qM9Jl{*%p3KvZLP{Kw|8djR5I=X=ir%zxWy$A^(jhGC-FZy#5Wg z34(RO>;F^s?0-Qk{-wf^fUIT0+w;r+YN3CQ_=UFC@SiLF zYpGBDDz&EmxCmPEEiz~DGgwG zE%X;)_G^{<@AOM~E5oaZ^S}8BxgZd1ChilTON%C=s7s&Fe#sCihue~&a{YqYphfPa zlv%k_j(ohwkk|BZ0DBAk-c`(k&N(5dvJODq$o07QuyaUX#JuT0(XvaZIp3-2Oev<$ z4;83 zJcv4;9>C&I@xyJd#M6i9+>Xvp#9t)nQW2|teBkLO#s@N z3uMn>mQJ9=Hj!*cLc$$vq?(3(Nw@T7G-Yv?@!$`@H~{(BL{H5hrOorxm90d5$(^Jc z*K;JaUN9xOTOOTXkCAMIi<7|vKs1x6HARV^&6S^G*pP?ag$iyVFen=rLm`d)YtxGEc?=VWm*%0=1Ue{>02y zHmJ#VK&d|a?NKadUriG?7X7hH>dGWgiRbsZGj8j203oNn#b|!|egTrmzfZsEL=2Rs zTR${|1hw(=50JLr!xIwxlXDTH3bXcQhGR}^H)0pI$`Yzpr^a5y0?!_=Ox^jOCiUPR zzmTyKQis35lte-((0_cfNaXNZY?%$!`Hvxd(Q=z$lS?M==?Lu-{u5(BlHA#ysGiSi zlR07&7|e03?lB@J{v3Mtq&?}egA=cxnbXWJTTnS*+b^BGkSPH47`7f0( zpRpJH2(b>wBDwsG*EOQ3{*c8B@B_2PpyMXI#}U&ju>_H%9rU<1x@{|R7Yb&E|7 z){u3?@bvQ~2VI?OwKr#^f#Q*@rQ*vjr68q*zKZ3C9{|9{+9-NQX3xNs6~J-~=UnFe z`;8wmP&i?8IsN&{Ghj_O&Fti|=P~2wmi3n4=RAw%I3D2(oWmcmv*z zJ+Ryf!{cVc1&sRg*SycKL>v4<)Pk}|IBnF(vb%n<1#wJ9!1E{1h|1uPfsv^1Zc+N4 zphgfncDB_pupni^X0$t?-*cPGTuD7A<;h{fl+}a+hMOut1+Iunf};KeBj+A4}J~ z`m+CwOxx{13`drc_CU~m|DmRR+LKz%gL!AG+V*Jl$^Ho2DgYG^B@TjTl;mrUVjm%_ zP0>IxM~hMQ;@=pw&)#8$_H0=?9J(>dkz-zb(jO!032WU8jbJag6ZSo~%`|CM+}(x{ zRfApaNc3G$DeWGb*Os1B%Ip1U@7{!Za=-i+brzT{>-0dZyMwpFXZ-UZ-_iFiAA%$b z@@!M)svWiSbT-hbQG3Hj85xD_09{a3Zo2;1!V{n_jfLWY}SpCtOUZkTSwMKo!- zPn3NEUWbT(iWro?E|~4ARW!6Dj9e)=LG3Tw{w8Nho%A674$BO6<{-2vR~qa*;L2hk zq@nF5Hp(Y`DAk+z?$c}iRDGNU$wOM#IL`Z0*)SQ#^**UK(2;b6;@BJYE~+Jc-U?%V zdtUL9AQW>mrGK#V>qUrO^pTBTW`$=IUXigZoaaiziW4?!@9jH%Dc0@_eQB$pxE0P6 z^=p1?{EuWAuv$sxyP%iKQ|i%kf`Hel5cW*-;1iGc;k#~eLP0f?oppfJ z#JEwXT9ZsO>KzOK)&Q9RYl{NUGc*r5oVlU^@15 zhFflTcPjiq)mdpQTOh)R?l(OMOJhS1oxv zJj8TAey8gVywNYm2$wn@KN&Vm0V=KEr2#z#YII;R2NMHSV%-7bgXc@KOYG$jv$@dc z3xU4m9d-UXn4J}+%vXnAsDGgWmRLOdfWDap-nb&uM(^v#J6Ybo#&K(@mi~}NepIQc z(xqBz^5CF!gzTE4)>-Xz!OtFpGFQ5gM@BXx9B3A1I^ljubB@Y-dL1%G$BSOEoM6h= zN(x>O^d10?3h94`@!GOLcc7@<2^F(TIq zV}z${`|nv5!uz$|#^I_xLfTR$RzNLzwM{9aFA-4e26JQP^bL%q5BxqKm0$FOXjep= z%Dl0Vk4FFFU@u#szU4Wh`>Q3C?HKePi!;AwQm)Ih3EDC@eT03G`Z4H>UdFGN55&%$ zL$e+cJvao^HY@U1HNORwAnVZy7fzl#)UF-%_%#HC9h;9n@mS{3V;OY#;R{uhGfuVi znmnya(?4;r4vv5niBTlSTwR`K^YC(>(0WZ#NK?j4agTmWidke%4DQO@`XHx__*x#N zyxyv&SgA*e1*pRxQe#uD_#V7~r8hV=mY`Y+RMr1hvBZfbW| z?G7Ne^-pVwN1ryvVYv7qETOmK!NUD_=v$^9(hOUtth_;=CQ&a5FyNph&nw&GyIWc2 zpS6@=hFpvo;ynfh;{_fhqnmmU7&l6x?Z!C@tLG!W4Z1x0q|r^-0`4;6_U*{+agRNZ z*6LvDZYIoNZ_QM>dTQ9(gi3Ir$Ej~C5(PGt8IDc0X@uwnWrM&F;>M&3OXKk+X+B#?It6Z6_lY@19I4GYsUU^t2eh#V)0Esc;7#Pe@J|6RD&=_7o*V#8@+ z1dd5sE6W*-(d}P|oz8GUDxGsKbnOjE6|b1Q3;lQ2b18=rPik6dU|RF$bEl$O?>To8O~A9 za3e8}l38ODY2|50$=}Xu-HUPGjtzH#r#nZvDQED4<0rK+m!G?-KlJ(Feo@u%JLq`U zSCQLuajun1_z5X^3p;&f5;U_Vhj0O%nw@{J&KyPE5I2YO^b|tbyXo=wdb$UWN&bMY z!4$||@TB-SP_4n0?zv|yv$u^sn}Pn$fs)ynrMSTD%3L<}Sm106)VR?jJQ%q?zj>F$ zSST55DF{xKeq#8QzW4G#B#26o>$4h@JwG&gU!}9~yFE%)pYwdD;?y!tMsXw!Y4HOn9Ae;=S+fV!PuTJ3TtU(!gPw+N&A|Bl|7P1Utj0#;rN3 zqAx#Vu5eIw!dTudy?;oZcB*#V`NZx97sg247ece%{1&D1%zzSF)`^hKqKdZBu%?M| z;qh;n$_&)9JBa1*rWdrG>phtLo+n)3h5hTXv+F1WA*(t6@?(}*)gUap&(K@o63S75 zvNYIupqap$X!_KI*EHhEhNg7ZNes5?P_!bdiA73unXmG8McVx<^Vm1HE zg)4LZlKL!)r(-0p4)rCDy!_!A$EszOsIj`>!^PQKJMP+^9sSY9t=c+(#G6rX7($Jv z8X6)bVi1uWz*Bl7a$^!O0B6_9eWB|=&^!Xo{2BGRM54nV^pQ{*LDnZ@Jei!sMVyh` zI)h>@3*Vp4o%@ z7GeKKx#VsFs|qZjGb7$iUTJjwJH|g27GJB5U5BSJ92jWw15t23YlAe*QM)(ARIrbALwy5WKaIqkeOQi9b$;s0io}Ow8lPpf$BQFM z?2A_5EMlUw29O?V4&`HbRO2a8IyL6Kn@h{!v| z@`FK^3jCQ|mS>#j&$f&Ch200}-n2nG^VH97%lQaVHyzn83OBDsHC^w{f z{cNmfvd%jl4MTvsi0fVNnR_he+ThZ30e&K%l{@*?6|{9pB?{KYZ_O{V7-!SXfyOUj zw*svUIh3O1ogpJ<#B%=K!0OOQtT@&Olaq39jrzpI@kh}fovu>}XY`|wYncW2RlEz^ zj{ogRi-{r#8mp6=?+ANyeMdyuY_vxrPfkIjT6UMrt>_v=kC!-djb`)cNpd3YB7=AU_(QLkB z+NS;PkCslQ5ftuF<#&?;^!#sJoaXmo)nD>f+DzGVp$-@`X5rqU=D4WW`~sakO=M z^ivx}uLoTNQhSD3?=!%Nle*Gl7vKNpDCuP5in3reVR4vH(G0wX2JZ6IZya9TeTQ43 z!o`Wh)7>OniSpbPSSs8AZX6ZMYBOYD0p$7P)YwyyOE^@Hfa2XcWwY}uX~6YqmrT~> zZfCYJsolNKquJ@1D!(VW)mQLJcHa5b2JT~wiAn#Ts3(7pN$A0Shd;k1em?d2`2oh(X zdhhPoNePv?XqxRwX92e~cR^Zkdv@W#S<>M;JjEQNfez~FCf7z|)Zxc{BlJsw_C=H} z6sG3dnp`T66xon$I)BXq1EK{kvRRh-e$O!_YCo7!r+Aj@m|d)sgcbU?Y)ki!>9ifV zBnWL8I@WSjo>=sQT}|QI7C#BjpLk=TMA{U4=SR~Fl;=UPm8~?&j32wC2I94-2s~}s zb;%aZbr~ks>qo-9I4(CwPX#V0cLKwN>9G!}9uDh8mR0%f8M@9!s7!pO-5&u;*>}@& zH{N{MkIN|X$sFB~*_uLm*>4*(X-APxX^llYu=PmJYjX^1{lIVWg}Ts4?;RT8%`UmA zH?7Y3eYm^;RW{L}D&#q@n{x{`?=w{i8B{?Mw~)fwZM|{W1?|=111leg=9`i|dhxEA zmizVhjX@@0U)Z3+3QtNpgKvb)%kt2axeyvFFm2ANcTa*!hV%YzITlil?dN;<1>R@Zj>Av1XfnU!Sgpg= zSO<1BZ6XhInf%^?8)gc}& z#p(?qlM1ggM}$UF5zv%UYt4J4VyT840v=o@n$Uz3wGf*A(M?|aq&YL2z6vFCQeNFkQSawgerIYQad|8Mq$b8MGdi=+b@p?s z`7F7~N~+a(mI9u@acGU}JDFOsy*w&!G^D;JHjpRPLepyX_s$ap%9VtYwc*LGMUY&) z$X*Rxd*Y-$sYVd>)B?L(2JM|GeRQxVz76shCxK^2V6CFr;yc&cZ!AaAQZXO9$iT); z60l5~UHc+v>1&*k{M2?hVc4^L8CU(PuiaxX+xusHO`Z(2yI$eY5in14xyw~AOf^)? z1{^v6Jl*La$**zD3!ukAb3UtT$JU8`gTZH-A$(6fI{((yZQ0{O4oXgvc^ZIAfA<}@ zW|>>56?;JPsLs&mF}6~>8#{BnthZKCRPGn#>$Nn|a<%0Gmwj8}F@48ICLEI`#2}&4(Tk#mbG4y~n**!Hk#J;NJS9qb`uSvnSynw=db7R0GoYeeB7TJy z5Sm-+?KexVF6OV0q&11j=m?jUcnvx+76@wu*TrBn69L#DT_XpBo08cAGHt@TUrvd7 zLcoa7LIsWZV7h zJi`UCGf763`6j2$JeGcMaJGu&-jBIp&6L?`3 z_>Dtr$a(sYTJP71i$oVfZ-~2LU?}7pSO~oLj!}TA;9WH2kB38Ut7|&qZwJOe*$>D! zgttRa6){(DE%sATA(t(3P{Whha~NazAUa94&b`qk&$pclaz|2v&UhtUpHQ#IZ%LwY z5o3`ncmBH9-Bz#NnWrJP`2up+NVN>-+IbegbKo7-F&jz zioX_Y>$?ksl4lXQTQ&75cpP1C&!chR|M4xIhyiXtUyFK)>3v2a!ze!Ky7bl(dr7B? z8M0^z`RKCNYY!+V7#OX$k?F=Fq$q8rwj1l&($C4Xvd7WmPzv}n3j6elS94+A^8 zSlnv+7gMegL}2HMdH(f&U}_j@4dq$R-Bg$tjyxZCCgt#D@7I%}YgX?CCl0Ni=i4FG zCFu-nu$^Q9{n)?`w{t0rh}i^WLZstB>jn8>o1wtn}V*+MZf| z2Hg|qtWn%IA6$E?vw8u!GPzpI8LQF!W~&sdTTGcM%j}p~co3D4knj%a(Z6?EWq}}K z@BVX=illWc&@T`clUYKo`X>69G z{=%$UibP70Eh^37ej$wD+de(5$UbCRC@K(#rSgZkPebWoA>8cN7g`e)XU_aP)pxkb z)+o7^@)UbUZ9Ru^T8;WjMk!rx>R5@Grg|q zKjM#Dk1ywg|wiIR$|XH=YO`;I}H{1yc>gB?c>n=AxC(eOvQIo z;H?O{h*Z@NY$VMRGIivpa_X!qW-bYAuZ;+E)l-7a8LDcV;lna4^qJ%Hgn_U6c|MK-GsY|Sqh!xPsdcqNn_$lfp>mo^Es|DIu`RCV_g<>wULv7% z+{|leY%Q-wwqnjS@dj*;Qv70tD<|qZDfPAxVzWt$P?c~G|MMq0P z5crtNuMv9{#rO}nm?`?I4RqurV05=8Sj^rcy{Z*E4AXFD)a2jh+SR0s+dX&R#j0ep?UjZ>E_{9K6+M(jFm~h|C3VFm61=Hv{&%Wt4Jwhlr+liI)NM-k`6wOTTm2g z_UP9@-!02Iav`_}S4PGc=OB#{x68GWtJoK`khghwBse|qLydQTs}{WHcBQ~Be8~Mv z&XOvNhiQ=#Iw<<_88-3GHqRmNcu9w}3fgs!%3{uX{+yf+D8G(cgCN!!&c!R?wbvfW zmKxvcP#AoSa5IiS>`+m$fI6xvsOA-4&mF@tu!pHFmX%BNr&P>+nI^7l(*fz!G7y-a z?ZJ4_69{5i;m(IrZcFTfi2quAW?Miw_V*Vx|?ARaE`Pq(Bca zS9df<6e)s5{2qu8lOhFt>kjSttOg9(IX@!;Q#s~Z)RumS+)KydbrX5opH?mh)@yi? z2WPV6qp~8HX`p-p_DH~I@^M97?DcLdflyZc98m1fZgLd$5W6CuWpAAD*#MgzbL0p% zy=PfU`$l9BxY=Fc$3WW71P?jM?id1kRaec%7QxNEFX1^pC3j!^&EqRDKK!nHVat%h z)0ym&wB+hLb-gQn|Y24P9rLGy%Y;9y(JCw`UVguQ&F8E(qY9z0~`NUtF@0Xf50 z>C3_O&hR-%XZ@=}-xgp;=rr4gY=DjKr5$!rtt!h4YE5A?%e@CIDMV$t!cKj)k3Z>f zA%ha$i+`M3w_pQtXSAJqR}u>xg?y#0LJ54t>1^p7M%S=x%@5)kLR+(A>phCE zIz>4^-WAUaPWBrlPG@3L>$3<2@K09L#fQTly@sKnTkQ1mPZ^JF&^VDP3@G&gjptZm zxh`l=r|?i5EE6i|j2rpP+HX}2^5NE=&EW&k=I?tyiAI4vkmH4E5JWVf8n~$sz|#c$ z=28?~1X_VzT{B#qHWdU4?O4x*i+c;4gfibZ8n(Kq0I>ZW<^C4nysy5OmHTRY`A zP3)usULbfgp z4f0`*_T4DjF?Vi}XpxEr53AXb4CpE$gOaS|018q)yugXHg;GHg_thR6Bz6fQJH^gi z?{J4~2ZNalWN-8V^^4#Xd|I1$uFaUag)rwi92_)fJgB&JCQ|n0Xr_kWW2bEr`Q~|a zzu)l^=~lf##od!UDFQly)!<3iVZa-vu!MH)&7DHN7DNeY`1;&P%~BLd&vx1yI1fs< z7z?;i2J2V&@J;w<>z|TC-4*|K<+Wv(*SHo;Rlgp++!c!@b({}9^^(B4`zrG{Cp@b; z{>{4>$XW5~?ivtUUTD*MUH?Yi`;TF%m;H90K0x9TJa?~DV^-B=%r|t+vSQS|n--$p zXeGI)t`Cixz+r8ScLXv$EBl&m*7%7!;($saPh-tl%1CpHz{Z5Xn zlt_mM(Xh-|pV3o$azcAtghzeryvU>_C`1CYBP764={~;Vr1ww)t(DCu4X`@qVrqh; z(~ckXyCQ%Fe-XrwmO+-&^^WMHDf}WoL-ljItwJ1SwxEVL(z4WzGFho>YV@i?$UhF1 zBS`eV>twoGG<3RoI2UH_gaM+S!l}%Id;ni<^n*Xe_X>QN@S7rrjAaaI)Zl7u#-=bO z%>dHsJ(!`+ZN>JSu}uZz-)8?CGc}JiFlN^q#zIzzN@A!6jDTv9ntJgW{T; z=t;7ED)b2k*DV#!@xm*D^pnkGCL`b6Ntt)Skm;7jU$w9*15T21W7~RVE4#TwY3$Nm zXr9l%kg@!~g9l+%oOC||oytACgoe*gQfD~`{(vUb(hGwrWEeZIRhw{#r( z9i}hLzfSnfi=8$czX@pzn3!H4`PG~L@1OtwcUdN8Wfg=a@v>0imud0hx|<|@{8tb9 zFYlgS5A **NOTE** -> * *No pre-defined flavor is provided for HDDL. If user wants to enable HDDL with flavor, can set flag - 'ne_hddl_enable' in the 'flavors//all.yml'. +> **NOTE** No pre-defined flavor is provided for HDDL. If user wants to enable HDDL with flavor, can set flag - 'ne_hddl_enable' in the 'flavors//all.yml'. > * *node* with HDDL card inserted will be labelled as 'hddl-zone=true'. The OEK automation script for HDDL will involve the following steps: @@ -40,8 +39,7 @@ The OEK automation script for HDDL will involve the following steps: - HDDL Daemon automatically brings up on the node with label 'hddl-zone=true'. The HDDL Daemon provides the backend service to manage VPUs and dispatch inference tasks to VPUs. OpenVINO™-based applications that utilizes HDDL hardware need to access the device node '/dev/ion' and domain socket under '/var/tmp' to communicate with the kernel and HDDL service. -> **NOTE** -> * *Due to kernel version or iommu incompatibility,the ion driver is not enabled. Then shared memory - '/dev/shm' will be used as fallback. +> **NOTE** With the default kernel used by OpenNESS OEK, the ion driver will not enabled by OpenVINO™ toolkits, and the shared memory - '/dev/shm' will be used as fallback. More details refer to [installing_openvino_docker_linux](https://docs.openvinotoolkit.org/2020.2/_docs_install_guides_installing_openvino_docker_linux.html) ![HDDL-Block-Diagram](hddl-images/hddlservice.png) From f7c70b3480f210a72271e8f5a33e2733c90947f4 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Fri, 18 Dec 2020 00:59:52 +0800 Subject: [PATCH 135/148] add note about why template daemonset file --- .../enhanced-platform-awareness/openness_hddl.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/doc/building-blocks/enhanced-platform-awareness/openness_hddl.md b/doc/building-blocks/enhanced-platform-awareness/openness_hddl.md index 35f9b861..5dfca7b6 100644 --- a/doc/building-blocks/enhanced-platform-awareness/openness_hddl.md +++ b/doc/building-blocks/enhanced-platform-awareness/openness_hddl.md @@ -28,11 +28,10 @@ The plugin for the Intel® Movidius™ Myriad™ X HDDL solution, or IE HDDL plu ## HDDL OpenNESS Integration OpenNESS provides support for the deployment of OpenVINO™ applications and workloads accelerated through Intel® Vision Accelerator Design with the Intel® Movidius™ VPU HDDL-R add-in card. As a prerequisite for enabling the support, it is required for the HDDL add-in card to be inserted into the PCI slot of the Edge Node platform. The support is then enabled by setting the appropriate flag - 'ne_hddl_enable' in the '/group_vars/all/10-default.yml' before running OEK playbooks. -> **NOTE** No pre-defined flavor is provided for HDDL. If user wants to enable HDDL with flavor, can set flag - 'ne_hddl_enable' in the 'flavors//all.yml'. -> * *node* with HDDL card inserted will be labelled as 'hddl-zone=true'. +> **NOTE** No pre-defined flavor is provided for HDDL. If user wants to enable HDDL with flavor, can set flag - 'ne_hddl_enable' in the 'flavors//all.yml'. The node with HDDL card inserted will be labelled as 'hddl-zone=true'. The OEK automation script for HDDL will involve the following steps: -- Download the HDDL DaemonSet yaml file from [Open Visual Cloud dockerfiles software](https://github.com/OpenVisualCloud/Dockerfiles) and templates it. +- Download the HDDL DaemonSet yaml file from [Open Visual Cloud dockerfiles software](https://github.com/OpenVisualCloud/Dockerfiles) and templates it with specific configuration to satifiy OpenNESS need such as OpenVINO version...etc. - Download the OpenVINO™, install kernel-devel and then install HDDL dependencies. - Build the HDDLDdaemon image. - Label the node with 'hddl-zone=true'. From 0eb7905694015d4dec3774c254caef2931f144a4 Mon Sep 17 00:00:00 2001 From: Amr Mokhtar Date: Thu, 17 Dec 2020 22:34:51 +0000 Subject: [PATCH 136/148] Update fixed issues in release notes --- openness_releasenotes.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/openness_releasenotes.md b/openness_releasenotes.md index f11a3641..7e5575f3 100644 --- a/openness_releasenotes.md +++ b/openness_releasenotes.md @@ -30,6 +30,7 @@ This document provides high-level system features, issues, and limitations infor - [OpenNESS - 20.03](#openness---2003-2) - [OpenNESS - 20.06](#openness---2006-2) - [OpenNESS - 20.09](#openness---2009-2) + - [OpenNESS - 20.12](#openness---2012-2) - [Known Issues and Limitations](#known-issues-and-limitations) - [OpenNESS - 19.06](#openness---1906-3) - [OpenNESS - 19.06.01](#openness---190601-3) @@ -38,7 +39,7 @@ This document provides high-level system features, issues, and limitations infor - [OpenNESS - 20.03](#openness---2003-3) - [OpenNESS - 20.06](#openness---2006-3) - [OpenNESS - 20.09](#openness---2009-3) - - [OpenNESS - 20.12](#openness---2012-2) + - [OpenNESS - 20.12](#openness---2012-3) - [Release Content](#release-content) - [OpenNESS - 19.06](#openness---1906-4) - [OpenNESS - 19.06.01](#openness---190601-4) @@ -47,7 +48,7 @@ This document provides high-level system features, issues, and limitations infor - [OpenNESS - 20.03](#openness---2003-4) - [OpenNESS - 20.06](#openness---2006-4) - [OpenNESS - 20.09](#openness---2009-4) - - [OpenNESS - 20.12](#openness---2012-3) + - [OpenNESS - 20.12](#openness---2012-4) - [Hardware and Software Compatibility](#hardware-and-software-compatibility) - [Intel® Xeon® D Processor](#intel-xeon-d-processor) - [2nd Generation Intel® Xeon® Scalable Processors](#2nd-generation-intel-xeon-scalable-processors) @@ -257,8 +258,8 @@ This document provides high-level system features, issues, and limitations infor - Early access release of Edge Multi-Cluster Orchestration(EMCO), a Geo-distributed application orchestrator for Kubernetes. This release supports EMCO deploying and managing the life cycle of the Smart City Application pipeline on the edge cluster. - Reference implementation of the offline installation package for the Converged Edge Reference Architecture (CERA) Access Edge flavor enabling installation of Kubernetes and related enhancements for Access edge deployments. - Azure Development kit (Devkit) supporting the installation of an OpenNESS Kubernetes cluster on the Microsoft* Azure* cloud. This is typically used by a customer who wants to develop applications and services for the edge using OpenNESS building blocks. -- Intel® vRAN Dedicated Accelerator ACC100: Kubernetes Cloud-native deployment supporting higher capacity 4G/LTE and 5G vRANs cells/carriers for FEC offload. -- Major system Upgrades: Kubernetes 1.19.2, CentOS 7.8, Calico 3.16, and Kube-OVN 1.5.2 +- Support Intel® vRAN Dedicated Accelerator ACC100, Kubernetes Cloud-native deployment supporting higher capacity 4G/LTE and 5G vRANs cells/carriers for FEC offload. +- Major system Upgrades: Kubernetes 1.19.3, CentOS 7.8, Calico 3.16, and Kube-OVN 1.5.2. # Changes to Existing Features @@ -321,6 +322,10 @@ There are no non-Intel issues relevant to this release. - Network edge installation time is optimized using pre-built Docker images - cAdvisor occasional failure issue is resolved +## OpenNESS - 20.12 +- Known issue with Pod that uses hugepage get stuck in terminating state on deletion hs been fixed after upgrading to Kubernetes 1.19.3 +- Upgraded to Kube-OVN v1.5.2 for further Kube-OVN CNI enhancements + # Known Issues and Limitations ## OpenNESS - 19.06 There are no issues relevant to this release. @@ -442,6 +447,7 @@ OpenNESS Edge Node has been tested using the following hardware specification: | HDDL-R | [Mouser Mustang-V100](https://www.mouser.ie/datasheet/2/763/Mustang-V100_brochure-1526472.pdf) | | VCAC-A | [VCAC-A Accelerator for Media Analytics](https://www.intel.com/content/dam/www/public/us/en/documents/datasheets/media-analytics-vcac-a-accelerator-card-by-celestica-datasheet.pdf) | | PAC-N3000 | [Intel® FPGA Programmable Acceleration Card (Intel® FPGA PAC) N3000 ](https://www.intel.com/content/www/us/en/programmable/products/boards_and_kits/dev-kits/altera/intel-fpga-pac-n3000/overview.html) | +| ACC100 | [Intel® vRAN Dedicated Accelerator ACC100](https://networkbuilders.intel.com/solutionslibrary/intel-vran-dedicated-accelerator-acc100-product-brief) | # Supported Operating Systems @@ -450,4 +456,4 @@ OpenNESS was tested on CentOS Linux release 7.8.2003 (Core) # Packages Version -Package: telemetry, cadvisor 0.36.0, grafana 7.0.3, prometheus 2.16.0, prometheus: node exporter 1.0.0-rc.0, golang 1.14.9 docker 19.03.12, kubernetes 1.19.3, dpdk 18.11.6, ovs 2.12.0, ovn 2.12.0, helm 3.0, kubeovn 1.0.1, flannel 0.12.0, calico 3.16.0, multus 3.6, sriov cni 2.3, nfd 0.6.0, cmk v1.4.1, TAS we build from specific commit "a13708825e854da919c6fdf05d50753113d04831" +Package: telemetry, cadvisor 0.36.0, grafana 7.0.3, prometheus 2.16.0, prometheus: node exporter 1.0.0-rc.0, golang 1.15, docker 19.03.12, kubernetes 1.19.3, dpdk 19.11, ovs 2.14.0, ovn 2.14.0, helm 3.0, kubeovn 1.5.1, flannel 0.12.0, calico 3.16.0, multus 3.6, sriov cni 2.3, nfd 0.6.0, cmk v1.4.1, TAS we build from specific commit "a13708825e854da919c6fdf05d50753113d04831" From 5734d0437fb880b699421ef1c58157c7e8ef9b12 Mon Sep 17 00:00:00 2001 From: Amr Mokhtar Date: Thu, 17 Dec 2020 22:39:44 +0000 Subject: [PATCH 137/148] typos --- openness_releasenotes.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openness_releasenotes.md b/openness_releasenotes.md index d14361ad..94bb9c37 100644 --- a/openness_releasenotes.md +++ b/openness_releasenotes.md @@ -50,9 +50,9 @@ This document provides high-level system features, issues, and limitations infor - [OpenNESS - 20.09](#openness---2009-4) - [OpenNESS - 20.12](#openness---2012-4) - [Hardware and Software Compatibility](#hardware-and-software-compatibility) - - [Intel® Xeon® D Processor](#intel%c2%ae-xeon%c2%ae-d-processor) - - [2nd Generation Intel® Xeon® Scalable Processors](#2nd-generation-intel%c2%ae-xeon%c2%ae-scalable-processors) - - [Intel® Xeon® Scalable Processors](#intel%c2%ae-xeon%c2%ae-scalable-processors) + - [Intel® Xeon® D Processor](#intel-xeon-d-processor) + - [2nd Generation Intel® Xeon® Scalable Processors](#2nd-generation-intel-xeon-scalable-processors) + - [Intel® Xeon® Scalable Processors](#intel-xeon-scalable-processors) - [Supported Operating Systems](#supported-operating-systems) - [Packages Version](#packages-version) From ec3a5f60952b9809f14e70b89591045111f75684 Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Fri, 18 Dec 2020 14:39:07 +0800 Subject: [PATCH 138/148] remove maunul steps --- doc/building-blocks/emco/openness-emco.md | 35 +++++++---------------- 1 file changed, 10 insertions(+), 25 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index f35ef98b..190329e4 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -15,9 +15,9 @@ Copyright (c) 2020 Intel Corporation - [EMCO Example: SmartCity Deployment](#emco-example-smartcity-deployment) ## Background -Edge Multi-Cluster Orchestration(EMCO), an OpenNESS Building Block, is a Geo-distributed application orchestrator for Kubernetes\*. EMCO operates at a higher level than Kubernetes and interacts with multiple of edges and clouds running Kubernetes. The main objective of EMCO is automation of the deployment of applications and services across multiple clusters. It acts as a central orchestrator that can manage edge services and network functions across geographically distributed edge clusters from different third parties. +Edge Multi-Cluster Orchestration(EMCO), an OpenNESS Building Block, is a Geo-distributed application orchestrator for Kubernetes\*. EMCO operates at a higher level than Kubernetes\* and interacts with multiple of edges and clouds running Kubernetes. The main objective of EMCO is automation of the deployment of applications and services across multiple clusters. It acts as a central orchestrator that can manage edge services and network functions across geographically distributed edge clusters from different third parties. -Increasingly we see a requirement of deploying 'composite applications' in multiple geographical locations. Some of the catalyst for this change are: +Increasingly we see a requirement of deploying 'composite applications' in multiple geographical locations. Some of the catalysts for this change are: - Latency - requirements for new low latency application use cases such as AR/VR. Need for ultra low latency response needed in IIOT and other cases. This requires running some parts of the applications on edges close to the user - Bandwidth - processing data on edges to avoid costs associated with transporting the data to clouds for processing, @@ -68,7 +68,7 @@ This document aims to familiarize the user with EMCO and [OpenNESS deployment fl | Composite application |

    The composite application is combination of multiple applications. Based on the deployment intent, various applications of the composite application get deployed at various locations. Also, some applications of the composite application get replicated in multiple locations.

    | | Deployment Intent |

    EMCO does not expect the editing of Helm charts provided by application/Network-function vendors by DevOps admins. Any customization and additional K8s resources that need to be present with the application are specified as deployment intents.

    | | Deployment Intent Group |

    The Deployment Intent Group represents an instance of a composite application that can be deployed with a specified composite profile and a specified set of deployment intents which will control the placement and other configuration of the application resources.

    | -| Placement |

    EMCO supports to create generic placement intents for a given composite application. Normally, EMCO scheduler calls placement controllers first to figure out the edge/cloud locations for a given application. Finally works with 'resource synchronizer & status collector' to deploy K8s resources on various Edge/Cloud clusters.

    | +| Placement |

    EMCO supports to create generic placement intents for a given composite application. Normally, EMCO scheduler calls placement controllers first to figure out the edge/cloud locations for a given application. Finally, it works with 'resource synchronizer & status collector' to deploy K8s resources on various Edge/Cloud clusters.

    | ### EMCO Architecture The following diagram depicts a high level overview of the EMCO architecture. @@ -282,7 +282,7 @@ emco rsync-99b85b4x88-ashmc 1/1 Running 0 14m ## EMCO Example: SmartCity Deployment - The [SmartCity application](https://github.com/OpenVisualCloud/Smart-City-Sample) is a sample application that is built on top of the OpenVINO™ and Open Visual Cloud software stacks for media processing and analytics. The composite application is composed of two parts: EdgeApp + WebApp (cloud application for additional post-processing such as calculating statistics and display/visualization) -- The edge cluster (representing regional office), the cloud cluster and the EMCO are connected with each others. +- The edge cluster (representing regional office), the cloud cluster and the EMCO are connected with each other. - The whole deployment architecture diagram is shown as below: ![OpenNESS EMCO](openness-emco-images/openness-emco-smtc.png) @@ -303,7 +303,7 @@ In the step, cluster provider will be created. And both the edge cluster and the 1. After [EMCO Installation With OpenNESS Flavor](#emco-installation-with-openness-flavor), logon to the EMCO host server and maker sure that Harbor and EMCO microservices are in running status. -2. On the edge and cloud cluster, run the following command to make Docker logon the Harbor deployed on the EMCO server, thus the clusters can pull SmartCity images from the Harbor: +2. On the edge and cloud cluster, run the following command to make Docker logon to the Harbor deployed on the EMCO server, thus the clusters can pull SmartCity images from the Harbor: ```shell HARBORRHOST= @@ -325,6 +325,8 @@ docker login ${HARBORRHOST} -u admin -p ${HARBORRPW} # ./setup_env.sh ``` +> **NOTE**: [SmartCity application](https://github.com/OpenVisualCloud/Smart-City-Sample) secrets need the specific information only accessiable by the edge cluster and the cloud cluster. `setup_env.sh` will automate it. + 5. Run the command for the clusters setup with expected result as below: ```shell # cd cli-scripts/ @@ -376,26 +378,9 @@ http://localhost:31298/v2 URL: projects/project_smtc/composite-apps/composite_smtc/v1/deployment-intent-groups/smtc-deployment-intent-group/instantiate Response Code: 202 Response: ``` -2. On both the edge cluster and the cloud cluster, manually create `tunnel_secret` as below: -```shell -#!/usr/bin/env bash -PRIKEY=/root/tunnel_secret/id_rsa -PUBKEY=/root/tunnel_secret/id_rsa.pub -KNOWHOSTS=/root/tunnel_secret/known_hosts -kubectl create secret generic tunnel-secret --from-file=${PRIKEY} --from-file=${PUBKEY} --from-file=${KNOWHOSTS} -``` - -3. On the cloud cluster, manually create `self-signed-certificate` as below: -```shell -#!/usr/bin/env bash -CRT=/root/tunnel_secret/self.crt -SELFKEY=/root//tunnel_secret/self.key -kubectl create secret generic self-signed-certificate --from-file=${CRT} --from-file=${SELFKEY} -``` -> **NOTE**: Actually EMCO supports generic K8S resource configuration including configmap, secret,etc. The example offers the usage about [configmap configuration](https://github.com/otcshare/edgeapps/blob/master/applications/smart-city-app/emco/cli-scripts/04_apps_template.yaml) to the clusters. -> **NOTE**: [SmartCity application](https://github.com/OpenVisualCloud/Smart-City-Sample) secrets need the specific information only accessiable by th edge cluster and the cloud cluster, we use manual steps here. +> **NOTE**: EMCO supports generic K8S resource configuration including configmap, secret,etc. The example offers the usage about [configmap configuration](https://github.com/otcshare/edgeapps/blob/master/applications/smart-city-app/emco/cli-scripts/04_apps_template.yaml) to the clusters. -4. Verify SmartCity Application Deployment Information. +2. Verify SmartCity Application Deployment Information. The pods on the edge cluster are in the running status as shown as below: ```shell @@ -422,7 +407,7 @@ cloud-storage-5658847d79-66bxz 1/1 Running 0 96m cloud-web-64fb95884f-m9fns 1/1 Running 0 20h ``` -5. Verify Smart City GUI +3. Verify Smart City GUI From a web browser, launch the Smart City web UI at URL `https://`. The GUI shows like: ![OpenNESS EMCO](openness-emco-images/openness-emco-smtcui.png) From d85b4dd7d493717fddfba60a3a1739a22a0dbdfa Mon Sep 17 00:00:00 2001 From: "xiaopeng,tong" Date: Fri, 18 Dec 2020 15:49:49 +0800 Subject: [PATCH 139/148] correct typo effor --- doc/building-blocks/emco/openness-emco.md | 37 +++++++++++------------ 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index ca4c9590..6c284756 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -7,6 +7,7 @@ Copyright (c) 2020 Intel Corporation - [Background](#background) - [EMCO Introduction](#emco-introduction) + - [EMCO Terminology](#emco-terminology) - [EMCO Architecture](#emco-architecture) - [Cluster Registration](#cluster-registration) - [Distributed Application Scheduler](#distributed-application-scheduler) @@ -21,7 +22,6 @@ Copyright (c) 2020 Intel Corporation - [Traffic Controller](#traffic-controller) - [Resource Syncronizer](#resource-syncronizer) - [Generic Action Controller](#generic-action-controller) - - [EMCO Terminology](#emco-terminology) - [EMCO API](#emco-api) - [EMCO Authentication and Authorization](#emco-authentication-and-authorization) - [EMCO Installation With OpenNESS Flavor](#emco-installation-with-openness-flavor) @@ -341,7 +341,6 @@ In the step, cluster provider will be created. And both the edge cluster and the 1. After [EMCO Installation With OpenNESS Flavor](#emco-installation-with-openness-flavor), logon to the EMCO host server and maker sure that Harbor and EMCO microservices are in running status. - 2. On the edge and cloud cluster, run the following command to make Docker logon to the Harbor deployed on the EMCO server, thus the clusters can pull SmartCity images from the Harbor: ```shell HARBORRHOST= @@ -365,15 +364,13 @@ docker login ${HARBORRHOST} -u admin -p ${HARBORRPW} > **NOTE**: [SmartCity application](https://github.com/OpenVisualCloud/Smart-City-Sample) secrets need the specific information only accessiable by the edge cluster and the cloud cluster. `setup_env.sh` will automate it. 5. Run the command for the clusters setup with expected result as below: - - ```shell - # cd cli-scripts/ - # ./01_apply.sh - - .... - URL: cluster-providers/smartcity-cluster-provider/clusters/edge01/labels Response Code: 201 Response: {"label-name":"LabelSmartCityEdge"} - URL: cluster-providers/smartcity-cluster-provider/clusters/cloud01/labels Response Code: 201 Response: {"label-name":"LabelSmartCityCloud"} - ``` +```shell +# cd cli-scripts/ +# ./01_apply.sh +.... +URL: cluster-providers/smartcity-cluster-provider/clusters/edge01/labels Response Code: 201 Response: {"label-name":"LabelSmartCityEdge"} +URL: cluster-providers/smartcity-cluster-provider/clusters/cloud01/labels Response Code: 201 Response: {"label-name":"LabelSmartCityCloud"} +``` ### Project Setup @@ -408,15 +405,15 @@ URL: projects/project_smtc/logical-clouds/default/instantiate Response Code: 200 ### Deploy SmartCity Application 1. Run the command for the SmartCity application deployment with expected result as below: - ```shell - # cd cli-scripts/ - # ./04_apply.sh - - http://localhost:31298/v2 - URL: projects/project_smtc/composite-apps/composite_smtc/v1/deployment-intent-groups/smtc-deployment-intent-group/approve Response Code: 202 Response: - http://localhost:31298/v2 - URL: projects/project_smtc/composite-apps/composite_smtc/v1/deployment-intent-groups/smtc-deployment-intent-group/instantiate Response Code: 202 Response: - ``` +```shell +# cd cli-scripts/ +# ./04_apply.sh + +http://localhost:31298/v2 +URL: projects/project_smtc/composite-apps/composite_smtc/v1/deployment-intent-groups/smtc-deployment-intent-group/approve Response Code: 202 Response: +http://localhost:31298/v2 +URL: projects/project_smtc/composite-apps/composite_smtc/v1/deployment-intent-groups/smtc-deployment-intent-group/instantiate Response Code: 202 Response: +``` > **NOTE**: EMCO supports generic K8S resource configuration including configmap, secret,etc. The example offers the usage about [configmap configuration](https://github.com/otcshare/edgeapps/blob/master/applications/smart-city-app/emco/cli-scripts/04_apps_template.yaml) to the clusters. 2. Verify SmartCity Application Deployment Information. From d82d692a03dce11151ab4555c746f8198c424965 Mon Sep 17 00:00:00 2001 From: Zachary Zhou Date: Fri, 18 Dec 2020 16:13:46 +0800 Subject: [PATCH 140/148] [OP-6196] VCAC-A: add description for VCA system image build force build flag (#380) * VCAC-A: add description for VCA system image build force build flag * VCAC-A: more for flag name and its default value * VCAC-A: add the how-to-use stuff in the flavor section * VCAC-A: remove simple * VCAC-A: add clarification for force_build_enable flag * VCAC-A: add seperate NOTE and fix grammar issue * VCAC-A: correct grammar in flavors.md * VCAC-A: clean the sentences Co-authored-by: tongtongxiaopeng1979 <46148613+tongtongxiaopeng1979@users.noreply.github.com> --- .../enhanced-platform-awareness/openness-vcac-a.md | 2 +- doc/flavors.md | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/building-blocks/enhanced-platform-awareness/openness-vcac-a.md b/doc/building-blocks/enhanced-platform-awareness/openness-vcac-a.md index 127337ee..d86e9b9b 100644 --- a/doc/building-blocks/enhanced-platform-awareness/openness-vcac-a.md +++ b/doc/building-blocks/enhanced-platform-awareness/openness-vcac-a.md @@ -30,7 +30,7 @@ The VCAC-A installation involves a [two-stage build](https://github.com/OpenVisu 1. VCA host kernel build and configuration: this stage patches the CentOS\* 7.8 kernel and builds the necessary modules and dependencies. 2. VCAC-A system image (VCAD) generation: this stage builds an Ubuntu\*-based (VCAD) image that is loaded on the VCAC-A card. -The OEK automates the overall build and installation process of the VCAC-A card by joining it as a standalone logical node to the OpenNESS cluster. When successful, the OpenNESS controller is capable of selectively scheduling workloads on the "VCA node" for proximity to the hardware acceleration. +The OEK automates the overall build and installation process of the VCAC-A card by joining it as a standalone logical node to the OpenNESS cluster. The OEK supports force build VCAC-A system image (VCAD) via flag (force\_build\_enable: true (default value)), it also allows the customer to disable the flag to re-use last system image built. When successful, the OpenNESS controller is capable of selectively scheduling workloads on the "VCA node" for proximity to the hardware acceleration. When onboarding applications such as [Open Visual Cloud Smart City Sample](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app) with the existence of VCAC-A, the OpenNESS controller schedules all the application pods onto the edge node except the *video analytics* processing that is scheduled on the VCA node as shown in the figure below. diff --git a/doc/flavors.md b/doc/flavors.md index dc0fbe49..ce339d4f 100644 --- a/doc/flavors.md +++ b/doc/flavors.md @@ -102,7 +102,8 @@ Steps to install this flavor are as follows: $ deploy_ne.sh -f media-analytics-vca ``` -> **NOTE:** At the time of writing this document, *Weave Net* is the only supported CNI for network edge deployments involving VCAC-A acceleration. The `weavenet` CNI is automatically selected by the *media-analytics-vca*. +> **NOTE:** At the time of writing this document, *Weave Net* is the only supported CNI for network edge deployments involving VCAC-A acceleration. The `weavenet` CNI is automatically selected by the *media-analytics-vca*. +> **NOTE:** The flag `force_build_enable` (default true) supports force build VCAC-A system image (VCAD) by default, it is defined in flavors/media-analytics-vca/all.yml. By setting the flag as false, OEK will not rebuild the image and re-use the last system image built during deployment. If the flag is true, OEK will force build VCA host kernel and node system image which will take several hours. This deployment flavor enables the following ingredients: * Node Feature Discovery @@ -215,4 +216,4 @@ istio_kiali_password: "{{ lookup('password', '/dev/null length=16') }}" istio_kiali_nodeport: 30001 ``` -> **NOTE:** If creating a customized flavor, the Istio service mesh installation can be included in the Ansible playbook by setting the flag `ne_istio_enable: true` in the flavor file. \ No newline at end of file +> **NOTE:** If creating a customized flavor, the Istio service mesh installation can be included in the Ansible playbook by setting the flag `ne_istio_enable: true` in the flavor file. From b34de8698a7d810d79b69a52572ea21e11ded177 Mon Sep 17 00:00:00 2001 From: Amr Mokhtar Date: Fri, 18 Dec 2020 10:36:44 +0000 Subject: [PATCH 141/148] Add known issue with PCM --- openness_releasenotes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/openness_releasenotes.md b/openness_releasenotes.md index 94bb9c37..90ad5b24 100644 --- a/openness_releasenotes.md +++ b/openness_releasenotes.md @@ -371,6 +371,7 @@ There is one issue relevant to this release: it is not possible to remove the ap ## OpenNESS - 20.12 - cAdvisor CPU utilization of Edge Node is high and could cause a delay to get an interactive SSH session. A work around is to remove CAdvisor if not needed using `helm uninstall cadvisor -n telemetry` - An issue appears when the KubeVirt Containerized Data Importer (CDI) upload pod is deployed with Kube-OVN CNI, the deployed pods readiness probe fails and pod is never in ready state. It is advised that the user uses other CNI such as Calico CNI when using CDI with OpenNESS +- Telemetry deployment with PCM enabled will cause a deployment failure in single node cluster deployments due to PCM dashboards for Grafana not being found # Release Content From dd7d9018225bbff20520089b60e8103267e39dbe Mon Sep 17 00:00:00 2001 From: Amr Mokhtar Date: Fri, 18 Dec 2020 14:58:57 +0000 Subject: [PATCH 142/148] Added note about VM needs for Istio --- doc/flavors.md | 2 ++ openness_releasenotes.md | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/flavors.md b/doc/flavors.md index dc0fbe49..5cadb6ee 100644 --- a/doc/flavors.md +++ b/doc/flavors.md @@ -187,6 +187,8 @@ This deployment flavor enables the following ingredients: The pre-defined *service-mesh* deployment flavor installs the OpenNESS service mesh that is based on [Istio](https://istio.io/). +> **NOTE**: When deploying Istio Service Mesh in VMs, a minimum of 8 CPU core and 16GB RAM must be allocated to each worker VM so that Istio operates smoothly + Steps to install this flavor are as follows: 1. Configure OEK as described in the [OpenNESS Getting Started Guide for Network Edge](getting-started/network-edge/controller-edge-node-setup.md). 2. Run OEK deployment script: diff --git a/openness_releasenotes.md b/openness_releasenotes.md index 90ad5b24..7ffa0d1b 100644 --- a/openness_releasenotes.md +++ b/openness_releasenotes.md @@ -246,7 +246,8 @@ This document provides high-level system features, issues, and limitations infor - Following from the previous release decision of pausing Native on-premises Development the code has been move to a dedicated repository “native-on-prem” - Kubernetes based solution will now support both Network and on-premises Edge - Service Mesh support - - Basic support for Service Mesh using istio within an OpenNESS cluster + - Basic support for Service Mesh using Istio Service Mesh within an OpenNESS cluster. + > **NOTE**: When deploying Istio Service Mesh in VMs, a minimum of 8 CPU core and 16GB RAM must be allocated to each worker VM so that Istio operates smoothly - Application of Service Mesh openness 5G and Media analytics - A dedicated network for service to service communications - EAA Update - EAA microservices has been updated to be more cloud-native friendly @@ -321,6 +322,8 @@ There are no non-Intel issues relevant to this release. - Further optimized the Kubernetes based deployment by supporting multiple Flavors - Network edge installation time is optimized using pre-built Docker images - cAdvisor occasional failure issue is resolved +- "Traffic rule creation: cannot parse filled and cleared fields" in Legacy OnPremises is fixed +- Issue fixed when removing Edge Node from Controller when its offline and traffic policy is configured or app deployed ## OpenNESS - 20.12 - Known issue with Pod that uses hugepage get stuck in terminating state on deletion hs been fixed after upgrading to Kubernetes 1.19.3 From 4e22c7c3d56f1f6d350bb82e089e0c7a23971418 Mon Sep 17 00:00:00 2001 From: Krishnamurthy Jambur <47258934+krishnajs@users.noreply.github.com> Date: Fri, 18 Dec 2020 15:04:08 +0000 Subject: [PATCH 143/148] Update openness_releasenotes.md --- openness_releasenotes.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openness_releasenotes.md b/openness_releasenotes.md index 90ad5b24..b4b0a744 100644 --- a/openness_releasenotes.md +++ b/openness_releasenotes.md @@ -43,7 +43,7 @@ This document provides high-level system features, issues, and limitations infor - [Release Content](#release-content) - [OpenNESS - 19.06](#openness---1906-4) - [OpenNESS - 19.06.01](#openness---190601-4) - - [OpenNESS 19.09](#openness-1909) + - [OpenNESS - 19.09](#openness---1909-3) - [OpenNESS - 19.12](#openness---1912-4) - [OpenNESS - 20.03](#openness---2003-4) - [OpenNESS - 20.06](#openness---2006-4) @@ -381,7 +381,7 @@ OpenNESS Edge node, OpenNESS Controller, Common, Spec, and OpenNESS Applications ## OpenNESS - 19.06.01 OpenNESS Edge node, OpenNESS Controller, Common, Spec, and OpenNESS Applications. -## OpenNESS 19.09 +## OpenNESS - 19.09 OpenNESS Edge node, OpenNESS Controller, Common, Spec, and OpenNESS Applications. ## OpenNESS - 19.12 From 5dd6b65bb1555f190c71db236e0183bc8f152279 Mon Sep 17 00:00:00 2001 From: Amr Mokhtar Date: Fri, 18 Dec 2020 15:05:34 +0000 Subject: [PATCH 144/148] remove unnecessary file --- openness_releasenotes-o.md | 445 ------------------------------------- openness_releasenotes.md | 4 +- 2 files changed, 2 insertions(+), 447 deletions(-) delete mode 100644 openness_releasenotes-o.md diff --git a/openness_releasenotes-o.md b/openness_releasenotes-o.md deleted file mode 100644 index aa6b187e..00000000 --- a/openness_releasenotes-o.md +++ /dev/null @@ -1,445 +0,0 @@ -```text -SPDX-License-Identifier: Apache-2.0 -Copyright (c) 2019-2020 Intel Corporation -``` - -# Release Notes -This document provides high-level system features, issues, and limitations information for Open Network Edge Services Software (OpenNESS). -- [Release history](#release-history) - - [OpenNESS - 19.06](#openness---1906) - - [OpenNESS - 19.09](#openness---1909) - - [OpenNESS - 19.12](#openness---1912) - - [OpenNESS - 20.03](#openness---2003) - - [OpenNESS - 20.06](#openness---2006) - - [OpenNESS - 20.09](#openness---2009) - - [OpenNESS - 20.12](#openness---2012) -- [Changes to Existing Features](#changes-to-existing-features) - - [OpenNESS - 19.06](#openness---1906-1) - - [OpenNESS - 19.06.01](#openness---190601) - - [OpenNESS - 19.09](#openness---1909-1) - - [OpenNESS - 19.12](#openness---1912-1) - - [OpenNESS - 20.03](#openness---2003-1) - - [OpenNESS - 20.06](#openness---2006-1) - - [OpenNESS - 20.09](#openness---2009-1) -- [Fixed Issues](#fixed-issues) - - [OpenNESS - 19.06](#openness---1906-2) - - [OpenNESS - 19.06.01](#openness---190601-1) - - [OpenNESS - 19.06.01](#openness---190601-2) - - [OpenNESS - 19.12](#openness---1912-2) - - [OpenNESS - 20.03](#openness---2003-2) - - [OpenNESS - 20.06](#openness---2006-2) - - [OpenNESS - 20.09](#openness---2009-2) -- [Known Issues and Limitations](#known-issues-and-limitations) - - [OpenNESS - 19.06](#openness---1906-3) - - [OpenNESS - 19.06.01](#openness---190601-3) - - [OpenNESS - 19.09](#openness---1909-2) - - [OpenNESS - 19.12](#openness---1912-3) - - [OpenNESS - 20.03](#openness---2003-3) - - [OpenNESS - 20.06](#openness---2006-3) - - [OpenNESS - 20.09](#openness---2009-3) - - [OpenNESS - 20.12](#openness---2012-1) -- [Release Content](#release-content) - - [OpenNESS - 19.06](#openness---1906-4) - - [OpenNESS - 19.06.01](#openness---190601-4) - - [OpenNESS 19.09](#openness-1909) - - [OpenNESS - 19.12](#openness---1912-4) - - [OpenNESS - 20.03](#openness---2003-4) - - [OpenNESS - 20.06](#openness---2006-4) - - [OpenNESS - 20.09](#openness---2009-4) -- [Hardware and Software Compatibility](#hardware-and-software-compatibility) - - [Intel® Xeon® D Processor](#intel%c2%ae-xeon%c2%ae-d-processor) - - [2nd Generation Intel® Xeon® Scalable Processors](#2nd-generation-intel%c2%ae-xeon%c2%ae-scalable-processors) - - [Intel® Xeon® Scalable Processors](#intel%c2%ae-xeon%c2%ae-scalable-processors) -- [Supported Operating Systems](#supported-operating-systems) -- [Packages Version](#packages-version) - -# Release history - -## OpenNESS - 19.06 -- Edge Cloud Deployment options - - Controller-based deployment of Applications in Docker Containers/VM–using-Libvirt - - Controller + Kubernetes\* based deployment of Applications in Docker\* Containers -- OpenNESS Controller - - Support for Edge Node Orchestration - - Support for Web UI front end -- OpenNESS APIs - - Edge Application APIs - - Edge Virtualization Infrastructure APIs - - Edge Application life cycle APIs - - Core Network Configuration APIs - - Edge Application authentication APIs - - OpenNESS Controller APIs -- Platform Features - - Microservices based Appliance and Controller agent deployment - - Support for DNS for the edge - - CentOS\* 7.6 / CentOS 7.6 + RT kernel - - Basic telemetry support -- Sample Reference Applications - - OpenVINO™ based Consumer Application - - Producer Application supporting OpenVINO™ -- Dataplane - - DPDK/KNI based Dataplane – NTS - - Support for deployment on IP, LTE (S1, SGi and LTE CUPS) -- Cloud Adapters - - Support for running Amazon\* Greengrass\* cores as an OpenNESS application - - Support for running Baidu\* Cloud as an OpenNESS application -- Documentation - - User Guide Enterprise and Operator Edge - - OpenNESS Architecture - - Swagger/Proto buff External API Guide - - 4G/CUPS API whitepaper - - Cloud Connector App note - - OpenVINO™ on OpenNESS App note - -## OpenNESS - 19.09 -- Edge Cloud Deployment options - - Async method for image download to avoid timeout. -- Dataplane - - Support for OVN/OVS based Dataplane and network overlay for Network Edge (based on Kubernetes) -- Cloud Adapters - - Support for running Amazon Green grass cores as an OpenNESS application with OVN/OVS as Dataplane and network overlay -- Support for Inter-App comms - - Support for OVS-DPDK or Linux\* bridge or Default interface for inter-Apps communication for OnPrem deployment -- Accelerator support - - Support for HDDL-R accelerator for interference in a container environment for OnPrem deployment -- Edge Applications - - Early Access Support for Open Visual Cloud (OVC) based Smart City App on OpenNESS OnPrem - - Support for Dynamic use of VPU or CPU for Inferences -- Gateway - - Support for Edge node and OpenNESS Controller gate way to support route-ability -- Documentation - - OpenNESS Architecture (update) - - OpenNESS Support for OVS as dataplane with OVN - - Open Visual Cloud Smart City Application on OpenNESS - Solution Overview - - Using Intel® Movidius™ Myriad™ X High Density Deep Learning (HDDL) solution in OpenNESS - - OpenNESS How-to Guide (update) - -## OpenNESS - 19.12 -- Hardware - - Support for Cascade lake 6252N - - Support for Intel® FPGA Programmable Acceleration Card (Intel® FPGA PAC) N3000 -- Edge Application - - Fully cloud native Open Visual Cloud Smart City Application pipeline on OpenNESS Network edge. -- Edge cloud - - EAA and CNCA microservice as native Kubernetes-managed services - - Support for Kubernetes version 1.16.2 -- Edge Compute EPA features support for Network Edge - - CPU Manager: Support deployment of POD with dedicated pinning - - SRIOV NIC: Support deployment of POD with dedicated SRIOV VF from NIC - - SRIOV FPGA: Support deployment of POD with dedicated SRIOV VF from FPGA - - Topology Manager: Support k8s to manage the resources allocated to workloads in a NUMA topology-aware manner - - BIOS/FW Configuration service - Intel SysCfg based BIOS/FW management service - - Hugepages: Support for allocation of 1G/2M huge pages to the Pod - - Multus: Support for Multiple network interface in the PODs deployed by Kubernetes - - Node Feature discovery: Support detection of Silicon and Software features and automation of deployment of CNF and Applications - - FPGA Remote System Update service: Support the Open Programmable Acceleration Engine (OPAE) (fpgautil) based image update service for FPGA - - Non-Privileged Container: Support deployment of non-privileged pods (CNFs and Applications as reference) -- Edge Compute EPA features support for On-Premises - - Using Intel® Movidius™ Myriad™ X High Density Deep Learning (HDDL) solution in OpenNESS -- OpenNESS Experience Kit for Network and OnPremises edge - - Offline Release Package: Customers should be able to create an installer package that can be used to install OnPremises version of OpenNESS without the need for Internet access. -- 5G NR Edge Cloud deployment support - - 5G NR edge cloud deployment support with SA mode - - AF: Support for 5G NGC Application function as a microservice - - NEF: Support for 5G NGC Network Exposure function as a microservice - - Support for 5G NR UDM, UPF, AMF, PCF and SCF (not part of the release) -- DNS support - - DNS support for UE - - DNS Support for Edge applications -- Documentation - - Completely reorganized documentation structure for ease of navigation - - 5G NR Edge Cloud deployment Whitepaper - - EPA application note for each of the features - -## OpenNESS - 20.03 -- OVN/OVS-DPDK support for dataplane - - Network Edge: Support for kube-ovn CNI with OVS or OVS-DPDK as dataplane. Support for Calico as CNI. - - OnPremises Edge: Support for OVS-DPDK CNI with OVS-DPDK as dataplane supporting application deployed in containers or VMs -- Support for VM deployments on Kubernetes mode - - Kubevirt based VM deployment support - - EPA Support for SRIOV Virtual function allocation to the VMs deployed using Kubernetes -- EPA support - OnPremises - - Support for dedicated core allocation to applications running as VMs or Containers - - Support for dedicated SRIOV VF allocation to applications running in VM or containers - - Support for system resource allocation into the application running as a container - - Mount point for shared storage - - Pass environment variables - - Configure the port rules -- Core Network Feature (5G) - - PFD Management API support (3GPP 23.502 Sec. 52.6.3 PFD Management service) - - AF: Added support for PFD Northbound API - - NEF: Added support for PFD southbound API, and Stubs to loopback the PCF calls. - - kubectl: Enhanced CNCA kubectl plugin to configure PFD parameters - - WEB UI: Enhanced CNCA WEB UI to configure PFD params in OnPerm mode - - Auth2 based authentication between 5G Network functions: (as per 3GPP Standard) - - Implemented oAuth2 based authentication and validation - - AF and NEF communication channel is updated to authenticated based on oAuth2 JWT token in addition to HTTP2. - - HTTPS support - - Enhanced the 5G OAM, CNCA (web-ui and kube-ctl) to HTTPS interface -- Modular Playbook - - Support for customers to choose real-time or non-realtime kernel for an edge node - - Support for customers to choose CNIs - Validated with Kube-OVN and Calico -- Edge Apps - - FlexRAN: Dockerfile and pod specification for the deployment of 4G or 5G FlexRAN - - AF: Dockerfile and pod specification - - NEF: Dockerfile and pod specification - - UPF: Dockerfile and pod specification - -## OpenNESS - 20.06 -- OpenNESS is now available in two distributions - - Open source (Apache 2.0 license) - - Intel Distribution of OpenNESS (Intel Proprietary License) - - Includes all the code from the open source distribution plus additional features and enhancements to improve the user experience - - Access requires a signed license. A request for access can be made at openness.org by navigating to the "Products" section and selecting "Intel Distribution of OpenNESS" - - Both distributions are hosted at github.com/open-ness -- On premises configuration now optionally supports Kubernetes -- Dataplane - - Support for Calico eBPF as CNI - - Performance baselining of the CNIs -- Visual Compute and Media Analytics - - Intel Visual Cloud Accelerator Card - Analytics (VCAC-A) Kubernetes deployment support (CPU, GPU, and VPU) - - Node feature discovery of VCAC-A - - Telemetry support for VCAC-A - - Provide ansible and Helm -playbook support for OVC codecs Intel® Xeon® CPU mode - video analytics service (REST API) for developers -- Edge Applications - - Smart City Application Pipeline supporting CPU or VCAC-A mode with Helm chart - - CDN Content Delivery using NGINX with SR-IOV capability for higher performance with Helm chart - - CDN transcode sample application using Intel® Xeon® CPU optimized media SDK with Helm chart - - Support for Transcoding Service using Intel® Xeon® CPU optimized media SDK with Helm chart - - Intel Edge Insights application support with Helm chart -- Edge Network Functions - - FlexRAN DU with Helm Chart (FlexRAN not part of the release) - - xRAN Fronthaul with Helm CHart (xRAN app not part of the release) - - Core Network Function - Application Function with Helm chart - - Core Network Function - Network Exposure Function With Helm chart - - Core Network Function - UPF (UPF app not part of the release) - - Core network Support functions - OAM and CNTF -- Helm Chart for Kubernetes enhancements - - NFD, CMK, SRIOV-Device plugin and Multus\* - - Support for local Docker registry setup -- Support for deployment-specific Flavors - - Minimal - - RAN - 4G and 5G - - Media Analytics with VCAC-A and with CPU only mode - - CDN - Transcode - - CDN - Content Delivery - - Azure - Deployment of OpenNESS cluster on Microsoft\* Azure\* cloud -- Support for OpenNESS on CSP Cloud - - Azure - Deployment of OpenNESS cluster on Microsoft\* Azure\* cloud -- Telemetry Support - - Support for Collectd backend with hardware from Intel and custom metrics - - cpu, cpufreq, load, hugepages, intel_pmu, intel_rdt, ipmi, ovs_stats, ovs_pmd_stats - - FPGA – PACN3000 (collectd) - Temp, Power draw - - VPU Device memory, VPU device thermal, VPU Device utilization - - Open Telemetry - Support for collector and exporter for metrics (e.g., heartbeat from app) - - Support for PCM counter for Prometheus\* and Grafana\* - - Telemetry Aware Scheduler -- Early Access support for Resource Management Daemon (RMD) - - RMD for cache allocation to the application Pods -- Ability to deploy OpenNESS Master and Node on the same platform - -## OpenNESS - 20.09 -- Native On-premises mode - - Following from the previous release decision of pausing Native on-premises Development the code has been move to a dedicated repository “native-on-prem” - - Kubernetes based solution will now support both Network and on-premises Edge -- Service Mesh support - - Basic support for Service Mesh using istio within an OpenNESS cluster - - Application of Service Mesh openness 5G and Media analytics - A dedicated network for service to service communications -- EAA Update - - EAA microservices has been updated to be more cloud-native friendly -- Edge Insights Application (update) - - Industrial Edge Insights Software update to version 2.3. - - Experience Kit now supports multiple detection video's – Safety equipment detection, PCB default detection and also supports external video streams. - -## OpenNESS - 20.12 -- uCPE/SDWAN -- EMCO-OpenNESS -- Operators -- Offline installer -- Application Data delivery Performance -- CERA on-premises (pushed from 20.09 due to CR for EIS support) -- CSP support for Azure (will be released between 20.09 and 20.12) -- Kubernetes certification for 1.19 - -# Changes to Existing Features - -## OpenNESS - 19.06 -There are no unsupported or discontinued features relevant to this release. - -## OpenNESS - 19.06.01 -There are no unsupported or discontinued features relevant to this release. - -## OpenNESS - 19.09 -There are no unsupported or discontinued features relevant to this release. - -## OpenNESS - 19.12 -- NTS Dataplane support for Network edge is discontinued. -- Controller UI for Network edge has been discontinued except for the CNCA configuration. Customers can optionally leverage the Kubernetes dashboard to onboard applications. -- Edge node only supports non-realtime kernel. - -## OpenNESS - 20.03 -- Support for HDDL-R only restricted to non-real-time or non-customized CentOS 7.6 default kernel. - -## OpenNESS - 20.06 -- Offline install for Native mode OnPremises has be deprecated - -## OpenNESS - 20.09 -- Native on-premises is now located in a dedicated repository with no further feature updates from previous release. - -# Fixed Issues - -## OpenNESS - 19.06 -There are no non-Intel issues relevant to this release. - -## OpenNESS - 19.06.01 -There are no non-Intel issues relevant to this release. - -## OpenNESS - 19.06.01 -- VHOST HugePages dependency -- Bug in getting appId by IP address for the container -- Wrong value of appliance verification key printed by ansible script -- NTS is hanging when trying to add same traffic policy to multiple interfaces -- Application in VM cannot be started -- Bug in libvirt deployment -- Invalid status after app un-deployment -- Application memory field is in MB - -## OpenNESS - 19.12 -- Improved usability/automation in Ansible scripts - -## OpenNESS - 20.03 -- Realtime Kernel support for network edge with K8s. -- Modular playbooks - -## OpenNESS - 20.06 -- Optimized the Kubernetes based deployment by supporting multiple Flavors - -## OpenNESS - 20.09 -- Further optimized the Kubernetes based deployment by supporting multiple Flavors -- Network edge installation time is optimized using pre-built Docker images -- cAdvisor occasional failure issue is resolved - -# Known Issues and Limitations -## OpenNESS - 19.06 -There are no issues relevant to this release. - -## OpenNESS - 19.06.01 -There is one issue relevant to this release: it is not possible to remove the application from Edge Node in case of error during application deployment. The issue concerns applications in a Virtual Machine. - -## OpenNESS - 19.09 -- Gateway in multi-node - will not work when few nodes will have the same public IP (they will be behind one common NAT) -- Ansible in K8s can cause problems when rerun on a machine: - - If after running all 3 scripts - - Script 02 will be run again (it will not remove all necessary K8s related artifacts) - - We would recommend cleaning up the installation on the node - -## OpenNESS - 19.12 -- Gateway in multi-node - will not work when few nodes will have the same public IP (they will be behind one common NAT) -- OpenNESS On-Premises: Cannot remove a failed/disconnected the edge node information/state from the controller -- The CNCA API (4G & 5G) supported in this release is an early access reference implementation and does not support authentication -- Real-time kernel support has been temporarily disabled to address the Kubernetes 1.16.2 and Realtime kernel instability. - -## OpenNESS - 20.03 -- On-Premises edge installation takes more than 1.5 hours because of the Docker image build for OVS-DPDK -- Network edge installation takes more than 1.5 hours because of the Docker image build for OVS-DPDK -- OpenNESS controller allows management NICs to be in the pool of configuration, which might allow configuration by mistake. Thus, disconnecting the node from control plane -- When using the SRIOV EPA feature added in 20.03 with OVNCNI, the container cannot access the CNI port. This is due to the SRIOV port being set by changing the network used by the container from default to a custom network. This overwrites the OVNCNI network setting configured before this to enable the container to work with OVNCNI. Another issue with the SRIOV, is that this also overwrites the network configuration with the EAA and edgedns, agents, which prevents the SRIOV enabled container from communicating with the agents. -- Cannot remove Edge Node from Controller when its offline and traffic policy is configured or the app is deployed. - -## OpenNESS - 20.06 -- On-Premises edge installation takes 1.5hrs because of the Docker image build for OVS-DPDK -- Network edge installation takes 1.5hrs because of docker image build for OVS-DPDK -- OpenNESS controller allows management NICs to be in the pool of configuration, which might allow configuration by mistake and thereby disconnect the node from control plane -- When using the SRIOV EPA feature added in 20.03 with OVNCNI, the container cannot access the CNI port. This is due to the SRIOV port being set by changing the network used by the container from default to a custom network, This overwrites the OVNCNI network setting configured prior to this to enable the container to work with OVNCNI. Another issue with the SRIOV, is that this also overwrites the network configuration with the EAA and edgedns, agents, which prevents the SRIOV enabled container from communicating with the agents. -- Cannot remove Edge Node from Controller when its offline and traffic policy is configured or app is deployed. -- Legacy OnPremises - Traffic rule creation: cannot parse filled and cleared fields -- There is an issue with using CDI when uploading VM images when CMK is enabled due to missing CMK taint toleration. The CDI upload pod does not get deployed and the `virtctl` plugin command times out waiting for the action to complete. A workaround for the issue is to invoke the CDI upload command, edit the taint toleration for the CDI upload to tolerate CMK, update the pod, create the PV, and let the pod run to completion. -- There is a known issue with cAdvisor which in certain scenarios occasionally fails to expose the metrics for the Prometheus endpoint. See the following GitHub\* link: https://github.com/google/cadvisor/issues/2537 - -## OpenNESS - 20.09 -- Pod which uses hugepage get stuck in terminating state on deletion. This is a known issue on Kubernetes 1.18.x and is planned to be fixed in 1.19.x -- Calico cannot be used as secondary CNI with Multus in OpenNESS. It will work only as primary CNI. Calico must be the only network provider in each cluster. We do not currently support migrating a cluster with another network provider to use Calico networking. https://docs.projectcalico.org/getting-started/kubernetes/requirements -- collectd Cache telemetry using RDT does not work when RMD is enabled because of resource conflict. Workaround is to disable collectd RDT plugin when using RMD - this by default is implemented globally. With this workaround customers will be able to allocate the Cache but not use Cache related telemetry. In case where RMD is not being enabled customers who desire RDT telemetry can re-enable collectd RDT. - -## OpenNESS - 20.12 -- CAdvisor CPU utilization of Edge Node is high and could cause a delay to get an interactive SSH session. A work around is to remove CAdvisor if not needed using `helm uninstall cadvisor -n telemetry` - -# Release Content - -## OpenNESS - 19.06 -OpenNESS Edge node, OpenNESS Controller, Common, Spec, and OpenNESS Applications. - -## OpenNESS - 19.06.01 -OpenNESS Edge node, OpenNESS Controller, Common, Spec, and OpenNESS Applications. - -## OpenNESS 19.09 -OpenNESS Edge node, OpenNESS Controller, Common, Spec, and OpenNESS Applications. - -## OpenNESS - 19.12 -OpenNESS Edge node, OpenNESS Controller, Common, Spec, OpenNESS Applications, and Experience kit. - -## OpenNESS - 20.03 -OpenNESS Edge node, OpenNESS Controller, Common, Spec, OpenNESS Applications, and Experience kit. - -## OpenNESS - 20.06 -- Open Source: Edge node, Controller, Epcforedge, Common, Spec, Applications, and Experience kit. -- IDO: IDO Edge node, IDO Controller, IDO Epcforedge, IDO Spec, and IDO Experience kit. - -## OpenNESS - 20.09 -- Open Source: Edge node, Controller, Epcforedge, Common, Spec, Applications and Experience kit. -- IDO: IDO Edge node, IDO Controller, IDO Epcforedge, IDO Spec and IDO Experience kit. - > **NOTE**: Edge applications repo is common to Open Source and IDO - -# Hardware and Software Compatibility -OpenNESS Edge Node has been tested using the following hardware specification: - -## Intel® Xeon® D Processor -- Supermicro\* 3U form factor chassis server, product SKU code: 835TQ-R920B -- Motherboard type: [X11SDV-16C-TP8F](https://www.supermicro.com/products/motherboard/Xeon/D/X11SDV-16C-TP8F.cfm) -- Intel® Xeon® Processor D-2183IT - -## 2nd Generation Intel® Xeon® Scalable Processors - -| | | -|------------------|---------------------------------------------------------------| -| CLX-SP | Compute Node based on CLX-SP(6252N) | -| Board | S2600WFT server board | -| | 2 x Intel® Xeon® Gold 6252N CPU @ 2.30GHz | -| | 2 x associated Heatsink | -| Memory | 12x Micron 16GB DDR4 2400MHz DIMMS* [2666 for PnP] | -| Chassis | 2U Rackmount Server Enclosure | -| Storage | Intel M.2 SSDSCKJW360H6 360G | -| NIC | 1x Intel® Fortville NIC X710DA4 SFP+ ( PCIe card to CPU-0) | -| QAT | Intel® Quick Assist Adapter Device 37c8 | -| | (Symmetrical design) LBG integrated | -| NIC on board | Intel-Ethernet-Controller-I210 (for management) | -| Other card | 2x PCIe Riser cards | - -## Intel® Xeon® Scalable Processors - -| | | -|------------------|---------------------------------------------------------------| -| SKX-SP | Compute Node based on SKX-SP(6148) | -| Board | WolfPass S2600WFQ server board(symmetrical QAT)CPU | -| | 2 x Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz | -| | 2 x associated Heatsink | -| Memory | 12x Micron 16GB DDR4 2400MHz DIMMS* [2666 for PnP] | -| Chassis | 2U Rackmount Server Enclosure | -| Storage | Intel® M.2 SSDSCKJW360H6 360G | -| NIC | 1x Intel® Fortville NIC X710DA4 SFP+ ( PCIe card to CPU-0) | -| QAT | Intel® Quick Assist Adapter Device 37c8 | -| | (Symmetrical design) LBG integrated | -| NIC on board | Intel-Ethernet-Controller-I210 (for management) | -| Other card | 2x PCIe Riser cards | -| HDDL-R | [Mouser Mustang-V100](https://www.mouser.ie/datasheet/2/763/Mustang-V100_brochure-1526472.pdf) | -| VCAC-A | [VCAC-A Accelerator for Media Analytics](https://www.intel.com/content/dam/www/public/us/en/documents/datasheets/media-analytics-vcac-a-accelerator-card-by-celestica-datasheet.pdf) | -| PAC-N3000 | [Intel® FPGA Programmable Acceleration Card (Intel® FPGA PAC) N3000 ](https://www.intel.com/content/www/us/en/programmable/products/boards_and_kits/dev-kits/altera/intel-fpga-pac-n3000/overview.html) | - -# Supported Operating Systems - -OpenNESS was tested on CentOS Linux release 7.8.2003 (Core) -> **NOTE**: OpenNESS is tested with CentOS 7.8 Pre-empt RT kernel to ensure VNFs and Applications can co-exist. There is no requirement from OpenNESS software to run on a Pre-empt RT kernel. - -# Packages Version - -Package: telemetry, cadvisor 0.36.0, grafana 7.0.3, prometheus 2.16.0, prometheus: node exporter 1.0.0-rc.0, golang 1.14.9 docker 19.03.12, kubernetes 1.19.3, dpdk 18.11.6, ovs 2.12.0, ovn 2.12.0, helm 3.0, kubeovn 1.0.1, flannel 0.12.0, calico 3.16.0, multus 3.6, sriov cni 2.3, nfd 0.6.0, cmk v1.4.1, TAS we build from specific commit "a13708825e854da919c6fdf05d50753113d04831" diff --git a/openness_releasenotes.md b/openness_releasenotes.md index 7ffa0d1b..c6187b00 100644 --- a/openness_releasenotes.md +++ b/openness_releasenotes.md @@ -43,7 +43,7 @@ This document provides high-level system features, issues, and limitations infor - [Release Content](#release-content) - [OpenNESS - 19.06](#openness---1906-4) - [OpenNESS - 19.06.01](#openness---190601-4) - - [OpenNESS 19.09](#openness-1909) + - [OpenNESS - 19.09](#openness---1909-3) - [OpenNESS - 19.12](#openness---1912-4) - [OpenNESS - 20.03](#openness---2003-4) - [OpenNESS - 20.06](#openness---2006-4) @@ -384,7 +384,7 @@ OpenNESS Edge node, OpenNESS Controller, Common, Spec, and OpenNESS Applications ## OpenNESS - 19.06.01 OpenNESS Edge node, OpenNESS Controller, Common, Spec, and OpenNESS Applications. -## OpenNESS 19.09 +## OpenNESS - 19.09 OpenNESS Edge node, OpenNESS Controller, Common, Spec, and OpenNESS Applications. ## OpenNESS - 19.12 From c74f06aa41cec79f041b315569c24bd1463fe096 Mon Sep 17 00:00:00 2001 From: Amr Mokhtar Date: Fri, 18 Dec 2020 15:35:16 +0000 Subject: [PATCH 145/148] Updates for Jekyll --- _data/navbars/devkits.yml | 11 ++ _data/navbars/release-history.yml | 2 +- doc/building-blocks/emco/openness-emco.md | 139 +++++++++++----------- 3 files changed, 83 insertions(+), 69 deletions(-) create mode 100644 _data/navbars/devkits.yml diff --git a/_data/navbars/devkits.yml b/_data/navbars/devkits.yml new file mode 100644 index 00000000..18c8cedf --- /dev/null +++ b/_data/navbars/devkits.yml @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright (c) 2020 Intel Corporation + +title: "Development Kits" +path: /devkits/ +order: 7 +section: + - title: OpenNESS Development Kit for Microsoft Azure + path: /doc/devkits/openness-azure-devkit + meta_title: OpenNESS Development Kit for Microsoft Azure + meta_description: This devkit supports the use of OpenNESS in cloud solutions. It leverages the Microsoft Azure Stack for OpenNESS deployment. diff --git a/_data/navbars/release-history.yml b/_data/navbars/release-history.yml index 6a43ea2c..5e1ccabd 100644 --- a/_data/navbars/release-history.yml +++ b/_data/navbars/release-history.yml @@ -3,7 +3,7 @@ title: "Release history" path: /release-notes/ -order: 7 +order: 8 section: - title: Release Notes path: /openness_releasenotes diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 6c284756..76355f05 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -20,19 +20,21 @@ Copyright (c) 2020 Intel Corporation - [Level-0 Logical Clouds](#level-0-logical-clouds) - [OVN Action Controller](#ovn-action-controller) - [Traffic Controller](#traffic-controller) - - [Resource Syncronizer](#resource-syncronizer) - [Generic Action Controller](#generic-action-controller) + - [Resource Synchronizer](#resource-synchronizer) + - [Placment and Action Controllers in EMCO](#placment-and-action-controllers-in-emco) + - [Status Monitoring and Queries in EMCO](#status-monitoring-and-queries-in-emco) + - [EMCO Terminology](#emco-terminology-1) - [EMCO API](#emco-api) - [EMCO Authentication and Authorization](#emco-authentication-and-authorization) - [EMCO Installation With OpenNESS Flavor](#emco-installation-with-openness-flavor) - [EMCO Example: SmartCity Deployment](#emco-example-smartcity-deployment) - - [Clusters Setup](#clusters-setup) + - [Cluster Setup](#cluster-setup) - [Project Setup](#project-setup) - [Logical Cloud Setup](#logical-cloud-setup) - [Deploy SmartCity Application](#deploy-smartcity-application) - [SmartCity Termination](#smartcity-termination) - ## Background Edge Multi-Cluster Orchestration(EMCO), an OpenNESS Building Block, is a Geo-distributed application orchestrator for Kubernetes\*. EMCO operates at a higher level than Kubernetes\* and interacts with multiple of edges and clouds running Kubernetes. The main objective of EMCO is automation of the deployment of applications and services across multiple clusters. It acts as a central orchestrator that can manage edge services and network functions across geographically distributed edge clusters from different third parties. @@ -79,6 +81,7 @@ This document aims to familiarize the user with EMCO and [OpenNESS deployment fl ## EMCO Introduction ### EMCO Terminology + | Term | Description | |:-----: | ----- | | AppContext |

    The AppContext is a set of records maintained in the EMCO etcd data store which maintains the collection of resources and clusters associated with a deployable EMCO resource (e.g. Deployment Intent Group)..

    | @@ -94,15 +97,16 @@ The following diagram depicts a high level overview of the EMCO architecture. ![OpenNESS EMCO](openness-emco-images/openness-emco-arch.png) _Figure 3 - EMCO Architecture_ - - Cluster Registration Controller registers clusters by cluster owners. - - Distributed Application Scheduler provides a simplified and extensible placement. - - Network Configuration Management handles creation/management of virtual and provider networks. - - 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. + +- Cluster Registration Controller registers clusters by cluster owners. +- Distributed Application Scheduler provides a simplified and extensible placement. +- Network Configuration Management handles creation/management of virtual and provider networks. +- 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. #### Cluster Registration A microservice exposes RESTful API. User can register cluster providers and clusters of those providers via these APIs. After preparing edge clusters and cloud clusters, which can be any Kubernetes\* cluster, user can onboard those clusters to EMCO by creating a cluster provider and then adding clusters to the cluster provider. After cluster providers are created, the KubeConfig files of edge and cloud clusters should be provided to EMCO as part of the multi-part POST call to the Cluster API. @@ -342,35 +346,35 @@ In the step, cluster provider will be created. And both the edge cluster and the 1. After [EMCO Installation With OpenNESS Flavor](#emco-installation-with-openness-flavor), logon to the EMCO host server and maker sure that Harbor and EMCO microservices are in running status. 2. On the edge and cloud cluster, run the following command to make Docker logon to the Harbor deployed on the EMCO server, thus the clusters can pull SmartCity images from the Harbor: -```shell -HARBORRHOST= - -cd /etc/docker/certs.d/ -mkdir ${HARBORRHOST} -cd ${HARBORRHOST} -curl -sk -X GET https://${HARBORRHOST}/api/v2.0/systeminfo/getcert -H "accept: application/json" -o harbor.crt -HARBORRPW=Harbor12345 -docker login ${HARBORRHOST} -u admin -p ${HARBORRPW} -``` -> **NOTE**: should be `:30003`. + ```shell + HARBORRHOST= + + cd /etc/docker/certs.d/ + mkdir ${HARBORRHOST} + cd ${HARBORRHOST} + curl -sk -X GET https://${HARBORRHOST}/api/v2.0/systeminfo/getcert -H "accept: application/json" -o harbor.crt + HARBORRPW=Harbor12345 + docker login ${HARBORRHOST} -u admin -p ${HARBORRPW} + ``` + > **NOTE**: should be `:30003`. 3. On the EMCO server, download the [scripts,profiles and configmap JSON files](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco). 4. Run the command for the environment setup with success return as below: -```shell -# cd cli-scripts/ -# ./setup_env.sh -``` -> **NOTE**: [SmartCity application](https://github.com/OpenVisualCloud/Smart-City-Sample) secrets need the specific information only accessiable by the edge cluster and the cloud cluster. `setup_env.sh` will automate it. + ```shell + # cd cli-scripts/ + # ./setup_env.sh + ``` + > **NOTE**: [SmartCity application](https://github.com/OpenVisualCloud/Smart-City-Sample) secrets need the specific information only accessiable by the edge cluster and the cloud cluster. `setup_env.sh` will automate it. 5. Run the command for the clusters setup with expected result as below: -```shell -# cd cli-scripts/ -# ./01_apply.sh -.... -URL: cluster-providers/smartcity-cluster-provider/clusters/edge01/labels Response Code: 201 Response: {"label-name":"LabelSmartCityEdge"} -URL: cluster-providers/smartcity-cluster-provider/clusters/cloud01/labels Response Code: 201 Response: {"label-name":"LabelSmartCityCloud"} -``` + ```shell + # cd cli-scripts/ + # ./01_apply.sh + .... + URL: cluster-providers/smartcity-cluster-provider/clusters/edge01/labels Response Code: 201 Response: {"label-name":"LabelSmartCityEdge"} + URL: cluster-providers/smartcity-cluster-provider/clusters/cloud01/labels Response Code: 201 Response: {"label-name":"LabelSmartCityCloud"} + ``` ### Project Setup @@ -405,42 +409,43 @@ URL: projects/project_smtc/logical-clouds/default/instantiate Response Code: 200 ### Deploy SmartCity Application 1. Run the command for the SmartCity application deployment with expected result as below: -```shell -# cd cli-scripts/ -# ./04_apply.sh + ```shell + # cd cli-scripts/ + # ./04_apply.sh -http://localhost:31298/v2 -URL: projects/project_smtc/composite-apps/composite_smtc/v1/deployment-intent-groups/smtc-deployment-intent-group/approve Response Code: 202 Response: -http://localhost:31298/v2 -URL: projects/project_smtc/composite-apps/composite_smtc/v1/deployment-intent-groups/smtc-deployment-intent-group/instantiate Response Code: 202 Response: -``` -> **NOTE**: EMCO supports generic K8S resource configuration including configmap, secret,etc. The example offers the usage about [configmap configuration](https://github.com/otcshare/edgeapps/blob/master/applications/smart-city-app/emco/cli-scripts/04_apps_template.yaml) to the clusters. + http://localhost:31298/v2 + URL: projects/project_smtc/composite-apps/composite_smtc/v1/deployment-intent-groups/smtc-deployment-intent-group/approve Response Code: 202 Response: + http://localhost:31298/v2 + URL: projects/project_smtc/composite-apps/composite_smtc/v1/deployment-intent-groups/smtc-deployment-intent-group/instantiate Response Code: 202 Response: + ``` + > **NOTE**: EMCO supports generic K8S resource configuration including configmap, secret,etc. The example offers the usage about [configmap configuration](https://github.com/otcshare/edgeapps/blob/master/applications/smart-city-app/emco/cli-scripts/04_apps_template.yaml) to the clusters. 2. Verify SmartCity Application Deployment Information. The pods on the edge cluster are in the running status as shown as below: -```shell -# kubectl get pods -NAME READY STATUS RESTARTS AGE -traffic-office1-alert-5b56f5464c-ldwrf 1/1 Running 0 20h -traffic-office1-analytics-traffic-6b995d4d6-nhf2p 1/1 Running 0 20h -traffic-office1-camera-discovery-78bccbdb44-k2ffx 1/1 Running 0 20h -traffic-office1-cameras-6cb67ccc84-8zkjg 1/1 Running 0 20h -traffic-office1-db-84bcfd54cd-ht52s 1/1 Running 1 20h -traffic-office1-db-init-64fb9db988-jwjv9 1/1 Running 0 20h -traffic-office1-mqtt-f9449d49c-dwv6l 1/1 Running 0 20h -traffic-office1-mqtt2db-5649c4778f-vpxhq 1/1 Running 0 20h -traffic-office1-smart-upload-588d95f78d-8x6dt 1/1 Running 1 19h -traffic-office1-storage-7889c67c57-kbkjd 1/1 Running 1 19h -``` -The pods on the cloud cluster are in the running status as shown as below: -```shell -# kubectl get pods -NAME READY STATUS RESTARTS AGE -cloud-db-5d6b57f947-qhjz6 1/1 Running 0 20h -cloud-storage-5658847d79-66bxz 1/1 Running 0 96m -cloud-web-64fb95884f-m9fns 1/1 Running 0 20h -``` + ```shell + # kubectl get pods + NAME READY STATUS RESTARTS AGE + traffic-office1-alert-5b56f5464c-ldwrf 1/1 Running 0 20h + traffic-office1-analytics-traffic-6b995d4d6-nhf2p 1/1 Running 0 20h + traffic-office1-camera-discovery-78bccbdb44-k2ffx 1/1 Running 0 20h + traffic-office1-cameras-6cb67ccc84-8zkjg 1/1 Running 0 20h + traffic-office1-db-84bcfd54cd-ht52s 1/1 Running 1 20h + traffic-office1-db-init-64fb9db988-jwjv9 1/1 Running 0 20h + traffic-office1-mqtt-f9449d49c-dwv6l 1/1 Running 0 20h + traffic-office1-mqtt2db-5649c4778f-vpxhq 1/1 Running 0 20h + traffic-office1-smart-upload-588d95f78d-8x6dt 1/1 Running 1 19h + traffic-office1-storage-7889c67c57-kbkjd 1/1 Running 1 19h + ``` + The pods on the cloud cluster are in the running status as shown as below: + ```shell + # kubectl get pods + NAME READY STATUS RESTARTS AGE + cloud-db-5d6b57f947-qhjz6 1/1 Running 0 20h + cloud-storage-5658847d79-66bxz 1/1 Running 0 96m + cloud-web-64fb95884f-m9fns 1/1 Running 0 20h + ``` + 3. Verify Smart City GUI From a web browser, launch the Smart City web UI at URL `https://`. The GUI shows like: ![OpenNESS EMCO](openness-emco-images/openness-emco-smtcui.png) @@ -461,5 +466,3 @@ URL: projects/project_smtc/composite-apps/composite_smtc/v1/deployment-intent-gr ``` After termination, the SmartCity application will be deleted from the clusters. - - From 4fb6b491acbde65715d3bfb4fec45dfd500fe267 Mon Sep 17 00:00:00 2001 From: Amr Mokhtar Date: Fri, 18 Dec 2020 15:47:06 +0000 Subject: [PATCH 146/148] Added link to EMCO rel-notes --- openness_releasenotes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openness_releasenotes.md b/openness_releasenotes.md index c6187b00..d702386d 100644 --- a/openness_releasenotes.md +++ b/openness_releasenotes.md @@ -256,7 +256,7 @@ This document provides high-level system features, issues, and limitations infor - Experience Kit now supports multiple detection video's – Safety equipment detection, PCB default detection and also supports external video streams. ## OpenNESS - 20.12 -- Early access release of Edge Multi-Cluster Orchestration(EMCO), a Geo-distributed application orchestrator for Kubernetes. This release supports EMCO deploying and managing the life cycle of the Smart City Application pipeline on the edge cluster. +- Early access release of Edge Multi-Cluster Orchestration(EMCO), a Geo-distributed application orchestrator for Kubernetes. This release supports EMCO deploying and managing the life cycle of the Smart City Application pipeline on the edge cluster. More details in the [EMCO Release Notes](https://github.com/otcshare/EMCO/blob/main/ReleaseNotes.md). - Reference implementation of the offline installation package for the Converged Edge Reference Architecture (CERA) Access Edge flavor enabling installation of Kubernetes and related enhancements for Access edge deployments. - Azure Development kit (Devkit) supporting the installation of an OpenNESS Kubernetes cluster on the Microsoft* Azure* cloud. This is typically used by a customer who wants to develop applications and services for the edge using OpenNESS building blocks. - Support Intel® vRAN Dedicated Accelerator ACC100, Kubernetes Cloud-native deployment supporting higher capacity 4G/LTE and 5G vRANs cells/carriers for FEC offload. From 8aee2faca1a963b1bb73d88c7afe43a8022a2890 Mon Sep 17 00:00:00 2001 From: Amr Mokhtar Date: Fri, 18 Dec 2020 16:36:52 +0000 Subject: [PATCH 147/148] Added reference to ACC100 doc --- _data/navbars/building-blocks.yml | 5 +++++ .../enhanced-platform-awareness/openness-acc100.md | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/_data/navbars/building-blocks.yml b/_data/navbars/building-blocks.yml index 904907ac..2bb56cfd 100644 --- a/_data/navbars/building-blocks.yml +++ b/_data/navbars/building-blocks.yml @@ -56,6 +56,11 @@ section: meta_title: FPGA in OpenNESS - Programming, Resource Allocation and Configuration meta_description: The FPGA Programmable acceleration card plays a key role in accelerating certain types of workloads which in-turn increases the overall compute capacity of a COTS platform. + - title: Intel® vRAN Dedicated Accelerator ACC100 + path: /doc/building-blocks/enhanced-platform-awareness/openness-acc100 + meta_title: Intel® vRAN Dedicated Accelerator ACC100 + meta_description: Using ACC100 eASIC in OpenNESS, Resource Allocation, and Configuration + - title: Intel® Movidius™ Myriad™ X HDDL Support path: /doc/building-blocks/enhanced-platform-awareness/openness_hddl meta_title: Intel® Movidius™ Myriad™ X HDDL Solution in OpenNESS diff --git a/doc/building-blocks/enhanced-platform-awareness/openness-acc100.md b/doc/building-blocks/enhanced-platform-awareness/openness-acc100.md index d7ebf534..d37e3aea 100644 --- a/doc/building-blocks/enhanced-platform-awareness/openness-acc100.md +++ b/doc/building-blocks/enhanced-platform-awareness/openness-acc100.md @@ -1,6 +1,6 @@ ```text SPDX-License-Identifier: Apache-2.0 -Copyright (c) 2019-2020 Intel Corporation +Copyright (c) 2020 Intel Corporation ``` # Using ACC100 eASIC in OpenNESS: Resource Allocation, and Configuration @@ -10,7 +10,7 @@ Copyright (c) 2019-2020 Intel Corporation - [Using the Intel® vRAN Dedicated Accelerator ACC100 on OpenNESS](#using-the-intel-vran-dedicated-accelerator-acc100-on-openness) - [ACC100 (FEC) Ansible Installation for OpenNESS Network Edge](#acc100-fec-ansible-installation-for-openness-network-edge) - [OpenNESS Experience Kit](#openness-experience-kit) - - [FEC VF Configuration for OpenNESS Network Edge](#fec-vf-configuration-for-openness-network-edge) + - [FEC VF configuration for OpenNESS Network Edge](#fec-vf-configuration-for-openness-network-edge) - [Requesting Resources and Running Pods for OpenNESS Network Edge](#requesting-resources-and-running-pods-for-openness-network-edge) - [Verifying Application POD Access and Usage of FPGA on OpenNESS Network Edge](#verifying-application-pod-access-and-usage-of-fpga-on-openness-network-edge) - [Reference](#reference) From 20c9840113e2d13aa136c1f3beacd9ccb286bf67 Mon Sep 17 00:00:00 2001 From: Christopher Nolan Date: Fri, 18 Dec 2020 18:04:42 +0000 Subject: [PATCH 148/148] Update paths --- README.md | 102 +++++++++--------- .../network-edge-applications-onboarding.md | 22 ++-- .../openness-interface-service.md | 4 +- .../openness-network-edge-vm-support.md | 2 +- .../using-openness-cnca.md | 4 +- doc/applications/openness_appguide.md | 2 +- doc/applications/openness_openvino.md | 4 +- doc/applications/openness_service_mesh.md | 4 +- doc/architecture.md | 10 +- .../dataplane/openness-interapp.md | 2 +- doc/building-blocks/emco/openness-emco.md | 22 ++-- .../openness-acc100.md | 4 +- .../openness-fpga.md | 4 +- .../openness-sriov-multiple-interfaces.md | 4 +- .../openness-telemetry.md | 6 +- .../openness-vcac-a.md | 2 +- doc/flavors.md | 6 +- .../controller-edge-node-setup.md | 14 +-- .../network-edge/offline-edge-deployment.md | 24 ++--- .../network-edge/supported-epa.md | 14 +-- doc/orchestration/openness-helm.md | 18 ++-- .../core-network/openness_upf.md | 14 +-- .../ran/openness_ran.md | 20 ++-- .../ran/openness_xran.md | 6 +- openness_releasenotes.md | 2 +- schema/5goam/5goam.swagger.json | 2 +- schema/5goam/5goam.swagger.yaml | 2 +- schema/pb/auth.proto | 2 +- schema/pb/cups.proto | 2 +- schema/pb/eaa.proto | 2 +- schema/pb/eva.proto | 2 +- 31 files changed, 164 insertions(+), 164 deletions(-) diff --git a/README.md b/README.md index e157f52c..f8d0711a 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Copyright (c) 2019-2020 Intel Corporation # OpenNESS Quick Start ## Network Edge - ### Step 1. Get Hardware ► Step 2. [Getting started](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md) ► Step 3. [Applications Onboarding](https://github.com/otcshare/specs/blob/master/doc/applications-onboard/network-edge-applications-onboarding.md) + ### Step 1. Get Hardware ► Step 2. [Getting started](https://github.com/open-ness/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md) ► Step 3. [Applications Onboarding](https://github.com/open-ness/specs/blob/master/doc/applications-onboard/network-edge-applications-onboarding.md) # OpenNESS solution documentation index @@ -15,91 +15,91 @@ Below is the complete list of OpenNESS solution documentation ## Architecture -* [architecture.md: OpenNESS Architecture overview](https://github.com/otcshare/specs/blob/master/doc/architecture.md) -* [flavors.md: OpenNESS Deployment Flavors](https://github.com/otcshare/specs/blob/master/doc/flavors.md) +* [architecture.md: OpenNESS Architecture overview](https://github.com/open-ness/specs/blob/master/doc/architecture.md) +* [flavors.md: OpenNESS Deployment Flavors](https://github.com/open-ness/specs/blob/master/doc/flavors.md) ## Getting Started - Setup -* [getting-started: Folder containing how to get started with installing and trying OpenNESS Network Edge solutions](https://github.com/otcshare/specs/blob/master/doc/getting-started) - * [openness-experience-kits.md: Overview of the OpenNESS Experience kits that are used to install the Network Edge solutions](https://github.com/otcshare/specs/blob/master/doc/getting-started/openness-experience-kits.md) - * [network-edge: Folder containing how to get started with installing and trying OpenNESS Network Edge](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge) - * [controller-edge-node-setup.md: Started here for installing and trying OpenNESS Network Edge](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md) - * [supported-epa.md: List of Silicon and Software EPA that are features that are supported in OpenNESS Network Edge](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/supported-epa.md) +* [getting-started: Folder containing how to get started with installing and trying OpenNESS Network Edge solutions](https://github.com/open-ness/specs/blob/master/doc/getting-started) + * [openness-experience-kits.md: Overview of the OpenNESS Experience kits that are used to install the Network Edge solutions](https://github.com/open-ness/specs/blob/master/doc/getting-started/openness-experience-kits.md) + * [network-edge: Folder containing how to get started with installing and trying OpenNESS Network Edge](https://github.com/open-ness/specs/blob/master/doc/getting-started/network-edge) + * [controller-edge-node-setup.md: Started here for installing and trying OpenNESS Network Edge](https://github.com/open-ness/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md) + * [supported-epa.md: List of Silicon and Software EPA that are features that are supported in OpenNESS Network Edge](https://github.com/open-ness/specs/blob/master/doc/getting-started/network-edge/supported-epa.md) ## Application onboarding - Deployment -* [applications-onboard: Now that you have installed OpenNESS platform start in this folder to onboard sample application on OpenNESS Network Edge](https://github.com/otcshare/specs/blob/master/doc/applications-onboard) - * [network-edge-applications-onboarding.md: Steps for onboarding sample application on OpenNESS Network Edge](https://github.com/otcshare/specs/blob/master/doc/applications-onboard/network-edge-applications-onboarding.md) - * [openness-edgedns.md: Using edge DNS service](https://github.com/otcshare/specs/blob/master/doc/applications-onboard/openness-edgedns.md) - * [openness-interface-service.md: Using network interfaces management service](https://github.com/otcshare/specs/blob/master/doc/applications-onboard/openness-interface-service.md) - * [using-openness-cnca.md: Steps for configuring 4G CUPS or 5G Application Function for Edge deployment for Network Edge](https://github.com/otcshare/specs/blob/master/doc/applications-onboard/using-openness-cnca.md) - * [openness-eaa.md: Edge Application Agent: Description of Edge Application APIs and Edge Application Authentication APIs](https://github.com/otcshare/specs/blob/master/doc/applications-onboard/openness-eaa.md) - * [openness-certsigner.md: Steps for issuing platform certificates](https://github.com/otcshare/specs/blob/master/doc/applications-onboard/openness-certsigner.md) +* [applications-onboard: Now that you have installed OpenNESS platform start in this folder to onboard sample application on OpenNESS Network Edge](https://github.com/open-ness/specs/blob/master/doc/applications-onboard) + * [network-edge-applications-onboarding.md: Steps for onboarding sample application on OpenNESS Network Edge](https://github.com/open-ness/specs/blob/master/doc/applications-onboard/network-edge-applications-onboarding.md) + * [openness-edgedns.md: Using edge DNS service](https://github.com/open-ness/specs/blob/master/doc/applications-onboard/openness-edgedns.md) + * [openness-interface-service.md: Using network interfaces management service](https://github.com/open-ness/specs/blob/master/doc/applications-onboard/openness-interface-service.md) + * [using-openness-cnca.md: Steps for configuring 4G CUPS or 5G Application Function for Edge deployment for Network Edge](https://github.com/open-ness/specs/blob/master/doc/applications-onboard/using-openness-cnca.md) + * [openness-eaa.md: Edge Application Agent: Description of Edge Application APIs and Edge Application Authentication APIs](https://github.com/open-ness/specs/blob/master/doc/applications-onboard/openness-eaa.md) + * [openness-certsigner.md: Steps for issuing platform certificates](https://github.com/open-ness/specs/blob/master/doc/applications-onboard/openness-certsigner.md) ## Radio Access Network (RAN) -* [ran: Folder containing details of 4G and 5G RAN deployment support](https://github.com/otcshare/specs/tree/master/doc/reference-architectures/ran) - * [openness_ran.md: Whitepaper detailing the 4G and 5G RAN deployment support on OpenNESS for Network Edge](https://github.com/otcshare/specs/blob/master/doc/reference-architectures/ran/openness_ran.md) - * [openness_xran.md: Whitepaper detailing O-RAN Sample Application deployment support on OpenNESS](https://github.com/otcshare/specs/blob/master/doc/reference-architectures/ran/openness_xran.md) +* [ran: Folder containing details of 4G and 5G RAN deployment support](https://github.com/open-ness/specs/tree/master/doc/reference-architectures/ran) + * [openness_ran.md: Whitepaper detailing the 4G and 5G RAN deployment support on OpenNESS for Network Edge](https://github.com/open-ness/specs/blob/master/doc/reference-architectures/ran/openness_ran.md) + * [openness_xran.md: Whitepaper detailing O-RAN Sample Application deployment support on OpenNESS](https://github.com/open-ness/specs/blob/master/doc/reference-architectures/ran/openness_xran.md) ## Core Network - 4G and 5G -* [core-network: Folder containing details of 4G CUPS and 5G edge cloud deployment support](https://github.com/otcshare/specs/tree/master/doc/reference-architectures/core-network) - * [openness_epc.md: Whitepaper detailing the 4G CUPS support for Edge cloud deployment in OpenNESS for Network Edge](https://github.com/otcshare/specs/blob/master/doc/reference-architectures/core-network/openness_epc.md) - * [openness_ngc.md: Whitepaper detailing the 5G Edge Cloud deployment support in OpenNESS for Network Edge](https://github.com/otcshare/specs/blob/master/doc/reference-architectures/core-network/openness_ngc.md) - * [openness_upf.md: Whitepaper detailing the UPF, AF, NEF deployment support on OpenNESS for Network Edge](https://github.com/otcshare/specs/blob/master/doc/reference-architectures/core-network/openness_upf.md) +* [core-network: Folder containing details of 4G CUPS and 5G edge cloud deployment support](https://github.com/open-ness/specs/tree/master/doc/reference-architectures/core-network) + * [openness_epc.md: Whitepaper detailing the 4G CUPS support for Edge cloud deployment in OpenNESS for Network Edge](https://github.com/open-ness/specs/blob/master/doc/reference-architectures/core-network/openness_epc.md) + * [openness_ngc.md: Whitepaper detailing the 5G Edge Cloud deployment support in OpenNESS for Network Edge](https://github.com/open-ness/specs/blob/master/doc/reference-architectures/core-network/openness_ngc.md) + * [openness_upf.md: Whitepaper detailing the UPF, AF, NEF deployment support on OpenNESS for Network Edge](https://github.com/open-ness/specs/blob/master/doc/reference-architectures/core-network/openness_upf.md) ## Enhanced Platform Awareness -* [enhanced-platform-awareness: Folder containing individual Silicon and Software EPA that are features that are supported in OpenNESS and Network Edge](https://github.com/otcshare/specs/tree/master/doc/building-blocks/enhanced-platform-awareness) - * [openness-hugepage.md: Hugepages support for Edge Applications and Network Functions](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-hugepage.md) - * [openness-node-feature-discovery.md: Edge Node hardware and software feature discovery support in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-node-feature-discovery.md) - * [openness-sriov-multiple-interfaces.md: Dedicated Physical Network interface allocation support for Edge Applications and Network Functions](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-sriov-multiple-interfaces.md) - * [openness-dedicated-core.md: Dedicated CPU core allocation support for Edge Applications and Network Functions](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-dedicated-core.md) - * [openness-bios.md: Edge platform BIOS and Firmware and configuration support in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-bios.md) - * [openness-fpga.md: Dedicated FPGA IP resource allocation support for Edge Applications and Network Functions](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md) - * [openness_hddl.md: Using Intel® Movidius™ Myriad™ X High Density Deep Learning (HDDL) solution in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness_hddl.md) - * [openness-topology-manager.md: Resource Locality awareness support through Topology manager in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-topology-manager.md) - * [openness-vca.md: Visual Compute Accelerator Card - Analytics (VCAC-A)](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-vcac-a.md) - * [openness-kubernetes-dashboard.md: Kubernetes Dashboard in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-kubernetes-dashboard.md) - * [openness-rmd.md: Cache Allocation using Resource Management Daemon(RMD) in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-rmd.md) - * [openness-telemetry: Telemetry Support in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-telemetry.md) +* [enhanced-platform-awareness: Folder containing individual Silicon and Software EPA that are features that are supported in OpenNESS and Network Edge](https://github.com/open-ness/specs/tree/master/doc/building-blocks/enhanced-platform-awareness) + * [openness-hugepage.md: Hugepages support for Edge Applications and Network Functions](https://github.com/open-ness/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-hugepage.md) + * [openness-node-feature-discovery.md: Edge Node hardware and software feature discovery support in OpenNESS](https://github.com/open-ness/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-node-feature-discovery.md) + * [openness-sriov-multiple-interfaces.md: Dedicated Physical Network interface allocation support for Edge Applications and Network Functions](https://github.com/open-ness/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-sriov-multiple-interfaces.md) + * [openness-dedicated-core.md: Dedicated CPU core allocation support for Edge Applications and Network Functions](https://github.com/open-ness/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-dedicated-core.md) + * [openness-bios.md: Edge platform BIOS and Firmware and configuration support in OpenNESS](https://github.com/open-ness/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-bios.md) + * [openness-fpga.md: Dedicated FPGA IP resource allocation support for Edge Applications and Network Functions](https://github.com/open-ness/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md) + * [openness_hddl.md: Using Intel® Movidius™ Myriad™ X High Density Deep Learning (HDDL) solution in OpenNESS](https://github.com/open-ness/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness_hddl.md) + * [openness-topology-manager.md: Resource Locality awareness support through Topology manager in OpenNESS](https://github.com/open-ness/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-topology-manager.md) + * [openness-vca.md: Visual Compute Accelerator Card - Analytics (VCAC-A)](https://github.com/open-ness/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-vcac-a.md) + * [openness-kubernetes-dashboard.md: Kubernetes Dashboard in OpenNESS](https://github.com/open-ness/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-kubernetes-dashboard.md) + * [openness-rmd.md: Cache Allocation using Resource Management Daemon(RMD) in OpenNESS](https://github.com/open-ness/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-rmd.md) + * [openness-telemetry: Telemetry Support in OpenNESS](https://github.com/open-ness/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-telemetry.md) ## Dataplane -* [dataplane: Folder containing Dataplane and inter-app infrastructure support in OpenNESS](https://github.com/otcshare/specs/tree/master/doc/building-blocks/dataplane) - * [openness-interapp.md: InterApp Communication support in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/building-blocks/dataplane/openness-interapp.md) - * [openness-ovn.md: OpenNESS Support for OVS as dataplane with OVN](https://github.com/otcshare/specs/blob/master/doc/building-blocks/dataplane/openness-ovn.md) - * [openness-userspace-cni.md: Userspace CNI - Container Network Interface Kubernetes plugin](https://github.com/otcshare/specs/blob/master/doc/building-blocks/dataplane/openness-userspace-cni.md) +* [dataplane: Folder containing Dataplane and inter-app infrastructure support in OpenNESS](https://github.com/open-ness/specs/tree/master/doc/building-blocks/dataplane) + * [openness-interapp.md: InterApp Communication support in OpenNESS](https://github.com/open-ness/specs/blob/master/doc/building-blocks/dataplane/openness-interapp.md) + * [openness-ovn.md: OpenNESS Support for OVS as dataplane with OVN](https://github.com/open-ness/specs/blob/master/doc/building-blocks/dataplane/openness-ovn.md) + * [openness-userspace-cni.md: Userspace CNI - Container Network Interface Kubernetes plugin](https://github.com/open-ness/specs/blob/master/doc/building-blocks/dataplane/openness-userspace-cni.md) ## Edge Applications -* [applications: Folder Containing resource material for Edge Application developers](https://github.com/otcshare/specs/blob/master/doc/applications) - * [openness_appguide.md: How to develop or Port existing cloud application to the Edge cloud based on OpenNESS](https://github.com/otcshare/specs/blob/master/doc/applications/openness_appguide.md) - * [openness_ovc.md: Open Visual Cloud Smart City reference Application for OpenNESS](https://github.com/otcshare/specs/blob/master/doc/applications/openness_ovc.md) - * [openness_openvino.md: AI inference reference Edge application for OpenNESS](https://github.com/otcshare/specs/blob/master/doc/applications/openness_openvino.md) - * [openness_va_services.md: Video Analytics Services for OpenNESS](https://github.com/otcshare/specs/blob/master/doc/applications/openness_va_services.md) - * [openness_service_mesh.md: Service Mesh support in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/applications/openness_service_mesh.md) +* [applications: Folder Containing resource material for Edge Application developers](https://github.com/open-ness/specs/blob/master/doc/applications) + * [openness_appguide.md: How to develop or Port existing cloud application to the Edge cloud based on OpenNESS](https://github.com/open-ness/specs/blob/master/doc/applications/openness_appguide.md) + * [openness_ovc.md: Open Visual Cloud Smart City reference Application for OpenNESS](https://github.com/open-ness/specs/blob/master/doc/applications/openness_ovc.md) + * [openness_openvino.md: AI inference reference Edge application for OpenNESS](https://github.com/open-ness/specs/blob/master/doc/applications/openness_openvino.md) + * [openness_va_services.md: Video Analytics Services for OpenNESS](https://github.com/open-ness/specs/blob/master/doc/applications/openness_va_services.md) + * [openness_service_mesh.md: Service Mesh support in OpenNESS](https://github.com/open-ness/specs/blob/master/doc/applications/openness_service_mesh.md) ## Cloud Adapters -* [cloud-adapters: How to deploy public cloud IoT gateways on OpenNESS Edge Cloud](https://github.com/otcshare/specs/blob/master/doc/cloud-adapters) - * [openness_awsgreengrass.md: Deploying single or multiple instance of Amazon Greengrass IoT gateway on OpenNESS edge cloud as an edge application](https://github.com/otcshare/specs/blob/master/doc/cloud-adapters/openness_awsgreengrass.md) - * [openness_baiducloud.md: Deploying single or multiple instance of Baidu IoT gateway on OpenNESS edge cloud as an edge application](https://github.com/otcshare/specs/blob/master/doc/cloud-adapters/openness_baiducloud.md) +* [cloud-adapters: How to deploy public cloud IoT gateways on OpenNESS Edge Cloud](https://github.com/open-ness/specs/blob/master/doc/cloud-adapters) + * [openness_awsgreengrass.md: Deploying single or multiple instance of Amazon Greengrass IoT gateway on OpenNESS edge cloud as an edge application](https://github.com/open-ness/specs/blob/master/doc/cloud-adapters/openness_awsgreengrass.md) + * [openness_baiducloud.md: Deploying single or multiple instance of Baidu IoT gateway on OpenNESS edge cloud as an edge application](https://github.com/open-ness/specs/blob/master/doc/cloud-adapters/openness_baiducloud.md) ## API and Schema * [Edge Application API: EAA](https://www.openness.org/api-documentation/?api=eaa) * [Edge Application Authentication API](https://www.openness.org/api-documentation/?api=auth) * [Core Network Configuration API](https://www.openness.org/api-documentation/?api=cups) -* [schema: Folder containing APIs protobuf or schema for varios endpoints in OpenNESS solution](https://github.com/otcshare/specs/tree/master/schema) +* [schema: Folder containing APIs protobuf or schema for varios endpoints in OpenNESS solution](https://github.com/open-ness/specs/tree/master/schema) ## Orchestration -* [openness-helm.md: Helm support in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/orchestration/openness-helm.md) +* [openness-helm.md: Helm support in OpenNESS](https://github.com/open-ness/specs/blob/master/doc/orchestration/openness-helm.md) ## Release history -* [openness_releasenotes.md: This document provides high level system features, issues and limitations information for OpenNESS](https://github.com/otcshare/specs/blob/master/openness_releasenotes.md) +* [openness_releasenotes.md: This document provides high level system features, issues and limitations information for OpenNESS](https://github.com/open-ness/specs/blob/master/openness_releasenotes.md) ## Related resources diff --git a/doc/applications-onboard/network-edge-applications-onboarding.md b/doc/applications-onboard/network-edge-applications-onboarding.md index a41b2c69..8e326a09 100644 --- a/doc/applications-onboard/network-edge-applications-onboarding.md +++ b/doc/applications-onboard/network-edge-applications-onboarding.md @@ -35,21 +35,21 @@ Copyright (c) 2019-2020 Intel Corporation This document aims to familiarize users with the Open Network Edge Services Software (OpenNESS) application on-boarding process for the Network Edge. This document provides instructions on how to deploy an application from the Edge Controller to Edge Nodes in the cluster; it also provides sample deployment scenarios and traffic configuration for the application. The applications will be deployed from the Edge Controller via the Kubernetes `kubectl` command-line utility. Sample specification files for application onboarding are also provided. # Installing OpenNESS -The following application onboarding steps assume that OpenNESS was installed through [OpenNESS playbooks](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md). +The following application onboarding steps assume that OpenNESS was installed through [OpenNESS playbooks](https://github.com/open-ness/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md). # Building applications Users must provide the application to be deployed on the OpenNESS platform for Network Edge. The application must be provided in a Docker\* image format that is available either from an external Docker repository (Docker Hub) or a locally built Docker image. The image must be available on the Edge Node, which the application will be deployed on. > **Note**: The Harbor registry setup is out of scope for this document. If users already have a docker container image file and would like to copy it to the node manually, they can use the `docker load` command to add the image. The success of using a pre-built Docker image depends on the application dependencies that users must know. -The OpenNESS [edgeapps](https://github.com/otcshare/edgeapps) repository provides images for OpenNESS supported applications. Pull the repository to your Edge Node to build the images. +The OpenNESS [edgeapps](https://github.com/open-ness/edgeapps) repository provides images for OpenNESS supported applications. Pull the repository to your Edge Node to build the images. This document explains the build and deployment of two applications: 1. Sample application: a simple “Hello, World!” reference application for OpenNESS 2. OpenVINO™ application: A close to real-world inference application ## Building sample application images -The sample application is available in [the edgeapps repository](https://github.com/otcshare/edgeapps/tree/master/sample-app); further information about the application is contained within the `Readme.md` file. +The sample application is available in [the edgeapps repository](https://github.com/open-ness/edgeapps/tree/master/sample-app); further information about the application is contained within the `Readme.md` file. The following steps are required to build the sample application Docker images for testing the OpenNESS Edge Application Agent (EAA) with consumer and producer applications: @@ -64,7 +64,7 @@ The following steps are required to build the sample application Docker images f docker images | grep consumer ``` ## Building the OpenVINO application images -The OpenVINO application is available in [the EdgeApps repository](https://github.com/otcshare/edgeapps/tree/master/openvino); further information about the application is contained within `Readme.md` file. +The OpenVINO application is available in [the EdgeApps repository](https://github.com/open-ness/edgeapps/tree/master/openvino); further information about the application is contained within `Readme.md` file. The following steps are required to build the sample application Docker images for testing OpenVINO consumer and producer applications: @@ -491,12 +491,12 @@ This section guides users through the complete process of onboarding the OpenVIN ## Deploying the Application -1. An application `yaml` specification file for the OpenVINO producer that is used to deploy the K8s pod can be found in the Edge Apps repository at [./applications/openvino/producer/openvino-prod-app.yaml](https://github.com/otcshare/edgeapps/blob/master/applications/openvino/producer/openvino-prod-app.yaml). The pod will use the Docker image, which must be [built](#building-openvino-application-images) and available on the platform. Deploy the producer application by running: +1. An application `yaml` specification file for the OpenVINO producer that is used to deploy the K8s pod can be found in the Edge Apps repository at [./applications/openvino/producer/openvino-prod-app.yaml](https://github.com/open-ness/edgeapps/blob/master/applications/openvino/producer/openvino-prod-app.yaml). The pod will use the Docker image, which must be [built](#building-openvino-application-images) and available on the platform. Deploy the producer application by running: ``` kubectl apply -f openvino-prod-app.yaml kubectl certificate approve openvino-prod-app ``` -2. An application `yaml` specification file for the OpenVINO consumer that is used to deploy K8s pod can be found in the Edge Apps repository at [./applications/openvino/consumer/openvino-cons-app.yaml](https://github.com/otcshare/edgeapps/blob/master/applications/openvino/consumer/openvino-cons-app.yaml). The pod will use the Docker image, which must be [built](#building-openvino-application-images) and available on the platform. Deploy the consumer application by running: +2. An application `yaml` specification file for the OpenVINO consumer that is used to deploy K8s pod can be found in the Edge Apps repository at [./applications/openvino/consumer/openvino-cons-app.yaml](https://github.com/open-ness/edgeapps/blob/master/applications/openvino/consumer/openvino-cons-app.yaml). The pod will use the Docker image, which must be [built](#building-openvino-application-images) and available on the platform. Deploy the consumer application by running: ``` kubectl apply -f openvino-cons-app.yaml kubectl certificate approve openvino-cons-app @@ -597,7 +597,7 @@ The following is an example of how to set up DNS resolution for OpenVINO consume dig openvino.openness ``` 3. On the traffic generating host build the image for the [Client Simulator](#building-openvino-application-images) -4. Run the following from [edgeapps/applications/openvino/clientsim](https://github.com/otcshare/edgeapps/blob/master/applications/openvino/clientsim/run-docker.sh) to start the video traffic via the containerized Client Simulator. A graphical user environment is required to view the results of the returning augmented videos stream. +4. Run the following from [edgeapps/applications/openvino/clientsim](https://github.com/open-ness/edgeapps/blob/master/applications/openvino/clientsim/run-docker.sh) to start the video traffic via the containerized Client Simulator. A graphical user environment is required to view the results of the returning augmented videos stream. ``` ./run_docker.sh ``` @@ -726,15 +726,15 @@ kubectl interfaceservice get ## Inter application communication The IAC is available via the default overlay network used by Kubernetes - Kube-OVN. -For more information on Kube-OVN, refer to the Kube-OVN support in OpenNESS [documentation](https://github.com/otcshare/specs/blob/master/doc/dataplane/openness-interapp.md#interapp-communication-support-in-openness-network-edge) +For more information on Kube-OVN, refer to the Kube-OVN support in OpenNESS [documentation](https://github.com/open-ness/specs/blob/master/doc/dataplane/openness-interapp.md#interapp-communication-support-in-openness-network-edge) # Enhanced Platform Awareness -Enhanced platform awareness (EPA) is supported in OpenNESS via the use of the Kubernetes NFD plugin. This plugin is enabled in OpenNESS for Network Edge by default. Refer to the [NFD whitepaper](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-node-feature-discovery.md) for information on how to make your application pods aware of the supported platform capabilities. +Enhanced platform awareness (EPA) is supported in OpenNESS via the use of the Kubernetes NFD plugin. This plugin is enabled in OpenNESS for Network Edge by default. Refer to the [NFD whitepaper](https://github.com/open-ness/specs/blob/master/doc/enhanced-platform-awareness/openness-node-feature-discovery.md) for information on how to make your application pods aware of the supported platform capabilities. -Refer to [supported-epa.md](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/supported-epa.md) for the list of supported EPA features on OpenNESS network edge. +Refer to [supported-epa.md](https://github.com/open-ness/specs/blob/master/doc/getting-started/network-edge/supported-epa.md) for the list of supported EPA features on OpenNESS network edge. # VM support for Network Edge -Support for VM deployment on OpenNESS for Network Edge is available and enabled by default, where certain configuration and prerequisites may need to be fulfilled to use all capabilities. For information on application deployment in VM, see [openness-network-edge-vm-support.md](https://github.com/otcshare/specs/blob/master/doc/applications-onboard/openness-network-edge-vm-support.md). +Support for VM deployment on OpenNESS for Network Edge is available and enabled by default, where certain configuration and prerequisites may need to be fulfilled to use all capabilities. For information on application deployment in VM, see [openness-network-edge-vm-support.md](https://github.com/open-ness/specs/blob/master/doc/applications-onboard/openness-network-edge-vm-support.md). # Troubleshooting This section covers steps for debugging edge applications in Network Edge. diff --git a/doc/applications-onboard/openness-interface-service.md b/doc/applications-onboard/openness-interface-service.md index 4ed28b9c..245331cd 100644 --- a/doc/applications-onboard/openness-interface-service.md +++ b/doc/applications-onboard/openness-interface-service.md @@ -35,7 +35,7 @@ Update the physical Ethernet interface with an IP from the `192.168.1.0/24` subn route add -net 10.16.0.0/16 gw 192.168.1.1 dev eth1 ``` -> **NOTE**: The default OpenNESS network policy applies to pods in a `default` namespace and blocks all ingress traffic. Refer to [Kubernetes NetworkPolicies](https://github.com/otcshare/specs/blob/master/doc/applications-onboard/network-edge-applications-onboarding.md#applying-kubernetes-network-policies) for an example policy allowing ingress traffic from the `192.168.1.0/24` subnet on a specific port. +> **NOTE**: The default OpenNESS network policy applies to pods in a `default` namespace and blocks all ingress traffic. Refer to [Kubernetes NetworkPolicies](https://github.com/open-ness/specs/blob/master/doc/applications-onboard/network-edge-applications-onboarding.md#applying-kubernetes-network-policies) for an example policy allowing ingress traffic from the `192.168.1.0/24` subnet on a specific port. > **NOTE**: The subnet `192.168.1.0/24` is allocated by the Ansible\* playbook to the physical interface, which is attached to the first edge node. The second edge node joined to the cluster is allocated to the next subnet `192.168.2.0/24` and so on. @@ -78,7 +78,7 @@ Currently, interface service supports the following values of the `driver` param ## Userspace (DPDK) bridge -The default DPDK-enabled bridge `br-userspace` is only available if OpenNESS is deployed with support for [Userspace CNI](https://github.com/otcshare/specs/blob/master/doc/dataplane/openness-userspace-cni.md) and at least one pod was deployed using the Userspace CNI. You can check if the `br-userspace` bridge exists by running the following command on your node: +The default DPDK-enabled bridge `br-userspace` is only available if OpenNESS is deployed with support for [Userspace CNI](https://github.com/open-ness/specs/blob/master/doc/dataplane/openness-userspace-cni.md) and at least one pod was deployed using the Userspace CNI. You can check if the `br-userspace` bridge exists by running the following command on your node: ```shell ovs-vsctl list-br diff --git a/doc/applications-onboard/openness-network-edge-vm-support.md b/doc/applications-onboard/openness-network-edge-vm-support.md index 8ad9e2aa..852b8b55 100644 --- a/doc/applications-onboard/openness-network-edge-vm-support.md +++ b/doc/applications-onboard/openness-network-edge-vm-support.md @@ -132,7 +132,7 @@ The KubeVirt role responsible for bringing up KubeVirt components is enabled by ## VM deployment Provided below are sample deployment instructions for different types of VMs. -Please use sample `.yaml` specification files provided in the OpenNESS Edge Controller directory, [edgenode/edgecontroller/kubevirt/examples/](https://github.com/otcshare/edgenode/tree/master/edgecontroller/kubevirt/examples), to deploy the workloads. Some of the files require modification to suit the environment they will be deployed in. Specific instructions on modifications are provided in the following steps: +Please use sample `.yaml` specification files provided in the OpenNESS Edge Controller directory, [edgenode/edgecontroller/kubevirt/examples/](https://github.com/open-ness/edgenode/tree/master/edgecontroller/kubevirt/examples), to deploy the workloads. Some of the files require modification to suit the environment they will be deployed in. Specific instructions on modifications are provided in the following steps: ### Stateless VM deployment To deploy a sample stateless VM with containerDisk storage: diff --git a/doc/applications-onboard/using-openness-cnca.md b/doc/applications-onboard/using-openness-cnca.md index eb4ec045..b724a6fe 100644 --- a/doc/applications-onboard/using-openness-cnca.md +++ b/doc/applications-onboard/using-openness-cnca.md @@ -40,7 +40,7 @@ Available management with `kube-cnca` against LTE CUPS OAM agent are: 2. Deletion of LTE CUPS userplanes 3. Updating (patching) LTE CUPS userplanes -The `kube-cnca` plugin is installed automatically on the control plane during the installation phase of the [OpenNESS Experience Kit](https://github.com/otcshare/specs/blob/master/doc/getting-started/openness-experience-kits.md). +The `kube-cnca` plugin is installed automatically on the control plane during the installation phase of the [OpenNESS Experience Kit](https://github.com/open-ness/specs/blob/master/doc/getting-started/openness-experience-kits.md). In the following sections, a detailed explanation with examples is provided about the CNCA management. Creation of the LTE CUPS userplane is performed based on the configuration provided by the given YAML file. The YAML configuration should follow the provided sample YAML in [Sample YAML LTE CUPS userplane configuration](#sample-yaml-lte-cups-userplane-configuration) section. Use the `apply` command to post a userplane creation request onto Application Function (AF): @@ -165,7 +165,7 @@ OpenNESS provides ansible scripts for setting up NGC components for two scenario For Network Edge mode, the CNCA provides a kubectl plugin to configure the 5G Core network. Kubernetes adopted plugin concepts to extend its functionality. The `kube-cnca` plugin executes CNCA related functions within the Kubernetes ecosystem. The plugin performs remote callouts against NGC OAM and AF microservice on the controller itself. -The `kube-cnca` plugin is installed automatically on the control plane during the installation phase of the [OpenNESS Experience Kit](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md) +The `kube-cnca` plugin is installed automatically on the control plane during the installation phase of the [OpenNESS Experience Kit](https://github.com/open-ness/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md) #### Edge Node services operations with 5G Core (through OAM interface) diff --git a/doc/applications/openness_appguide.md b/doc/applications/openness_appguide.md index e472b57e..66b14e04 100644 --- a/doc/applications/openness_appguide.md +++ b/doc/applications/openness_appguide.md @@ -35,7 +35,7 @@ This guide is targeted at the Cloud Application developers who want to - Develop applications for Edge computing that take advantage of all the capabilities exposed through Edge Compute APIs in OpenNESS. - Port the existing applications and services in the public/private cloud to the edge unmodified. -The document will describe how to develop applications from scratch using the template/example applications/services provided in the OpenNESS software release. All the OpenNESS Applications and services can be found in the [edgeapps repo](https://github.com/otcshare/edgeapps). +The document will describe how to develop applications from scratch using the template/example applications/services provided in the OpenNESS software release. All the OpenNESS Applications and services can be found in the [edgeapps repo](https://github.com/open-ness/edgeapps). ## OpenNESS Edge Node Applications OpenNESS Applications can onboard and provision on the edge nodes only through the OpenNESS Controller. The first step in Onboarding involves uploading the application image to the controller through the web interface. Both VM and Container images are supported. diff --git a/doc/applications/openness_openvino.md b/doc/applications/openness_openvino.md index 5fa90b36..9688283a 100644 --- a/doc/applications/openness_openvino.md +++ b/doc/applications/openness_openvino.md @@ -100,14 +100,14 @@ For more information about CSR, refer to [OpenNESS CertSigner](../applications-o Applications are deployed on the OpenNESS Edge Node as Docker containers. Three docker containers need to be built to get the OpenVINO pipeline working: `clientsim`, `producer`, and `consumer`. The `clientsim` Docker image must be built and executed on the client simulator machine while the `producer` and `consumer` containers/pods should be onboarded on the OpenNESS Edge Node. -On the client simulator, clone the [OpenNESS edgeapps](https://github.com/otcshare/edgeapps) and execute the following command to build the `client-sim` container: +On the client simulator, clone the [OpenNESS edgeapps](https://github.com/open-ness/edgeapps) and execute the following command to build the `client-sim` container: ```shell cd /openvino/clientsim ./build-image.sh ``` -On the OpenNESS Edge Node, clone the [OpenNESS edgeapps](https://github.com/otcshare/edgeapps) and execute the following command to build the `producer` and `consumer` containers: +On the OpenNESS Edge Node, clone the [OpenNESS edgeapps](https://github.com/open-ness/edgeapps) and execute the following command to build the `producer` and `consumer` containers: ```shell cd /openvino/producer ./build-image.sh diff --git a/doc/applications/openness_service_mesh.md b/doc/applications/openness_service_mesh.md index 0450e3d4..ae23be3e 100644 --- a/doc/applications/openness_service_mesh.md +++ b/doc/applications/openness_service_mesh.md @@ -144,7 +144,7 @@ spec: methods: ["GET", "POST", "DELETE"] ``` -In this `AuthorizationPolicy`, the Istio service mesh will allow "GET", "POST", and "DELETE" requests from any authenticated applications from the `default` namespace only to be passed to the service. For example, if using the [Video Analytics sample application](https://github.com/otcshare/edgeapps/tree/master/applications/vas-sample-app), the policy will allow requests from the sample application to be received by the service as it is deployed in the `default` namespace. However, if the application is deployed in a different namespace (for example, the `openness` namespace mentioned above in the output from the Kubernetes cluster), then the policy will deny access to the service as the request is coming from an application on a different namespace. +In this `AuthorizationPolicy`, the Istio service mesh will allow "GET", "POST", and "DELETE" requests from any authenticated applications from the `default` namespace only to be passed to the service. For example, if using the [Video Analytics sample application](https://github.com/open-ness/edgeapps/tree/master/applications/vas-sample-app), the policy will allow requests from the sample application to be received by the service as it is deployed in the `default` namespace. However, if the application is deployed in a different namespace (for example, the `openness` namespace mentioned above in the output from the Kubernetes cluster), then the policy will deny access to the service as the request is coming from an application on a different namespace. > **NOTE**: The above `AuthorizationPolicy` can be tailored so that the OpenNESS service mesh *selectively* authorizes particular applications to consume premium video analytics services such as those accelerated using HDDL or VCAC-A cards. @@ -471,7 +471,7 @@ Users can change the namespace labeled with istio label using the parameter `ist * in `flavors/service-mesh/all.yml` for deployment with service-mesh flavor * in `flavors/media-analytics/all.yml` for deployment with media-analytics flavor -> **NOTE**: The default OpenNESS network policy applies to pods in the `default` namespace and blocks all ingress traffic. Users must remove the default policy and apply custom network policy when deploying applications in the `default` namespace. Refer to the [Kubernetes NetworkPolicies](https://github.com/otcshare/specs/blob/master/doc/applications-onboard/network-edge-applications-onboarding.md#applying-kubernetes-network-policies) for an example policy allowing ingress traffic from `192.168.1.0/24` subnet on a specific port. +> **NOTE**: The default OpenNESS network policy applies to pods in the `default` namespace and blocks all ingress traffic. Users must remove the default policy and apply custom network policy when deploying applications in the `default` namespace. Refer to the [Kubernetes NetworkPolicies](https://github.com/open-ness/specs/blob/master/doc/applications-onboard/network-edge-applications-onboarding.md#applying-kubernetes-network-policies) for an example policy allowing ingress traffic from `192.168.1.0/24` subnet on a specific port. Kiali console is accessible from a browser using `http://:30001` and credentials defined in OpenNESS Experience Kits: diff --git a/doc/architecture.md b/doc/architecture.md index bbb2183d..617d1bb7 100644 --- a/doc/architecture.md +++ b/doc/architecture.md @@ -112,7 +112,7 @@ Edge Multi-Cluster Orchestration(EMCO), is a Geo-distributed application orchest ![](arch-images/openness-emco.png) -Link: [EMCO](https://github.com/otcshare/specs/blob/master/doc/building-blocks/emco/openness-emco.md) +Link: [EMCO](https://github.com/open-ness/specs/blob/master/doc/building-blocks/emco/openness-emco.md) ### Resource Management Resource Management represents a methodology which involves identification of the hardware and software resources on the edge cluster, Configuration and allocation of the resources and continuous monitoring of the resources for any changes. @@ -137,7 +137,7 @@ Resource Allocation involves configuration of the certain hardware resources lik Resource monitoring involves tracking the usage of allocated resources to the applications and services and also tracking the remaining allocatable resources. OpenNESS provides collectors, node exporters using collectd, telegraf and custom exporters as part of telemetry and monitoring of current resource usage. Resource monitoring support is provided for CPU, VPU, FPGA AND Memory. -Link: [Enhanced Platform Awareness: Documents covering Accelerators and Resource Management](https://github.com/otcshare/specs/tree/master/doc/building-blocks/enhanced-platform-awareness) +Link: [Enhanced Platform Awareness: Documents covering Accelerators and Resource Management](https://github.com/open-ness/specs/tree/master/doc/building-blocks/enhanced-platform-awareness) ### Accelerators @@ -174,13 +174,13 @@ OpenNESS supports the following CNIs: - Kube-OVN CNI: integrates the OVN-based network virtualization with Kubernetes. It offers an advanced container network fabric for enterprises with the most functions and the easiest operation. - Calico CNI/eBPF: supports applications with higher performance using eBPF and IPv4/IPv6 dual-stack -Link: [Dataplane and CNI](https://github.com/otcshare/specs/tree/master/doc/building-blocks/dataplane) +Link: [Dataplane and CNI](https://github.com/open-ness/specs/tree/master/doc/building-blocks/dataplane) ### Edge Aware Service Mesh Istio is a feature-rich, cloud-native service mesh platform that provides a collection of key capabilities such as: Traffic Management, Security and Observability uniformly across a network of services. OpenNESS integrates natively with the Istio service mesh to help reduce the complexity of large scale edge applications, services, and network functions. -Link: [Service Mesh](https://github.com/otcshare/specs/blob/master/doc/applications/openness_service_mesh.md) +Link: [Service Mesh](https://github.com/open-ness/specs/blob/master/doc/applications/openness_service_mesh.md) ### Telemetry and Monitoring @@ -290,7 +290,7 @@ The following is a subset of supported reference network functions: - gNodeB or eNodeB: 5G or 4G base station implementation on Intel architecture based on Intel’s FlexRAN. -Link: [Documents covering OpenNESS supported Reference Architectures](https://github.com/otcshare/specs/tree/master/doc/reference-architectures) +Link: [Documents covering OpenNESS supported Reference Architectures](https://github.com/open-ness/specs/tree/master/doc/reference-architectures) ## OpenNESS Optimized Commercial Applications OpenNESS Optimized Commercial applications are available at [Intel® Network Builders](https://networkbuilders.intel.com/commercial-applications) diff --git a/doc/building-blocks/dataplane/openness-interapp.md b/doc/building-blocks/dataplane/openness-interapp.md index a9fc232f..bf9cfd63 100644 --- a/doc/building-blocks/dataplane/openness-interapp.md +++ b/doc/building-blocks/dataplane/openness-interapp.md @@ -15,7 +15,7 @@ Multi-core edge cloud platforms typically host multiple containers or virtual ma ## InterApp Communication support in OpenNESS Network Edge -InterApp communication on the OpenNESS Network Edge is supported using Open Virtual Network for Open vSwitch [OVN/OVS](https://github.com/otcshare/x-specs/blob/master/doc/dataplane/openness-ovn.md) as the infrastructure. OVN/OVS in the network edge is supported through the Kubernetes kube-OVN Container Network Interface (CNI). +InterApp communication on the OpenNESS Network Edge is supported using Open Virtual Network for Open vSwitch [OVN/OVS](https://github.com/open-ness/x-specs/blob/master/doc/dataplane/openness-ovn.md) as the infrastructure. OVN/OVS in the network edge is supported through the Kubernetes kube-OVN Container Network Interface (CNI). OVN/OVS is used as a default networking infrastructure for: - Data plane interface: User data transmission between User Equipment (UE) and edge applications diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 76355f05..7ffd4ac0 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -69,14 +69,14 @@ The following figure shows the topology overview for the OpenNESS EMCO orchestra _Figure 2 - Topology Overview with OpenNESS EMCO_ All the managed edge clusters and cloud clusters are connected with the EMCO cluster through the WAN network. -- The central orchestration (EMCO) cluster can be installed and provisioned by using the [OpenNESS Central Orchestrator Flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md). -- The edge clusters and the cloud cluster can be installed and provisioned by using the [OpenNESS Flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md). +- The central orchestration (EMCO) cluster can be installed and provisioned by using the [OpenNESS Central Orchestrator Flavor](https://github.com/open-ness/specs/blob/master/doc/flavors.md). +- The edge clusters and the cloud cluster can be installed and provisioned by using the [OpenNESS Flavor](https://github.com/open-ness/specs/blob/master/doc/flavors.md). - The composite application - [SmartCity](https://github.com/OpenVisualCloud/Smart-City-Sample) is composed of two parts: edge application and cloud (web) application. - The edge application executes media processing and analytics on multiple edge clusters to reduce latency. - The cloud application is like a web application for additional post-processing, such as calculating statistics and display/visualization on the cloud cluster side. - The EMCO user can deploy the SmartCity applications across the clusters. Besides that, EMCO allows the operator to override configurations and profiles to satisfy deployment needs. -This document aims to familiarize the user with EMCO and [OpenNESS deployment flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md) for EMCO installation and provision, and provide instructions accordingly. +This document aims to familiarize the user with EMCO and [OpenNESS deployment flavor](https://github.com/open-ness/specs/blob/master/doc/flavors.md) for EMCO installation and provision, and provide instructions accordingly. ## EMCO Introduction @@ -133,7 +133,7 @@ The Distributed Application Scheduler supports operations on a deployment intent - status: (may be invoked at any step) provides information on the status of the deployment intent group. - terminate: terminates the application resources of an instantiated application from all of the clusters to which it was deployed. In some cases, if a remote cluster is intermittently unreachable, the instantiate operation may still retry the instantiate operation for that cluster. The terminate operation will cause the instantiate operation to complete (i.e. fail), before the termination operation is performed. - stop: In some cases, if the remote cluster is intermittently unreachable, the Resource Synchronizer will continue retrying an instantiate or terminate operation. The stop operation can be used to force the retry operation to stop, and the instantiate or terminate operation will complete (with a failed status). In the case of terminate, this allows the deployment intent group resource to be deleted via the API, since deletion is prevented until a deployment intent group resource has reached a completed terminate operation status. -Refer to [EMCO Resource Lifecycle Operations](https://github.com/otcshare/EMCO/tree/main/docs/user/Resource_Lifecycle.md) for more details. +Refer to [EMCO Resource Lifecycle Operations](https://github.com/open-ness/EMCO/tree/main/docs/user/Resource_Lifecycle.md) for more details. #### Network Configuration Management The network configuration management (NCM) microservice: @@ -237,7 +237,7 @@ _Figure 7 - Instantiate a Deployment Intent Group_ In this initial release of EMCO, a built-in generic placement controller is provided in the `orchestrator`. As described above, the three provided action controllers are the OVN Action, Traffic and Generic Action controllers. #### Status Monitoring and Queries in EMCO -When a resource like a Deployment Intent Group is instantiated, status information about both the deployment and the deployed resources in the cluster are collected and made available for query by the API. The following diagram illustrates the key components involved. For more information about status queries see [EMCO Resource Lifecycle Operations](https://github.com/otcshare/EMCO/tree/main/docs/user/Resource_Lifecycle.md). +When a resource like a Deployment Intent Group is instantiated, status information about both the deployment and the deployed resources in the cluster are collected and made available for query by the API. The following diagram illustrates the key components involved. For more information about status queries see [EMCO Resource Lifecycle Operations](https://github.com/open-ness/EMCO/tree/main/docs/user/Resource_Lifecycle.md). ![OpenNESS EMCO](openness-emco-images/emco-status-monitoring.png) @@ -262,7 +262,7 @@ _Figure 8 - Status Monitoring and Query Sequence_ ### EMCO API -For user interaction, EMCO provides [RESTful API](https://github.com/otcshare/EMCO/blob/main/docs/emco_apis.yaml). Apart from that, EMCO also provides CLI. For the detailed usage, refer to [EMCO CLI](https://github.com/otcshare/EMCO/tree/main/src/tools/emcoctl) +For user interaction, EMCO provides [RESTful API](https://github.com/open-ness/EMCO/blob/main/docs/emco_apis.yaml). Apart from that, EMCO also provides CLI. For the detailed usage, refer to [EMCO CLI](https://github.com/open-ness/EMCO/tree/main/src/tools/emcoctl) > **NOTE**: The EMCO RESTful API is the foundation for the other interaction facilities like the EMCO CLI, EMCO GUI (available in the future) and other orchestrators. ### EMCO Authentication and Authorization @@ -287,7 +287,7 @@ The following figure shows the authentication flow with EMCO, Istio and Authserv _Figure 10 - EMCO Authenication with external OATH2 Server_ -Detailed steps for configuring EMCO with Istio can be found in [EMCO Integrity and Access Management](https://github.com/otcshare/EMCO/tree/main/docs/user/Emco_Integrity_Access_Management.md) document. +Detailed steps for configuring EMCO with Istio can be found in [EMCO Integrity and Access Management](https://github.com/open-ness/EMCO/tree/main/docs/user/Emco_Integrity_Access_Management.md) document. Steps for EMCO Authentication and Authorization Setup: - Install and Configure Keycloak Server to be used in the setup. This server runs outside the EMCO cluster @@ -301,8 +301,8 @@ Steps for EMCO Authentication and Authorization Setup: - Apply Authentication and Authorization Policies ### EMCO Installation With OpenNESS Flavor -EMCO supports [multiple deployment options](https://github.com/otcshare/EMCO/tree/main/deployments). [OpenNESS Experience Kit](https://github.com/otcshare/specs/blob/master/doc/getting-started/openness-experience-kits.md) offers the `central_orchestrator` flavor to automate EMCO build and deployment as mentioned below. -- The first step is to prepare one server environment which needs to fulfill the [preconditions](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#preconditions). +EMCO supports [multiple deployment options](https://github.com/open-ness/EMCO/tree/main/deployments). [OpenNESS Experience Kit](https://github.com/open-ness/specs/blob/master/doc/getting-started/openness-experience-kits.md) offers the `central_orchestrator` flavor to automate EMCO build and deployment as mentioned below. +- The first step is to prepare one server environment which needs to fulfill the [preconditions](https://github.com/open-ness/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#preconditions). - Then place the EMCO server hostname in `[controller_group]` group in `inventory.ini` file of openness-experience-kit. > **NOTE**: `[edgenode_group]` and `[edgenode_vca_group]` are not required for configuration, since EMCO micro services just need to be deployed on the Kubernetes* control plane node. - Run script `./deploy_ne.sh -f central_orchestrator`. Deployment should complete successfully. In the flavor, harbor registry is deployed to provide images services as well. @@ -358,7 +358,7 @@ In the step, cluster provider will be created. And both the edge cluster and the ``` > **NOTE**: should be `:30003`. -3. On the EMCO server, download the [scripts,profiles and configmap JSON files](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app/emco). +3. On the EMCO server, download the [scripts,profiles and configmap JSON files](https://github.com/open-ness/edgeapps/tree/master/applications/smart-city-app/emco). 4. Run the command for the environment setup with success return as below: ```shell @@ -418,7 +418,7 @@ URL: projects/project_smtc/logical-clouds/default/instantiate Response Code: 200 http://localhost:31298/v2 URL: projects/project_smtc/composite-apps/composite_smtc/v1/deployment-intent-groups/smtc-deployment-intent-group/instantiate Response Code: 202 Response: ``` - > **NOTE**: EMCO supports generic K8S resource configuration including configmap, secret,etc. The example offers the usage about [configmap configuration](https://github.com/otcshare/edgeapps/blob/master/applications/smart-city-app/emco/cli-scripts/04_apps_template.yaml) to the clusters. + > **NOTE**: EMCO supports generic K8S resource configuration including configmap, secret,etc. The example offers the usage about [configmap configuration](https://github.com/open-ness/edgeapps/blob/master/applications/smart-city-app/emco/cli-scripts/04_apps_template.yaml) to the clusters. 2. Verify SmartCity Application Deployment Information. The pods on the edge cluster are in the running status as shown as below: diff --git a/doc/building-blocks/enhanced-platform-awareness/openness-acc100.md b/doc/building-blocks/enhanced-platform-awareness/openness-acc100.md index d37e3aea..6792390c 100644 --- a/doc/building-blocks/enhanced-platform-awareness/openness-acc100.md +++ b/doc/building-blocks/enhanced-platform-awareness/openness-acc100.md @@ -79,7 +79,7 @@ The full pipeline of preparing the device for workload deployment and deploying - Simple sample BBDEV application to validate the pipeline (i.e., SRIOV creation - Queue configuration - Device orchestration - Pod deployment): Script delivery and instructions to build Docker image for sample application delivered as part of Edge Apps package. ### ACC100 (FEC) Ansible Installation for OpenNESS Network Edge -To run the OpenNESS package with ACC100 (FEC) functionality, the feature needs to be enabled on both Edge Controller and Edge Node. It can be deployed via the ["flexran" flavor of OpenNESS](https://github.com/otcshare/openness-experience-kits/tree/master/flavors/flexran). +To run the OpenNESS package with ACC100 (FEC) functionality, the feature needs to be enabled on both Edge Controller and Edge Node. It can be deployed via the ["flexran" flavor of OpenNESS](https://github.com/open-ness/openness-experience-kits/tree/master/flavors/flexran). #### OpenNESS Experience Kit To enable ACC100 support from OEK, SRIOV must be enabled in OpenNESS: @@ -182,7 +182,7 @@ kubectl get node -o json | jq '.status.allocatable' ``` To request the device as a resource in the pod, add the request for the resource into the pod specification file by specifying its name and the amount of resources required. If the resource is not available or the amount of resources requested is greater than the number of resources available, the pod status will be “Pending” until the resource is available. -**NOTE**: The name of the resource must match the name specified in the configMap for the K8s devices plugin [configMap.yml](https://github.com/otcshare/openness-experience-kits/blob/master/roles/kubernetes/cni/sriov/controlplane/files/sriov/templates/configMap.yml). +**NOTE**: The name of the resource must match the name specified in the configMap for the K8s devices plugin [configMap.yml](https://github.com/open-ness/openness-experience-kits/blob/master/roles/kubernetes/cni/sriov/controlplane/files/sriov/templates/configMap.yml). A sample pod requesting the ACC100 (FEC) VF may look like this: diff --git a/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md b/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md index 83a3b807..d6c2539a 100644 --- a/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md +++ b/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md @@ -223,7 +223,7 @@ To run vRAN workloads on the Intel® FPGA PAC N3000, the FPGA must be programmed #### Telemetry monitoring - Support for monitoring temperature and power telemetry of the Intel® FPGA PAC N3000 is also provided from OpenNESS with a CollectD collector that is configured for the `flexran` flavor. Intel® FPGA PAC N3000 telemetry monitoring is provided to CollectD as a plugin. It collects the temperature and power metrics from the card and exposes them to Prometheus\* from which the user can easily access the metrics. For more information on how to enable telemetry for FPGA in OpenNESS, see the [telemetry whitepaper](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-telemetry.md#collectd). + Support for monitoring temperature and power telemetry of the Intel® FPGA PAC N3000 is also provided from OpenNESS with a CollectD collector that is configured for the `flexran` flavor. Intel® FPGA PAC N3000 telemetry monitoring is provided to CollectD as a plugin. It collects the temperature and power metrics from the card and exposes them to Prometheus\* from which the user can easily access the metrics. For more information on how to enable telemetry for FPGA in OpenNESS, see the [telemetry whitepaper](https://github.com/open-ness/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-telemetry.md#collectd). ![PACN3000 telemetry](fpga-images/openness-fpga4.png) @@ -266,7 +266,7 @@ kubectl get node -o json | jq '.status.allocatable' ``` To request the device as a resource in the pod, add the request for the resource into the pod specification file by specifying its name and amount of resources required. If the resource is not available or the amount of resources requested is greater than the number of resources available, the pod status will be “Pending” until the resource is available. -**NOTE**: The name of the resource must match the name specified in the configMap for the K8s devices plugin [configMap.yml](https://github.com/otcshare/openness-experience-kits/blob/master/roles/kubernetes/cni/sriov/controlplane/files/sriov/templates/configMap.yml). +**NOTE**: The name of the resource must match the name specified in the configMap for the K8s devices plugin [configMap.yml](https://github.com/open-ness/openness-experience-kits/blob/master/roles/kubernetes/cni/sriov/controlplane/files/sriov/templates/configMap.yml). A sample pod requesting the FPGA (FEC) VF may look like this: diff --git a/doc/building-blocks/enhanced-platform-awareness/openness-sriov-multiple-interfaces.md b/doc/building-blocks/enhanced-platform-awareness/openness-sriov-multiple-interfaces.md index acd46703..77c77634 100644 --- a/doc/building-blocks/enhanced-platform-awareness/openness-sriov-multiple-interfaces.md +++ b/doc/building-blocks/enhanced-platform-awareness/openness-sriov-multiple-interfaces.md @@ -61,7 +61,7 @@ kubernetes_cnis: ### Multus usage -Multus CNI is deployed in OpenNESS using a Helm chart. The Helm chart is available in [openness-experience-kits](https://github.com/otcshare/openness-experience-kits/tree/master/roles/kubernetes/cni/multus/master/files/multus-cni). The Multus image is pulled by Ansible\* Multus role and pushed to a local Docker\* registry on Edge Controller. +Multus CNI is deployed in OpenNESS using a Helm chart. The Helm chart is available in [openness-experience-kits](https://github.com/open-ness/openness-experience-kits/tree/master/roles/kubernetes/cni/multus/master/files/multus-cni). The Multus image is pulled by Ansible\* Multus role and pushed to a local Docker\* registry on Edge Controller. [Custom resource definition](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/#custom-resources) (CRD) is used to define an additional network that can be used by Multus. @@ -130,7 +130,7 @@ kubernetes_cnis: - sriov ``` -SR-IOV CNI and device plugin are deployed in OpenNESS using Helm chart. The Helm chart is available in [openness-experience-kits](https://github.com/otcshare/openness-experience-kits/tree/master/roles/kubernetes/cni/sriov/master/files/sriov). Additional chart templates for SR-IOV device plugin can be downloaded from [container-experience-kits repository](https://github.com/intel/container-experience-kits/tree/master/roles/sriov-dp-install/charts/sriov-net-dp/templates). SR-IOV images are built from source by the Ansible SR-IOV role and pushed to a local Harbor registry on Edge Controller. +SR-IOV CNI and device plugin are deployed in OpenNESS using Helm chart. The Helm chart is available in [openness-experience-kits](https://github.com/open-ness/openness-experience-kits/tree/master/roles/kubernetes/cni/sriov/master/files/sriov). Additional chart templates for SR-IOV device plugin can be downloaded from [container-experience-kits repository](https://github.com/intel/container-experience-kits/tree/master/roles/sriov-dp-install/charts/sriov-net-dp/templates). SR-IOV images are built from source by the Ansible SR-IOV role and pushed to a local Harbor registry on Edge Controller. #### Edge Node SR-IOV interfaces configuration diff --git a/doc/building-blocks/enhanced-platform-awareness/openness-telemetry.md b/doc/building-blocks/enhanced-platform-awareness/openness-telemetry.md index fa5357df..a480d145 100644 --- a/doc/building-blocks/enhanced-platform-awareness/openness-telemetry.md +++ b/doc/building-blocks/enhanced-platform-awareness/openness-telemetry.md @@ -149,7 +149,7 @@ Node Exporter is a Prometheus exporter that exposes hardware and OS metrics of * #### VCAC-A -Node Exporter also enables exposure of telemetry from Intel's VCAC-A card to Prometheus. The telemetry from the VCAC-A card is saved into a text file; this text file is used as an input to the Node Exporter. More information on VCAC-A usage in OpenNESS is available [here](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-vcac-a.md). +Node Exporter also enables exposure of telemetry from Intel's VCAC-A card to Prometheus. The telemetry from the VCAC-A card is saved into a text file; this text file is used as an input to the Node Exporter. More information on VCAC-A usage in OpenNESS is available [here](https://github.com/open-ness/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-vcac-a.md). ### cAdvisor @@ -189,7 +189,7 @@ The various OEK flavors are enabled for CollectD deployment as follows: 1. Select the flavor for the deployment of CollectD from the OEK during OpenNESS deployment; the flavor is to be selected with `telemetry_flavor: `. - In the event of using the `flexran` profile, `OPAE_SDK_1.3.7-5_el7.zip` needs to be available in `./openness-experience-kits/opae_fpga` directory; for details about the packages, see [FPGA support in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md#edge-controller) + In the event of using the `flexran` profile, `OPAE_SDK_1.3.7-5_el7.zip` needs to be available in `./openness-experience-kits/opae_fpga` directory; for details about the packages, see [FPGA support in OpenNESS](https://github.com/open-ness/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md#edge-controller) 2. To access metrics available from CollectD, connect to the Prometheus [dashboard](#prometheus). 3. Look up an example the CollectD metric by specifying the metric name (ie. `collectd_cpufreq`) and pressing `execute` under the `graph` tab. ![CollectD Metric](telemetry-images/collectd_metric.png) @@ -265,7 +265,7 @@ Processor Counter Monitor (PCM) is an application programming interface (API) an - Prometheus: responsible for collecting and providing metrics. - Prometheus Adapter: exposes the metrics from Prometheus to a K8s API and is configured to provide metrics from Node Exporter and CollectD collectors. -TAS is enabled by default in OEK, a sample scheduling policy for TAS is provided for [VCAC-A node deployment](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-vcac-a.md#telemetry-support). +TAS is enabled by default in OEK, a sample scheduling policy for TAS is provided for [VCAC-A node deployment](https://github.com/open-ness/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-vcac-a.md#telemetry-support). #### Usage diff --git a/doc/building-blocks/enhanced-platform-awareness/openness-vcac-a.md b/doc/building-blocks/enhanced-platform-awareness/openness-vcac-a.md index d86e9b9b..52a77028 100644 --- a/doc/building-blocks/enhanced-platform-awareness/openness-vcac-a.md +++ b/doc/building-blocks/enhanced-platform-awareness/openness-vcac-a.md @@ -32,7 +32,7 @@ The VCAC-A installation involves a [two-stage build](https://github.com/OpenVisu The OEK automates the overall build and installation process of the VCAC-A card by joining it as a standalone logical node to the OpenNESS cluster. The OEK supports force build VCAC-A system image (VCAD) via flag (force\_build\_enable: true (default value)), it also allows the customer to disable the flag to re-use last system image built. When successful, the OpenNESS controller is capable of selectively scheduling workloads on the "VCA node" for proximity to the hardware acceleration. -When onboarding applications such as [Open Visual Cloud Smart City Sample](https://github.com/otcshare/edgeapps/tree/master/applications/smart-city-app) with the existence of VCAC-A, the OpenNESS controller schedules all the application pods onto the edge node except the *video analytics* processing that is scheduled on the VCA node as shown in the figure below. +When onboarding applications such as [Open Visual Cloud Smart City Sample](https://github.com/open-ness/edgeapps/tree/master/applications/smart-city-app) with the existence of VCAC-A, the OpenNESS controller schedules all the application pods onto the edge node except the *video analytics* processing that is scheduled on the VCA node as shown in the figure below. ![Smart City Setup](vcaca-images/smart-city-app-vcac-a.png) diff --git a/doc/flavors.md b/doc/flavors.md index 23436e02..5d606933 100644 --- a/doc/flavors.md +++ b/doc/flavors.md @@ -42,9 +42,9 @@ The pre-defined *flexran* deployment flavor provisions an optimized system confi Steps to install this flavor are as follows: 1. Configure OEK as described in the [OpenNESS Getting Started Guide for Network Edge](getting-started/network-edge/controller-edge-node-setup.md). 2. Configure the flavor file to reflect desired deployment. - - Configure the CPUs selected for isolation and OS/K8s processes from command line in files [controller_group.yml](https://github.com/otcshare/openness-experience-kits/blob/master/flavors/flexran/controller_group.yml) and [edgenode_group.yml](https://github.com/otcshare/openness-experience-kits/blob/master/flavors/flexran/edgenode_group.yml) - please note that in single node mode the edgenode_group.yml is used to configure the CPU isolation. - - Configure the amount of CPUs reserved for K8s and OS from K8s level with `reserved_cpu` flag in [all.yml](https://github.com/otcshare/openness-experience-kits/blob/master/flavors/flexran/all.yml) file. - - Configure whether the FPGA or eASIC support for FEC is desired or both in [all.yml](https://github.com/otcshare/openness-experience-kits/blob/master/flavors/flexran/all.yml) file. + - Configure the CPUs selected for isolation and OS/K8s processes from command line in files [controller_group.yml](https://github.com/open-ness/openness-experience-kits/blob/master/flavors/flexran/controller_group.yml) and [edgenode_group.yml](https://github.com/open-ness/openness-experience-kits/blob/master/flavors/flexran/edgenode_group.yml) - please note that in single node mode the edgenode_group.yml is used to configure the CPU isolation. + - Configure the amount of CPUs reserved for K8s and OS from K8s level with `reserved_cpu` flag in [all.yml](https://github.com/open-ness/openness-experience-kits/blob/master/flavors/flexran/all.yml) file. + - Configure whether the FPGA or eASIC support for FEC is desired or both in [all.yml](https://github.com/open-ness/openness-experience-kits/blob/master/flavors/flexran/all.yml) file. 3. Run OEK deployment script: ```shell diff --git a/doc/getting-started/network-edge/controller-edge-node-setup.md b/doc/getting-started/network-edge/controller-edge-node-setup.md index 19311842..0356cd70 100644 --- a/doc/getting-started/network-edge/controller-edge-node-setup.md +++ b/doc/getting-started/network-edge/controller-edge-node-setup.md @@ -103,14 +103,14 @@ For example, when installing Docker\*, the RPM repository is added and Docker is ### Supported EPA features -Several enhanced platform capabilities and features are available in OpenNESS for Network Edge. For the full list of supported features, see [Enhanced Platform Awareness Features](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/supported-epa.md). The documents referenced in this list provide a detailed description of the features, and step-by-step instructions for enabling them. Users should become familiar with available features before executing the deployment playbooks. +Several enhanced platform capabilities and features are available in OpenNESS for Network Edge. For the full list of supported features, see [Enhanced Platform Awareness Features](https://github.com/open-ness/specs/blob/master/doc/getting-started/network-edge/supported-epa.md). The documents referenced in this list provide a detailed description of the features, and step-by-step instructions for enabling them. Users should become familiar with available features before executing the deployment playbooks. ### VM support for Network Edge -Support for VM deployment on OpenNESS for Network Edge is available and enabled by default. Certain configurations and prerequisites may need to be satisfied to use all VM capabilities. The user is advised to become familiar with the VM support documentation before executing the deployment playbooks. See [openness-network-edge-vm-support](https://github.com/otcshare/specs/blob/master/doc/applications-onboard/openness-network-edge-vm-support.md) for more information. +Support for VM deployment on OpenNESS for Network Edge is available and enabled by default. Certain configurations and prerequisites may need to be satisfied to use all VM capabilities. The user is advised to become familiar with the VM support documentation before executing the deployment playbooks. See [openness-network-edge-vm-support](https://github.com/open-ness/specs/blob/master/doc/applications-onboard/openness-network-edge-vm-support.md) for more information. ### Application on-boarding -Refer to the [network-edge-applications-onboarding](https://github.com/otcshare/specs/blob/master/doc/aplications-onboard/network-edge-applications-onboarding.md) document for instructions on how to deploy edge applications for OpenNESS Network Edge. +Refer to the [network-edge-applications-onboarding](https://github.com/open-ness/specs/blob/master/doc/aplications-onboard/network-edge-applications-onboarding.md) document for instructions on how to deploy edge applications for OpenNESS Network Edge. ### Single-node Network Edge cluster @@ -352,12 +352,12 @@ The following CNIs are currently supported: * Network attachment definition: openness-calico * [weavenet](https://github.com/weaveworks/weave) * CIDR: 10.32.0.0/12 -* [SR-IOV](https://github.com/intel/sriov-cni) (cannot be used as a standalone or primary CNI - [sriov setup](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-sriov-multiple-interfaces.md)) -* [Userspace](https://github.com/intel/userspace-cni-network-plugin) (cannot be used as a standalone or primary CNI - [Userspace CNI setup](https://github.com/otcshare/specs/blob/master/doc/dataplane/openness-userspace-cni.md) +* [SR-IOV](https://github.com/intel/sriov-cni) (cannot be used as a standalone or primary CNI - [sriov setup](https://github.com/open-ness/specs/blob/master/doc/enhanced-platform-awareness/openness-sriov-multiple-interfaces.md)) +* [Userspace](https://github.com/intel/userspace-cni-network-plugin) (cannot be used as a standalone or primary CNI - [Userspace CNI setup](https://github.com/open-ness/specs/blob/master/doc/dataplane/openness-userspace-cni.md) Multiple CNIs can be requested to be set up for the cluster. To provide such functionality [the Multus CNI](https://github.com/intel/multus-cni) is used. ->**NOTE**: For a guide on how to add new a CNI role to the OpenNESS Experience Kits, refer to [the OpenNESS Experience Kits guide](https://github.com/otcshare/specs/blob/master/doc/getting-started/openness-experience-kits.md#adding-new-cni-plugins-for-kubernetes-network-edge). +>**NOTE**: For a guide on how to add new a CNI role to the OpenNESS Experience Kits, refer to [the OpenNESS Experience Kits guide](https://github.com/open-ness/specs/blob/master/doc/getting-started/openness-experience-kits.md#adding-new-cni-plugins-for-kubernetes-network-edge). ### Selecting cluster networking plugins (CNI) @@ -611,4 +611,4 @@ edgenode_repository_branch: openness-20.03 ## Customization of kernel, grub parameters, and tuned profile -OpenNESS Experience Kits provide an easy way to customize the kernel version, grub parameters, and tuned profile. For more information, refer to [the OpenNESS Experience Kits guide](https://github.com/otcshare/specs/blob/master/doc/getting-started/openness-experience-kits.md). +OpenNESS Experience Kits provide an easy way to customize the kernel version, grub parameters, and tuned profile. For more information, refer to [the OpenNESS Experience Kits guide](https://github.com/open-ness/specs/blob/master/doc/getting-started/openness-experience-kits.md). diff --git a/doc/getting-started/network-edge/offline-edge-deployment.md b/doc/getting-started/network-edge/offline-edge-deployment.md index 8374ca48..21dc6fe0 100644 --- a/doc/getting-started/network-edge/offline-edge-deployment.md +++ b/doc/getting-started/network-edge/offline-edge-deployment.md @@ -13,7 +13,7 @@ Copyright (c) 2019-2020 Intel Corporation ## OpenNESS support in offline environment -The OpenNESS projects supports a deployment of the solution in an air-gapped, offline environment. The support is currently limited to "[flexran" deployment flavor of OpenNESS Experience Kit](https://github.com/otcshare/openness-experience-kits/tree/master/flavors/flexran) only and it allows for offline deployment of vRAN specific components. Internet connection is needed to create the offline package, a script to download and build all necessary components will create an archive of all the necessary files. Once the offline package is created the installation of OpenNESS Experience Kits will be commenced as usual, in the same way as the default online installation would. +The OpenNESS projects supports a deployment of the solution in an air-gapped, offline environment. The support is currently limited to "[flexran" deployment flavor of OpenNESS Experience Kit](https://github.com/open-ness/openness-experience-kits/tree/master/flavors/flexran) only and it allows for offline deployment of vRAN specific components. Internet connection is needed to create the offline package, a script to download and build all necessary components will create an archive of all the necessary files. Once the offline package is created the installation of OpenNESS Experience Kits will be commenced as usual, in the same way as the default online installation would. It can be deployed in two different scenarios. The first scenario is to deploy the OpenNESS Experience Kits from the online "jumper" node which is being used to create the offline package, this internet connected node must have a network connection to the air-gapped/offline nodes. The second scenario is to copy the whole OpenNESS Experience Kit directory with the already archived packages to the air-gapped/offline environment (for example via USB or other media or means) and run the OpenNESS Experience Kit from within the offline environment. All the nodes within the air-gapped/offline cluster need to able to SSH into each other. @@ -26,17 +26,17 @@ Figure 2. Scenario two - OEK copied to the air-gapped network * A node with access to internet to create the offline package. * Cluster set up in an air-gapped environment. -* Clean setup, see [pre-requisites](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#preconditions) +* Clean setup, see [pre-requisites](https://github.com/open-ness/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#preconditions) * [Optional] If OEK is run from an online jumper node, the node needs to be able to SSH into each machine in air-gapped environment. * [Optional] A media such as USB drive to copy the offline OEK package to the air-gapped environment if there is no connection from online node. -* All the nodes in air-gapped environment must be able to SSH to each other without requiring password input, see [getting-started.md](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#exchanging-ssh-keys-between-hosts). +* All the nodes in air-gapped environment must be able to SSH to each other without requiring password input, see [getting-started.md](https://github.com/open-ness/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#exchanging-ssh-keys-between-hosts). * The control plane node needs to be able to SSH itself. * The time and date of the nodes in offline environment is manually synchronized by the cluster's admin. * User provided files - OPAE_SDK_1.3.7-5_el7.zip and syscfg_package.zip ## Creating the offline package from an online node -To create the offline package the user must have an access to an online node from which the offline package creator can download all necessary files and build Docker images. The list of files to be downloaded/build is provided in a form of a package definition list (Only package definition list for "flexran" flavor of OpenNESS is provided at the time of writing). Various categories of files to be downloaded are provided within this list including: RPMs, PIP pacakges, Helm charts, Dockerfiles, Go modules, and miscellaneous downloads. According to the category of a file the logic of offline package creator script will handle the download/build accordingly. Some files such as proprietary packages need to be provided by user in specified directories (see following steps). Once the offline package creator collects all necessary components it will pack them into an archive and then place them in appropriate place within the OpenNESS Experience Kits directory. Once the packages are archived the OpenNESS Experience Kits are ready to be deployed in air-gapped environment. The following diagram illustrates the workflow of the offline package creator. Additional information regarding the offline package creator can be found in the [README.md file](https://github.com/otcshare/openness-experience-kits/blob/master/offline_package_creator/README.md). +To create the offline package the user must have an access to an online node from which the offline package creator can download all necessary files and build Docker images. The list of files to be downloaded/build is provided in a form of a package definition list (Only package definition list for "flexran" flavor of OpenNESS is provided at the time of writing). Various categories of files to be downloaded are provided within this list including: RPMs, PIP pacakges, Helm charts, Dockerfiles, Go modules, and miscellaneous downloads. According to the category of a file the logic of offline package creator script will handle the download/build accordingly. Some files such as proprietary packages need to be provided by user in specified directories (see following steps). Once the offline package creator collects all necessary components it will pack them into an archive and then place them in appropriate place within the OpenNESS Experience Kits directory. Once the packages are archived the OpenNESS Experience Kits are ready to be deployed in air-gapped environment. The following diagram illustrates the workflow of the offline package creator. Additional information regarding the offline package creator can be found in the [README.md file](https://github.com/open-ness/openness-experience-kits/blob/master/offline_package_creator/README.md). Figure 3. Offline package creator workflow ![OPC flow](offline-images/offline-flow.png) @@ -46,7 +46,7 @@ To run the offline package creator run the following steps (user should not be a Clone the OpenNESS Experience Kits repo to an online node: ```shell -# https://github.com/otcshare/openness-experience-kits.git +# https://github.com/open-ness/openness-experience-kits.git ``` Navigate to offline package creator directory: @@ -68,10 +68,10 @@ Copy the 'OPAE_SDK_1.3.7-5_el7.zip' file (optional but necessary by default - to # cp syscfg_package.zip /// ``` -Edit [openness-experience-kits/offline_package_creator/scripts/initrc](https://github.com/otcshare/openness-experience-kits/blob/master/offline_package_creator/scripts/initrc) file and update with GitHub username/token if necessary, HTTP/GIT proxy if behind firewall and provide paths to file dependencies. +Edit [openness-experience-kits/offline_package_creator/scripts/initrc](https://github.com/open-ness/openness-experience-kits/blob/master/offline_package_creator/scripts/initrc) file and update with GitHub username/token if necessary, HTTP/GIT proxy if behind firewall and provide paths to file dependencies. ```shell -# otcshare token +# open-ness token GITHUB_USERNAME="" GITHUB_TOKEN="" @@ -92,13 +92,13 @@ BUILD_COLLECTD_FPGA=disable DIR_OF_FPGA_ZIP="///" ``` -Start the offline package creator script [openness-experience-kits/offline_package_creator/offline_package_creator.sh](https://github.com/otcshare/openness-experience-kits/blob/master/offline_package_creator/offline_package_creator.sh) +Start the offline package creator script [openness-experience-kits/offline_package_creator/offline_package_creator.sh](https://github.com/open-ness/openness-experience-kits/blob/master/offline_package_creator/offline_package_creator.sh) ```shell # bash offline_package_creator.sh all ``` -The script will download all the files define in the [pdl_flexran.yml](https://github.com/otcshare/openness-experience-kits/blob/master/offline_package_creator/package_definition_list/pdl_flexran.yml) and build other necessary images, then copy them to a designated directory. Once the script is finished executing the user should expect three files under the `openness-experience-kits/roles/offline_roles/unpack_offline_package/files` directory: +The script will download all the files define in the [pdl_flexran.yml](https://github.com/open-ness/openness-experience-kits/blob/master/offline_package_creator/package_definition_list/pdl_flexran.yml) and build other necessary images, then copy them to a designated directory. Once the script is finished executing the user should expect three files under the `openness-experience-kits/roles/offline_roles/unpack_offline_package/files` directory: ```shell # ls openness-experience-kits/roles/offline_roles/unpack_offline_package/files @@ -120,13 +120,13 @@ Regardless of the scenario in which the OEK will be deployed the deployment meth ## Deployment in offline environment -Once all the previous steps provided within this document are completed and the OEK with offline archives is placed on the node which will run the OEK automation, the user should get familiar with the ["Running-playbooks"](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#running-playbooks) and ["Preconditions"](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#preconditions) sections of getting started guide and deploy the OpenNESS as per usual deployment steps. Please note only deployment of "flexran" flavour is supported for offline/air-gapped environment, other flavours/configurations and default deployment may fail due to missing dependencies, the support for ACC100 accelerator is not available for offline deployment of "flexran" flavour at the time of writing. Both multi-node and single node modes are supported. +Once all the previous steps provided within this document are completed and the OEK with offline archives is placed on the node which will run the OEK automation, the user should get familiar with the ["Running-playbooks"](https://github.com/open-ness/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#running-playbooks) and ["Preconditions"](https://github.com/open-ness/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md#preconditions) sections of getting started guide and deploy the OpenNESS as per usual deployment steps. Please note only deployment of "flexran" flavour is supported for offline/air-gapped environment, other flavours/configurations and default deployment may fail due to missing dependencies, the support for ACC100 accelerator is not available for offline deployment of "flexran" flavour at the time of writing. Both multi-node and single node modes are supported. During the deployment of the offline version of the OEK the archived files created by the offline package creator will be extracted and placed in appropriate directory. The OEK will set up a local file share server on the control plane node and move the files to the said server. The OEK will also create a local yum repo. All the files and packages will be pulled from this file share server by nodes across the air-gapped OpenNESS cluster. During the execution of the OEK the Ansible scripts will follow the same logic as per the online mode with the difference that all the components will be pulled locally from the file share server instead of the internet. The following are the specific steps to enable offline/air-gaped deployment from OEK: -Enable the offline deployment in [openness-experience-kits/group_vars/all/10-default.yml](https://github.com/otcshare/openness-experience-kits/blob/master/group_vars/all/10-default.yml) +Enable the offline deployment in [openness-experience-kits/group_vars/all/10-default.yml](https://github.com/open-ness/openness-experience-kits/blob/master/group_vars/all/10-default.yml) ```yaml ## Offline Mode support @@ -144,7 +144,7 @@ Make sure cotrol-plane node can SSH itself. ie: # ssh-copy-id ``` -Make sure the CPUs allocation in "flexran" flavor is configured as desired, [see configs in flavor directory](https://github.com/otcshare/openness-experience-kits/tree/master/flavors/flexran). +Make sure the CPUs allocation in "flexran" flavor is configured as desired, [see configs in flavor directory](https://github.com/open-ness/openness-experience-kits/tree/master/flavors/flexran). Deploy OpenNESS using FlexRAN flavor for multi or single node: diff --git a/doc/getting-started/network-edge/supported-epa.md b/doc/getting-started/network-edge/supported-epa.md index a96492e0..5f7ced94 100644 --- a/doc/getting-started/network-edge/supported-epa.md +++ b/doc/getting-started/network-edge/supported-epa.md @@ -12,11 +12,11 @@ Enhanced Platform Awareness (EPA) features are supported in on-premises using Ku ## Features The following EPA features are supported in Open Network Edge Services Software (OpenNESS) Network Edge: - * [openness-hugepage.md: Hugepages support for edge applications and network functions](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-hugepage.md) - * [openness-node-feature-discovery.md: Edge node hardware and software feature discovery support in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-node-feature-discovery.md) - * [openness-sriov-multiple-interfaces.md: Dedicated physical network interface allocation support for edge applications and network functions](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-sriov-multiple-interfaces.md) - * [openness-dedicated-core.md: Dedicated CPU core allocation support for edge applications and network functions](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-dedicated-core.md) - * [openness-bios.md: Edge platform BIOS and firmware and configuration support in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-bios.md) - * [openness-fpga.md: Dedicated FPGA IP resource allocation support for edge applications and network functions](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-fpga.md) - * [openness-topology-manager.md: Resource locality awareness support through topology manager in OpenNESS](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-topology-manager.md) + * [openness-hugepage.md: Hugepages support for edge applications and network functions](https://github.com/open-ness/specs/blob/master/doc/enhanced-platform-awareness/openness-hugepage.md) + * [openness-node-feature-discovery.md: Edge node hardware and software feature discovery support in OpenNESS](https://github.com/open-ness/specs/blob/master/doc/enhanced-platform-awareness/openness-node-feature-discovery.md) + * [openness-sriov-multiple-interfaces.md: Dedicated physical network interface allocation support for edge applications and network functions](https://github.com/open-ness/specs/blob/master/doc/enhanced-platform-awareness/openness-sriov-multiple-interfaces.md) + * [openness-dedicated-core.md: Dedicated CPU core allocation support for edge applications and network functions](https://github.com/open-ness/specs/blob/master/doc/enhanced-platform-awareness/openness-dedicated-core.md) + * [openness-bios.md: Edge platform BIOS and firmware and configuration support in OpenNESS](https://github.com/open-ness/specs/blob/master/doc/enhanced-platform-awareness/openness-bios.md) + * [openness-fpga.md: Dedicated FPGA IP resource allocation support for edge applications and network functions](https://github.com/open-ness/specs/blob/master/doc/enhanced-platform-awareness/openness-fpga.md) + * [openness-topology-manager.md: Resource locality awareness support through topology manager in OpenNESS](https://github.com/open-ness/specs/blob/master/doc/enhanced-platform-awareness/openness-topology-manager.md) diff --git a/doc/orchestration/openness-helm.md b/doc/orchestration/openness-helm.md index 50919e9c..393cf68d 100644 --- a/doc/orchestration/openness-helm.md +++ b/doc/orchestration/openness-helm.md @@ -12,7 +12,7 @@ Copyright (c) 2020 Intel Corporation - [References](#references) ## Introduction -Helm is a package manager for Kubernetes\*. It allows developers and operators to easily package, configure, and deploy applications and services onto Kubernetes clusters. For details refer to the [Helm Website](https://helm.sh). With OpenNESS, Helm is used to extend the [OpenNESS Experience Kits](https://github.com/otcshare/openness-experience-kits) Ansible\* playbooks to deploy Kubernetes packages. Helm adds considerable flexibility. It enables users to upgrade an existing installation without requiring a re-install. It provides the option to selectively deploy individual microservices if a full installation of OpenNESS is not needed. And it provides a standard process to deploy different applications or network functions. This document aims to familiarize the user with Helm and provide instructions on how to use the specific Helm charts available for OpenNESS. +Helm is a package manager for Kubernetes\*. It allows developers and operators to easily package, configure, and deploy applications and services onto Kubernetes clusters. For details refer to the [Helm Website](https://helm.sh). With OpenNESS, Helm is used to extend the [OpenNESS Experience Kits](https://github.com/open-ness/openness-experience-kits) Ansible\* playbooks to deploy Kubernetes packages. Helm adds considerable flexibility. It enables users to upgrade an existing installation without requiring a re-install. It provides the option to selectively deploy individual microservices if a full installation of OpenNESS is not needed. And it provides a standard process to deploy different applications or network functions. This document aims to familiarize the user with Helm and provide instructions on how to use the specific Helm charts available for OpenNESS. ## Architecture The below figure shows the architecture for the OpenNESS Helm in this document. @@ -22,7 +22,7 @@ _Figure - Helm Architecture in OpenNESS_ ## Helm Installation -Helm 3 is used for OpenNESS. The installation is automatically conducted by the [OpenNESS Experience Kits](https://github.com/otcshare/openness-experience-kits) Ansible playbooks as below: +Helm 3 is used for OpenNESS. The installation is automatically conducted by the [OpenNESS Experience Kits](https://github.com/open-ness/openness-experience-kits) Ansible playbooks as below: ```yaml - role: kubernetes/helm ``` @@ -39,19 +39,19 @@ OpenNESS provides the following helm charts: - CNI plugins including Multus\* and SRIOV CNI - Video analytics service - 5G control plane pods including AF, NEF, OAM, and CNTF -> **NOTE**: NFD, CMK, Prometheus, NodeExporter, and Grafana leverage existing third-party helm charts: [Container Experience Kits](https://github.com/intel/container-experience-kits) and [Helm GitHub\* Repo](https://github.com/helm/charts). For other helm charts, [OpenNESS Experience Kits](https://github.com/otcshare/openness-experience-kits) Ansible playbooks perform automatic charts generation and deployment. +> **NOTE**: NFD, CMK, Prometheus, NodeExporter, and Grafana leverage existing third-party helm charts: [Container Experience Kits](https://github.com/intel/container-experience-kits) and [Helm GitHub\* Repo](https://github.com/helm/charts). For other helm charts, [OpenNESS Experience Kits](https://github.com/open-ness/openness-experience-kits) Ansible playbooks perform automatic charts generation and deployment. - Sample applications, network functions, and services that can be deployed and verified on the OpenNESS platform: - Applications - - [CDN Caching Application Helm Charts](https://github.com/otcshare/edgeapps/tree/master/applications/cdn-caching) + - [CDN Caching Application Helm Charts](https://github.com/open-ness/edgeapps/tree/master/applications/cdn-caching) - [CDN Transcode Application Helm Charts](https://github.com/OpenVisualCloud/CDN-Transcode-Sample/tree/master/deployment/kubernetes/helm) (Leverage OpenVisualCloud) - [Smart City Application Helm Charts](https://github.com/OpenVisualCloud/Smart-City-Sample/tree/master/deployment/kubernetes/helm) (Leverage OpenVisualCloud) - - [Telemetry Sample Application Helm Charts](https://github.com/otcshare/edgeapps/tree/master/applications/telemetry-sample-app) - - [EIS Sample Application Helm Charts](https://github.com/otcshare/edgeapps/tree/master/applications/eis-experience-kit) + - [Telemetry Sample Application Helm Charts](https://github.com/open-ness/edgeapps/tree/master/applications/telemetry-sample-app) + - [EIS Sample Application Helm Charts](https://github.com/open-ness/edgeapps/tree/master/applications/eis-experience-kit) - Network Functions - - [FlexRAN Helm Charts](https://github.com/otcshare/edgeapps/tree/master/network-functions/ran/charts/flexran) - - [xRAN Helm Charts](https://github.com/otcshare/edgeapps/tree/master/network-functions/xran/helmcharts/xranchart) - - [UPF Helm Charts](https://github.com/otcshare/edgeapps/tree/master/network-functions/core-network/charts/upf) + - [FlexRAN Helm Charts](https://github.com/open-ness/edgeapps/tree/master/network-functions/ran/charts/flexran) + - [xRAN Helm Charts](https://github.com/open-ness/edgeapps/tree/master/network-functions/xran/helmcharts/xranchart) + - [UPF Helm Charts](https://github.com/open-ness/edgeapps/tree/master/network-functions/core-network/charts/upf) The EPA, Telemetry, and k8s plugins helm chart files will be saved in a specific directory on the OpenNESS controller. To modify the directory, change the following variable `ne_helm_charts_default_dir` in the `group_vars/all/10-default.yml` file: ```yaml diff --git a/doc/reference-architectures/core-network/openness_upf.md b/doc/reference-architectures/core-network/openness_upf.md index 83058f29..b8ea9c61 100644 --- a/doc/reference-architectures/core-network/openness_upf.md +++ b/doc/reference-architectures/core-network/openness_upf.md @@ -45,15 +45,15 @@ As part of the end-to-end integration of the Edge cloud deployment using OpenNES # Purpose -This document provides the required steps to deploy UPF on the OpenNESS platform. 4G/(Long Term Evolution network)LTE or 5G UPF can run as network functions on the Edge node in a virtualized environment. The reference [Dockerfile](https://github.com/otcshare/edgeapps/blob/master/network-functions/core-network/5G/UPF/Dockerfile) and [5g-upf.yaml](https://github.com/otcshare/edgeapps/blob/master/network-functions/core-network/5G/UPF/5g-upf.yaml) provide details on how to deploy UPF as a Container Networking function (CNF) in a K8s pod on OpenNESS edge node using OpenNESS Enhanced Platform Awareness (EPA) features. +This document provides the required steps to deploy UPF on the OpenNESS platform. 4G/(Long Term Evolution network)LTE or 5G UPF can run as network functions on the Edge node in a virtualized environment. The reference [Dockerfile](https://github.com/open-ness/edgeapps/blob/master/network-functions/core-network/5G/UPF/Dockerfile) and [5g-upf.yaml](https://github.com/open-ness/edgeapps/blob/master/network-functions/core-network/5G/UPF/5g-upf.yaml) provide details on how to deploy UPF as a Container Networking function (CNF) in a K8s pod on OpenNESS edge node using OpenNESS Enhanced Platform Awareness (EPA) features. These scripts are validated through a reference UPF solution (implementation is based on Vector Packet Processing (VPP)) that is not part of the OpenNESS release. >**NOTE**: The AF and NEF Dockerfile and pod specification can be found here: > -> - AF - [dockerfile](https://github.com/otcshare/epcforedge/blob/master/ngc/build/networkedge/af/Dockerfile). [Pod Specification](https://github.com/otcshare/epcforedge/blob/master/ngc/scripts/networkedge/ngctest/podAF.yaml) -> - NEF - [dockerfile](https://github.com/otcshare/epcforedge/blob/master/ngc/build/networkedge/nef/Dockerfile). [Pod Specification](https://github.com/otcshare/epcforedge/blob/master/ngc/scripts/networkedge/ngctest/podNEF.yaml) -> - OAM - [dockerfile](https://github.com/otcshare/epcforedge/blob/master/ngc/build/networkedge/oam/Dockerfile). [Pod Specification](https://github.com/otcshare/epcforedge/blob/master/ngc/scripts/networkedge/ngctest/podOAM.yaml) +> - AF - [dockerfile](https://github.com/open-ness/epcforedge/blob/master/ngc/build/networkedge/af/Dockerfile). [Pod Specification](https://github.com/open-ness/epcforedge/blob/master/ngc/scripts/networkedge/ngctest/podAF.yaml) +> - NEF - [dockerfile](https://github.com/open-ness/epcforedge/blob/master/ngc/build/networkedge/nef/Dockerfile). [Pod Specification](https://github.com/open-ness/epcforedge/blob/master/ngc/scripts/networkedge/ngctest/podNEF.yaml) +> - OAM - [dockerfile](https://github.com/open-ness/epcforedge/blob/master/ngc/build/networkedge/oam/Dockerfile). [Pod Specification](https://github.com/open-ness/epcforedge/blob/master/ngc/scripts/networkedge/ngctest/podOAM.yaml) # How to build @@ -63,7 +63,7 @@ These scripts are validated through a reference UPF solution (implementation is ne-node# cd <5g-upf-binary-package> ``` -2. Copy the Docker files to the node and build the Docker image. Reference Docker files and the Helm chart for deploying the UPF is available at [edgeapps_upf_docker](https://github.com/otcshare/edgeapps/tree/master/network-functions/core-network/5G/UPF) and [edgeapps_upf_helmchart](https://github.com/otcshare/edgeapps/tree/master/network-functions/core-network/charts/upf) respectively +2. Copy the Docker files to the node and build the Docker image. Reference Docker files and the Helm chart for deploying the UPF is available at [edgeapps_upf_docker](https://github.com/open-ness/edgeapps/tree/master/network-functions/core-network/5G/UPF) and [edgeapps_upf_helmchart](https://github.com/open-ness/edgeapps/tree/master/network-functions/core-network/charts/upf) respectively ```bash ne-node# ./build_image.sh @@ -74,7 +74,7 @@ These scripts are validated through a reference UPF solution (implementation is # UPF configuration -To keep the bring up setup simple, the UPF configuration can be provided through the Helm charts. A reference Helm chart is available at [edgeapps_upf_helmchart](https://github.com/otcshare/edgeapps/tree/master/network-functions/core-network/charts/upf) +To keep the bring up setup simple, the UPF configuration can be provided through the Helm charts. A reference Helm chart is available at [edgeapps_upf_helmchart](https://github.com/open-ness/edgeapps/tree/master/network-functions/core-network/charts/upf) Below is a list of minimal configuration parameters for VPP-based applications such as UPF. @@ -277,7 +277,7 @@ Below is a list of minimal configuration parameters for VPP-based applications s ## Deploy UPF pod from OpenNESS controller -In this reference validation, UPF will be deployed using Helm charts. The reference Helm chart for UPF is available at [edgeapps_upf_helmchart](https://github.com/otcshare/edgeapps/tree/master/network-functions/core-network/charts/upf) +In this reference validation, UPF will be deployed using Helm charts. The reference Helm chart for UPF is available at [edgeapps_upf_helmchart](https://github.com/open-ness/edgeapps/tree/master/network-functions/core-network/charts/upf) helm install \ \ \ diff --git a/doc/reference-architectures/ran/openness_ran.md b/doc/reference-architectures/ran/openness_ran.md index 3f1eeaba..e89b18d1 100644 --- a/doc/reference-architectures/ran/openness_ran.md +++ b/doc/reference-architectures/ran/openness_ran.md @@ -59,13 +59,13 @@ This section explains the steps involved in building the FlexRAN image. Only L1 >**NOTE**: The environmental variables path must be updated according to your installation and file/directory names. 4. Build L1, WLS interface between L1, L2, and L2-Stub (testmac): `./flexran_build.sh -r 5gnr_sub6 -m testmac -m wls -m l1app -b -c` -5. Once the build has completed, copy the required binary files to the folder where the Docker\* image is built. This can be done by using a provided example [build-du-dev-image.sh](https://github.com/otcshare/edgeapps/blob/master/network-functions/ran/5G/du-dev/build-du-dev-image.sh) script from Edge Apps OpenNESS repository, it will copy the files from the paths provided as environmental variables in previous step. The script will copy the files into the right directory containing the Dockerfile and commence the docker build. +5. Once the build has completed, copy the required binary files to the folder where the Docker\* image is built. This can be done by using a provided example [build-du-dev-image.sh](https://github.com/open-ness/edgeapps/blob/master/network-functions/ran/5G/du-dev/build-du-dev-image.sh) script from Edge Apps OpenNESS repository, it will copy the files from the paths provided as environmental variables in previous step. The script will copy the files into the right directory containing the Dockerfile and commence the docker build. ```shell - git clone https://github.com/otcshare/edgeapps.git + git clone https://github.com/open-ness/edgeapps.git cd edgeapps/network-functions/ran/5G/du-dev ./build-du-dev-image.sh ``` - The list of binary files that are used is documented in [dockerfile](https://github.com/otcshare/edgeapps/blob/master/network-functions/ran/5G/flexRAN-gnb/Dockerfile) + The list of binary files that are used is documented in [dockerfile](https://github.com/open-ness/edgeapps/blob/master/network-functions/ran/5G/flexRAN-gnb/Dockerfile) - ICC, IPP mpi and mkl Runtime - DPDK build target directory - FlexRAN test vectors (optional) @@ -75,7 +75,7 @@ This section explains the steps involved in building the FlexRAN image. Only L1 - FlexRAN CPA libraries -6. The following example reflects the Docker image [expected by Helm chart](https://github.com/otcshare/edgeapps/blob/master/network-functions/ran/charts/du-dev/values.yaml), user needs to adjust the IP address and port of the Harbor registry where Docker image will be pushed: +6. The following example reflects the Docker image [expected by Helm chart](https://github.com/open-ness/edgeapps/blob/master/network-functions/ran/charts/du-dev/values.yaml), user needs to adjust the IP address and port of the Harbor registry where Docker image will be pushed: ```shell image: @@ -92,7 +92,7 @@ This section explains the steps involved in building the FlexRAN image. Only L1 docker push :/intel/flexran5g:3.10.0-1127.19.1.rt56 ``` -By the end of step 7, the FlexRAN Docker image is created and available in the Harbor registry. This image is copied to the edge node where FlexRAN will be deployed and that is installed with OpenNESS Network edge with all the required EPA features including Intel® FPGA Programmable Acceleration Card (Intel® FPGA PAC) N3000. Please refer to the document [Using FPGA in OpenNESS: Programming, Resource Allocation, and Configuration](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-fpga.md) for details on setting up Intel® FPGA PAC N3000 with vRAN FPGA image. +By the end of step 7, the FlexRAN Docker image is created and available in the Harbor registry. This image is copied to the edge node where FlexRAN will be deployed and that is installed with OpenNESS Network edge with all the required EPA features including Intel® FPGA Programmable Acceleration Card (Intel® FPGA PAC) N3000. Please refer to the document [Using FPGA in OpenNESS: Programming, Resource Allocation, and Configuration](https://github.com/open-ness/specs/blob/master/doc/enhanced-platform-awareness/openness-fpga.md) for details on setting up Intel® FPGA PAC N3000 with vRAN FPGA image. # FlexRAN hardware platform configuration ## BIOS @@ -106,11 +106,11 @@ usbcore.autosuspend=-1 selinux=0 enforcing=0 nmi_watchdog=0 softlockup_panic=0 a Host kernel version - 3.10.0-1062.12.1.rt56.1042.el7.x86_64 -Instructions on how to configure the kernel command line in OpenNESS can be found in [OpenNESS getting started documentation](https://github.com/otcshare/specs/blob/master/doc/getting-started/openness-experience-kits.md#customizing-kernel-grub-parameters-and-tuned-profile--variables-per-host) +Instructions on how to configure the kernel command line in OpenNESS can be found in [OpenNESS getting started documentation](https://github.com/open-ness/specs/blob/master/doc/getting-started/openness-experience-kits.md#customizing-kernel-grub-parameters-and-tuned-profile--variables-per-host) # Deploying and Running the FlexRAN pod -1. Deploy the OpenNESS cluster with [SRIOV for FPGA enabled](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md#fpga-fec-ansible-installation-for-openness-network-edge). +1. Deploy the OpenNESS cluster with [SRIOV for FPGA enabled](https://github.com/open-ness/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md#fpga-fec-ansible-installation-for-openness-network-edge). 2. Confirm that there are no FlexRAN pods and the FPGA configuration pods are not deployed using `kubectl get pods`. 3. Confirm that all the EPA microservice and enhancements (part of OpenNESS playbook) are deployed `kubectl get po --all-namespaces`. ```yaml @@ -144,9 +144,9 @@ Instructions on how to configure the kernel command line in OpenNESS can be foun openness syslog-master-894hs 1/1 Running 0 7d19h openness syslog-ng-n7zfm 1/1 Running 16 7d19h ``` -4. Deploy the Kubernetes job to program the [FPGA](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-fpga.md#fpga-programming-and-telemetry-on-openness-network-edge) -5. Deploy the Kubernetes job to configure the [BIOS](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-bios.md) (note: only works on select Intel development platforms) -6. Deploy the Kubernetes job to configure the [Intel PAC N3000 FPGA](https://github.com/otcshare/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md#fec-vf-configuration-for-openness-network-edge) +4. Deploy the Kubernetes job to program the [FPGA](https://github.com/open-ness/specs/blob/master/doc/enhanced-platform-awareness/openness-fpga.md#fpga-programming-and-telemetry-on-openness-network-edge) +5. Deploy the Kubernetes job to configure the [BIOS](https://github.com/open-ness/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-bios.md) (note: only works on select Intel development platforms) +6. Deploy the Kubernetes job to configure the [Intel PAC N3000 FPGA](https://github.com/open-ness/specs/blob/master/doc/building-blocks/enhanced-platform-awareness/openness-fpga.md#fec-vf-configuration-for-openness-network-edge) 7. Deploy the FlexRAN Kubernetes pod using a helm chart provided in Edge Apps repository at `edgeapps/network-functions/ran/charts`: ```shell diff --git a/doc/reference-architectures/ran/openness_xran.md b/doc/reference-architectures/ran/openness_xran.md index dd2f4966..87181271 100644 --- a/doc/reference-architectures/ran/openness_xran.md +++ b/doc/reference-architectures/ran/openness_xran.md @@ -406,7 +406,7 @@ Verify the i40e driver version of the NIC to be used and the firmware version on ## Deploy xRAN sample app O-DU and O-RU in OpenNESS Network Edge -Before starting the deployment script, OpenNESS should be configured according to the instructions available [here](https://github.com/otcshare/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md) +Before starting the deployment script, OpenNESS should be configured according to the instructions available [here](https://github.com/open-ness/specs/blob/master/doc/getting-started/network-edge/controller-edge-node-setup.md) Additional configuration steps are provided below. ### Setting up SRIOV @@ -437,7 +437,7 @@ Additional configuration steps are provided below. vm_vf_ports: 0 ``` -Detailed instructions on configuring SRIOV for OpenNESS can be found [here](https://github.com/otcshare/specs/blob/master/doc/enhanced-platform-awareness/openness-sriov-multiple-interfaces.md) +Detailed instructions on configuring SRIOV for OpenNESS can be found [here](https://github.com/open-ness/specs/blob/master/doc/enhanced-platform-awareness/openness-sriov-multiple-interfaces.md) 3. Modify SRIOV ConfigMap @@ -481,7 +481,7 @@ In file `./group_vars/edgenode_group.yml`, change the following settings: Host kernel version should be - 3.10.0-1062.12.1.rt56.1042.el7.x86_64 -Instructions on how to configure the kernel command line in OpenNESS can be found in [OpenNESS getting started documentation](https://github.com/otcshare/specs/blob/master/doc/getting-started/openness-experience-kits.md#customizing-kernel-grub-parameters-and-tuned-profile--variables-per-host) +Instructions on how to configure the kernel command line in OpenNESS can be found in [OpenNESS getting started documentation](https://github.com/open-ness/specs/blob/master/doc/getting-started/openness-experience-kits.md#customizing-kernel-grub-parameters-and-tuned-profile--variables-per-host) ### PTP Synchronization diff --git a/openness_releasenotes.md b/openness_releasenotes.md index d702386d..8decc20a 100644 --- a/openness_releasenotes.md +++ b/openness_releasenotes.md @@ -256,7 +256,7 @@ This document provides high-level system features, issues, and limitations infor - Experience Kit now supports multiple detection video's – Safety equipment detection, PCB default detection and also supports external video streams. ## OpenNESS - 20.12 -- Early access release of Edge Multi-Cluster Orchestration(EMCO), a Geo-distributed application orchestrator for Kubernetes. This release supports EMCO deploying and managing the life cycle of the Smart City Application pipeline on the edge cluster. More details in the [EMCO Release Notes](https://github.com/otcshare/EMCO/blob/main/ReleaseNotes.md). +- Early access release of Edge Multi-Cluster Orchestration(EMCO), a Geo-distributed application orchestrator for Kubernetes. This release supports EMCO deploying and managing the life cycle of the Smart City Application pipeline on the edge cluster. More details in the [EMCO Release Notes](https://github.com/open-ness/EMCO/blob/main/ReleaseNotes.md). - Reference implementation of the offline installation package for the Converged Edge Reference Architecture (CERA) Access Edge flavor enabling installation of Kubernetes and related enhancements for Access edge deployments. - Azure Development kit (Devkit) supporting the installation of an OpenNESS Kubernetes cluster on the Microsoft* Azure* cloud. This is typically used by a customer who wants to develop applications and services for the edge using OpenNESS building blocks. - Support Intel® vRAN Dedicated Accelerator ACC100, Kubernetes Cloud-native deployment supporting higher capacity 4G/LTE and 5G vRANs cells/carriers for FEC offload. diff --git a/schema/5goam/5goam.swagger.json b/schema/5goam/5goam.swagger.json index 4d050a0e..c0278b08 100644 --- a/schema/5goam/5goam.swagger.json +++ b/schema/5goam/5goam.swagger.json @@ -5,7 +5,7 @@ "title": "5G OAM Northbound API", "contact": { "name": "intel", - "url": "github.com/otcshare/epcedge", + "url": "github.com/open-ness/epcedge", "email": "support@intel.com" }, "license": { diff --git a/schema/5goam/5goam.swagger.yaml b/schema/5goam/5goam.swagger.yaml index 5314c386..8da72063 100644 --- a/schema/5goam/5goam.swagger.yaml +++ b/schema/5goam/5goam.swagger.yaml @@ -7,7 +7,7 @@ info: title: 5G OAM Northbound API contact: name: intel - url: github.com/otcshare/epcedge + url: github.com/open-ness/epcedge email: support@intel.com license: name: Apache 2.0 License diff --git a/schema/pb/auth.proto b/schema/pb/auth.proto index 69bac0d6..b60d28fe 100644 --- a/schema/pb/auth.proto +++ b/schema/pb/auth.proto @@ -4,7 +4,7 @@ syntax = "proto3"; package openness.auth; -option go_package = "github.com/otcshare/schema;auth"; +option go_package = "github.com/open-ness/schema;auth"; import "google/api/annotations.proto"; import "protoc-gen-swagger/options/annotations.proto"; diff --git a/schema/pb/cups.proto b/schema/pb/cups.proto index b9e86441..bb8ea2e6 100644 --- a/schema/pb/cups.proto +++ b/schema/pb/cups.proto @@ -4,7 +4,7 @@ syntax = "proto3"; package openness.cups; -option go_package = "github.com/otcshare/cups;cups"; +option go_package = "github.com/open-ness/cups;cups"; import "google/protobuf/empty.proto"; import "google/api/annotations.proto"; diff --git a/schema/pb/eaa.proto b/schema/pb/eaa.proto index c731a0f7..edaad841 100644 --- a/schema/pb/eaa.proto +++ b/schema/pb/eaa.proto @@ -4,7 +4,7 @@ syntax = "proto3"; package openness.eaa; -option go_package = "github.com/otcshare/eaa;eaa"; +option go_package = "github.com/open-ness/eaa;eaa"; import "google/protobuf/empty.proto"; import "google/api/annotations.proto"; diff --git a/schema/pb/eva.proto b/schema/pb/eva.proto index e1972b95..7dd8eee3 100644 --- a/schema/pb/eva.proto +++ b/schema/pb/eva.proto @@ -4,7 +4,7 @@ syntax = "proto3"; package openness.eva; -option go_package = "github.com/otcshare/eva"; +option go_package = "github.com/open-ness/eva"; import "google/protobuf/empty.proto";

    ql?~iZD*yGuDn4d#l?({-+b9tq#A82q7)`3 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 literal 0 HcmV?d00001 diff --git a/doc/building-blocks/emco/openness-emco-images/emco-dig-instantiate.png b/doc/building-blocks/emco/openness-emco-images/emco-dig-instantiate.png new file mode 100755 index 0000000000000000000000000000000000000000..1f63e447c080e07bbead7326a515f347395e44d3 GIT binary patch literal 264411 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 z za6;j#DLSd`CN~BHNu>_j>p@z!ureM9ulRh-)mm_kIQF^?EmVj z&8_WopW@)Z*m_;*iMW1`cskL(H_Y@&pBT%=C^UtwmR*03(7#xy4M^Frr)kj`T}M&+@s&U3DLv z*n?7qUWbYo&qSgC=xUI;Xm!s?<@*|r&>k}x$W49Bh1A~$dc|KZVdLAj`<={F;4msA z*7phH5aAA?H6U4&`i+CBHm66*OF2t=!}$$ zh8>5X;@j!UNA%{GurqHigEJd&6J$-m{{&Kz7-+&j_2!bKuzF19t1Z(5fT?Y^l6IkMSH& z0a$pTIeaGz(Rq$i_it?tw{aczIdXP`8(dHF*_*9ZKjxQRfToAf^nv`4bmGWjNRD*| zff~P3v}pWMt6LM1C1VzIPVdFM9p}vER(kWBL+67ZDchv;E25M`CoZ3QF9ta9G>AUY z`QGPs=QU)4u2m@a5FRuH4Gjg#LCBaYpPE(hg%GD3jp$P9tH?iiY~2dJZXx_4>EswhB zWz|=+XVW^m93RAU!Dl>*^K-Q15qB5^1D77X?P4*XgmZsB<;sTH{Du`5rvcH)Mngp6ElZYj@^_ZzE$p^q!R znoPhKUUW6BFcSInm|BX@=b1Pgh=+*3F%JAs^$a$Fzzx_33BL(F;UV#ahHIQBF!d=DxT&bWgZ)@Yq&!dbJd~ zoOw;fN-u${Kxd#w*~7{fliAReE0v>JPYRjik`&WbNM18Yp0zH8{#8xc4suN7E!ILhbIGmZL}Hw+N|qc9a8_Zbg7a?sfM6cM1_>cD6Mua{OqNLm~1y)dBMY=~J{Y|1Ps>MQE?EN(QhCyu6F;uI4PL4A`6R z;z;ad`5w`yEe!<|WWSUT+y;14a*#Yk8dR;Xtw)TyU;>bgh9Od#BX^oSmtvP{_!wK6 z?4@1s`+L6ZHgia{zxVC0*ZhTBTVHJ^5CSuLN8dUR#Y1(yM>M@6&K(bn*bsa8-y&M} zLlhoxZEf>fivG6GNm2qsj?8+;Z2=Ah7pzk5x!oiE&|FnH~z!+ z^mu^DbOkmFfL$2*7ukhPo&Nz1EiD0(WredI{$d|z4o|K$HV~osTQ<4mR{!n=dW_N^ ztln_9r975%^VK@}XgnViXfh}*^5r{9FUy{;4K&F9Dk=#xyp%8MTt`P37qm$r$TvUH zRVtYJ?g{F<@13<*<;{%tD`3C$+1jx^U1VgrY8kP-6FIeD^KiY5W?dNoe-SrBT_|in zz~?3u1x&u>Y71B`_ZTH^ya}KU{6p}#2uKRt@Bbccke+Ng`}U3HDQUZkg{li4p?x{+gAiyNe> zJXN>g&S^*w+Vaik@3yb(n_lI6BC%G=a8aR7`I4$~lf|a%p0Nu;g|S);MmMEIQ?l3_ z%|FqR+605*bF52~10v9ROgQLq`HR5XS4IfI<29Zax7dW zM!j`>&fkY=kAzp{gKz3D2fZ)&TZ~4mRDe*QX^%0AMx6&uZQSm4?EcJnA_EaevGRpF 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%0Dx1^~gLhC)W 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 literal 0 HcmV?d00001 diff --git a/doc/building-blocks/emco/openness-emco-images/emco-register-controllers.png b/doc/building-blocks/emco/openness-emco-images/emco-register-controllers.png new file mode 100755 index 0000000000000000000000000000000000000000..0a5add57e53bff080d32eb2f2983d23b44a39d98 GIT binary patch literal 100881 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 literal 0 HcmV?d00001 diff --git a/doc/building-blocks/emco/openness-emco.md b/doc/building-blocks/emco/openness-emco.md index 0f1a77f1..a06caff9 100644 --- a/doc/building-blocks/emco/openness-emco.md +++ b/doc/building-blocks/emco/openness-emco.md @@ -45,7 +45,7 @@ Compared with other multipe-clusters orchestration, EMCO focuses on the followin The following figure shows the topology overview for the OpenNESS EMCO orchestration with edge and multiple clusters. It also shows an example of deploying SmartCity with EMCO. ![OpenNESS EMCO](openness-emco-images/openness-emco-topology.png) -_Figure 1 - Topology Overview with OpenNESS EMCO_ +_Figure 2 - Topology Overview with OpenNESS EMCO_ All the managed edge clusters and cloud clusters are connected with the EMCO cluster through the WAN network. - The central orchestration (EMCO) cluster can be installed and provisioned by using the [OpenNESS Central Orchestrator Flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md). @@ -59,11 +59,23 @@ All the managed edge clusters and cloud clusters are connected with the EMCO clu This document aims to familiarize the user with EMCO and [OpenNESS deployment flavor](https://github.com/otcshare/specs/blob/master/doc/flavors.md) for EMCO installation and provision, and provide instructions accordingly. ## EMCO Introduction + +### EMCO Terminology +| Term | Description | +|:-----: | ----- | +| AppContext |