Project Description

This project will create a CLI utility that will use "microvm" technology (a.k.a. lightweight virtualization) to enable users to create virtual machines and compose these into Kubernetes clusters.

The experience may look something like this (dependent on whether args & config file are supported), to create a VM:

bash mikrolite vm create --name vm1 --root-image ghcr.io/baseimages/myimage:latest --user-data ud.txt --kernel-cmdline= .... mikrolite vm create --config spec.json

Or if you want to create a Kubernetes cluster (which will automatically create the required vms):

bash mikrolite cluster create --name test1 --cp-count=3 --worker-count=3 --cp-root-image=ghcr.io/baseimages/myimage:latest --bootstrap rke2 ... mikrolite cluster create --config spec.json

Goal for this Hackweek

The goal of the hackweek is to get to a working prototype that does the following:

  • create/delete vms
  • create/delete cluster using k3s or rke2

There is a new GitHub org to contain this project

Resources

Eventually, it would be good to support multiple microvm implementations (so we need suitable abstractions in code). For hack week, we will add support for either of these, this can be decided upfront or on the first day:

  • Firecracker - the cool kids choice, is used to power AWS Fargate and AWS Lambda.
  • Cloud Hypervisor - more feature rich, supports PCI passthrough, Windows, confidential compute etc

Working with raw filesystems is painful, so we could use containers and the containerd devmapper snapshotter for volumes. If we want to use config files then we can consider using CUE to validate the config files.

Ideally we would like to allow plugins for the microvm and kubernetes bootstrapper.

Looking for hackers with the skills:

virtualization kubernetes firecracker cloud-hypervisor vm

This project is part of:

Hack Week 23

Activity

  • almost 2 years ago: ademicev0 joined this project.
  • almost 2 years ago: rcase liked this project.
  • almost 2 years ago: rcase added keyword "virtualization" to this project.
  • almost 2 years ago: rcase added keyword "kubernetes" to this project.
  • almost 2 years ago: rcase added keyword "firecracker" to this project.
  • almost 2 years ago: rcase added keyword "cloud-hypervisor" to this project.
  • almost 2 years ago: rcase added keyword "vm" to this project.
  • almost 2 years ago: rcase started this project.
  • almost 2 years ago: rcase originated this project.

  • Comments

    • rcase
      almost 2 years ago by rcase | Reply

      GitHub org and repo's created for this.

    • rcase
      almost 2 years ago by rcase | Reply

      Initial working version has been created: https://github.com/mikrolite/mikrolite

    Similar Projects

    QBoot - A handy QEMU VM launcher by amanzini

    Description

    QBoot is a command-line tool that wraps QEMU to provide a streamlined experience for launching virtual machines. It automatically configures common settings like KVM acceleration, virtio drivers, and networking while allowing customization through both configuration files and command-line options.

    The project originally was a personal utility in D, now recently rewritten in idiomatic Go. It lives at repository https://github.com/ilmanzo/qboot

    Goals

    Improve the project, testing with different scenarios , address issues and propose new features. It will benefit of some basic integration testing by providing small sample disk images.

    Resources


    Rancher/k8s Trouble-Maker by tonyhansen

    Project Description

    When studying for my RHCSA, I found trouble-maker, which is a program that breaks a Linux OS and requires you to fix it. I want to create something similar for Rancher/k8s that can allow for troubleshooting an unknown environment.

    Goals for Hackweek 25

    • Update to modern Rancher and verify that existing tests still work
    • Change testing logic to populate secrets instead of requiring a secondary script
    • Add new tests

    Goals for Hackweek 24 (Complete)

    • Create a basic framework for creating Rancher/k8s cluster lab environments as needed for the Break/Fix
    • Create at least 5 modules that can be applied to the cluster and require troubleshooting

    Resources

    • https://github.com/celidon/rancher-troublemaker
    • https://github.com/rancher/terraform-provider-rancher2
    • https://github.com/rancher/tf-rancher-up
    • https://github.com/rancher/quickstart


    Mammuthus - The NFS-Ganesha inside Kubernetes controller by vcheng

    Description

    As the user-space NFS provider, the NFS-Ganesha is wieldy use with serval projects. e.g. Longhorn/Rook. We want to create the Kubernetes Controller to make configuring NFS-Ganesha easy. This controller will let users configure NFS-Ganesha through different backends like VFS/CephFS.

    Goals

    1. Create NFS-Ganesha Package on OBS: nfs-ganesha5, nfs-ganesha6
    2. Create NFS-Ganesha Container Image on OBS: Image
    3. Create a Kubernetes controller for NFS-Ganesha and support the VFS configuration on demand. Mammuthus

    Resources

    NFS-Ganesha