mirror of
https://github.com/edera-dev/krata.git
synced 2025-08-02 12:50:54 +00:00
docs: first pass of krata as an isolation engine
This commit is contained in:
parent
e219f3adf1
commit
23c7302c04
6
FAQ.md
6
FAQ.md
@ -2,7 +2,7 @@
|
||||
|
||||
## How does krata currently work?
|
||||
|
||||
The krata hypervisor makes it possible to launch OCI containers on a Xen hypervisor without utilizing the Xen userspace tooling. krata contains just enough of the userspace of Xen (reimplemented in Rust) to start an x86_64 Xen Linux PV guest, and implements a Linux init process that can boot an OCI container. It does so by converting an OCI image into a squashfs/erofs file and packaging basic startup data in a bundle which the init container can read.
|
||||
The krata isolation engine makes it possible to launch OCI containers on a Xen hypervisor without utilizing the Xen userspace tooling. krata contains just enough of the userspace of Xen (reimplemented in Rust) to start an x86_64 Xen Linux PV guest, and implements a Linux init process that can boot an OCI container. It does so by converting an OCI image into a squashfs/erofs file and packaging basic startup data in a bundle which the init container can read.
|
||||
|
||||
In addition, due to the desire to reduce dependence on the dom0 network, krata contains a networking daemon called kratanet. kratanet listens for krata guests to startup and launches a userspace networking environment. krata guests can access the dom0 networking stack via the proxynat layer that makes it possible to communicate over UDP, TCP, and ICMP (echo only) to the outside world. In addition, each krata guest is provided a "gateway" IP (both in IPv4 and IPv6) which utilizes smoltcp to provide a virtual host. That virtual host in the future could dial connections into the container to access container networking resources.
|
||||
|
||||
@ -13,7 +13,3 @@ Xen is a very interesting technology, and Edera believes that type-1 hypervisors
|
||||
## Why not utilize pvcalls to provide access to the host network?
|
||||
|
||||
pvcalls is extremely interesting, and although it is certainly possible to utilize pvcalls to get the job done, we chose to utilize userspace networking technology in order to enhance security. Our goal is to drop the use of all xen networking backend drivers within the kernel and have the guest talk directly to a userspace daemon, bypassing the vif (xen-netback) driver. Currently, in order to develop the networking layer, we utilize xen-netback and then use raw sockets to provide the userspace networking layer on the host.
|
||||
|
||||
## What are the future plans?
|
||||
|
||||
Edera is building a company to compete in the hypervisor space with open-source technology. More information to come soon on official channels.
|
||||
|
14
README.md
14
README.md
@ -1,6 +1,6 @@
|
||||
# krata
|
||||
|
||||
The Edera Hypervisor
|
||||
An isolation engine for securing compute workloads.
|
||||
|
||||

|
||||

|
||||
@ -16,13 +16,13 @@ The Edera Hypervisor
|
||||
|
||||
## Introduction
|
||||
|
||||
krata is a single-host hypervisor service built for OCI-compliant containers. It isolates containers using a type-1 hypervisor, providing workload isolation that can exceed the security level of KVM-based OCI-compliant runtimes.
|
||||
krata is a single-host workload isolation service. It isolates workloads using a type-1 hypervisor, providing a tight security boundary while preserving performance.
|
||||
|
||||
krata utilizes the core of the Xen hypervisor, with a fully memory-safe Rust control plane to bring Xen tooling into a new secure era.
|
||||
krata utilizes the core of the Xen hypervisor with a fully memory-safe Rust control plane.
|
||||
|
||||
## Hardware Support
|
||||
|
||||
| Architecture | Completion Level | Virtualization Technology |
|
||||
| ------------ | ---------------- | ------------------------- |
|
||||
| x86_64 | 100% Completed | Intel VT-x, AMD-V |
|
||||
| aarch64 | 30% Completed | AArch64 virtualization |
|
||||
| Architecture | Completion Level | Hardware Virtualization |
|
||||
| ------------ | ---------------- | ------------------------------- |
|
||||
| x86_64 | 100% Completed | None, Intel VT-x, AMD-V |
|
||||
| aarch64 | 10% Completed | AArch64 virtualization |
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "krata-ctl"
|
||||
description = "Command-line tool to control the krata hypervisor"
|
||||
description = "Command-line tool to control the krata isolation engine"
|
||||
license.workspace = true
|
||||
version.workspace = true
|
||||
homepage.workspace = true
|
||||
|
@ -28,7 +28,7 @@ enum ListFormat {
|
||||
}
|
||||
|
||||
#[derive(Parser)]
|
||||
#[command(about = "List the guests on the hypervisor")]
|
||||
#[command(about = "List the guests on the isolation engine")]
|
||||
pub struct ListCommand {
|
||||
#[arg(short, long, default_value = "table", help = "Output format")]
|
||||
format: ListFormat,
|
||||
|
@ -23,7 +23,7 @@ enum ListDevicesFormat {
|
||||
}
|
||||
|
||||
#[derive(Parser)]
|
||||
#[command(about = "List the devices on the hypervisor")]
|
||||
#[command(about = "List the devices on the isolation engine")]
|
||||
pub struct ListDevicesCommand {
|
||||
#[arg(short, long, default_value = "table", help = "Output format")]
|
||||
format: ListDevicesFormat,
|
||||
|
@ -33,13 +33,13 @@ use self::{
|
||||
#[derive(Parser)]
|
||||
#[command(
|
||||
version,
|
||||
about = "Control the krata hypervisor, a secure platform for running containers"
|
||||
about = "Control the krata isolation engine"
|
||||
)]
|
||||
pub struct ControlCommand {
|
||||
#[arg(
|
||||
short,
|
||||
long,
|
||||
help = "The connection URL to the krata hypervisor",
|
||||
help = "The connection URL to the krata isolation engine",
|
||||
default_value = "unix:///var/lib/krata/daemon.socket"
|
||||
)]
|
||||
connection: String,
|
||||
|
@ -138,7 +138,7 @@ impl TopApp {
|
||||
|
||||
impl Widget for &mut TopApp {
|
||||
fn render(self, area: Rect, buf: &mut Buffer) {
|
||||
let title = Title::from(" krata hypervisor ".bold());
|
||||
let title = Title::from(" krata isolation engine ".bold());
|
||||
let instructions = Title::from(vec![" Quit ".into(), "<Q> ".blue().bold()]);
|
||||
let block = Block::default()
|
||||
.title(title.alignment(Alignment::Center))
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "krata-daemon"
|
||||
description = "Daemon for the krata hypervisor."
|
||||
description = "Daemon for the krata isolation engine"
|
||||
license.workspace = true
|
||||
version.workspace = true
|
||||
homepage.workspace = true
|
||||
|
@ -6,7 +6,7 @@ use std::str::FromStr;
|
||||
use crate::Daemon;
|
||||
|
||||
#[derive(Parser)]
|
||||
#[command(version, about = "Krata hypervisor daemon")]
|
||||
#[command(version, about = "krata isolation engine daemon")]
|
||||
pub struct DaemonCommand {
|
||||
#[arg(
|
||||
short,
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "krata-guest"
|
||||
description = "Guest services for the krata hypervisor."
|
||||
description = "Guest services for the krata isolation engine"
|
||||
license.workspace = true
|
||||
version.workspace = true
|
||||
homepage.workspace = true
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "krata"
|
||||
description = "Client library and common services for the krata hypervisor."
|
||||
description = "Client library and common services for the krata isolation engine"
|
||||
license.workspace = true
|
||||
version.workspace = true
|
||||
homepage.workspace = true
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "krata-network"
|
||||
description = "Networking services for the krata hypervisor."
|
||||
description = "Networking services for the krata isolation engine"
|
||||
license.workspace = true
|
||||
version.workspace = true
|
||||
homepage.workspace = true
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "krata-oci"
|
||||
description = "OCI services for the krata hypervisor."
|
||||
description = "OCI services for the krata isolation engine"
|
||||
license.workspace = true
|
||||
version.workspace = true
|
||||
homepage.workspace = true
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "krata-runtime"
|
||||
description = "Runtime for running guests on the krata hypervisor."
|
||||
description = "Runtime for running guests on the krata isolation engine"
|
||||
license.workspace = true
|
||||
version.workspace = true
|
||||
homepage.workspace = true
|
||||
|
2
hack/dist/apk.sh
vendored
2
hack/dist/apk.sh
vendored
@ -21,7 +21,7 @@ fpm -s tar -t apk \
|
||||
--architecture "${TARGET_ARCH}" \
|
||||
--depends "squashfs-tools" \
|
||||
--depends "erofs-utils" \
|
||||
--description "Krata Hypervisor" \
|
||||
--description "Krata Isolation Engine" \
|
||||
--url "https://krata.dev" \
|
||||
--maintainer "Edera Team <contact@edera.dev>" \
|
||||
"${OUTPUT_DIR}/system-openrc-${TARGET_ARCH}.tgz"
|
||||
|
2
hack/dist/deb.sh
vendored
2
hack/dist/deb.sh
vendored
@ -22,7 +22,7 @@ fpm -s tar -t deb \
|
||||
--depends "xen-system-${TARGET_ARCH_DEBIAN}" \
|
||||
--depends "squashfs-tools" \
|
||||
--depends "erofs-utils" \
|
||||
--description "Krata Hypervisor" \
|
||||
--description "Krata Isolation Engine" \
|
||||
--url "https://krata.dev" \
|
||||
--maintainer "Edera Team <contact@edera.dev>" \
|
||||
-x "usr/lib/**" \
|
||||
|
Loading…
Reference in New Issue
Block a user