Overview

uMEC (aka MicroMEC, or Micro-MEC) is a project under the Akraino Edge umbrella. SUSE joined in 2019 and together with partners we managed to create the 1st prototype infrastructure.

The concept has been successfully used on a few hackathons last year:

2020 Plans

A few weeks ago we sat down with Nokia and discussed how could we reshape the existing code and documentation. We agreed to relocate the code to github and properly document the architecture and the installation. This work will already highlight the architecture changes we are planning to accommodate different edge computing units (like Nvidia Jetson Nano) and more sensors in general. The uMEC APIs will also be redesigned and the results of the work will hopefully be presented on a couple of conferences and hackathons this year.

Hackweek Work

I would like to focus on the installation and architecture documentation. The setup we have been using throughout 2019 included quite a few pieces:

The prototype edge units were based on Raspberry Pi 3B+ and 4 computers. The RPis ran openSUSE TW (64 bit) and Raspbian.

The uMEC APIs were deployed in containers and orchestrated by k3s. Along the uMEC APIs we also had a hosted Tensorflow service where we deployed models for simple object detection.

On the "server side" we had k8s and OpenFaaS Cloud; OFC. With OFC we offered an easy to use development environment for quick prototyping using the uMEC APIs.

This year we will setup a proper CI / CD pipeline using github. The deployment will take place on hardware that is hosted at Metropolia University where the students are also working on uMEC use cases.

Our goal is to enable the setup and creation of uMEC environments by anybody. As the hardware and software is all available, we just need to document these properly. I hope that by the end of the hack week uMEC will be in a much better shape.

Please join, if you are interested in 5G Edge computing and would like to learn more about industrial use cases in the area.

Looking for hackers with the skills:

5g edge faas serverless iot

This project is part of:

Hack Week 19

Activity

  • almost 6 years ago: clin started this project.
  • almost 6 years ago: clin liked this project.
  • almost 6 years ago: a_faerber liked this project.
  • almost 6 years ago: FSzekely added keyword "5g" to this project.
  • almost 6 years ago: FSzekely added keyword "edge" to this project.
  • almost 6 years ago: FSzekely added keyword "faas" to this project.
  • almost 6 years ago: FSzekely added keyword "serverless" to this project.
  • almost 6 years ago: FSzekely added keyword "iot" to this project.
  • almost 6 years ago: FSzekely originated this project.

  • Comments

    Be the first to comment!

    Similar Projects

    Set Uyuni to manage edge clusters at scale by RDiasMateus

    Description

    Prepare a Poc on how to use MLM to manage edge clusters. Those cluster are normally equal across each location, and we have a large number of them.

    The goal is to produce a set of sets/best practices/scripts to help users manage this kind of setup.

    Goals

    step 1: Manual set-up

    Goal: Have a running application in k3s and be able to update it using System Update Controler (SUC)

    • Deploy Micro 6.2 machine
    • Deploy k3s - single node

      • https://docs.k3s.io/quick-start
    • Build/find a simple web application (static page)

      • Build/find a helmchart to deploy the application
    • Deploy the application on the k3s cluster

    • Install App updates through helm update

    • Install OS updates using MLM

    step 2: Automate day 1

    Goal: Trigger the application deployment and update from MLM

    • Salt states For application (with static data)
      • Deploy the application helmchart, if not present
      • install app updates through helmchart parameters
    • Link it to GIT
      • Define how to link the state to the machines (based in some pillar data? Using configuration channels by importing the state? Naming convention?)
      • Use git update to trigger helmchart app update
    • Recurrent state applying configuration channel?

    step 3: Multi-node cluster

    Goal: Use SUC to update a multi-node cluster.

    • Create a multi-node cluster
    • Deploy application
      • call the helm update/install only on control plane?
    • Install App updates through helm update
    • Prepare a SUC for OS update (k3s also? How?)
      • https://github.com/rancher/system-upgrade-controller
      • https://documentation.suse.com/cloudnative/k3s/latest/en/upgrades/automated.html
      • Update/deploy the SUC?
      • Update/deploy the SUC CRD with the update procedure


    SUSE Edge Image Builder MCP by eminguez

    Description

    Based on my other hackweek project, SUSE Edge Image Builder's Json Schema I would like to build also a MCP to be able to generate EIB config files the AI way.

    Realistically I don't think I'll be able to have something consumable at the end of this hackweek but at least I would like to start exploring MCPs, the difference between an API and MCP, etc.

    Goals

    • Familiarize myself with MCPs
    • Unrealistic: Have an MCP that can generate an EIB config file

    Resources

    Result

    https://github.com/e-minguez/eib-mcp

    I've extensively used antigravity and its agent mode to code this. This heavily uses https://hackweek.opensuse.org/25/projects/suse-edge-image-builder-json-schema for the MCP to be built.

    I've ended up learning a lot of things about "prompting", json schemas in general, some golang, MCPs and AI in general :)

    Example:

    Generate an Edge Image Builder configuration for an ISO image based on slmicro-6.2.iso, targeting x86_64 architecture. The output name should be 'my-edge-image' and it should install to /dev/sda. It should deploy a 3 nodes kubernetes cluster with nodes names "node1", "node2" and "node3" as: * hostname: node1, IP: 1.1.1.1, role: initializer * hostname: node2, IP: 1.1.1.2, role: agent * hostname: node3, IP: 1.1.1.3, role: agent The kubernetes version should be k3s 1.33.4-k3s1 and it should deploy a cert-manager helm chart (the latest one available according to https://cert-manager.io/docs/installation/helm/). It should create a user called "suse" with password "suse" and set ntp to "foo.ntp.org". The VIP address for the API should be 1.2.3.4

    Generates:

    ``` apiVersion: "1.0" image: arch: x86_64 baseImage: slmicro-6.2.iso imageType: iso outputImageName: my-edge-image kubernetes: helm: charts: - name: cert-manager repositoryName: jetstack


    SUSE Edge Image Builder json schema by eminguez

    Description

    Current SUSE Edge Image Builder tool doesn't provide a json schema (yes, I know EIB uses yaml but it seems JSON Schema can be used to validate YAML documents yay!) that defines the configuration file syntax, values, etc.

    Having a json schema will make integrations straightforward, as once the json schema is in place, it can be used as the interface for other tools to consume and generate EIB definition files (like TUI wizards, web UIs, etc.)

    I'll make use of AI tools for this so I'd learn more about vibe coding, agents, etc.

    Goals

    • Learn about json schemas
    • Try to implement something that can take the EIB source code and output an initial json schema definition
    • Create a PR for EIB to be adopted
    • Learn more about AI tools and how those can help on similar projects.

    Resources

    Result

    Pull Request created! https://github.com/suse-edge/edge-image-builder/pull/821

    I've extensively used gemini via the VScode "gemini code assist" plugin but I found it not too good... my workstation froze for minutes using it... I have a pretty beefy macbook pro M2 and AFAIK the model is being executed on the cloud... so I basically spent a few days fighting with it... Then I switched to antigravity and its agent mode... and it worked much better.

    I've ended up learning a few things about "prompting", json schemas in general, some golang and AI in general :)


    Smart lighting with Pico 2 by jmodak

    Description

    I am trying to create a smart-lighting project with a Raspberry Pi Pico that reacts to a movie's visuals and audio that involves combining two distinct functions: ambient screen lighting(visual response) and sound-reactive lighting(audio response)

    Goals

    • Visuals: Capturing the screen's colour requires an external device to analyse screen content and send colour data to the MCU via serial communication.
    • Audio: A sound sensor module connected directly to the Pico that can detect sound volume.
    • Pico 2W: The MCU receives data fro, both inputs and controls an LED strip.

    Resources

    • Raspberry Pi Pico 2 W
    • RGB LED strip
    • Sound detecting sensor
    • Power supply
    • breadboard and wires