Skip to content

Latest commit

 

History

History
897 lines (630 loc) · 53.8 KB

CHANGELOG.md

File metadata and controls

897 lines (630 loc) · 53.8 KB

Changelog

v0.6.1

Released: 02/10/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 my-containerd-vm
sudo bin/ignite 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 my-containerd-vm
sudo bin/ignite 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


v0.5.4

Released: 24/09/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


v0.5.3

Released: 16/09/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


v0.6.0

Released: 30/08/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 🎉!

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


v0.5.2

Released: 26/08/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


v0.5.1

Released: 16/08/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


v0.5.0

Released: 13/08/2019

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

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


v0.5.0-rc.1

Released: 12/08/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


v0.5.0-alpha.1

Released: 06/08/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


v0.4.2

Released: 16/07/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 🎉! 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


v0.4.1

Released: 12/07/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 🎉! 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


v0.4.0

Released: 10/07/2019

v0.4.0

Ignite's biggest release yet!

There are many significant changes compared to before:

New Features

API Machinery

New Commands

Documentation

Updated Images

Base Images

Kernel Images

Internal Improvements

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


v0.4.0-rc.1

Released: 09/07/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

API Machinery

New Commands

Documentation

Internal Improvements


v0.3.0

Released: 18/06/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

v0.2.0

Released: 06/06/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


v0.1.0

Released: 31/05/2019

This is the first, proof-of-concept version of Ignite. It has all the essential features, and a pretty complete implementation of the docker UX.