diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..d500568d9 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,41 @@ +# Changelog + +## v0.3.0 (unreleased) + +Major release with significant UX and internal improvements: + + - There is no longer a difference between an Ignite image and an OCI image, this is now the same thing. Ignite operates on OCI images + directly, for both OS images and kernels. + - Ignite now uses Devicemapper's `thin-provisioning` feature, for way better performance and added capabilities. + - It is now possible to do `ignite run [OCI image]` directly, and everything (e.g. pulling the image) is handled automatically. e.g. `ignite run -i weaveworks/ignite-ubuntu`. + - Now `ignite images` shows OCI images that are cached and ready to use, and `ignite kernels` the kernel images ready to use. + - Added an example usage guide for running a Kubernetes cluster in HA mode using kubeadm and Ignite. + - Removed `ignite build`, and `ignite image/kernel import`; as these are no longer needed + - Importing an image from a tROADMAPar file is no longer possible, package the contents in an OCI image instead + - Added a new command `ignite ssh [vm]` and flag: `ignite run --ssh`. This allows for automatic SSH logins. + - Now Ignite logs user-friendly messages by default. To get machine-readable output, use the `--quiet` flag. + - Ignite now requires the user to be `root`. This will be revisited later, when the architecture has changed. + - The command outputs and structure is now more user-friendly. + - Fixed several bugs both under the hood, and user-affecting ones + +## v0.2.0 + +Major release with significant improvements + + - Ignite is now using `devicemapper` under the hood, for overlay snapshots for filesystem writes, allowing for image reuse, efficient use of space and way faster builds! + - Added sample Ubuntu 18.04 and CentOS 7 OS images & a 4.19 kernel build + - Automatic network configuration, now the OS image doesn't need to enable DHCP, as that is done in the kernel + - Automatically populate `/etc/hosts` and `/etc/resolv.conf`, too + - Add an option to bind a port exposed by the VM to a host port (`ignite run -p 80:80`) + - Add an option for modifying the kernel command line (`ignite run --kernel-args`) + - Add an option to copy files from the host into the VM (`ignite run --copy-files`) + - Add an option to specify the amount of cores, RAM, and overlay size (`ignite run --cpus 2 --memory 1024 --size 4GB`) + - Removed the need for the Ignite container to run with `--privileged` + - Allow for force-deletions of images, kernels and vms. + - Added documentation. + - Moved repo from luxas/ignite to weaveworks/ignite + +## v0.1.0 + +This is the first, proof-of-concept version of Ignite. +It has all the essential features, and a pretty complete implementation of the docker UX. diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..5937ba1f8 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,7 @@ +## Community Code of Conduct + +Weaveworks follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). + +Instances of abusive, harassing, or otherwise unacceptable behavior +may be reported by contacting a Weaveworks project maintainer, or +Alexis Richardson (alexis@weave.works). diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..19d58eb9f --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,11 @@ +# Contributing + +We highly value and encourage contributions from the community! + +Ignite is [Apache 2.0 licensed](LICENSE) and accepts contributions via GitHub Pull Requests.This document outlines some of the conventions on development workflow, commit message formatting, contact points and other resources to make it easier to get your contribution accepted. + +We gratefully welcome improvements to documentation as well as to code. + +## Guidelines + +TODO: Add contributing guidelines here after we formalize them. diff --git a/MAINTAINERS b/MAINTAINERS new file mode 100644 index 000000000..1a1318b4a --- /dev/null +++ b/MAINTAINERS @@ -0,0 +1,2 @@ +Lucas Käldström (@luxas) +Dennis Marttinen (@dennis) diff --git a/README.md b/README.md index 92384fcd9..b37fb4f09 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -## Firecracker Ignite +# Firecracker Ignite Ignite is a Firecracker microVM administration tool, like Docker manages runC containers. @@ -17,7 +17,7 @@ container on the host would. And Firecracker is **fast**! Building and starting VMs takes just some fraction of a second, or at most some seconds. With Ignite you can get started with Firecracker in no time! -### Use-cases +## Use-cases With Ignite, Firecracker is now much more accessible for end users, which means the ecosystem can achieve the next level of momentum due to the easy onboarding path thanks to a docker-like UX. @@ -35,7 +35,7 @@ This allows for: * Super fast Kubernetes Cluster Lifecycle with multiple machines (without docker hacks) * A k8s-managed private VM cloud, on which a layer of k8s container clusters may run -#### Scope +### Scope If you want to run _applications_ in **containers** with added _Firecracker isolation_, use [firecracker-containerd](https://github.com/firecracker-microvm/firecracker-containerd). @@ -44,7 +44,7 @@ Or a similar solution like Kata Containers or gVisor, that are complementary to Firecracker Ignite, however, is operating at another layer. Ignite isn’t concerned with **containers** as the primary unit, but whole yet lightweight VMs that integrate with the container landscape. -### How to use +## How to use [![asciicast](https://asciinema.org/a/252221.svg)](https://asciinema.org/a/252221) @@ -104,16 +104,17 @@ reference base images and a sample kernel image to get started quickly. ### Known limitations -See [REQUIREMENTS.md](REQUIREMENTS.md) +See [docs/REQUIREMENTS.md](docs/REQUIREMENTS.md) -### Maintainers +## Contributing -- Lucas Käldström, @luxas -- Dennis Marttinen, @twelho +Please see [CONTRIBUTING.md](CONTRIBUTING.md) and our [Code Of Conduct](CODE_OF_CONDUCT.md). -### License - -Apache 2.0 +Other interesting resources include: + - [The issue tracker](https://github.com/weaveworks/ignite/issues) + - [The list of milestones](https://github.com/weaveworks/ignite/milestones) + - [CHANGELOG.md](CHANGELOG.md) + - [ROADMAP.md](ROADMAP.md) ## Getting Help @@ -124,3 +125,12 @@ If you have any questions about, feedback for or problems with `ignite`: - [File an issue](https://github.com/weaveworks/ignite/issues/new). Your feedback is always welcome! + +## Maintainers + +- Lucas Käldström, [@luxas](https://github.com/luxas) +- Dennis Marttinen, [@twelho](https://github.com/twelho) + +## License + +[Apache 2.0](LICENSE) \ No newline at end of file diff --git a/ROADMAP.md b/ROADMAP.md new file mode 100644 index 000000000..3730c8b5c --- /dev/null +++ b/ROADMAP.md @@ -0,0 +1,15 @@ +# Roadmap + +This is a provisional roadmap for what we'd like to do in the coming releases. + + - CNI support, when using Docker (similar to what the kubelet does) + - Prometheus metrics exposed over a socket (converted from the FIFO Firecracker supplies) + - containerd support, do not hard-code this to docker only. This will add Kubernetes support. + - Parallelized internal architecture for way better performance + - Factor out the `ignite container` command to its own binary for less overhead when running VMs (`ignite-spawn`) + - Take full advantage of Devicemapper's thin-provisioning feature + - Re-architect Ignite, and split it up into four parts: + - `ignite`, keeping the same CLI as we have now + - `ignite-containerd`, a containerd plugin for running Ignite VMs + - `ignite-snapshotter`, a containerd snapshotter plugin for building VM disks out of OCI images + - `ignite-spawn`, a small wrapper binary around Firecracker handling networking and DHCP translation diff --git a/REQUIREMENTS.md b/docs/REQUIREMENTS.md similarity index 100% rename from REQUIREMENTS.md rename to docs/REQUIREMENTS.md