Skip to content
This repository has been archived by the owner on Jun 20, 2024. It is now read-only.

Weave 1.5.0

Compare
Choose a tag to compare
@bboreham bboreham released this 19 Apr 15:14
· 2577 commits to master since this release

Release 1.5.0

Highlights

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/#1967
  • weave stop no longer removes component containers, so now their logs can be read subsequently, and they can be restarted #1937/#1939
  • weave rmpeer now accepts a list of peers #2044/#2075
  • weave rmpeer now report on size of transferred range, or reports that nothing was done, rather than returning an error #2058/#2066/#2067
  • weave 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 undocumented create-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 default ipalloc-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