Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

This document describes the use of Public Cloud Edge Interface (PCEI) implemented based on Edge Multi-Cluster Orchestrator (EMCO) for deployment of Public Cloud Edge (PCE) Apps from multiple clouds (Azure and AWS), deployment of a 3rd-Party Edge (3PE) App (an implementation of ETSI MEC Location API App), as well as the end-to-end operation of the deployed PCE Apps using simulated Low Power Wide Area (LPWA) IoT client.Image Removed

Image Added

Functional Roles

Developers

Individuals/entities that:

  • Create the PCE/3PE Apps
  • Provision services in Public Clouds (PCC)
    • Note that valid Public Cloud subscriptions/accounts are required
  • Package PCE/3PE Apps using Helm Charts
  • Access PCEI/EMCO Orchestrator using UI or APIs to onboard PCE/3PE services/apps
    • PCEI R4 supports UI access only

Operators

Entities that:

  • Provide network functions and services such as:
    • Access (mobile or fixed)
    • Network connectivity
    • Devices (e.g. LPWA IoT)
  • Access PCEI/EMCO Orchestrator using UI or APIs to deploy PCE/3PE apps
  • Connecto to Edge Providers/Clusters and Public Clouds using Public Internet or Private Interconnect
    • PCEI R4 supports Public Internet connectivity only

Edge Providers

Entities that:

  • Provide edge infrastructure, such as:
    • Edge Data Centers
    • Edge Compute/Network/Storage hardware
    • Edge Virtualization layer/software, such as Kubernetes, Openstack
      • PCEI R4 supports Kubernetes only
  • Provide Public Peering and Private Interconnection
    • Between Operators and Edge Providers
    • Between Operators and Public Clouds
    • Between Edge Providers and Public Clouds

Public Cloud Providers

Entities that:

  • Provide Iaas/SaaS services

PCEI Enabler

  • Orchestration Software and APIs
  • May be provided by:
    • Operators
    • Edge Providers
    • Public Cloud Providers

End-to-End Validation Environment

...

To register the two Edge K8S Clusters created during PCEI installation (refer to PCEI R4 Installation Guide), the cluster configuration files need to be copied from the corresponding VMs to the machine that is used to run the VNC server to to  access EMCO UI. Please make sure that the ssh key used to access the VMs is present on the machine that runs the VNC serverwhere the cluster config files are being copied to. The example below assumes that the VNC server is running on cluster config files are copied to the Host Server used to deploy EMCO and Edge Cluster VMs. Alternatively, the ssh key and the config files could be copied to a laptop.

Code Block
languagebash
# Determine VM IP addresses:
[onaplab@os12 ~]$ sudo virsh list --all
 Id    Name                           State
----------------------------------------------------
 6     amcop-vm-01                    running
 9     edge_k8s-1                     running
 10    edge_k8s-2                     running

[onaplab@os12 ~]$ sudo virsh domifaddr edge_k8s-1
 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
 vnet1      52:54:00:19:96:72    ipv4         10.121.7.152/27

[onaplab@os12 ~]$ sudo virsh domifaddr edge_k8s-2
 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
 vnet2      52:54:00:c0:47:8b    ipv4         10.121.7.146/27

sftp -i pcei-emco onaplab@10.121.7.146
cd .kube
get config kube-config-edge-k8s-2

sftp -i pcei-emco onaplab@10.121.7.152
cd .kube
get config kube-config-edge-k8s-1

...

https://microsoft.github.io/iotedge-k8s-doc/architecture.html

For the purposes of this document we use the Host Server on which EMCO has been deployed and on which we run the VNC server to package Helm charts for Azure IoT Edge.

A local laptop can be used to package Helm charts for Azure IoT Edge. Alternatively the Host Server itself can be used to package the Helm charts for Azure IoT Edge.

Clone Azure IoT Edge from github:

NOTE: Due to Azure IoT Edge on K8S being in preview stage, please use the below URL to clone the Helm charts:

https://github.com/Azure/iotedge/tree/release/1.1-k8s-previewClone Azure IoT Edge from github:

Code Block
languagebash
git clone https://github.com/Azure/iotedge

cd iotedge/kubernetes/charts/
mkdir azureiotedge1
cp -a edge-kubernetes/. azureiotedge1/
cd azureiotedge1
ls -al
total 24
drwxrwxr-x. 3 onaplab onaplab    79 Dec 24 13:14 .
drwxrwxr-x. 5 onaplab onaplab    77 Dec 24 13:14 ..
-rw-rw-r--. 1 onaplab onaplab   137 Dec 24 13:02 Chart.yaml
-rw-rw-r--. 1 onaplab onaplab   333 Dec 24 13:02 .helmignore
drwxrwxr-x. 2 onaplab onaplab   220 Dec 24 13:02 templates
-rw-rw-r--. 1 onaplab onaplab 14226 Dec 24 13:02 values.yaml

...

Code Block
languagebash
vi values.yaml
# Change the line below and save the file
provisioning:
  source: "manual"
  deviceConnectionString:  "PASTE PRIMARY CONNECTION STRING FROM AZURE IOT HUB / IOT EDGE SCREEN"
  #dynamicReprovisioningdynamicReprovisioning: false

# Set LoadBalancer port mapping

service:
    name: iotedged
    type: LoadBalancer

edgeAgent:
  containerName: edgeagent
  image:
    repository: azureiotedge/azureiotedge-agent
    tag: 0.1.0-beta9
    pullPolicy: Always
  hostname: "localhost"
  env:
    authScheme: 'sasToken'
    # Set this to one of "LoadBalancer", "NodePort", or "ClusterIP" to tell the
    # IoT Edge runtime how you want to expose mapped ports as Services.
    portMappingServiceType: 'LoadBalancer'

...

Copy the infrastructure profile tar file to your home directory on from the Host Server. If using a local laptop, copy this file from the Host Server. This file is needed to define the Service and the App in EMCO:

...

Click on "+ Add App" and add the "awsggc1" app. Make sure to use the "awsggc1" name to match the app tar file name without the extension:

// Oleg Berzin, is this figure same as the previous figure? - Tina Tsou


Define the AWS GGC app by adding the App tar filr and the Profile tar file:

...

Code Block
languagebash
ssh onaplab@10.121.7.146

# Clone the PCEI repo
git clone "https://gerrit.akraino.org/r/pcei"
cd pcei/locationAPI/nodejs

# Build the Docker image

sudo docker build -f Dockerfile . -t pceilocapi:latest

#Run local Docker repository
sudo docker run -d -p 5000:5000 --restart=always --name registry registry:2

# Push the PCEI Location API image to local Docker repository:
sudo docker tag pceilocapi localhost:5000/pceilocapi
sudo docker push localhost:5000/pceilocapi

...