Skip to content
This repository has been archived by the owner on Dec 7, 2023. It is now read-only.

Update the docs for v0.6.0 #378

Merged
merged 4 commits into from
Aug 30, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
SHELL:=/bin/bash
UID_GID?=$(shell id -u):$(shell id -g)
FIRECRACKER_VERSION:=$(shell cat hack/FIRECRACKER_VERSION)
GO_VERSION=1.12.6
GO_VERSION=1.12.9
DOCKER_USER?=weaveworks
IMAGE=$(DOCKER_USER)/ignite
GIT_VERSION:=$(shell hack/ldflags.sh --version-only)
Expand Down
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ Now we can deploy and manage full-blown VM systems just like e.g. Kubernetes wor
The images used are OCI/Docker images, but instead of running them as containers, it executes
their contents as a real VM with a dedicated kernel and `/sbin/init` as PID 1.

Networking is set up automatically, the VM gets the same IP as any docker container on the host would.
Networking is set up automatically, the VM gets the same IP as any 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!
Expand Down Expand Up @@ -91,7 +91,7 @@ Note: At the moment `ignite` and `ignited` need root privileges on the host to o
due to certain operations (e.g. `mount`). This will change in the future.

```bash
# Let's run the weaveworks/ignite-ubuntu docker image as a VM
# Let's run the weaveworks/ignite-ubuntu OCI image as a VM
# Use 2 vCPUs and 1GB of RAM, enable automatic SSH access and name it my-vm
ignite run weaveworks/ignite-ubuntu \
--cpus 2 \
Expand All @@ -112,7 +112,7 @@ ignite logs my-vm
# SSH into the VM
ignite ssh my-vm

# Inside the VM you can check that the kernel version is different, and the IP address came from the Docker bridge
# Inside the VM you can check that the kernel version is different, and the IP address came from the container
# Also the memory is limited to what you specify, as well as the vCPUs
> uname -a
> ip addr
Expand Down Expand Up @@ -142,9 +142,9 @@ This can then be automated, tracked for correctness, and managed at scale - [jus

The workflow is simply this:

- Run `ignited gitops [repo]`, where repo is an **SSH url** to your Git repo
- Create a file with the VM specification, specifying how much vCPUs, RAM, disk, etc. you’d like for the VM
- Run `git push` and see your VM start on the host
- Run `ignited gitops [repo]`, where repo is an **SSH url** to your Git repo
- Create a file with the VM specification, specifying how much vCPUs, RAM, disk, etc. you’d like for the VM
- Run `git push` and see your VM start on the host

See it in action! (Note: The screencast is from an older version which differs somewhat)

Expand Down
39 changes: 19 additions & 20 deletions docs/awesome.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,35 +7,34 @@ using, mentioning or buidling on top of Ignite.

## Blog Posts

- [Fire Up Your VMs with Weave Ignite](https://www.weave.works/blog/fire-up-your-vms-with-weave-ignite) by Alexis Richardson, 10th of July, 2019
- [Weave Ignite et Weave Footloose dans Scaleway: quand les machines virtuelles se prennent pour des containers et inversement](https://medium.com/@abenahmed1/weave-ignite-et-weave-footloose-dans-scaleway-quand-les-machines-virtuelles-se-prennent-pour-des-e28f5312a59f) by Karim, 30th of June, 2019
- [Weave didn’t start the fire, but anyway…here’s Ignite](https://devclass.com/2019/07/11/weave-didnt-start-the-fire-but-anyway-heres-ignite/) by Julia Schmidt, 11st of July, 2019
- [Das Projekt Ignite soll Container und VMs zusammenbringen](https://www.heise.de/developer/meldung/Das-Projekt-Ignite-soll-Container-und-VMs-zusammenbringen-4468075.html) by Matthias Parbel, 11st of July, 2019
- [Ignite VM using Firecracker](http://arun-gupta.github.io/ignite-firecracker/) by Arun Gupta, 13th of July, 2019
- [Ignite on Google Cloud](https://blog.kubernauts.io/ignite-on-google-cloud-5d5228a5ffec) by Saiyam Pathak, 13rd of July, 2019
- [The clearest sign of AWS' open source success wasn't built by Amazon](https://www.techrepublic.com/article/the-clearest-sign-of-aws-open-source-success-wasnt-built-by-amazon) by Matt Asay, 16th of July, 2019
- [Weaveworks Releases Ignite, AWS Firecracker-Powered Software for Running Containers as VMs](https://www.infoq.com/news/2019/07/weaveworks-ignite-firecracker) by Richard Seroter, 18th of July, 2019
- [Ignite - container workload in real virtual machines](https://felixwiedmann.de/ignite/) by Felix Wiedmann, 20th of July, 2019
- [Weave Ignite Brings a Container GitOps Experience to VMs](https://thenewstack.io/weave-ignite-brings-a-container-gitops-experience-to-vms/) by Mike Melanson, 25th of July, 2019

- [Fire Up Your VMs with Weave Ignite](https://www.weave.works/blog/fire-up-your-vms-with-weave-ignite) by Alexis Richardson, 10th of July, 2019
- [Weave Ignite et Weave Footloose dans Scaleway: quand les machines virtuelles se prennent pour des containers et inversement](https://medium.com/@abenahmed1/weave-ignite-et-weave-footloose-dans-scaleway-quand-les-machines-virtuelles-se-prennent-pour-des-e28f5312a59f) by Karim, 30th of June, 2019
- [Weave didn’t start the fire, but anyway…here’s Ignite](https://devclass.com/2019/07/11/weave-didnt-start-the-fire-but-anyway-heres-ignite/) by Julia Schmidt, 11st of July, 2019
- [Das Projekt Ignite soll Container und VMs zusammenbringen](https://www.heise.de/developer/meldung/Das-Projekt-Ignite-soll-Container-und-VMs-zusammenbringen-4468075.html) by Matthias Parbel, 11st of July, 2019
- [Ignite VM using Firecracker](http://arun-gupta.github.io/ignite-firecracker/) by Arun Gupta, 13th of July, 2019
- [Ignite on Google Cloud](https://blog.kubernauts.io/ignite-on-google-cloud-5d5228a5ffec) by Saiyam Pathak, 13rd of July, 2019
- [The clearest sign of AWS' open source success wasn't built by Amazon](https://www.techrepublic.com/article/the-clearest-sign-of-aws-open-source-success-wasnt-built-by-amazon) by Matt Asay, 16th of July, 2019
- [Weaveworks Releases Ignite, AWS Firecracker-Powered Software for Running Containers as VMs](https://www.infoq.com/news/2019/07/weaveworks-ignite-firecracker) by Richard Seroter, 18th of July, 2019
- [Ignite - container workload in real virtual machines](https://felixwiedmann.de/ignite/) by Felix Wiedmann, 20th of July, 2019
- [Weave Ignite Brings a Container GitOps Experience to VMs](https://thenewstack.io/weave-ignite-brings-a-container-gitops-experience-to-vms/) by Mike Melanson, 25th of July, 2019

## YouTube Videos

- [Weave Ignite - FireCracker Micro VM manager demo](https://youtu.be/s_O75zt-oBg) by Paavan Mistry, 10th of July, 2019
- [TGI Kubernetes 082: Weaveworks Ignite](https://youtu.be/aq-wlslJ5MQ) by Joe Beda, 12nd of July, 2019
- [Weave Ignite - Firecracker Micro VM manager demo](https://youtu.be/s_O75zt-oBg) by Paavan Mistry, 10th of July, 2019
- [TGI Kubernetes 082: Weaveworks Ignite](https://youtu.be/aq-wlslJ5MQ) by Joe Beda, 12nd of July, 2019

## Online Events

- [WOUG: Introducing Ignite - the GitOps VM with Lucas Käldström & Radu Weiss](https://www.meetup.com/Weave-User-Group/events/262973798/) by Tamao Nakahara, 17th of July, 2019

- [WOUG: Introducing Ignite - the GitOps VM with Lucas Käldström & Radu Weiss](https://www.meetup.com/Weave-User-Group/events/262973798/) by Tamao Nakahara, 17th of July, 2019

## Screencasts

- [Get started with Ignite](https://asciinema.org/a/252221)
- [Spawn multiple Ignite VMs with Footloose](https://asciinema.org/a/251272)
- [Set up a HA Kubernetes cluster in Ignite VMs](https://asciinema.org/a/252343)
- [Get started with Ignite](https://asciinema.org/a/252221)
- [Spawn multiple Ignite VMs with Footloose](https://asciinema.org/a/251272)
- [Set up a HA Kubernetes cluster in Ignite VMs](https://asciinema.org/a/252343)

## Projects

- [ignite-ci: Ignite and Ansible](https://gitlab.com/neith00/ignite-ci) by Jean-Alexis Lauricella
- [LF Edge Virtualization Engine; possible user](https://github.com/lf-edge/eve/blob/master/docs/CONTAINERS.md)
- [Virtual Kubelet provider for Ignite](https://github.com/chanwit/vkignite) by Chanwit Kaewkasi
- [ignite-ci: Ignite and Ansible](https://gitlab.com/neith00/ignite-ci) by Jean-Alexis Lauricella
- [LF Edge Virtualization Engine; possible user](https://github.com/lf-edge/eve/blob/master/docs/CONTAINERS.md)
5 changes: 4 additions & 1 deletion docs/declarative-config.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ another way: telling Ignite what to do _declaratively_, using a file containing
an API object.

The first commands to support this feature are `ignite run` and `ignite create`.
Here's an example API object file contents:
Here's an example API object file contents:

```yaml
apiVersion: ignite.weave.works/v1alpha2
Expand All @@ -27,6 +27,9 @@ We can tell Ignite to make this happen by simply running:

```console
$ ignite run --config my-vm.yaml
INFO[0001] Created VM with ID "e04128e6f96176a8" and name "my-vm"
INFO[0002] Networking is handled by "cni"
INFO[0002] Started Firecracker VM "e04128e6f96176a8" in a container with ID "ignite-e04128e6f96176a8"
```

The full reference format for the `VM` kind is as follows:
Expand Down
104 changes: 61 additions & 43 deletions docs/dependencies.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,22 @@
## Virtualization features

Firecracker by design only supports emulating 4 devices:
- `virtio-block`
- `virtio-net`
- a serial console
- a 1-button keyboard used only to stop the microVM (invoked with `reboot`)

- `virtio-block`
- `virtio-net`
- a serial console
- a 1-button keyboard used only to stop the microVM (invoked with `reboot`)

Everything apart from above, is not supported, and out of scope.

## Host Requirements

- A host running Linux 4.14 or newer
- `sysctl net.ipv4.ip_forward=1`
- loaded kernel loop module: `modprobe -v loop`
- Optional: `sysctl net.bridge.bridge-nf-call-iptables=0`
- One of the following CPUs:
- A host running Linux 4.14 or newer
- `sysctl net.ipv4.ip_forward=1`
- loaded kernel loop module: `modprobe -v loop`
- Optional: `sysctl net.bridge.bridge-nf-call-iptables=0`
- One of the following CPUs:

| CPU | Architecture | Support level | Notes |
|-------|------------------|---------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Intel | x86_64 | Complete | Requires <a href="https://en.wikipedia.org/wiki/X86_virtualization#Intel_virtualization_(VT-x)">VT-x</a>, most non-Atom 64-bit Intel CPUs since Pentium 4 should be supported |
Expand All @@ -26,42 +27,59 @@ Everything apart from above, is not supported, and out of scope.

## Guest Requirements

- A Linux kernel 4.14 or newer
- Kernel config:
- `CONFIG_VIRTIO_BLK=y` (mandatory)
- `CONFIG_VIRTIO_NET=y` (mandatory)
- `CONFIG_KEYBOARD_ATKBD=y` (optional but recommended)
- `CONFIG_SERIO_I8042=y` (optional but recommended)
- A Linux kernel 4.14 or newer
- Kernel config:
- `CONFIG_VIRTIO_BLK=y` (mandatory)
- `CONFIG_VIRTIO_NET=y` (mandatory)
- `CONFIG_KEYBOARD_ATKBD=y` (optional but recommended)
- `CONFIG_SERIO_I8042=y` (optional but recommended)

## Ignite on-host dependencies

Ignite shells out to a few dependencies on the host.
With time, we aim to eliminate as many of these as possible.

- `mount` & `umount` for mounting and unmounting block devices
- Ubuntu package: `mount` (installed by default)
- CentOS package: `util-linux` (installed by default)
- `tar` for extracting files from the docker image onto the filesystem
- Ubuntu package: `tar` (installed by default)
- CentOS package: `tar` (installed by default)
- `mkfs.ext4` for formatting a block device with a ext4 filesystem
- Ubuntu package: `e2fsprogs` (installed by default)
- CentOS package: `e2fsprogs`
- `e2fsck` & `resize2fs` for cleaning and resizing the ext4 filesystems
- Ubuntu package: `e2fsprogs` (installed by default)
- CentOS package: `e2fsprogs`
- `strings` for detecting the kernel version
- Ubuntu package: `binutils`
- CentOS package: `binutils` (installed by default)
- `docker` for managing the containers ignite uses
- Ubuntu package: `docker.io`
- CentOS package: `docker`
- `dmsetup` for managing device mapper snapshots and overlays
- Ubuntu package: `dmsetup`
- CentOS package: `device-mapper` (installed by default)
- `ssh` for SSH-ing into the VM (optional, for `ignite ssh` only)
- Ubuntu package: `openssh-client`
- CentOS package: `openssh-clients`
- `git` for the GitOps mode of Ignite (optional, for `ignite gitops` only)
- Ubuntu package: `git`
- CentOS package: `git`
### Container Runtime

- `containerd` for managing the containers Ignite uses (default, preferred)
- Ubuntu package: `containerd`
- CentOS package: `containerd.io`
- From docker's repositories: `yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo`
- `docker` for managing the containers Ignite uses (also installs `containerd` automatically)
- Ubuntu package: `docker.io`
- CentOS package: `docker`

### CNI plugins

```shell
export CNI_VERSION=v0.8.2
export ARCH=$([ $(uname -m) = "x86_64" ] && echo amd64 || echo arm64)
curl -sSL https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-${ARCH}-${CNI_VERSION}.tgz | tar -xz -C /opt/cni/bin
```

### Other Binaries

- `mount` & `umount` for mounting and unmounting block devices
- Ubuntu package: `mount` (installed by default)
- CentOS package: `util-linux` (installed by default)
- `tar` for extracting files from the docker image onto the filesystem
- Ubuntu package: `tar` (installed by default)
- CentOS package: `tar` (installed by default)
- `mkfs.ext4` for formatting a block device with a ext4 filesystem
- Ubuntu package: `e2fsprogs` (installed by default)
- CentOS package: `e2fsprogs`
- `e2fsck` & `resize2fs` for cleaning and resizing the ext4 filesystems
- Ubuntu package: `e2fsprogs` (installed by default)
- CentOS package: `e2fsprogs`
- `strings` for detecting the kernel version
- Ubuntu package: `binutils`
- CentOS package: `binutils` (installed by default)
- `dmsetup` for managing device mapper snapshots and overlays
- Ubuntu package: `dmsetup`
- CentOS package: `device-mapper` (installed by default)
- `ssh` for SSH-ing into the VM (optional, for `ignite ssh` only)
- Ubuntu package: `openssh-client`
- CentOS package: `openssh-clients`
- `git` for the GitOps mode of Ignite (optional, for `ignite gitops` only)
- Ubuntu package: `git`
- CentOS package: `git`
12 changes: 12 additions & 0 deletions docs/footloose.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,17 @@ run containers as Virtual Machines in two modes, either using `docker` or `ignit
public CI providers, Macs, etc.), and `ignite` isolation is good when you want to run real
VMs.

## Installation

Install [Footloose 0.6.0](https://github.com/weaveworks/footloose/releases/tag/0.6.0) or higher like this:

```shell
export VERSION=0.6.0
curl -sLo footloose https://github.com/weaveworks/footloose/releases/download/${VERSION}/footloose-${VERSION}-linux-x86_64
chmod +x footloose
sudo mv footloose /usr/local/bin/
```

## Get Started

This how you can have Footloose invoke Ignite in a _declaratively_ manner, using a file containing
Expand Down Expand Up @@ -77,6 +88,7 @@ root@a07c6f1782c70136:~#
```

Run the following to stop the VMs:

```console
$ footloose stop
INFO[0000] Stopping machine: cluster-vm0 ...
Expand Down
16 changes: 9 additions & 7 deletions docs/gitops.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## Ignite - the GitOps VM
# Ignite - the GitOps VM

Ignite is a “GitOps-first” project, GitOps is supported out of the box using the `ignited gitops` command.
Previously this was integrated as `ignite gitops`, but this functionality has now moved to `ignited`,
Expand All @@ -12,15 +12,15 @@ This can then be automated, tracked for correctness, and managed at scale - [jus

The workflow is simply this:

- Run `ignited gitops [repo]`, where repo is an **SSH url** to your Git repo
- Create a file with the VM specification, specifying how much vCPUs, RAM, disk, etc. you’d like for the VM
- Run `git push` and see your VM start on the host
- Run `ignited gitops [repo]`, where repo is an **SSH url** to your Git repo
- Create a file with the VM specification, specifying how much vCPUs, RAM, disk, etc. you’d like for the VM
- Run `git push` and see your VM start on the host

See it in action! (Note: The screencast is from an older version which differs somewhat)

[![asciicast](https://asciinema.org/a/255797.svg)](https://asciinema.org/a/255797)

### Try it out
## Try it out

Go ahead and create a Git repository.

Expand All @@ -29,6 +29,7 @@ back to the repository using the default key for it. To edit your root's git con
`sudo gitconfig --global --edit`. The root requirement will be removed in a future release.

Here's a sample configuration you can push to it (my-vm.yaml):

```yaml
apiVersion: ignite.weave.works/v1alpha2
kind: VM
Expand All @@ -45,12 +46,13 @@ spec:
status:
running: true
```
(For a more complete example repository configuration, see https://github.com/luxas/ignite-gitops.)

For a more complete example repository configuration, see [luxas/ignite-gitops](https://github.com/luxas/ignite-gitops)

After you have [installed Ignite](../docs/installation.md), you can do the following:

```console
ignite gitops git@github.com:<user>/<respitory>.git
ignited gitops git@github.com:<user>/<repository>.git
```

**NOTE:** HTTPS doesn't preserve authentication information for `ignited` to push changes,
Expand Down
25 changes: 18 additions & 7 deletions docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ See the full CPU support table in [dependencies.md](dependencies.md) for more in
See [cloudprovider.md](cloudprovider.md) for guidance on running Ignite on various cloud providers and suitable instances that you could use.

**NOTE:** You do **not** need to install any "traditional" QEMU/KVM packages, as long as
there is virtualization support in the CPU and kernel it works.
there is virtualization support in the CPU and kernel it works.

See [dependencies.md](dependencies.md) for needed dependencies.

Expand Down Expand Up @@ -49,13 +49,24 @@ Install them on Ubuntu/CentOS like this:
Ubuntu:

```bash
apt-get update && apt-get install -y --no-install-recommends docker.io dmsetup openssh-client git binutils
apt-get update && apt-get install -y --no-install-recommends containerd dmsetup openssh-client git binutils
```

CentOS:

```bash
yum install -y docker e2fsprogs openssh-clients git
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y containerd.io e2fsprogs openssh-clients git
```

### CNI Plugins

Install the CNI binaries like this:

```shell
export CNI_VERSION=v0.8.2
export ARCH=$([ $(uname -m) = "x86_64" ] && echo amd64 || echo arm64)
curl -sSL https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-${ARCH}-${CNI_VERSION}.tgz | tar -xz -C /opt/cni/bin
```

Note that the SSH and Git packages are optional; they are only needed if you use
Expand All @@ -70,7 +81,7 @@ save it as `/usr/local/bin/ignite` and make it executable.
To install Ignite from the command line, follow these steps:

```bash
export VERSION=v0.5.2
export VERSION=v0.6.0
export GOARCH=$(go env GOARCH 2>/dev/null || echo "amd64")

for binary in ignite ignited; do
Expand All @@ -88,9 +99,9 @@ by changing the `VERSION` environment variable.

If the installation was successful, the `ignite` command should now be available:

```
# ignite version
Ignite version: version.Info{Major:"0", Minor:"5", GitVersion:"v0.5.2", GitCommit:"be96924f7860992f348cd15ed46ee2c064313153", GitTreeState:"clean", BuildDate:"2019-08-26T14:36:21Z", GoVersion:"go1.12.6", Compiler:"gc", Platform:"linux/amd64"}
```console
$ ignite version
Ignite version: version.Info{Major:"0", Minor:"6", GitVersion:"v0.6.0", GitCommit:"be96924f7860992f348cd15ed46ee2c064313153", GitTreeState:"clean", BuildDate:"2019-08-26T14:36:21Z", GoVersion:"go1.12.7", Compiler:"gc", Platform:"linux/amd64"}
Firecracker version: v0.17.0
```

Expand Down
Loading