This repository has been archived by the owner on Jun 20, 2024. It is now read-only.
Weave 1.5.0
Release 1.5.0
Highlights
- A new plugin
for the Container Network Interface. - This release is much more robust against unscheduled restarts,
because it persists key data to disk. - New configuration options
that are useful when you create or auto-scale larger networks. - Weave now periodically checks for updates
(can be disabled)
Installation and Upgrading
Follow the installation instructions to install this latest release of weave.
Weave 1.5.0 is fully compatible with Weave 1.4.x, 1.3.x, 1.2.x and 1.1.x, so it is possible to upgrade clusters incrementally and run mixed versions. If upgrading from Weave 1.0.x, take into account the Weave 1.1.0 upgrading instructions.
Note that all Weave components now apply a policy of --restart=always
, so they will come back again
on reboot. If you have your own start-up script, you should review whether this needs to be updated or disable the policy with --no-restart
.
Changes
Command-line
- All components now restart automatically if there is a problem or the host reboots, via
--restart=always
#2029 weave launch
is now idempotent, making the command easier to use in automated/scripted deployments #1859/#1967weave stop
no longer removes component containers, so now their logs can be read subsequently, and they can be restarted #1937/#1939weave rmpeer
now accepts a list of peers #2044/#2075weave rmpeer
now report on size of transferred range, or reports that nothing was done, rather than returning an error #2058/#2066/#2067weave version
now reports the version that will run next after an upgrade, not the version of an older, stopped, Weave #1827/#1938- Some errors detected by the weave script did not return an error status #2052/#2053/#2054/#2096
- Improve error message when
weave launch
command has malformed peer address #1892/#1924 - New undocumented
weave attach-bridge
feature to replace undocumentedcreate-bridge
#1955/#1964 - Remove trailing dot added by Docker 1.11 at the end of hostname+domainname, when generating container's /etc/hosts #2140/#2151
Router
- Exclude multicast packets from from having their source IP address rewritten by
weave expose
, so a receiver can see the real source address #2147/#2158 - Weave now periodically checks if a newer version is available #1954/#2089/#2131
- Fix an occasional failure to restart on reboot #2113/#2117
- Fix a delay in getting the latest data to a restarted peer #2085/#2122
- Simplify router by always running in host network namespace #1746/#1930/#2055
IP Address Management
- Return Weave network to same state after a reboot, avoiding potential leaks of addresses or hanging, by persisting IPAM state to disk #678/#894/#901/#1971/#1973/#2012/#2031/#2046/#2051/#2077/#2135/#2164/#2165
- Avoid leaking addresses by retaining identity of peers across reboots and
weave reset
#901/#1866/#1888/#2021/#2037 - Restarted application containers now get given the same IP address #1047/#1191/#1922
- The parameter
--init-peer-count n
has been rephrased as--ipalloc-init consensus=n
; the old parameter is retained for backward compatibility #2155 - Setting up fixed networks is now easier thanks to the new
--ipalloc-init seed
option #1998/#2000/#2155 - Adding peers to existing networks is now easier thanks to the
--ipalloc-init observer
option #1743/#1990/#2063/#2134/#2155/#2060 - The new
weave prime
command ensures that the network has reached a consistent state where IP address allocation has been fully initialised #1994/#1997 - Include all current peer targets, including those added by
weave connect
, for the defaultipalloc-init consensus
count, which helps to avoid split-brain scenarios during dynamic network formation #1721/#2070/#2139/#2150 - Don't lock up thinking there is an extra peer to agree with, when it is actually ourselves #1881
- Improve behaviour when donating space to another peer, avoiding creating ranges of size 1 #2009/#2012/#2047/#2069
- Make error messages clearer in certain irrecoverable IPAM conditions #1957/#2078
- Removed an unnecessary check in the IPAM start-up code #1948
WeaveDNS
- When stale DNS records are detected, remove them immediately #2133
- Avoid re-broadcasting the DNS notification of a dead container #2124
- WeaveDNS may now be disabled with the
--no-dns
option #1687/#2099/#2101
Proxy
- The proxy now retries attaching containers after restarting, in case the router was not ready yet #1561/#1556/#1588/#1880
- Wait for just-started or restarted containers to get going before trying to attach them #2090/#2126
- Ensure directory /var/run/weave exists, so we don't depend on deprecated Docker behaviour allowing the router to listen on a Unix socket #1653/#1719
- Be more defensive against Docker sending empty JSON #2109/#2128
Plugin
- CNI plugin (see above) #1991/#1992/#2030/#2146/#2148
- Allow requesting a specific IP address for a container when using the plugin #1734/#1916
- Allow the subnet and IP range to be specified on
docker network create
#1806/#1915 - Check if plugin has exited immediately, to improve visibility of startup problems #1873/#1941
- Support custom docker args, for advanced users of the plugin #2095
- If attaching to the network bridge fails, report the error to the user #2097/#2098
- Move creation and removal of default
weave
network into a separate utility #1897/#1901 - Made log messages more consistent #2074
- Removed unused 'nameserver' option from plugin #1777
Efficiency
- Do some network configuration by calling the kernel directly rather than via external commands #1944/#1951/#2059/#2062
- Defer route calculation to when needed, to reduce CPU load #1761/#1773
- Improve peer-to-peer gossip: don't stall other connections when one is blocked #1826/#1855/#1856
- Refactor virtual-ethernet device creation #1968
- Simplify Weave internals by using new(ish) Docker feature
docker run --pid=host
#578/#1982/#1965/#1966
Docs
- General clean-up and reorganization of docs, now targeting WordPress publishing process #1756/#2015/#2019/#2038/#2064/#2103/#2105/#2106/#2111/#2114/#2115
- Update the documentation on what happens when a machine reboots #2108/#2130
- Document fast datapath (FDP) in "How it Works" #1908
- Document vendored dependency management commands #1902
- Update statement about the size of the Weave container #1114
- Made capitalisation of 'Weave' and 'DNS' consistent #2102/#2118
Build and test
- Repeatable builds, via containerized build and vendored dependencies #1653/#1656/#1850/#1861
- Upgrade version of Go to 1.5.2 #1657/#1861
- Upgrade version of Docker used in CI to 1.10.3 and fix up smoke-tests #2050/#1913
- Upgrade version of Ubuntu in Vagrant test VMs to Wily 15.10 #1912
- Include plugin in test coverage reports #2116
- Fix occasional failure to collect coverage data #2072
- Fix failure in teardown of test suites when not collecting coverage stats #2129
- Fix occasional failure in IPAM unit tests caused by race condition #1651/#1862
- Fix router leak in IPAM unit tests #2149/#2154
- Fix a bug in the simulation of periodic gossip in one test #2180/#2182
- Fix
multiweave
test harness to work with fast datapath #1589 - Fix hang in a test by specifying /dev/null as input for netcat #2141
- Add test for
rmpeer
command #2073 - Better spelling check in CI #2093
- Abstract out logging interface from weave api package #2024
- Move smoke-test dependencies from 'all' to 'testrunner' target #1893/#1920
- Improve robustness of CI creating and destroying VMs #864/#1857
- Reduce footprint by combining several script utilities into a single binary #1613/#1847
- Improve build times on CircleCI #1896
- Shrink Travis usage #1864
- Extract
mesh
library out to its own repository #1889/#1890