This repository contains the components of the 5GMETA MEC Platform which allows third-parties to request the deployment of their pipelines to handle specific data-types. This repo includes:
- source codes of the MEC Platform API server and MEC platform applications (LCCAM, Data Quality, etc.)
- the scripts to deploy the 5GMETA MEC Platform
The architecture of the MEC Platform is illustrated by the figure below:
MEC Architecture
The interaction with the MEC Platform is illustrated by the figure below.
Sequence Diagram of exchanged Messages
Prior to the deployment of the MEC Platform, the MEC Platform's administrator should onboard its instance to the Cloud Platform. This onboarding process, consists of obtaining the credentials, IP address and Port number for accessing the MariaDB server. These information are configure in the Ansible Playbook.
The deployment of the 5GMETA MEC Platfrom will :
- Install ETSI Open Source MANO (OSM) on a Ubuntu Server as described here: https://osm.etsi.org/docs/user-guide/latest/01-quickstart.html#installing-osm
- Install the baseline/default building blocks of the 5GMETA MEC platform
- Register of the MEC platform in the 5GMETA Cloud platform.
The following is done manually:
- Configuration of ETSI OSM
TODO:
Notary and Connaisseur for managing security in the cluster are disabled in the current version.
The process is illustrated as follows:
5GMETA MEC Platform Deployement steps
Once deployed, the different services can be accessed in the next ports:
- OSM UI in port https://your-mec-fqdn
- OSM API (Orchestration API) in port https://your-mec-fqdn
- Grafana UI in port https://your-mec-fqdn/grafana/
- 5GMETA MEC Platform API Server https://your-mec-fqdn/api/v1/
- 5GMETA Message-Brokers:
- Port 8161 for Broker UI
- Port 5673 for producing data, clients)
- Port 61616 of ActiveMQ, Kafka Connectors, Internal
- https://your-mec-fqdn:30672 (SB) and https://your-mec-fqdn:30616 (NB)
- 5GMETA Video-Broker in https://your-mec-fqdn:8443/, :<32000-32098>
The required resources to install ETSI Open Source MANO (OSM) are:
- One Machine for OSM with RECOMMENDED: 4 CPUs, 16 GB RAM, 80GB disk and a single interface with Internet access
- One Machine to deploy a K8s cluster to be used by ETSI OSM
- The 2 machines should be on the same network.
- Use the OSM recommended base image: Ubuntu22.04
- Ubuntu22.04 cloud image (64-bit variant required)
- Ubuntu22.04 server image (64-bit variant required)
- Ansible
- VirtualBox
- Vagrant
- In the develpment environment, vagrant is used with VirtualBox as a provider to instanciate the MEC platform and implement the deployment procedure described earlier.
The Microk8s can be used on the following resource: 4 vCPUs, 16 GB RAM, 80GB of RAM either on VirtualBox or MS Azure. In this document, MS Azure is considered as defautl.But, other Kubernetes distributions, etc. can be installed and configured in OSM.
To install MicroK8s type the following commands:
sudo snap install microk8s --classic
sudo usermod -a -G microk8s `whoami`
newgrp microk8s
microk8s.status --wait-ready
microk8s config > config_to_be_imported_in_osm.yamlThe file 'config_to_be_imported_in_osm.yaml' must be copied in the MEC Platform (the server hosting OSM).
A new features of the 5GMETA MEC Platform is to use Opencoast for monitoring the cost of the 5GMETA pipeline.
Install OpenCost on Microk8s
Install Prometheus as required by OpenCost
helm install prometheus --repo https://prometheus-community.github.io/helm-charts prometheus \
--namespace prometheus-system --create-namespace \
--set prometheus-pushgateway.enabled=false \
--set alertmanager.enabled=false \
-f https://raw.githubusercontent.com/opencost/opencost/develop/kubernetes/prometheus/extraScrapeConfigs.yamlInstall Opencost
helm upgrade opencost --repo https://opencost.github.io/opencost-helm-chart opencost \
--namespace opencost --create-namespaceTo install the MEC Platform on an a VM or a physical server :
- Modify the inventory file to set the IP address and the ssh user
- Then type:
cd deploy/ansible
ansible-playbook -i inventory.ini 5gmeta-mec-platform-playbook.yaml --private-key your_private_keyTo login to the OSM Web UI type:
export OSM_HOSTNAME=$(kubectl get -n osm -o jsonpath="{.spec.rules[0].host}" ingress nbi-ingress)
echo "OSM_HOSTNAME (for osm client): $OSM_HOSTNAME"
kubectl get -n osm -o jsonpath="{.spec.rules[0].host}" ingress nbi-ingress5GMETA uses pipelines which are Docker containers chained together for a specific data processing. In OSM, a VIM account is created and used to configure a VIM. To create a VIM account, type:
sudo snap install osmclient
osm vim-create --name 5gmeta-vim --user admin --password admin --tenant admin --account_type dummy --auth_url chagne_with_the_auth_urlAdd MicroK8s cluster as K8s cluster
osm k8scluster-add --creds config_to_be_imported_in_osm.yaml --version 'change_with_mk8s_version' --vim 5gmeta-vim --description "Microk8s cluster" --k8s-nets '{"net1": "osm-ext"}' microk8s-clusterThe following configuration need to be done through the UI:
- Use the OSM UI to import the VNF with are in /home/azureuser/osm
- Create a K8s Helm repository using this URL
Also you can check the status of OSM ressources managed by Kubernetes in the following way:
kubectl get all -n osmThe development of a pipeline begins by the creation of the different module images. Next, a helm chart should be created where the behaviour of the modules in a MEC's K8s cluster are defined. Finally the OSM descriptor should be created so that the pipeline is orchestrated in the MEC. When a third party requests for a data type in the cloud, after all the necessary operations are made in the cloud, the cloud will forward the request to the Instance API in the selected MEC. This API will check if there are available resources in the MEC to deploy the data-type pipeline for the requested instance type. If available, the request will be forwarded to the OSM Orchestration API and the pipeline will be deployed.
- [] Ensure that this documentation is complete (contains the H2020 relevant information)
- Djibrilla Amadou Kountche
- Federico Princiotto ([email protected])
- Mikel Serón Esnal ([email protected], GitHub)
- Felipe Mogollón ([email protected])