• Stars
    star
    227
  • Rank 175,900 (Top 4 %)
  • Language
    Go
  • License
    BSD 3-Clause "New...
  • Created over 2 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Build and use highly customized and ultra-lightweight unikernel VMs.

KraftKit πŸš€πŸ’πŸ§°

Go Report Card Latest release

KraftKit provides a suite of tools and Go-based framework for building custom, minimal, immutable lightweight unikernel virtual machines based on Unikraft: a fast, secure and open-source library operating system.

With KraftKit, you can easily leverage Unikraft and manage specialized, high-performance applications at every stage of their lifecycle: from construction to production.

There are many benefits in running your application as a unikernel: for more information about the performance of unikernels πŸš€, the added security πŸ”’ and a positive impact on the environment 🌱 please check out Unikraft's documentation and the introductory chapters on these impacts.

Features

  • πŸ”₯ Native Firecracker MicroVM support;
  • πŸ“š Pre-built unikernel app catalog;
  • πŸ€Ήβ€β™€οΈ Daemonless unikernel VM instance manager;
  • πŸ“¦ OCI packaging and distribution support;
  • 🚜 ELF binary / POSIX-compatibility support;
  • 🧰 Go SDK for building unikernels programmatically; and
  • πŸš€ much more!

Installation

You can quickly and easily install KraftKit using the interactive installer. Simply run the following command to get started:

curl --proto '=https' --tlsv1.2 -sSf https://get.kraftkit.sh | sh

Alternatively, you can download the binaries from the releases pages.

Container build environment

KraftKit ships a container build environment which you can use instead of installing any dependencies directly on your host. It includes the kraft binary as well as all the additional tools and libraries for building Unikraft unikernels. Simply attach a working directory on your host as a mount path volume mapped to /workspace, e.g.:

docker run -it --rm -v $(pwd):/workspace --entrypoint bash kraftkit.sh/base:latest

The above command will drop you into a container shell. Simply type exit or Ctrl+D to quit.

Quickstart

Building a unikernel with KraftKit is designed to be simple.

Add a Kraftfile to your project directory, which specifies the libraries needed for your unikernel:

specification: v0.5

unikraft: stable

libraries:
  musl: stable

targets:
  - name: default
    architecture: x86_64
    platform: qemu

You can also add an additional Makefile.uk which specifies any source files:

$(eval $(call addlib,apphelloworld))

APPHELLOWORLD_SRCS-y += $(APPHELLOWORLD_BASE)/main.c

Then it is a case of running:

cd path/to/workdir

kraft pkg update
kraft build

You can run your unikernel using:

kraft run

Support, Community & Meetings

If you have any further questions or need more information about KraftKit or Unikraft, please refer to the official Unikraft documentation or ask for help on the Unikraft community forum.

A KraftKit Working Group (WG) meets every Wednesday at 12:30 PM (CET) on Discord. Invites and additional details are available on the Unikraft OSS Public calendar.

License

KraftKit is part of the Unikraft OSS Project and licensed under BSD-3-Clause.

More Repositories

1

unikraft

A next-generation cloud native kernel designed to unlock best-in-class performance, security primitives and efficiency savings.
C
2,498
star
2

pykraft

Python library for configuring and building unikernels
Python
177
star
3

docs

The front page and documentation for the Unikraft Open-Source Project.
MDX
33
star
4

catalog

Unikraft Applications & Examples Catalog
Dockerfile
29
star
5

eurosys21-artifacts

Artifacts, including experiments and graphs, for the paper: "Unikraft: Fast, Specialized Unikernels the Easy Way" (EuroSys'21 - Best Paper Award).
Assembly
25
star
6

app-elfloader

Load and execute Linux ELF binaries
C
23
star
7

loupe

Loupe: Syscall Usage Analysis Tool
Python
23
star
8

app-helloworld

A simple "Hello World" application written in C
C
18
star
9

app-helloworld-go

kraft-ready repo for building Go applications with Unikraft
Go
16
star
10

gsoc

Unikraft Google Summer of Code
13
star
11

run-app-elfloader

Run Unikraft ELF Loader app on Linux executables
Shell
13
star
12

app-python3

Unikraft Python3 app repo
Shell
12
star
13

lib-lwip

Unikraft port of the lwip network stack
C
11
star
14

app-nginx

Nginx on Unikraft
Shell
10
star
15

app-wamr

Web Assembly (WAMR) on Unikraft
Shell
9
star
16

plat-aws

Run Unikraft Xen images on Amazon Web Services
Shell
9
star
17

lib-musl

musl: A C standard library
C
8
star
18

lib-wamr

Unikraft port of WAMR, Intel's WebAssembly Micro Runtime
C
7
star
19

plat-solo5

Unikraft port of solo5, a sandboxed execution environment for unikernels
C
7
star
20

static-pie-apps

Built Linux applications (static-pie) for Unikraft binary compatibility mode
C
7
star
21

dynamic-apps

Pre-built Dynamic Linux ELFs
C++
6
star
22

app-sqlite

SQLite on Unikraft
Shell
6
star
23

summer-of-code-2021

Unikraft Summer of Code (2021) Website & Projects Documentation
C
6
star
24

governance

Documentation and automation for the Unikraft project governance model.
Go
6
star
25

plat-raspi

Unikraft on Raspberry Pi 3 B+
6
star
26

plat-digitalocean

Run Unikraft KVM images on Digital Ocean
Shell
6
star
27

lib-newlib

Unikraft port of newlib, a C standard library
C
6
star
28

app-redis

Redis on Unikraft
Shell
5
star
29

ide-vscode

Unikraft Visual Studio Code Extension
TypeScript
5
star
30

app-httpreply

A simple HTTP echo server example for Unikraft.
C
5
star
31

lib-rust

Rust Language Runtime on Unikraft
4
star
32

app-click

Click Modular Router on Unikraft
Shell
4
star
33

lib-python3

Unikraft port of Python 3
C
4
star
34

app-helloworld-rust

Rust-based application on Unikraft
Rust
4
star
35

packer-plugin-unikraft

Unikraft Packer Plugin
Go
4
star
36

meeting-notes

Archive of Unikraft Technical Meetings.
4
star
37

loupedb

Shell
4
star
38

plat-gcp

Run Unikraft KVM images on Google Cloud Platform
Shell
4
star
39

app-helloworld-cpp

kraft-ready repo for building c++ applications with Unikraft
Shell
3
star
40

lib-click

Unikraft port of the Click modular router
C++
3
star
41

driver-shim

Driver shim library
C
3
star
42

app-ruby

Ruby on Unikraft
3
star
43

lib-redis

Unikraft port of Redis in-memory data structure store
C
3
star
44

lib-pthread-embedded

Unikraft port of pthread-embedded, an embedded pthread library
C
2
star
45

lib-tflite

Unikraft port of TensorFlow Lite
C++
2
star
46

lib-duktape

Unikraft port of duktape/JavaScript
C
2
star
47

app-micropython

Micropython on Unikraft
Python
2
star
48

liftoff

Tool to retrieve and print process statistics
C
2
star
49

lib-libhogweed

Port of libhogweed to Unikraft
C
2
star
50

lib-lua

Unikraft port of the Lua language
C
2
star
51

app-duktape

kraft-ready repo for building JavaScript/duktape applications with Unikraft
Shell
2
star
52

lib-geos

Geometry Engine, Open Source
C++
1
star
53

lib-embedded-gcov

Unikraft port of Embedded Coverage
1
star
54

lib-boost

Unikraft port of the boost library
C
1
star
55

.github

1
star
56

lib-mimalloc

Port of mimalloc
C
1
star
57

lib-dnnl

Unikraft port of Intel Math Kernel Library for DNNs
C
1
star
58

lib-tlsf

Port of TLSF for Unikraft, a general-purpose memory allocator
C
1
star
59

lib-openssl

Unikraft port of the OpenSSL libraries
1
star
60

lib-nginx

Unikraft port of NGINX
C
1
star
61

lib-zydis

Unikraft's port of the Zydis disassembler library
C
1
star
62

lib-dafny

Unikraft library for Dafny programming language.
C++
1
star
63

lib-libelf

Unikraft port of libelf from the ELF toolchain
C
1
star
64

lib-libtiff

Unikraft port of libtiff, a library for managing TIFF files
C
1
star
65

lib-ocaml

OCaml runtime library
1
star
66

lib-libgo

Unikraft port of the Go language
Go
1
star