{"id":25376509,"url":"https://github.com/akkodis/mec-platform","last_synced_at":"2026-05-02T18:36:39.277Z","repository":{"id":277149101,"uuid":"930566834","full_name":"Akkodis/mec-platform","owner":"Akkodis","description":"5GMETA MEC Platform","archived":false,"fork":false,"pushed_at":"2025-02-12T11:09:25.000Z","size":27963,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-12T12:28:02.354Z","etag":null,"topics":["ansible","edge-computing","etsi","helm","kubernetes","monetization"],"latest_commit_sha":null,"homepage":"https://github.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Akkodis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":"CODE_OF_CONDUCT","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-10T20:57:39.000Z","updated_at":"2025-02-12T11:09:29.000Z","dependencies_parsed_at":"2025-02-12T12:38:12.271Z","dependency_job_id":null,"html_url":"https://github.com/Akkodis/mec-platform","commit_stats":null,"previous_names":["akkodis/mec-platform"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Akkodis%2Fmec-platform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Akkodis%2Fmec-platform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Akkodis%2Fmec-platform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Akkodis%2Fmec-platform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Akkodis","download_url":"https://codeload.github.com/Akkodis/mec-platform/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248017998,"owners_count":21034042,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","edge-computing","etsi","helm","kubernetes","monetization"],"created_at":"2025-02-15T04:28:07.680Z","updated_at":"2025-10-18T07:27:12.009Z","avatar_url":"https://github.com/Akkodis.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# The 5GMETA Multi-Access Edge Computing (MEC)  Platform\n\n## Introduction \n\nThis 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:\n - source codes of the MEC Platform API server and MEC platform applications (LCCAM, Data Quality, etc.)\n - the scripts to deploy the 5GMETA MEC Platform\n\nThe architecture of the MEC Platform is illustrated  by the figure below:\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"./docs/images/MEC%20Architecture.png\" /\u003e\n\nMEC Architecture\n\u003c/p\u003e\n\nThe interaction with the MEC Platform is illustrated by the figure below.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"./docs/images/seqdiag.png\" /\u003e\n\nSequence Diagram of exchanged Messages\n\u003c/p\u003e\n\n\n## Deployment of the MEC Platform\n\nPrior 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.\nThese information are configure in the Ansible Playbook.\n\nThe deployment of the 5GMETA MEC Platfrom will :\n\n- Install [ETSI Open Source MANO (OSM)](https://osm.etsi.org/) on a Ubuntu Server as described here: https://osm.etsi.org/docs/user-guide/latest/01-quickstart.html#installing-osm\n- Install the  baseline/default building blocks of the 5GMETA MEC platform\n- Register of the MEC platform in the 5GMETA Cloud platform.\n\nThe following is done manually:\n- Configuration of ETSI OSM\n\n\nTODO:\n\nNotary and Connaisseur for managing security in the cluster are disabled in the current version.\n\n\nThe process is illustrated as follows:\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"./docs/images/mec_deployement.png\" /\u003e\n\n5GMETA MEC Platform Deployement steps\n\u003c/p\u003e\n\nOnce deployed, the different services can be accessed in the next ports:\n\n- OSM UI in port [https://your-mec-fqdn](https://your-mec-fqdn)\n- OSM API (Orchestration API) in port [https://your-mec-fqdn](https://your-mec-fqdn)\n- Grafana UI in port [https://your-mec-fqdn/grafana/](https://your-mec-fqdn/grafana/)\n- 5GMETA MEC Platform API Server [https://your-mec-fqdn/api/v1/](https://your-mec-fqdn/api/v1/)\n- 5GMETA Message-Brokers:\n   - [Port 8161 for Broker UI](https://your-mec-fqdn/broker-ui/)\n   - [Port 5673 for producing data, clients)](your-mec-fqdn:30672)\n   - [Port 61616 of ActiveMQ, Kafka Connectors, Internal](your-mec-fqdn:30616)\n   - https://your-mec-fqdn:30672 (SB) and https://your-mec-fqdn:30616 (NB)\n- 5GMETA Video-Broker in https://your-mec-fqdn:8443/, :\u003c32000-32098\u003e\n\n\n### Prerequisities\n\nThe required resources to install [ETSI Open Source MANO (OSM)](https://osm.etsi.org/docs/user-guide/latest/index.html) are:\n- One Machine for OSM with RECOMMENDED: 4 CPUs, 16 GB RAM, 80GB disk and a single interface with Internet access\n- One Machine to deploy a  K8s cluster to be used by ETSI OSM\n- The 2 machines should be on the same network.\n- Use the OSM recommended base image: Ubuntu22.04\n   - Ubuntu22.04 cloud image (64-bit variant required)\n   - Ubuntu22.04 server image (64-bit variant required)\n- [Ansible](https://docs.ansible.com/ansible/latest/index.html)\n\n\n#### Prerequisities for a local development environment\n\n- [VirtualBox](https://www.virtualbox.org/)\n- [Vagrant](https://developer.hashicorp.com/vagrant/tutorials/getting-started/getting-started-install?product_intent=vagrant)\n- In the develpment environment, vagrant is used with VirtualBox as a provider to instanciate the MEC platform and implement the deployment procedure described earlier.\n\n\n### Deploying the MEC Platform\n\n#### MicroK8s used to provide a Kubernetes cluster to OSM\n\nThe 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.\n\nTo install MicroK8s type the following commands:\n\n```bash\nsudo snap install microk8s  --classic\nsudo usermod -a -G microk8s `whoami`\nnewgrp microk8s\nmicrok8s.status --wait-ready\nmicrok8s config \u003e config_to_be_imported_in_osm.yaml\n```\n\nThe file 'config_to_be_imported_in_osm.yaml' must be copied in the MEC Platform (the server hosting OSM).\n\nA new features of the 5GMETA  MEC Platform is to use Opencoast for monitoring the cost of the 5GMETA pipeline.\n\n\n**Install OpenCost on Microk8s**\n\n**Install Prometheus as required by OpenCost**\n```bash\nhelm install prometheus --repo https://prometheus-community.github.io/helm-charts prometheus \\\n  --namespace prometheus-system --create-namespace \\\n  --set prometheus-pushgateway.enabled=false \\\n  --set alertmanager.enabled=false \\\n  -f https://raw.githubusercontent.com/opencost/opencost/develop/kubernetes/prometheus/extraScrapeConfigs.yaml\n```\n\n**Install Opencost**\n\n```bash\nhelm upgrade opencost --repo https://opencost.github.io/opencost-helm-chart opencost \\\n  --namespace opencost --create-namespace\n```\n\n##### Deployment of the  the MEC Platform\n\nTo install the MEC Platform on an a VM or a physical server :\n- Modify the inventory file to set the IP address and the ssh user\n- Then type:\n\n```bash\ncd deploy/ansible\nansible-playbook -i inventory.ini 5gmeta-mec-platform-playbook.yaml --private-key your_private_key\n```\n\n#### Configure the Hostname for OSM Client\n\nTo login to the OSM Web UI type:\n\n```bash\nexport OSM_HOSTNAME=$(kubectl get -n osm -o jsonpath=\"{.spec.rules[0].host}\" ingress nbi-ingress)\necho \"OSM_HOSTNAME (for osm client): $OSM_HOSTNAME\"\nkubectl get -n osm -o jsonpath=\"{.spec.rules[0].host}\" ingress nbi-ingress\n```\n\n#### Post OSM installation configurations\n\n##### Create a VIM for deploying the Pipelines\n\n5GMETA 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:\n```bash\nsudo snap install osmclient\nosm vim-create --name 5gmeta-vim --user admin --password admin --tenant admin --account_type dummy --auth_url chagne_with_the_auth_url\n```\n\nAdd MicroK8s cluster as K8s cluster\n```bash\nosm 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-cluster\n```\n\n#### Configure the repositories using OSM UI\n\nThe following configuration need to be done through the UI:\n- Use the OSM UI to import the VNF with are in /home/azureuser/osm\n- Create a K8s Helm repository using this URL\n\n\n#### Check OSM and 5GMETA MEC modules installation\n\nAlso you can check the status of OSM ressources managed by Kubernetes in the following way:\n\n```bash\nkubectl get all -n osm\n```\n\n## Development of MEC Services\n\n\nThe 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.\nWhen 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.\n\n\n## Conclusions and Roadmap\n\n\n# TODO\n\n- [] Ensure that this documentation is complete (contains the H2020 relevant information)\n\n\n## Credits\n\n- Djibrilla Amadou Kountche\n- Federico Princiotto ([federico.princiotto@linksfoundation.com](mailto:federico.princiotto@linksfoundation.com))\n- Mikel Serón Esnal ([mseron@vicomtech.org](mailto:mseron@vicomtech.org), [GitHub](https://github.com/mikelseron))\n- Felipe Mogollón ([fmogollon@vicomtech.org](mailto:fmogollon@vicomtech.org))\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakkodis%2Fmec-platform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakkodis%2Fmec-platform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakkodis%2Fmec-platform/lists"}