Ignite a Firecracker microVM

Overview

Weave Ignite

Ignite Logo

Weave Ignite is an open source Virtual Machine (VM) manager with a container UX and built-in GitOps management.

  • Combines Firecracker MicroVMs with Docker / OCI images to unify containers and VMs.
  • Works in a GitOps fashion and can manage VMs declaratively and automatically like Kubernetes and Terraform.

Ignite is fast and secure because of Firecracker. Firecracker is an open source KVM implementation from AWS that is optimised for high security, isolation, speed and low resource consumption. AWS uses it as the foundation for their serverless offerings (AWS Lambda and Fargate) that need to load nearly instantly while also keeping users isolated (multitenancy). Firecracker has proven to be able to run 4000 micro-VMs on the same host!

What is Ignite?

Read the announcement blog post here: https://www.weave.works/blog/fire-up-your-vms-with-weave-ignite

Ignite makes Firecracker easy to use by adopting its developer experience from containers. With Ignite, you pick an OCI-compliant image (Docker image) that you want to run as a VM, and then just execute ignite run instead of docker run. There’s no need to use VM-specific tools to build .vdi, .vmdk, or .qcow2 images, just do a docker build from any base image you want (e.g. ubuntu:18.04 from Docker Hub), and add your preferred contents.

When you run your OCI image using ignite run, Firecracker will boot a new VM in about 125 milliseconds (!) for you using a default 4.19 Linux kernel. If you want to use some other kernel, just specify the --kernel-image flag, pointing to another OCI image containing a kernel at /boot/vmlinux, and optionally your preferred modules. Next, the kernel executes /sbin/init in the VM, and it all starts up. After this, Ignite connects the VMs to any CNI network, integrating with e.g. Weave Net.

Ignite is a declarative Firecracker microVM administration tool, similar to how Docker manages runC containers. Ignite runs VM from OCI images, spins VMs up/down at lightning speed, and can manage fleets of VMs efficiently using GitOps.

The idea is that Ignite makes Firecracker VMs look like Docker containers. Now we can deploy and manage full-blown VM systems just like e.g. Kubernetes workloads. 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 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

With Ignite, Firecracker is now much more accessible for end users, which means the ecosystem can achieve a next level of momentum due to the easy onboarding path thanks to the docker-like UX.

Although Firecracker was designed with serverless workloads in mind, it can equally well boot a normal Linux OS, like Ubuntu, Debian or CentOS, running an init system like systemd.

Having a super-fast way of spinning up a new VM, with a kernel of choice, running an init system like systemd allows running system-level applications like the kubelet, which need to “own” the full system.

Example use-cases:

  • Set up many secure VMs lightning fast. It's great for testing, CI and ephemeral workloads.
  • Launch and manage entire “app ready” stacks from Git because Ignite supports GitOps!
  • Run even legacy or special apps in lightweight VMs (eg for multi-tenancy, or using weird/edge kernels).

And - potentially - we can run a cloud of VMs ‘anywhere’ using Kubernetes for orchestration, Ignite for virtualization, GitOps for management, and supporting cloud native tools and APIs.

Scope

Ignite is different from Kata Containers or gVisor. They don’t let you run real VMs, but only wrap a container in a VM layer providing some kind of security boundary (or sandbox).

Ignite on the other hand lets you run a full-blown VM, easily and super-fast, but with the familiar container UX. This means you can “move down one layer” and start managing your fleet of VMs powering e.g. a Kubernetes cluster, but still package your VMs like containers.

Installing

Please check out the Releases Page.

How to install Ignite is covered in docs/installation.md or on Read the Docs.

Guidance on Cloud Providers' instances that can run Ignite is covered in docs/cloudprovider.md.

Getting Started

WARNING: In it's v0.X series, Ignite is in alpha, which means that it might change in backwards-incompatible ways.

asciicast

Note: At the moment ignite and ignited need root privileges on the host to operate due to certain operations (e.g. mount). This will change in the future.

# 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 \
    --memory 1GB \
    --ssh \
    --name my-vm

# List running VMs
ignite ps

# List Docker (OCI) and kernel images imported into Ignite
ignite images
ignite kernels

# Get the boot logs of the VM
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 container
# Also the memory is limited to what you specify, as well as the vCPUs
> uname -a
> ip addr
> free -m
> cat /proc/cpuinfo

# Rebooting the VM tells Firecracker to shut it down
> reboot

# Cleanup
ignite rm my-vm

For a walkthrough of how to use Ignite, go to docs/usage.md.

Getting Started the GitOps way

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, Ignite's upcoming daemon binary.

In Git you declaratively store the desired state of a set of VMs you want to manage. ignited gitops reconciles the state from Git, and applies the desired changes as state is updated in the repo. It also commits and pushes any local changes/additions to the managed VMs back to the repository.

This can then be automated, tracked for correctness, and managed at scale - just some of the benefits of GitOps.

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

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

asciicast

For the complete guide, see docs/gitops.md.

Awesome Ignite

Want to see how awesome Ignite is?

Take a look at the awesome-ignite page!

Documentation

Please refer to the following documents powered by Read the Docs:

Frequently Asked Questions

See the FAQ.md document.

Architecture

docs/architecture.png

Want to know how Ignite really works under the hood? Check out this TGIK session from Joe Beda about it:

TGIK 082

Base images and kernels

A base image is an OCI-compliant image containing some operating system (e.g. Ubuntu). You can follow normal docker build patterns for customizing your VM's rootfs.

A kernel image is an OCI-compliant image containing a /boot/vmlinux (an uncompressed kernel) executable (can be a symlink). You can also put supporting kernel modules in /lib/modules if needed. You can mix and match any kernel and any base image to create a VM.

As the upstream centos:7 and ubuntu:18.04 images from Docker Hub don't have all the utilities and packages you'd expect in a VM (e.g. an init system), we have packaged some reference base images and a sample kernel image to get started quickly.

You can use the following pre-built images with Ignite. They are built on the normal Docker Hub images, but add systemd, openssh, and similar utilities.

Base Images

These prebuilt images can be given to ignite run directly.

Kernel Images

Tutorials

Contributing

Please see CONTRIBUTING.md and our Code Of Conduct.

Other interesting resources include:

Getting Help

If you have any questions about, feedback for or problems with ignite:

Your feedback is always welcome!

Maintainers

License

Apache 2.0

Issues
  • Bump CNI Plugins to v1.0.1

    Bump CNI Plugins to v1.0.1

    CNI Plugins have officially graduated to stable with version 1.0.1 released yesterday. The biggest breaking change is the removal of the flannel plugin.

    Release notes here: https://github.com/containernetworking/plugins/releases/tag/v1.0.1

    area/dependency area/networking 
    opened by gaby 23
  • Enable multiple non-IP interface to be connected via tc redirect

    Enable multiple non-IP interface to be connected via tc redirect

    Hi @darkowlzz @stealthybox 👋 This is the PR that covers https://github.com/weaveworks/ignite/issues/832 and https://github.com/weaveworks/ignite/issues/831. At a high level it has the following impact:

    1. Introduced a new CL argument --sandbox-env-vars accepting a comma-separated list of key=value pairs.

    These values are passed to the respective container runtimes and used as env variables. I've had a choice two either create a new API version and add env vars as a new spec field or pass them around in VM's annotations. I've opted for the second option to minimise the impact of this change. I'm not sure if it's a good idea, happy to change it if necessary.

    2. Introduced a new bool arg called wait to StartVM function - if set to false, this bypasses the waitForSpawn check.

    This flag defaults to true for all existing function invocations to preserve backwards compatibility. However, when used via API, users can set this to false and skip the check for ignite-spawn. The purpose is to get the container PID to configure additional interfaces before ignite-spawn is fully initialised.

    3. Ignite-spawn can wait for a number of interfaces to be connected before firing up the VM.

    This is controlled through an environment variable called IGNITE_INTFS. To preserve backwards compatibility it defaults to 1, so without any variables set, the behaviour is the same as now. However, if this value is set to 1 on higher, SetupContainerNetworking will wait for that number of interfaces to be connected (up to a maximum timeout).

    4. Ignite-spawn will connect additional veth and tap interfaces via tc redirect.

    For backwards compatibility, the behaviour is to always use the current way of interconnecting interfaces (via bridge). However, if there's no IP on the interface, it will be interconnected with a VM via tc redirect.


    In general, all these changes strive to preserve the happy-path behavior of pre-existing code, so no major changes are expected for existing users.

    area/networking 
    opened by networkop 21
  • where to get wireguard kernel with k3s ubuntu 20.04

    where to get wireguard kernel with k3s ubuntu 20.04

    error: Module wireguard not found in directory /lib/modules/5.4.43

    $ ignite run weaveworks/ignite-ubuntu:20.04-amd64 --kernel-image weaveworks/ignite-kernel:5.4.43 --cpus 32 --ssh --memory 4GB --size 10GB --ssh
    
    $ apt install wireguard
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    wireguard is already the newest version (1.0.20200513-1~20.04.2).
    
    $ curl -sfL https://get.k3s.io | K3S_URL=https://master:6443 K3S_TOKEN=token  sh -
    
    $ journalctl -f -u k3s-agent
    

    failed to run command: export SUBNET_IP=$(echo $SUBNET | cut -d'/' -f 1); ip link del flannel.1 2>/dev/null; echo $PATH >&2; wg-add.sh flannel.1 && wg set flannel.1 listen-port 51820 private-key privatekey && ip addr add $SUBNET_IP/32 dev flannel.1 && ip link set flannel.1 up && ip route add $NETWORK dev flannel.1 Err: exit status 1 Output: /var/lib/rancher/k3s/data/986d5e8cf570f904598f9a5d531da2430e5a6171d22b7addb1e4a7c5b87a47d0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/lib/rancher/k3s/data/986d5e8cf570f904598f9a5d531da2430e5a6171d22b7addb1e4a7c5b87a47d0/bin/aux\nmodprobe: FATAL: Module wireguard not found in directory /lib/modules/5.4.43\nError: Unknown device type.\n/var/lib/rancher/k3s/data/986d5e8cf570f904598f9a5d531da2430e5a6171d22b7addb1e4a7c5b87a47d0/bin/aux/wg-add.sh: line 26: boringtun: command not found\n/var/lib/rancher/k3s/data/986d5e8cf570f904598f9a5d531da2430e5a6171d22b7addb1e4a7c5b87a47d0/bin/aux/wg-add.sh: line 29: boringtun: command not found\n/var/lib/rancher/k3s/data/986d5e8cf570f904598f9a5d531da2430e5a6171d22b7addb1e4a7c5b87a47d0/bin/aux/wg-add.sh: line 32: wireguard-go: command not found"

    kind/support area/kernels 
    opened by matti 14
  • Detect available containerd-shim versions defaulting to legacy linux runtime

    Detect available containerd-shim versions defaulting to legacy linux runtime

    closes #390 /kind bug

    Docker ships with containerd, but even the newest versions of docker-ce ship a version of containerd.io-1.2.6 that is lacking the matching containerd-shim-runc-v1 binary for plugin.RuntimeRuncV1. This client creation code calculates the matching binary names for our supported runtimes and attempts to do a fallback to the newest supported runtime by using the existence of that shim binary in the ignite-host's PATH as a heuristic for that runtime actually working. It also adds support for the upcoming plugin.RuntimeRuncV2 which supports multiple containers per shim.

    This solves a bug where our previous hard-coded default of RuncV1 causes ignite to fail to start a vm when using containerd packages that do not have the matching shim binary:

    sudo ignite-0.6.0 run weaveworks/ignite-ubuntu
    INFO[0000] Created VM with ID "1dbc72beaced7e96" and name "delicate-firefly" 
    FATA[0000] failed to start container for VM "1dbc72beaced7e96": runtime "io.containerd.runc.v1" binary not installed "containerd-shim-runc-v1": file does not exist: unknown 
    

    When the heuristic fails, we consider this a non-fatal error -- containerd may be running with a different PATH and mount namespace. The U/X for that failure mode as of this patch looks like this:

    sudo ignite run weaveworks/ignite-ubuntu
    INFO[0000] Created VM with ID "ec8371f59d595017" and name "sparkling-wave" 
    INFO[0001] Networking is handled by "cni"               
    INFO[0001] Started Firecracker VM "ec8371f59d595017" in a container with ID "ignite-ec8371f59d595017" 
    
    sudo mv /usr/bin/containerd-shim{,.disabled}
    
    sudo ignite run weaveworks/ignite-ubuntu
    ERRO[0000] a containerd-shim could not be found for runtimes: [io.containerd.runc.v2 io.containerd.runc.v1], io.containerd.runtime.v1.linux 
    INFO[0000] Created VM with ID "5ee35502c3736f02" and name "dark-firefly" 
    FATA[0000] failed to start container for VM "5ee35502c3736f02": failed to start shim: exec: "containerd-shim": executable file not found in $PATH: unknown 
    

    Future Work:

    • Functions to check the runtimes should be added to containerd libraries to prevent coupling clients to containerd's filesystem and environment dependencies
    • A pre-flight check using code from #360 could wrap this error.
    • A user-facing config struct for the containerd runtime string and options could be added.
    kind/bug priority/critical-urgent kind/enhancement 
    opened by stealthybox 13
  • Cast to uint64 for Darwin platform

    Cast to uint64 for Darwin platform

    I was futzing around with https://github.com/srl-labs/containerlab/ - just trying to build and run the unit tests on OS X to add a feature, and I got dragged down into some dependencies.

    stat.Rdev is a int32 on Darwin, so I just casted it to a uint64 to make the compiler happy

    https://cs.opensource.google/go/x/sys/+/master:unix/ztypes_darwin_arm64.go;l=73

    I'm not proficient with Go, so I don't know if this is wise or not, but I figured I'd submit it back

    opened by sc68cal 11
  • Add command ignite cp

    Add command ignite cp

    This implements cp command on top of #495 .

    Implements bidirectional copy from host to VM and VM to host using sftp. The copy command syntax is similar to docker cp with source and destination that can have VM reference name or ID separated by a filepath using ":". VM reference in copy source means to copy from VM to host and VM reference in copy destination means to copy from host to VM.

    Example usage:

    $ ignite cp localfile.txt my-vm:remotefile.txt
    $ ignite cp my-vm:remotefile.txt localfile.txt
    

    File permissions and owners are also applied to the copied files. Symlinks are followed and the destination files are copied.

    Fixes #419

    opened by darkowlzz 10
  • Upgrade kernel versions

    Upgrade kernel versions

    • Upgrade from kernel 4.14.182 to 4.14.223
    • Upgrade from kernel 4.19.125 to 4.19.178
    • Upgrade from kernel 5.4.43 to 5.4.102

    Source: https://www.kernel.org/

    • Note: Versions as of 2021-03-04

    • Future proposal: Instead of pinned patch versions, determine the latest patch version via CI. Add a scheduled github workflow that downloads the latest patch versions on a weekly basis.

    area/kernels 
    opened by gaby 9
  • Multi host ignite VMs networking based on WeaveNet not working as expected (reopening issue #628)

    Multi host ignite VMs networking based on WeaveNet not working as expected (reopening issue #628)

    Hello WeaveWorks team,

    I am reopening issue #628, the applied fix did make things slightly better but it did not fix the underlying issue. Two Hosts, on both I run the WeaveWorks CNI docker image as described in issue #628. I then installed ignite on both hosts and started a Ignite VM on each host with the flag --network-plugin cni respectively. On each host, the output of ifconfig is (I filtered out the other network interfaces that are not relevant to this issue):

    ignite0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu 1500
            inet 10.61.0.1  netmask 255.255.0.0  broadcast 10.61.255.255
            inet6 fe80::dca5:f0ff:fed9:7481  prefixlen 64  scopeid 0x20<link>
            ether de:a5:f0:d9:74:81  txqueuelen 1000  (Ethernet)
            RX packets 189  bytes 17839 (17.8 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 201  bytes 20068 (20.0 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    vethd0e92add: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet6 fe80::14e9:28ff:fed4:5cda  prefixlen 64  scopeid 0x20<link>
            ether 16:e9:28:d4:5c:da  txqueuelen 0  (Ethernet)
            RX packets 189  bytes 20485 (20.4 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 230  bytes 23476 (23.4 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    vethwe-bridge: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1376
            inet6 fe80::ac38:4ff:feac:c4f3  prefixlen 64  scopeid 0x20<link>
            ether ae:38:04:ac:c4:f3  txqueuelen 0  (Ethernet)
            RX packets 196  bytes 22470 (22.4 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 92  bytes 10557 (10.5 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    vethwe-datapath: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1376
            inet6 fe80::f8ae:8eff:feef:6077  prefixlen 64  scopeid 0x20<link>
            ether fa:ae:8e:ef:60:77  txqueuelen 0  (Ethernet)
            RX packets 92  bytes 10557 (10.5 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 196  bytes 22470 (22.4 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    vxlan-6784: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 65535
            inet6 fe80::f067:50ff:fe4f:45f8  prefixlen 64  scopeid 0x20<link>
            ether f2:67:50:4f:45:f8  txqueuelen 1000  (Ethernet)
            RX packets 240  bytes 163152 (163.1 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 174  bytes 155592 (155.5 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    weave: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1376
            inet 10.32.0.1  netmask 255.240.0.0  broadcast 10.47.255.255
            inet6 fe80::7cb0:f6ff:fe9e:1b0e  prefixlen 64  scopeid 0x20<link>
            ether 7e:b0:f6:9e:1b:0e  txqueuelen 1000  (Ethernet)
            RX packets 195  bytes 19650 (19.6 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 59  bytes 6808 (6.8 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    

    and

    ignite0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu 1500
            inet 10.61.0.1  netmask 255.255.0.0  broadcast 10.61.255.255
            inet6 fe80::d8aa:29ff:fe1c:2e35  prefixlen 64  scopeid 0x20<link>
            ether da:aa:29:1c:2e:35  txqueuelen 1000  (Ethernet)
            RX packets 294  bytes 28890 (28.8 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 300  bytes 33022 (33.0 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 552  bytes 48676 (48.6 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 552  bytes 48676 (48.6 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    veth5cf312db: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet6 fe80::39:f3ff:fe5e:2075  prefixlen 64  scopeid 0x20<link>
            ether 02:39:f3:5e:20:75  txqueuelen 0  (Ethernet)
            RX packets 294  bytes 33006 (33.0 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 330  bytes 36565 (36.5 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    vethwe-bridge: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1376
            inet6 fe80::d47a:82ff:fe1e:5807  prefixlen 64  scopeid 0x20<link>
            ether d6:7a:82:1e:58:07  txqueuelen 0  (Ethernet)
            RX packets 149  bytes 15746 (15.7 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 111  bytes 12216 (12.2 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    vethwe-datapath: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1376
            inet6 fe80::88f:cbff:fe49:a42b  prefixlen 64  scopeid 0x20<link>
            ether 0a:8f:cb:49:a4:2b  txqueuelen 0  (Ethernet)
            RX packets 111  bytes 12216 (12.2 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 149  bytes 15746 (15.7 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    vxlan-6784: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 65535
            inet6 fe80::a41b:37ff:fe63:e69e  prefixlen 64  scopeid 0x20<link>
            ether a6:1b:37:63:e6:9e  txqueuelen 1000  (Ethernet)
            RX packets 304  bytes 317620 (317.6 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 371  bytes 325090 (325.0 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    weave: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1376
            inet 10.40.0.0  netmask 255.240.0.0  broadcast 10.47.255.255
            inet6 fe80::d0e2:beff:fe0c:6c35  prefixlen 64  scopeid 0x20<link>
            ether d2:e2:be:0c:6c:35  txqueuelen 1000  (Ethernet)
            RX packets 148  bytes 13584 (13.5 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 77  bytes 8348 (8.3 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    

    I can ping 10.40.0.0 from 10.32.0.1 and vise versa, this tells me that WeaveWorks CNI is working as expected. But when I SSH into each VM, they both have the same output for ifconfig:

    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 10.61.0.2  netmask 255.255.0.0  broadcast 10.61.255.255
            inet6 fe80::3804:88ff:fec8:a6ef  prefixlen 64  scopeid 0x20<link>
            ether 3a:04:88:c8:a6:ef  txqueuelen 1000  (Ethernet)
            RX packets 303  bytes 34991 (34.9 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 215  bytes 25732 (25.7 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    

    As you can see, they both have the same IP on the WeaveWorks CNI network (obviously not what was expected), rather than each having a dedicated IP. There is no more hanging or delay, so that issue is gone now, but I still cant do multi host Ignite VM networking using WeaveNet CNI. I also removed the file /etc/cni/net.d/10-ignite.conflist before running the ignite run command. The content of the newly created /etc/cni/net.d/10-ignite.conflist file is:

    {
    	"cniVersion": "0.4.0",
    	"name": "ignite-cni-bridge",
    	"plugins": [
    		{
    			"type": "bridge",
    			"bridge": "ignite0",
    			"isGateway": true,
    			"isDefaultGateway": true,
    			"promiscMode": true,
    			"ipMasq": true,
    			"ipam": {
    				"type": "host-local",
    				"subnet": "10.61.0.0/16"
    			}
    		},
    		{
    			"type": "portmap",
    			"capabilities": {
    				"portMappings": true
    			}
    		},
    		{
    			"type": "firewall"
    		}
    	]
    }
    

    Or the documentation is lacking some instructions here, or there is a bug somewhere. Could someone please have a look and help me solve this issue please?

    Thanks

    kind/support area/networking 
    opened by mdundek 9
  • Incorrect privileges on image root

    Incorrect privileges on image root

    When running a VM with the weaveworks/ignite-ubuntu:latest image I ran into problems starting the systemd-resolved service (which is expected by kubeadm, at least when using kubespray). It turns out that this problem was caused by the non-root systemd-resolve user not being able to access the sytemd-resolved binary.

    It turns out that this is because of incorrect privileges on the image's root directory:

    [email protected]:~# ls -la /
    total 36
    drwx------ 22 root root  1024 Jul 26 11:00 .
    

    A normal Linux system has drwxr-xr-x (0755) for /. Both the Ubuntu and CentOS images have this problem.

    kind/bug contributor-assigned priority/important-soon 
    opened by praseodym 9
  • Container ID outputted at `start` time confusing on the first pull

    Container ID outputted at `start` time confusing on the first pull

    I may be doing something wrong?

    [email protected]:~$ sudo kvm-ok
    INFO: /dev/kvm exists
    KVM acceleration can be used
    [email protected]:~$ sudo ignite run weaveworks/ignite-ubuntu --cpus 2 --memory 1024 --ssh --name my-vm
    can't find kernel: no ID/name matches for "weaveworks/ignite-ubuntu"
    [email protected]:~$ 
    
    [email protected]:~$ cat /etc/os-release 
    NAME="Ubuntu"
    VERSION="18.04.2 LTS (Bionic Beaver)"
    
    opened by alexellis 9
  • make tidy should run in a container by default

    make tidy should run in a container by default

    make tidy currently runs directly on your host relying on the tools and their respective versions. While there is make tidy-in-docker, it is not documented. Let's either replace make tidy in the documentation with make-tidy-docker or change the functionality of make tidy to be containerized.

    good first issue 
    opened by teaguecole 8
  • VM doesn't start up (or shuts down immediately), timeout waiting for ignite-spawn startup

    VM doesn't start up (or shuts down immediately), timeout waiting for ignite-spawn startup

    I'm trying to run an ignite VM on my dedicated server. I've followed the guide on https://ignite.readthedocs.io/en/stable/installation/.

    $ lscpu | grep Virtualization
    Virtualization:                  AMD-V
    $ lsmod | grep kvm
    kvm_amd               118784  0
    kvm                   864256  1 kvm_amd
    ccp                    98304  1 kvm_amd
    $ uname -a
    Linux dds-f73a0 5.13.0-51-generic #58~20.04.1-Ubuntu SMP Tue Jun 14 11:29:12 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
    $ sudo ignite version
    Ignite version: version.Info{Major:"0", Minor:"10", GitVersion:"v0.10.0", GitCommit:"4540abeb9ba6daba32a72ef2b799095c71ebacb0", GitTreeState:"clean", BuildDate:"2021-07-19T20:52:59Z", GoVersion:"go1.16.3", Compiler:"gc", Platform:"linux/amd64", SandboxImage:version.Image{Name:"weaveworks/ignite", Tag:"v0.10.0", Delimeter:":"}, KernelImage:version.Image{Name:"weaveworks/ignite-kernel", Tag:"5.10.51", Delimeter:":"}}
    Firecracker version: v0.22.4
    $ sudo docker version
    Client:
     Version:           20.10.12
     API version:       1.41
     Go version:        go1.16.2
     Git commit:        20.10.12-0ubuntu2~20.04.1
     Built:             Wed Apr  6 02:14:38 2022
     OS/Arch:           linux/amd64
     Context:           default
     Experimental:      true
    
    Server:
     Engine:
      Version:          20.10.12
      API version:      1.41 (minimum version 1.12)
      Go version:       go1.16.2
      Git commit:       20.10.12-0ubuntu2~20.04.1
      Built:            Thu Feb 10 15:03:35 2022
      OS/Arch:          linux/amd64
      Experimental:     false
     containerd:
      Version:          1.5.9-0ubuntu1~20.04.4
      GitCommit:
     runc:
      Version:          1.1.0-0ubuntu1~20.04.1
      GitCommit:
     docker-init:
      Version:          0.19.0
      GitCommit:
    $ find /opt/cni/
    /opt/cni/
    /opt/cni/bin
    /opt/cni/bin/host-device
    ...
    

    The only thing that appears off to me here is that ignite version does not show a line with the Runtime.

    Observed behavior

    In one session:

    sudo ignited daemon --log-level debug runtime docker
    DEBU[0000] Using ignite default configurations
    INFO[0000] Starting reconciliation loop...
    

    In a parallel session:

    $ sudo ignite run weaveworks/ignite-ubuntu
    INFO[0001] Created VM with ID "88bfb38dc1a1f917" and name "hidden-river"
    INFO[0001] Networking is handled by "cni"
    INFO[0001] Started Firecracker VM "88bfb38dc1a1f917" in a container with ID "ignite-88bfb38dc1a1f917"
    FATA[0121] timeout waiting for ignite-spawn startup
    $ sudo ignite ps -a
    VM ID                   IMAGE                           KERNEL                                  SIZE    CPUS    MEMORY          CREATED         STATUS  IPS     PORTS   NAME
    88bfb38dc1a1f917        weaveworks/ignite-ubuntu:latest weaveworks/ignite-kernel:5.10.51        4.0 GB  1       512.0 MB        2m23s ago       Stopped                 hidden-river
    

    There is no output from the ignited daemon while trying to start a VM with ignite. But a containerd process is started and it stays up, even after I remove the VM with ignite rm.

    $ sudo ps -aux | grep ignite
    [ ... ]
    root       13046  0.0  0.0 114172  8908 ?        Sl   19:41   0:00 /usr/bin/containerd-shim-runc-v2 -namespace firecracker -id ignite-88bfb38dc1a1f917 -address /run/containerd/containerd.sock
    

    What could be wrong?

    Thanks for your help.

    opened by NiklasRosenstein 0
  • add parameter judgment for

    add parameter judgment for "--cpus num"

    add parameter judgment for "--cpus num". When num does not meet the conditions (1 or even numbers between 1 and 32), you need to report an error and do not create a virtual machine

    opened by slark-yuxj 0
  • Bump actions/setup-python from 3.1.0 to 4.0.0

    Bump actions/setup-python from 3.1.0 to 4.0.0

    Bumps actions/setup-python from 3.1.0 to 4.0.0.

    Release notes

    Sourced from actions/setup-python's releases.

    v4.0.0

    What's Changed

    • Support for python-version-file input: #336

    Example of usage:

    - uses: actions/[email protected]
      with:
        python-version-file: '.python-version' # Read python version from a file
    - run: python my_script.py
    

    There is no default python version for this setup-python major version, the action requires to specify either python-version input or python-version-file input. If the python-version input is not specified the action will try to read required version from file from python-version-file input.

    • Use pypyX.Y for PyPy python-version input: #349

    Example of usage:

    - uses: actions/[email protected]
      with:
        python-version: 'pypy3.9' # pypy-X.Y kept for backward compatibility
    - run: python my_script.py
    
    • RUNNER_TOOL_CACHE environment variable is equal AGENT_TOOLSDIRECTORY: #338

    • Bugfix: create missing pypyX.Y symlinks: #347

    • PKG_CONFIG_PATH environment variable: #400

    • Added python-path output: #405 python-path output contains Python executable path.

    • Updated zeit/ncc to vercel/ncc package: #393

    • Bugfix: fixed output for prerelease version of poetry: #409

    • Made pythonLocation environment variable consistent for Python and PyPy: #418

    • Bugfix for 3.x-dev syntax: #417

    • Other improvements: #318 #396 #384 #387 #388

    Update actions/cache version to 2.0.2

    In scope of this release we updated actions/cache package as the new version contains fixes related to GHES 3.5 (actions/setup-python#382)

    Add "cache-hit" output and fix "python-version" output for PyPy

    This release introduces new output cache-hit (actions/setup-python#373) and fix python-version output for PyPy (actions/setup-python#365)

    The cache-hit output contains boolean value indicating that an exact match was found for the key. It shows that the action uses already existing cache or not. The output is available only if cache is enabled.

    ... (truncated)

    Commits
    • d09bd5e fix: 3.x-dev can install a 3.y version (#417)
    • f72db17 Made env.var pythonLocation consistent for Python and PyPy (#418)
    • 53e1529 add support for python-version-file (#336)
    • 3f82819 Fix output for prerelease version of poetry (#409)
    • 397252c Update zeit/ncc to vercel/ncc (#393)
    • de977ad Merge pull request #412 from vsafonkin/v-vsafonkin/fix-poetry-cache-test
    • 22c6af9 Change PyPy version to rebuild cache
    • 081a3cf Merge pull request #405 from mayeut/interpreter-path
    • ff70656 feature: add a python-path output
    • fff15a2 Use pypyX.Y for PyPy python-version input (#349)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
  • add wait check for task.Kill(cc.ctx, syscall.SIGQUIT)

    add wait check for task.Kill(cc.ctx, syscall.SIGQUIT)

    when stop the container timeout,ignite will kill the container's task by syscall and delete the killed task. In practice,kill task will takes a little time to finish (maybe a few hundred milliseconds), but delete func does not wait for the kill task to complete. It immediately starts checking that the container's task is not running and tries to delete it. but now,before kill task has completed , the container's task is still running. Therefore, the delete function cannot successfully delete the container.even after a few hundred milliseconds, the container has stopped

    opened by Giles2000 0
Releases(v0.10.0)
  • v0.10.0(Jul 19, 2021)

    Released: 7/19/2021

    This release adds two major features and a new API version. VM annotations can be used to tell ignite another system will inject interfaces into the sandbox container's net-namespace. These annotations will also tell ignite to plumb those sandbox interfaces to the firecracker MicroVM using tc_redirect. (code example)

    kind: VM
    apiVersion: ignite.weave.works/v1alpha4
    metadata:
      annotations:
        ignite.weave.works/interface/eth0: 'dhcp-bridge'
        ignite.weave.works/interface/eth2: 'tc-redirect'
        ignite.weave.works/interface/eth3: 'tc-redirect'
        ignite.weave.works/interface/macvtap-uvnrt: 'macvtap'
        ignite.weave.works/interface/macvtap-hgfeq: 'macvtap'
        ignite.weave.works/sandbox-env/FIRECRACKER_GO_SDK_REQUEST_TIMEOUT_MILLISECONDS: "1000"
        ignite.weave.works/sandbox-env/FIRECRACKER_GO_SDK_INIT_TIMEOUT_SECONDS: "1"
    

    It's now possible to use OS and kernel images from an authenticated private registry. Interface bonding is also enabled in the newest ignite kernels.

    New base OS images and kernels have been released with the GitHub Actions release tools. The default kernel has been updated from 5.4.108 to 5.10.51.

    This release consists of 12 noteworthy PR's from 4 contributors. 4 of these patches were sent by 2 external contributors. Thanks so much for using and contributing back to the project.

    Cheers to everyone who was part of shipping this release:

    • @darkowlzz
    • @juozasg
    • @networkop
    • @stealthybox

    Installing

    Check out the guide here: https://ignite.rtfd.io/en/stable/installation/

    OCI Images for this release

    ignite ( sandbox )

    ignite-kernel:4.14.239 [multi-arch]
    ignite-kernel:4.19.197 [multi-arch]
    ignite-kernel:5.4.133 [multi-arch]
    ignite-kernel:5.10.51 [multi-arch] ( default )
    ignite-kernel:5.12.18 [multi-arch]
    ignite-kernel:5.13.3 [multi-arch]

    ignite-amazon-kernel
    ignite-amazonlinux 2
    ignite-alpine
    ignite-centos 7, 8
    ignite-opensuse tumbleweed, leap (⚠️ Build is broken! #859)
    ignite-ubuntu [multi-arch] 16.04, 18.04, 20.04
    ignite-kubeadm [multi-arch] v1.18.3
    ignite-k3s v1.20.4


    Features

    Bug Fixes

    • Ignore not found error while deactivating snapshot (#823, darkowlzz)
    • SIGSEGV with metadata from older version of ignite (#854, juozasg)

    Kernel

    Docs

    Dependencies

    Automated

    Source code(tar.gz)
    Source code(zip)
    ignite-amd64(37.05 MB)
    ignite-arm64(30.24 MB)
    ignited-amd64(42.50 MB)
    ignited-arm64(34.46 MB)
  • v0.9.0(Apr 12, 2021)

    Released: 4/12/2021

    This release allows changing the internal id prefixes of VM components. This overcomes limitations /w CNI's like Weave net. A U/X improvement has been made to the VM list command to show when the container runtime state of the VM does not match what ignite has stored in the API objet.

    New base OS images and kernels have been released with the GitHub Actions release tools. A k3s OS image is now pushed for amd64. The default kernel has been updated to 5.4.108.

    This release consists of 37 noteworthy PR's from 6 contributors. 11 of these patches were sent by 3 external contributors. 11 patches were sent by 3 people new to the project; welcome! :) Thanks so much for using and contributing back to the project.

    Cheers to everyone who was part of shipping this release:

    • @bboreham
    • @darkowlzz
    • @EmeraldShift
    • @gaby
    • @onatm
    • @stealthybox

    Installing

    Check out the guide here: https://ignite.rtfd.io/en/stable/installation/

    OCI Images for this release

    ignite ( sandbox )

    ignite-kernel:4.14.227 [multi-arch] ignite-kernel:4.19.183 [multi-arch] ignite-kernel:5.4.108 [multi-arch] ( default ) ignite-kernel:5.10.25 [multi-arch]

    ignite-amazon-kernel
    ignite-amazonlinux 2
    ignite-alpine
    ignite-centos 7, 8
    ignite-opensuse tumbleweed, leap
    ignite-ubuntu [multi-arch] 16.04, 18.04, 20.04
    ignite-kubeadm [multi-arch] v1.18.3
    ignite-k3s v1.20.4


    Enhancements

    Runtime

    • Change the log level in RemoveContainer to debug (#812, darkowlzz)
    • runtime: Get containerd container task status (#779, darkowlzz)
    • Fix containerd cont delete when task load or delete fails (#791, stealthybox)
    • Avoid race between stop/kill and wait (#773, bboreham)

    Bug Fixes

    • runtime: Handle error when container not found (#809, darkowlzz)
    • Handle error when the backend storage is uninitialized (#807, darkowlzz)
    • ps: Handle error when the backend storage is uninitialized (#778, darkowlzz)
    • Use declarative port mappings and copy files values when CLI flags are empty (#796, onatm)
    • Fix vm stop-start with default providers (#735, darkowlzz)
    • Avoid crash when network has no gateway (#749, bboreham)
    • Refactor: extract TarExtract function (#762, bboreham)

    Docs

    OS Images

    Kernels

    • Support for Linux LTS kernel 5.10.x (#804, gaby)
    • Upgrade kernel versions (#798, gaby)
    • Bump default kernel to 5.4.102 (#806, gaby)
    • Bump Kernel versions. Bump default kernel version to 5.4.108 (#811, gaby)
    • Bump Kernel Versions for #811 (#815, stealthybox)

    Dependencies

    Build

    Testing

    Releasing

    Automated

    Source code(tar.gz)
    Source code(zip)
    ignite-amd64(34.72 MB)
    ignite-arm64(29.70 MB)
    ignited-amd64(40.43 MB)
    ignited-arm64(34.40 MB)
  • v0.8.0(Nov 9, 2020)

    v0.8.0

    Released: 11/9/2020

    We're happy to share that ignite can now be generally configured with a central config file. Check out the docs for how to configure ignite here.

    Using this new config, it's no longer necessary to remember to pass --runtime and --network-plugin with every command. You can choose your own default behavior.

    Working with individual VM's is now also much less error-prone. This release includes a new API version, v1alpha3, which allows VM's to remember their runtime and network config.

    There's no current tooling for migrating to the new VM API for live workloads. However, older API objects are forwards compatible, and restarting the workload should upgrade the API on disk. As always, taking any necessary backups and re-creating workloads is the safest upgrade path :)

    As is tradition, we have fixed bugs: networking bugs, lifecycle bugs, little UX things -- check the list.

    It's now possible to run ignite within nested container environements such as containerd-within-docker and WSL2. Detailed documentation for containerized setups will graduate from issue comments to the latest docs site soon.

    It's really notable that our e2e test suite is getting more complete! It's great to work with a project where confidence improves with every new patch, haha!

    Alongside this release, we've updated all of the base OS images with new release tools powered by GitHub Actions. We're not shipping any new kernels, so the default is the same as before -- new kernels will be pushed in an upcoming release.

    This release consists of 52 noteworthy PR's from 10 contributors. 37 of these patches were sent by 6 external contributors. 7 patches were sent by 5 people new to the project; welcome! :) Thanks so much for using and contributing back to the project.

    Cheers to everyone who was part of shipping this release:

    • @darkowlzz
    • @dholbach
    • @gabeio
    • @innobead
    • @Khalian
    • @leakingtapan
    • @luxas
    • @networkop
    • @stealthybox
    • @twelho

    Installing

    Check out the guide here: https://ignite.rtfd.io/en/stable/installation/

    OCI Images for this release

    ignite ( sandbox )

    ignite-amazon-kernel
    ignite-amazonlinux 2
    ignite-alpine
    ignite-centos 7, 8
    ignite-opensuse tumbleweed, leap
    ignite-ubuntu [multi-arch] 16.04, 18.04, 20.04
    ignite-kubeadm [multi-arch] v1.18.3


    Features

    Enhancements

    • Update ignite help, image and kernel to no longer require root (#676, Khalian)
    • Build kernel from a specific git tag (#725, darkowlzz)
    • Shadow the bogus /etc/resolv.conf of centos:8 to fix wksctl (#611, twelho)
    • Make runtime and network-plugin VM create flags (#669, darkowlzz)
    • Fix in-container device nodes for containerd runtime (#653, stealthybox)
    • Exec blkid to getUUID() instead of relying on udevd symlinks (#652, stealthybox)
    • Configure dmsetup to fallback to managing device nodes without udevd (#654, stealthybox)

    Documentation

    Bug Fixes

    API Changes

    Cleanup

    Testing

    Release Infra

    Dependencies

    • Use the new libgitops GitDirectory implementation (#615, luxas)
    • Use the new knownhosts package in fluxcd/toolkit (#617, luxas)
    • Rename the gitops-toolkit dependency to libgitops (#612, twelho)

    Automated

    Governance

    Source code(tar.gz)
    Source code(zip)
    ignite-amd64(34.66 MB)
    ignite-arm64(29.63 MB)
    ignited-amd64(40.40 MB)
    ignited-arm64(34.40 MB)
  • v0.7.1(Jul 13, 2020)

    The first patch release in the v0.7.X series pulls in an important fix for the long-standing networking issues in Ignite, with #638 merged you should be able to seamlessly integrate with different CNI providers and implement multi-node networking with Ignite VMs.

    v0.7.1 also brings improvements to the GitOps functionality courtesy of @luxas and link checking improvements by @dholbach. Thanks!

    Next Steps / Installation

    In short:

    export VERSION=v0.7.1
    export GOARCH=$(go env GOARCH 2>/dev/null || echo "amd64")
    
    for binary in ignite ignited; do
        echo "Installing ${binary}..."
        curl -sfLo ${binary} https://github.com/weaveworks/ignite/releases/download/${VERSION}/${binary}-${GOARCH}
        chmod +x ${binary}
        sudo mv ${binary} /usr/local/bin
    done
    
    export CNI_VERSION=v0.8.5
    export ARCH=$([ $(uname -m) = "x86_64" ] && echo amd64 || echo arm64)
    sudo mkdir -p /opt/cni/bin
    curl -sSL https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-${ARCH}-${CNI_VERSION}.tgz | sudo tar -xz -C /opt/cni/bin
    

    A more thorough installation guide is available here: https://ignite.readthedocs.io/en/latest/installation

    OCI Images for this release

    ignite (sandbox)

    Enhancements

    • Shadow the bogus /etc/resolv.conf of centos:8 to fix wksctl (#611, @twelho)
    • Rename the gitops-toolkit dependency to libgitops (#612, @twelho)
    • Use the new knownhosts package in fluxcd/toolkit (#617, @luxas)
    • Use the new libgitops GitDirectory implementation (#615, @luxas)

    Bug Fixes

    • Fix CNI networking issues (MAC duplication + bridge ageing) (#638, @twelho)

    Documentation

    Source code(tar.gz)
    Source code(zip)
    ignite-amd64(34.55 MB)
    ignite-arm64(29.56 MB)
    ignited-amd64(40.30 MB)
    ignited-arm64(34.39 MB)
  • v0.7.0(Jun 3, 2020)

    v0.7.0

    Released: 02/06/2020

    We're excited to cut a large release. This release consists of 57 noteworthy PR's from 13 contributors. 27 of these patches were sent by 8 external contributors -- thanks so much for using and contributing back to the project!

    Among some of the many patches, VM's can now be started in parallel. (Images should be pulled beforehand) The ignite ssh and ignite exec commands now share a native go implementation. We've added the ignite cp command along with improved CLI UX through filtering, templating, and examples. You can now also create and run VM's imperatively using YAML files with the --config flags.

    Performance and stability improvements in VM and network lifecycle should make using ignite more pleasant, and the various bugfixes allow newer versions of Ubuntu to start functioning.

    Lastly, we're announcing initial support for ARM devices. Our docker images for ignite-kernels as well os our OS images for Ubuntu and kubeadm now ship with a manifest list and {}-arm64 tag. We've pushed a fresh set of kernel and OS images to dockerhub to support this. Check out our new guide for ARM -- try it out on your ARM server or RaspberryPi and let us know how it works for you.

    It was difficult to condense all of that!

    As a special note, Sunny(@darkowlzz) from the @StorageOS team has joined ignite as a maintainer. Thanks for all of your help, Sunny!

    Cheers to everyone who was part of shipping this release:

    • @bbros-dev
    • @chanwit
    • @croomes
    • @darkowlzz
    • @dholbach
    • @gpauloski
    • @kobayashi
    • @luxas
    • @michaelbeaumont
    • @najeal
    • @palemtnrider
    • @PaulGrandperrin
    • @stealthybox

    Next Steps / Installation

    In short:

    export VERSION=v0.7.0
    export GOARCH=$(go env GOARCH 2>/dev/null || echo "amd64")
    
    for binary in ignite ignited; do
        echo "Installing ${binary}..."
        curl -sfLo ${binary} https://github.com/weaveworks/ignite/releases/download/${VERSION}/${binary}-${GOARCH}
        chmod +x ${binary}
        sudo mv ${binary} /usr/local/bin
    done
    
    export CNI_VERSION=v0.8.5
    export ARCH=$([ $(uname -m) = "x86_64" ] && echo amd64 || echo arm64)
    sudo mkdir -p /opt/cni/bin
    curl -sSL https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-${ARCH}-${CNI_VERSION}.tgz | sudo tar -xz -C /opt/cni/bin
    
    

    A more thorough installation guide is available here: https://ignite.readthedocs.io/en/latest/installation

    OCI Images for this release

    ignite ( sandbox )

    ignite-kernel:4.14.182 [multi-arch] ignite-kernel:4.19.125 [multi-arch] ( default ) ignite-kernel:5.4.43 [multi-arch]

    ignite-amazon-kernel ignite-amazonlinux 2 ignite-alpine ignite-centos 7, 8 ignite-opensuse tumbleweed, leap ignite-ubuntu [multi-arch] 16.04, 18.04, 20.04 ignite-kubeadm [multi-arch] v1.18.3


    Enhancements

    Kernel Improvements

    Bug Fixes

    Documentation

    Dependencies

    • Workaround firecracker-go-sdk go.mod issue using new commit (#582, @stealthybox)
    • Bump QEMU version to v4.2, Alpine to 3.11 and fix a bug (#579, @luxas)
    • Upgrade to Go 1.14 (#576, @luxas)

    Development

    Testing

    Governance

    Source code(tar.gz)
    Source code(zip)
    ignite-amd64(34.26 MB)
    ignite-arm64(29.27 MB)
    ignited-amd64(35.26 MB)
    ignited-arm64(30.11 MB)
  • v0.6.3(Dec 10, 2019)

    v0.6.3

    Released: 10/12/2019

    This is the third patch release in the v0.6.x series, containing 1 security bug fix.

    See #500 for ignite-specific details regarding this CVE.

    Security Bug Fixes

    • Patch CVE-2019-18960 -- Use Firecracker v0.18.1 for ignite 0.6.x (#499, @stealthybox)

    Trying it out / Next Steps!

    In short:

    export VERSION=v0.6.3
    export GOARCH=$(go env GOARCH 2>/dev/null || echo "amd64")
    
    for binary in ignite ignited; do
        echo "Installing ${binary}..."
        curl -sfLo ${binary} https://github.com/weaveworks/ignite/releases/download/${VERSION}/${binary}-${GOARCH}
        chmod +x ${binary}
        sudo mv ${binary} /usr/local/bin
    done
    
    export CNI_VERSION=v0.8.2
    export ARCH=$([ $(uname -m) = "x86_64" ] && echo amd64 || echo arm64)
    mkdir -p /opt/cni/bin
    curl -sSL https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-${ARCH}-${CNI_VERSION}.tgz | tar -xz -C /opt/cni/bin
    
    

    A more throughout installation guide is available here: https://ignite.readthedocs.io/en/latest/installation.html


    OCI images for this release

    Source code(tar.gz)
    Source code(zip)
    ignite-amd64(35.03 MB)
    ignite-arm64(30.23 MB)
    ignited-amd64(36.68 MB)
    ignited-arm64(31.57 MB)
  • v0.6.2(Oct 8, 2019)

    This is the second patch release in the v0.6.X series, containing bugfixes: It moves the blocking SSH wait for vm's run with --ssh to using the actual protocol. It also fixes a locale bug with resize2fs parsing that used to occur when using zh_CN.utf8.

    Bug Fixes

    Documentation

    Trying it out / Next Steps!

    In short:

    export VERSION=v0.6.2
    export GOARCH=$(go env GOARCH 2>/dev/null || echo "amd64")
    
    for binary in ignite ignited; do
        echo "Installing ${binary}..."
        curl -sfLo ${binary} https://github.com/weaveworks/ignite/releases/download/${VERSION}/${binary}-${GOARCH}
        chmod +x ${binary}
        sudo mv ${binary} /usr/local/bin
    done
    

    A more throughout installation guide is available here: https://ignite.readthedocs.io/en/latest/installation.html


    OCI images for this release

    Source code(tar.gz)
    Source code(zip)
  • v0.5.5(Oct 8, 2019)

    This is the fifth patch release in the v0.5.X series, containing bugfixes: It moves the blocking SSH wait for vm's run with --ssh to using the actual protocol. It also fixes a locale bug with resize2fs parsing that used to occur when using zh_CN.utf8.

    Bug Fixes

    Documentation

    Trying it out / Next Steps!

    In short:

    export VERSION=v0.5.5
    export GOARCH=$(go env GOARCH 2>/dev/null || echo "amd64")
    
    for binary in ignite ignited; do
        echo "Installing ${binary}..."
        curl -sfLo ${binary} https://github.com/weaveworks/ignite/releases/download/${VERSION}/${binary}-${GOARCH}
        chmod +x ${binary}
        sudo mv ${binary} /usr/local/bin
    done
    

    A more throughout installation guide is available here: https://ignite.readthedocs.io/en/latest/installation.html


    OCI images for this release

    Source code(tar.gz)
    Source code(zip)
    ignite-amd64(21.64 MB)
    ignite-arm64(20.85 MB)
    ignited-amd64(22.87 MB)
    ignited-arm64(21.92 MB)
  • v0.6.1(Oct 2, 2019)

    We're excited to release v0.6.1 with usability improvements and lots of bug fixes :)

    This release consists of 32 noteworthy PRs from 6 contributors over the past month.
    We had 7 contributions from 4 external contributors. Thanks so much!

    Ignite should now work with most installations of containerd -- even those that are installed underneath upstream docker.
    Care has been taken with our installation instructions to ensure we are not breaking users docker installations.
    We've also implemented a graceful fallback to older containerd-shim versions and now support containerd-shim-runc-v2.

    This release also contains numerous fixes that make the CNI network plugin work much more reliably.
    Connections to the internet from vm's using CNI should now work on most machines by default.
    Please see the following user-facing change.

    Default CNI Network Change

    The default cni0 bridge has changed to a new ignite0 bridge introduced by the #460 bugfix. This comes with a new subnet as well.
    We did this because the default CNI config shipped in v0.6.0 was a non-working configuration for most users.
    You may continue to use the default CNI configuration. Nothing will change automatically.

    If you are using your own CNI configuration, this does not affect you.

    To migrate your running CNI networked vm's to the new default subnet, you can:

    1. install this new ignite version
    2. stop the relevant vm's
    3. delete the CNI network
    4. restart them

    Example:

    # first, upgrade to ignite v0.6.1
    
    # list all vm's on the default 172.18.0.0/16 CNI network
    sudo bin/ignite vm ls | grep '\b172.18.[0-9][0-9]*.[0-9][0-9]*\b'
    # stop the listed vm's with the appropriate runtime
    sudo bin/ignite stop my-containerd-vm
    sudo bin/ignite stop my-docker-vm --runtime docker
    
    # remove the old CNI network config
    sudo rm -rf rm /etc/cni/net.d/
    # optional: remove the old bridge
    sudo ifconfig cni0 down
    sudo ip link delete cni0
    
    # restart your vm's
    sudo bin/ignite start my-containerd-vm
    sudo bin/ignite start my-docker-vm --runtime docker
    # Your vm's will now have addresses configured in the 10.61.0.0/16 subnet.
    # If they did not have internet connectivity before, they now should.
    

    Enhancements

    Bug Fixes

    • Change default CNI network name, bridge name, and subnet #460, @stealthybox
    • Chain firewall plugin to fix routing for default CNI bridge #442, @stealthybox
    • Teardown IPMasq rules for all actual configured bridges instead of using the hardcoded default string (#461, @stealthybox)
    • Fix containerd resolv.conf + DHCP behavior (#441, @stealthybox)
    • Make getIPChains more precise and less failure-prone (#426, @stealthybox)
    • quick fix typo umount as unmount in preflight check (#415, @chanwit)
    • fix possible dm snapshot leaks (#381, @chanwit)
    • make rm command more robust with addition check (#413, @chanwit)

    Documentation

    Dependencies

    Development

    Governance

    Trying it out / Next Steps!

    In short:

    export VERSION=v0.6.1
    export GOARCH=$(go env GOARCH 2>/dev/null || echo "amd64")
    
    for binary in ignite ignited; do
        echo "Installing ${binary}..."
        curl -sfLo ${binary} https://github.com/weaveworks/ignite/releases/download/${VERSION}/${binary}-${GOARCH}
        chmod +x ${binary}
        sudo mv ${binary} /usr/local/bin
    done
    

    A more throughout installation guide is available here: https://ignite.readthedocs.io/en/latest/installation.html


    OCI images for this release

    Source code(tar.gz)
    Source code(zip)
  • v0.5.4(Sep 24, 2019)

    This is the fourth patch release in the v0.5.X series, containing one enhancement that implements the blocking SSH wait for vm's run with --ssh.

    Enhancements

    Release Machinery

    • 0.5.x -- On release, use tidy-in-docker to prevent module differences from differing versions of go (#434, @stealthybox)

    Trying it out / Next Steps!

    In short:

    export VERSION=v0.5.4
    export GOARCH=$(go env GOARCH 2>/dev/null || echo "amd64")
    
    for binary in ignite ignited; do
        echo "Installing ${binary}..."
        curl -sfLo ${binary} https://github.com/weaveworks/ignite/releases/download/${VERSION}/${binary}-${GOARCH}
        chmod +x ${binary}
        sudo mv ${binary} /usr/local/bin
    done
    

    A more throughout installation guide is available here: https://ignite.readthedocs.io/en/latest/installation.html


    OCI images for this release

    Source code(tar.gz)
    Source code(zip)
    ignite-amd64(21.62 MB)
    ignite-arm64(20.78 MB)
    ignited-amd64(22.86 MB)
    ignited-arm64(21.92 MB)
  • v0.5.3(Sep 16, 2019)

    This is the third patch release in the v0.5.X series, containing one enhancement that helps projects using the ignite binary parse version information without root.

    Note: dependent modules were calculated with a newer version of go; see #433

    Enhancements

    • backport: skip root requirement for ignite version (#430, @chanwit)

    Trying it out / Next Steps!

    In short:

    export VERSION=v0.5.3
    export GOARCH=$(go env GOARCH 2>/dev/null || echo "amd64")
    
    for binary in ignite ignited; do
        echo "Installing ${binary}..."
        curl -sfLo ${binary} https://github.com/weaveworks/ignite/releases/download/${VERSION}/${binary}-${GOARCH}
        chmod +x ${binary}
        sudo mv ${binary} /usr/local/bin
    done
    

    A more throughout installation guide is available here: https://ignite.readthedocs.io/en/latest/installation.html


    OCI images for this release

    Source code(tar.gz)
    Source code(zip)
    ignite-amd64(21.62 MB)
    ignite-arm64(20.78 MB)
    ignited-amd64(22.86 MB)
    ignited-arm64(21.92 MB)
  • v0.6.0(Aug 30, 2019)

    Welcome to the v0.6.0 release, consisting of major underlying improvements, and a more efficient runtime.

    This release consists of 25 noteworthy PRs from 4 contributors; although v0.5.0 was released just two weeks ago! We had 5 contributions from 2 external contributors, thanks :tada:!

    The main themes of this release has been:

    • containerd is now used as the default container runtime for higher security and speed, and less resource usage
      • This means that Ignite doesn't depend on docker anymore!
    • CNI is now the default networking plugin; by default the bridge and portmap plugins are used
    • GitOps Toolkit refactor is complete; now everything you need to create your Git-backed application is available at https://github.com/weaveworks/gitops-toolkit
      • Ignite is using this toolkit internally to perform its GitOps capabilities, now you can easily use this functionality, too!
    • Bugfixes and usability improvements all around the place

    Also, our documentation is now available at https://ignite.readthedocs.org. Check that site out whenever you need some information, or open an issue :)

    Deprecations

    • As per v0.5.0, the v1alpha2 API version is the default. Going forward, the v1alpha1 API version is deprecated, and will be removed in a future release.

    New Features

    • Make containerd the default runtime and CNI the default network plugin (#371, @twelho)
    • Implement the containerd runtime for Ignite (#337, @twelho)
    • Add a default CNI bridge and portmap network for Ignite (#370, @twelho)
    • Implement hostPort support with CNI (#375, @luxas)
    • Add openSUSE images (#357, @aojea)

    Enhancements

    • Implement cleanup of CNI networks using the default bridge (#376, @luxas)
    • containerd backend improvements (#368, @twelho)
    • Implement runtime selection, only load necessary providers (#366, @twelho)
    • Split packages so we can extract gitops-toolkit (#347, @luxas)
    • Switch to using weaveworks/gitops-toolkit (#359, @luxas)
    • Switch imports to utilize gitops-toolkit (#354, @luxas)
    • Simplify the CNI code by vendoring github.com/containerd/go-cni (#349, @luxas)
    • FileWatcher: Support internal moves without re-creating and multiple active moves at once (#341, @twelho)
    • Fix GOHOSTARCH propagation, tag development image for the host architecture only (#340, @twelho)
    • Fix ignite-spawn's formatting when performing cleanup on VM metadata (#336, @twelho)
    • Automatically optimize the size of an imported image (#335, @twelho)
    • Add shell autocompletion for ignited (#363, @silenceshell)

    Bug Fixes

    • Add err as a param for log.Errorf (#367, @silenceshell)
    • Fix an issue in the GitDirectory loop when trying to commit without any actual changes (#369, @silenceshell)
    • GitOps: only change the VM state if it differs from the current one (#374, @twelho)
    • Move VM network removal to logically correct place (#373, @twelho)
    • Fix Docker client port mappings by actually exposing them after binding (#350, @twelho)

    Documentation

    • Update the docs for v0.6.0 (#378, @luxas)
    • Docs: Bump latest Ignite version to v0.5.1 (#362, @silenceshell)
    • Change Read the Docs links to point to the stable branch in main README (#338, @twelho)

    Trying it out / Next Steps!

    NOTE: Stop your VMs before performing the upgrade, as the underlying container runtime has changed! In short:

    export VERSION=v0.6.0
    export ARCH=$([ $(uname -m) = "x86_64" ] && echo amd64 || echo arm64)
    
    for binary in ignite ignited; do
        echo "Installing ${binary}..."
        curl -sfLo ${binary} https://github.com/weaveworks/ignite/releases/download/${VERSION}/${binary}-${ARCH}
        chmod +x ${binary}
        sudo mv ${binary} /usr/local/bin
    done
    
    # Install the CNI plugins if you don't already have them
    export CNI_VERSION=v0.8.2
    curl -sSL https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-${ARCH}-${CNI_VERSION}.tgz | tar -xz -C /opt/cni/bin
    

    A more throughout installation guide is available here: https://ignite.readthedocs.io/en/latest/installation.html

    Source code(tar.gz)
    Source code(zip)
    ignite-amd64(34.27 MB)
    ignite-arm64(29.52 MB)
    ignited-amd64(35.88 MB)
    ignited-arm64(30.92 MB)
  • v0.5.2(Aug 26, 2019)

    This is the second patch release in the v0.5.X series, containing one bug fix needed for integrating well with Footloose.

    Bug Fixes

    • Fix Docker client port mappings by actually exposing them after binding (#350, @twelho)

    Trying it out / Next Steps!

    In short:

    export VERSION=v0.5.2
    export GOARCH=$(go env GOARCH 2>/dev/null || echo "amd64")
    
    for binary in ignite ignited; do
        echo "Installing ${binary}..."
        curl -sfLo ${binary} https://github.com/weaveworks/ignite/releases/download/${VERSION}/${binary}-${GOARCH}
        chmod +x ${binary}
        sudo mv ${binary} /usr/local/bin
    done
    

    A more throughout installation guide is available here: https://ignite.readthedocs.io/en/latest/installation.html

    Source code(tar.gz)
    Source code(zip)
    ignite-amd64(21.62 MB)
    ignite-arm64(20.78 MB)
    ignited-amd64(22.86 MB)
    ignited-arm64(21.92 MB)
  • v0.5.1(Aug 16, 2019)

    The first patch release in the v0.5.X series. Contains some much needed UX improvements, go ahead and try it out!

    Enhancements

    • Make ignite daemon handle file moves without re-creating and support multiple active moves at once (#341, @twelho)
    • Fix GOHOSTARCH propagation in the Makefile, tag development image for the host architecture only (#340, @twelho)
    • Fix ignite-spawn's VM metadata formatting when performing a cleanup (#336, @twelho)
    • Automatically optimize the size of imported images, support importing large images (#335, @twelho)

    Documentation

    • Change Read the Docs links to point to the stable branch in main README (#338, @twelho)

    Trying it out / Next Steps!

    In short:

    export VERSION=v0.5.1
    export GOARCH=$(go env GOARCH 2>/dev/null || echo "amd64")
    
    for binary in ignite ignited; do
        echo "Installing ${binary}..."
        curl -sfLo ${binary} https://github.com/weaveworks/ignite/releases/download/${VERSION}/${binary}-${GOARCH}
        chmod +x ${binary}
        sudo mv ${binary} /usr/local/bin
    done
    

    A more throughout installation guide is available here: https://ignite.readthedocs.io/en/latest/installation.html

    Source code(tar.gz)
    Source code(zip)
    ignite-amd64(21.62 MB)
    ignite-arm64(20.78 MB)
    ignited-amd64(22.86 MB)
    ignited-arm64(21.92 MB)
  • v0.5.0(Aug 13, 2019)

    This release consists of 54 noteworthy PRs from 12 contributors. We had 14 contributions from 8 external contributors, thanks :tada:!

    The main themes of this release has been:

    • Persistent Storage: Block Device support added as the first external volume type
    • Improved API: We're continuously improving the API; this release contains ignite.weave.works/v1alpha2 (still backwards-compatible with v1alpha1)
    • Read-write GitOps: In GitOps mode, Ignite now also pushes the actual state in .status back to the repo
    • Refactoring towards a client-server model: We're now shipping ignited that holds the reconciling GitOps and Manifest Directory modes
    • Multi-platform: We're now shipping ARM 64-bit binaries that you can use on e.g. Packet (and eventually, Raspberry Pi 4!)

    Also, our documentation is now available at https://ignite.readthedocs.org. Check that site out whenever you need some information, or open an issue :)

    New Features

    API Changes

    • Remove .spec.network.mode; use a global --network-plugin flag instead (#319, @luxas)
    • Rename .spec.image.ociClaim.ref to .spec.image.oci for simplicity (#311, @twelho)
    • Redesign OCI image status: Display the image's exact repository digest (#307, @twelho)
    • Add .status.runtime.id the VM container's ID (#294, @twelho)
    • Support configuring BindAddress and Protocol for a PortMapping (#299, @twelho)
    • Add vm.status.startTime to track the VM's uptime externally (#296, @twelho)
    • Replace vm.status.state with vm.status.running (#292, @twelho)
    • Add the initial v1alpha2 API types (#250, @twelho)

    Enhancements

    • Refactor: Use the netlink library instead of exec'ing out to ip (#279, @alexeldeib)
    • Improve the CNI implementation, and documentation (#308, @luxas)
    • Enable testing in CI, fix the Makefile and tidy (#280, @luxas)
    • Automatically generate the release notes (#283, @luxas)
    • Structured logging across the application; add logging support to ignite-spawn (#247, @twelho)
    • Extract watcher, batcher and monitor into pkg/util (#245, @luxas)
    • Robust recursive FileWatcher support using notify (#265, @twelho)
    • Document developer meetings (#272, @dholbach)
    • Create/use a runtime interface instead of direct calls to Docker (#211, @twelho)
    • Add structured validation for the API types (#216, @luxas)
    • Add Strategic Merge Patch support to the storage (#225, @luxas)
    • Improve vulnerability scanning of Docker image (#239, @DieterReuter)
    • CNI networking cleanup support, Docker client robustness improvements (#111, @twelho)
    • Support checksum-based Cache invalidation, improve cache's object handling (#227, @twelho)
    • Rename GitStorage into ManifestStorage (#226, @luxas)
    • Client and Storage rework: Recognize multiple API groups (#221, @luxas)
    • Create internal API types, and use them (#215, @luxas)

    Bug Fixes

    Documentation

    Trying it out / Next Steps!

    In short:

    export VERSION=v0.5.0
    export GOARCH=$(go env GOARCH 2>/dev/null || echo "amd64")
    
    for binary in ignite ignited; do
        echo "Installing ${binary}..."
        curl -sfLo ${binary} https://github.com/weaveworks/ignite/releases/download/${VERSION}/${binary}-${GOARCH}
        chmod +x ${binary}
        sudo mv ${binary} /usr/local/bin
    done
    

    A more throughout installation guide is available here: https://ignite.readthedocs.io/en/latest/installation.html

    Source code(tar.gz)
    Source code(zip)
    ignite-amd64(21.62 MB)
    ignite-arm64(20.72 MB)
    ignited-amd64(22.86 MB)
    ignited-arm64(21.92 MB)
  • v0.5.0-rc.1(Aug 12, 2019)

    This is the first release candidate for v0.5.0. We hope to release v0.5.0 very shortly.

    New Features

    • Support external volumes (block devices) in Ignite VMs (#275, @twelho)

    API Changes

    • Remove .spec.network.mode; use a global --network-plugin flag instead (#319, @luxas)
    • Rename .spec.image.ociClaim.ref to .spec.image.oci for simplicity (#311, @twelho)
    • Redesign OCI image status: Display the image's exact repository digest (#307, @twelho)
    • Add .status.runtime.id the VM container's ID (#294, @twelho)
    • Support configuring BindAddress and Protocol for a PortMapping (#299, @twelho)
    • Add vm.status.startTime to track the VM's uptime externally (#296, @twelho)
    • Replace vm.status.state with vm.status.running (#292, @twelho)

    Enhancements

    • Refactor: Use the netlink library instead of exec'ing out to ip (#279, @alexeldeib)
    • Improve the CNI implementation, and documentation (#308, @luxas)

    Bug Fixes

    • Fix ignite rm -f for a running VM without --debug (#320, @twelho)

    Documentation

    Trying it out / Next Steps!

    In short:

    export VERSION=v0.5.0-rc.1
    export GOARCH=$(go env GOARCH 2>/dev/null || echo "amd64")
    
    for binary in ignite ignited; do
        echo "Installing ${binary}..."
        curl -sfLo ${binary} https://github.com/weaveworks/ignite/releases/download/${VERSION}/${binary}-${GOARCH}
        chmod +x ${binary}
        sudo mv ${binary} /usr/local/bin
    done
    

    A more throughout installation guide is available here: https://ignite.readthedocs.io/en/latest/installation.html

    Source code(tar.gz)
    Source code(zip)
    ignite-amd64(21.62 MB)
    ignite-arm64(20.72 MB)
    ignited-amd64(22.86 MB)
    ignited-arm64(21.92 MB)
  • v0.5.0-alpha.1(Aug 6, 2019)

    This is the first prerelease in the v0.5.x series. Please try it out, and also note we now have arm64 builds!

    New Features

    API Changes

    Enhancements

    • Automatically generate the release notes (#283, @luxas)
    • Structured logging across the application; add logging support to ignite-spawn (#247, @twelho)
    • Extract watcher, batcher and monitor into pkg/util (#245, @luxas)
    • Robust recursive FileWatcher support using notify (#265, @twelho)
    • Document developer meetings (#272, @dholbach)
    • Enable testing in CI, fix the Makefile and tidy (#280, @luxas)
    • Create/use a runtime interface instead of direct calls to Docker (#211, @twelho)
    • Add structured validation for the API types (#216, @luxas)
    • Add Strategic Merge Patch support to the storage (#225, @luxas)
    • Improve vulnerability scanning of Docker image (#239, @DieterReuter)
    • CNI networking cleanup support, Docker client robustness improvements (#111, @twelho)
    • Support checksum-based Cache invalidation, improve cache's object handling (#227, @twelho)
    • Rename GitStorage into ManifestStorage (#226, @luxas)
    • Client and Storage rework: Recognize multiple API groups (#221, @luxas)
    • Create internal API types, and use them (#215, @luxas)

    Bug Fixes

    Documentation

    Trying it out / Next Steps!

    In short:

    export VERSION=v0.5.0-alpha.1
    export GOARCH=$(go env GOARCH 2>/dev/null || echo "amd64")
    
    for binary in ignite ignited; do
        echo "Installing ${binary}..."
        curl -sfLo ${binary} https://github.com/weaveworks/ignite/releases/download/${VERSION}/${binary}-${GOARCH}
        chmod +x ${binary}
        sudo mv ${binary} /usr/local/bin
    done
    

    A more throughout installation guide is available here: https://ignite.readthedocs.io/en/latest/installation.html

    Source code(tar.gz)
    Source code(zip)
    ignite-amd64(21.49 MB)
    ignite-arm64(20.65 MB)
    ignited-amd64(22.73 MB)
    ignited-arm64(21.91 MB)
  • v0.4.2(Jul 16, 2019)

    The second patch release for the v0.4.x release stream. If you want to have a look, here are changes for versions v0.4.0 and v0.4.1.

    In this release, we had 5 PRs from 3 community contributors, thank you for your amazing work :tada:! We hope to see this trend continue, all help is very welcome to this community-driven project!

    New Features / UX Improvements

    • Flannel is now usable with the Ignite kernel thanks to adding the VXLAN kernel module (#154, @curx)
    • HAProxy checking for Kubernetes API /healthz endpoint (#156, @curx)
    • Allow unmarshaling unquoted UIDs from JSON for convenience (#178, @twelho)
    • The VM images based on Ubuntu, CentOS and Amazon Linux can now be built on top of a specific release (#193, @twelho)

    Bugfixes

    • Import only /boot and /lib from kernel OCI images, don't overwrite e.g. /etc/resolv.conf (#168, @twelho)
    • The creation timestamp can now be omitted from specification files, it will be added automatically (#174, @twelho)
    • List all VMs instead of just running ones when calling ignite vm ls/list (#179, @twelho)
    • More robust kernel version checking if e.g. the strings binary is not available (#189, @twelho)

    Docs improvements

    Trying it out / Next Steps!

    In short:

    export VERSION=v0.4.2
    curl -fLo ignite https://github.com/weaveworks/ignite/releases/download/${VERSION}/ignite
    chmod +x ignite
    sudo mv ignite /usr/local/bin
    

    A more throughout installation guide is available here: https://github.com/weaveworks/ignite/blob/master/docs/installation.md

    Source code(tar.gz)
    Source code(zip)
    ignite(18.95 MB)
  • v0.4.1(Jul 12, 2019)

    The first patch release for the v0.4.x release stream. If you want to go and look at the new and changed stuff in v0.4.0, see here.

    This release we had an amazing amount of 9 PRs from 6 community contributors, in 48 hours after launch :tada:! We hope to see this trend continue, all help is very welcome to this community-driven project!

    New Features / UX Improvements

    • It is now possible to access and talk to the Firecracker socket, and metrics/logs FIFOs. (#132, @patrobinson)
    • Verify that the VM actually did start before ignite start/run reports success (#139, @twelho)
    • Provide better UX and error messages for the ignite ssh command (#149, @twelho)

    Bugfixes

    • Set the -F flag to mkfs.ext4, as it is required on RHEL platforms. (#131, @junaid18183)
    • Generate RSA keys instead of ED25519 on FIPS machines. (#136, @junaid18183)
    • Make the filtering framework respect exact matches (#138, @twelho)
    • Don't fail although there are inactive network interfaces in the container (#146, @luxas)

    Docs improvements

    Trying it out / Next Steps!

    In short:

    export VERSION=v0.4.1
    curl -fLo ignite https://github.com/weaveworks/ignite/releases/download/${VERSION}/ignite
    chmod +x ignite
    sudo mv ignite /usr/local/bin
    

    A more throughout installation guide is available here: https://github.com/weaveworks/ignite/blob/master/docs/installation.md

    Source code(tar.gz)
    Source code(zip)
    ignite(18.95 MB)
  • v0.4.0(Jul 10, 2019)

    v0.4.0

    Ignite's biggest release yet!

    There are many significant changes compared to before:

    New Features

    • Make base and kernel OCI images composable for a VM. You can now choose what kernel to combine with what base image freely https://github.com/weaveworks/ignite/pull/105
    • Add the GitOps mode for Ignite using ignite gitops https://github.com/weaveworks/ignite/pull/100
      • Documentation: https://github.com/weaveworks/ignite/blob/master/gitops
    • Make it possible to run ignite create and ignite run declaratively https://github.com/weaveworks/ignite/commit/57333646b52a0e1e3a725340e994b2749b39e5bd
      • Documentation: https://github.com/weaveworks/ignite/blob/master/docs/declarative-config.md
    • Added Prometheus metrics for ignite-spawn https://github.com/weaveworks/ignite/commit/94abc529972873db3fa3ee954099a4f62d67b6f3
      • Documentation: https://github.com/weaveworks/ignite/blob/master/docs/prometheus.md
    • Implemented CNI support https://github.com/weaveworks/ignite/commit/a8897532f9f6a8f5c40025f0f93ab2d24f2c7cd3

    API Machinery

    • Added the ignite.weave.works/v1alpha1 API group with the Ignite API types https://github.com/weaveworks/ignite/commit/ca1edc8e7a61b950811c6145ba2ad53f8cdc2a04
      • API reference: https://github.com/weaveworks/ignite/blob/master/api/ignite.md
      • This API version will not change in a future version. When improvements are made, it will be to v1alpha2 etc.
    • Add a meta API package containing supporting but generic API types for Ignite https://github.com/weaveworks/ignite/commit/09d51abd409ee361e93884baae24ffc92cde63a9
      • API reference: https://github.com/weaveworks/ignite/blob/master/api/meta.md
    • Create composable interfaces for the internal API machinery: Client -> Cache -> Storage -> RawStorage -> Serializer https://github.com/weaveworks/ignite/pull/93 https://github.com/weaveworks/ignite/pull/96 https://github.com/weaveworks/ignite/pull/99
    • The API Machinery used in Ignite is partly based on the Kubernetes API machinery (k8s.io/apimachinery), and hence follows some of the same patterns

    New Commands

    • Add the ignite inspect command https://github.com/weaveworks/ignite/pull/107
    • Add the ignite gitops command https://github.com/weaveworks/ignite/pull/100

    Documentation

    • Add user-facing documentation and guides https://github.com/weaveworks/ignite/pull/113
      • See: https://github.com/weaveworks/ignite/tree/master/docs
    • Generate OpenAPI specifications https://github.com/weaveworks/ignite/commit/f1c5bfd473799f712c4c1d8fb276426780c1bf01
      • See: https://github.com/weaveworks/ignite/blob/master/api/openapi/openapi_generated.go
    • Add API type documentation https://github.com/weaveworks/ignite/commit/218c94723f836b8e2cb82886b8664544933ea605
      • See: https://github.com/weaveworks/ignite/blob/master/api
    • Added architecture diagram https://github.com/weaveworks/ignite/commit/da53f9fc2f5790edacb5d1b541dd4da8a6089673
      • See: https://github.com/weaveworks/ignite/blob/master/docs/architecture.png
    • Added graph of module dependencies https://github.com/weaveworks/ignite/commit/be7cc088c671c5728155fb146367a67d4ada4ea6
      • See: https://github.com/weaveworks/ignite/blob/master/docs/dependencies.svg

    Updated Images

    Base Images

    • weaveworks/ignite-ubuntu:v0.4.0: https://github.com/weaveworks/ignite/blob/master/images/ubuntu/Dockerfile
    • weaveworks/ignite-centos:v0.4.0: https://github.com/weaveworks/ignite/blob/master/images/centos/Dockerfile
    • weaveworks/ignite-amazonlinux:v0.4.0: https://github.com/weaveworks/ignite/blob/master/images/amazonlinux/Dockerfile
    • weaveworks/ignite-alpine:v0.4.0: https://github.com/weaveworks/ignite/blob/master/images/alpine/Dockerfile

    Kernel Images

    • weaveworks/ignite-kernel:4.14.123: https://github.com/weaveworks/ignite/blob/master/images/kernel/Dockerfile
    • weaveworks/ignite-kernel:4.19.47 (default): https://github.com/weaveworks/ignite/blob/master/images/kernel/Dockerfile
    • weaveworks/ignite-amazon-kernel:v0.4.0 (using 4.14.55): https://github.com/weaveworks/ignite/blob/master/images/amazon-kernel/Dockerfile

    Internal Improvements

    • A significant refactor of the whole application has been made to support the new API machinery
    • Add structured logging https://github.com/weaveworks/ignite/pull/110
    • Factor out ignite-spawn into its own binary running in the container https://github.com/weaveworks/ignite/commit/0a1965e7203877c591dc79504ce257a57fd00480
    • Upgraded the Firecracker version to v0.17.0 https://github.com/weaveworks/ignite/commit/41e3595b9e8d35c24e8cd97037cc1c7045779ee9
    • Set Go version to 1.12.6 https://github.com/weaveworks/ignite/commit/d00cce7d2b09e97f8d515c4a6161b11fc6c61a2c

    Trying it out / Next Steps!

    In short:

    export VERSION=v0.4.0
    curl -fLo ignite https://github.com/weaveworks/ignite/releases/download/${VERSION}/ignite
    chmod +x ignite
    sudo mv ignite /usr/local/bin
    

    A longer installation guide is available here: https://github.com/weaveworks/ignite/blob/master/docs/installation.md

    Source code(tar.gz)
    Source code(zip)
    ignite(18.94 MB)
  • v0.4.0-rc.1(Jul 9, 2019)

    v0.4.0-rc.1

    The first release candidate for Ignite's biggest release yet!

    There are many significant changes compared to before:

    New Features

    • Make base and kernel OCI images composable for a VM. You can now choose what kernel to combine with what base image freely https://github.com/weaveworks/ignite/pull/105
    • Add the GitOps mode for Ignite using ignite gitops https://github.com/weaveworks/ignite/pull/100
    • Make it possible to run ignite create and ignite run declaratively https://github.com/weaveworks/ignite/commit/57333646b52a0e1e3a725340e994b2749b39e5bd
    • Added Prometheus metrics for ignite-spawn https://github.com/weaveworks/ignite/commit/94abc529972873db3fa3ee954099a4f62d67b6f3
    • Implemented CNI support https://github.com/weaveworks/ignite/commit/a8897532f9f6a8f5c40025f0f93ab2d24f2c7cd3

    API Machinery

    • Added the ignite.weave.works/v1alpha1 API group with the Ignite API types https://github.com/weaveworks/ignite/commit/ca1edc8e7a61b950811c6145ba2ad53f8cdc2a04
    • Add a meta API package containing supporting but generic API types for Ignite https://github.com/weaveworks/ignite/commit/09d51abd409ee361e93884baae24ffc92cde63a9
    • Create composable interfaces for the internal API machinery: Client -> Cache -> Storage -> RawStorage -> Serializer https://github.com/weaveworks/ignite/pull/93 https://github.com/weaveworks/ignite/pull/96 https://github.com/weaveworks/ignite/pull/99

    New Commands

    • Add the ignite inspect command https://github.com/weaveworks/ignite/pull/107
    • Add the ignite gitops command https://github.com/weaveworks/ignite/pull/100

    Documentation

    • Add user-facing documentation and guides https://github.com/weaveworks/ignite/pull/113
    • Generate OpenAPI specifications https://github.com/weaveworks/ignite/commit/f1c5bfd473799f712c4c1d8fb276426780c1bf01
    • Add API type documentation https://github.com/weaveworks/ignite/commit/218c94723f836b8e2cb82886b8664544933ea605
    • Added architecture diagram https://github.com/weaveworks/ignite/commit/da53f9fc2f5790edacb5d1b541dd4da8a6089673
    • Added graph of module dependencies https://github.com/weaveworks/ignite/commit/be7cc088c671c5728155fb146367a67d4ada4ea6

    Internal Improvements

    • Add structured logging https://github.com/weaveworks/ignite/pull/110
    • Factor out ignite-spawn into its own binary running in the container https://github.com/weaveworks/ignite/commit/0a1965e7203877c591dc79504ce257a57fd00480
    • Upgraded the Firecracker version to v0.17.0 https://github.com/weaveworks/ignite/commit/41e3595b9e8d35c24e8cd97037cc1c7045779ee9
    • Set Go version to 1.12.6 https://github.com/weaveworks/ignite/commit/d00cce7d2b09e97f8d515c4a6161b11fc6c61a2c
    Source code(tar.gz)
    Source code(zip)
    ignite(18.94 MB)
  • v0.3.0(Jun 18, 2019)

    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. The kernel is expected to be coupled with the image given to ignite run, in /boot/vmlinux.
    • 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 kernels already imported from base images.
    • 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 tar 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
    Source code(tar.gz)
    Source code(zip)
    ignite(18.55 MB)
  • v0.2.0(Jun 6, 2019)

    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

    Use it

    Download the attached binary, add it to $PATH, and execute the following commands:

    $ ignite build weaveworks/ignite-ubuntu:v0.2.0 \
        --name ubuntu-image \
        --import-kernel ubuntu-kernel
    $ ignite images
    $ ignite kernels
    $ ignite run ubuntu-image ubuntu-kernel --name my-vm
    $ ignite ps
    $ ignite logs my-vm
    $ ignite attach my-vm
    
    # Cleanup
    $ ignite stop my-vm
    $ ignite rm my-vm
    $ ignite rmi ubuntu-image
    $ ignite rmk ubuntu-kernel
    

    Also make note of the known limitations

    Source code(tar.gz)
    Source code(zip)
    ignite(18.46 MB)
  • v0.1.0(May 31, 2019)

Owner
Weaveworks
weaving containers into applications
Weaveworks
Executes an OCI image using firecracker.

oci-image-executor Executes an OCI image using Firecracker. Logs from the executed process (both stdout and stderr) are sent to stdout. Logs from the

CodeCrafters 0 Jan 6, 2022
Opsani Ignite for Kubernetes: Evaluate Applications for Optimization

Opsani Ignite for Kubernetes Opsani Ignite analyzes applications running on a Kubernetes cluster in order to identify performance and reliability risk

Opsani 16 Mar 1, 2022
A CLI to control firecracker

firecracker-ctl A CLI to control firecracker Short introduction Starting a VM Note: x86 guest # Download Kernel + RootFS

Denys Vitali 0 Oct 31, 2021
Weave Ignite is an open source Virtual Machine (VM) manager with a container UX and built-in GitOps management.

Weave Ignite is an open source Virtual Machine (VM) manager with a container UX and built-in GitOps management.

Temur Yunusov 0 Nov 16, 2021
Executes an OCI image using firecracker.

oci-image-executor Executes an OCI image using Firecracker. Logs from the executed process (both stdout and stderr) are sent to stdout. Logs from the

CodeCrafters 0 Jan 6, 2022