Releases: weaveworks/weave
Weave 0.11.0
Highlights:
- automatic IP Address Management
(IPAM),
which allows application containers to be started and attached to
the weave network without needing to supply an IP address. - proxy for
automatically attaching containers started with ordinarydocker run
, or the Docker remote API, to the weave network. - ability to add/remove extra DNS
records. - performance and scalability improvements
- fixes for a small number of bugs discovered during testing
More detail below and in the change log.
NB: This release changes the weave protocol version. Therefore, when upgrading an existing installation, all hosts need to be upgraded in order to for them to be able to communicate and form a network.
bug fixes
- eliminate a deadlock in route calculation, which could be
encountered when large numbers of peers join or leave the weave
network near-simultaneously. #643/#644 - prevent certain stray UDP packets from stalling the entire UDP
receiver loop when crypto is in use. #564/#617 - prevent
weave expose
from breaking container connectivity in other
subnets. #605/#628 - prevent
weave expose
from breaking subnet isolation. #620/#704 - fix breakage when running
weave
inside a container that has
$PROCFS
set. #621/#622 - fix bug in
weave launch-dns
that could result in some existing
containers not being recorded in weaveDNS if one of them got stopped
and removed during the weaveDNS launch. #690 - fix a dormant bug in the peer connection shutdown logic. #731
new features
- introduce automatic IP Address Management
(IPAM),
which allows application containers to be started and attached to
the weave network without needing to supply an IP address. IPAM can
also automatically allocate IP addresses forweave expose
. #22/#563,#485,#567,#670,#679/#685,#672/#686,#671/#689,#669/#691,#681,#677/#693,#695.#692/#696,#684/#701,#705/#719,#723/#724 - introduce a
proxy for
automatically attaching containers started with ordinarydocker run
, or the Docker remote API, to the weave network. The proxy
ensures that the weave network interface is available to application
processes immediately on startup. It also allows application
containers to be started in the foreground, and automatically
removed on termination (with
--rm
). #47,#230,#251,#400,#652,#655,#698,#702,#703,#708/#713,#709/#714,#707/#718,#657/#721,#738 - add ability to add/remove extra DNS
records. #364/#627 - publish docs for all releases; the main
documentation now contain the docs for the
latest release instead of the current development snapshot. #604,#612,#642,#648,#650,#729,#668/#722 - allow user to supply args to Docker in
DOCKER_CLIENT_ARGS
env var,
for weave remote execution, eg. in order to enable TLS. #626 - enable weave script debugging with
WEAVE_DEBUG
env var. #618
other improvements
- significantly simplify
crypto
implementation. #608 - simplify and significantly improve performance of topology gossip,
as a result of which weave can cope much better with situations
where are large number of peers join or leave near- simultaneously,
e.g. on startup of large clusters, or in the event of a network
partition. #519/#619 - better error handling in a
weave launch
failure edge case. #600/#603 - prevent misleading error when attempting to
weave detach
from an
unattached container. #596/#613 - make
weave version
cope with missing Docker images. #597/#614 - report errors encountered when populating DNS in
weave launch-dns
. #393 - report more descriptive error when weave was compiled against too
old a version of libpcap. #623/#625 - return NXDOMAIN instead of NOTIMP for query types not handled by
WeaveDNS, which is the expected response. #588/#589 - bump minimum Docker version requirement for use of
--with-dns
from
1.2.0 to 1.3.1, due to the former not setting container hostnames
correctly. #587 - bump minimum Linux kernel version requirement for running Weave from
3.5.0 to 3.8.0, due to some bugs in namespace support in the
former that break Weave. #585/#616 - remove a layer from the weaveexec image, thus reducing download
times. #665 - various documentation cleanups and improvements. #601,#640,#651,#653,#667,#648,#740
improvements to tests, and refactoring
- add more smoke tests, improve existing tests, and make them more
robust. #590,#591/#594,#595,#592/#606,#683,#712 - automatically run smoke tests on
CircleCI. #624,#634,#637,#638 - make top-level
vagrant provision
idempotent. #586 - use
nsenter
instead ofip netns exec
. #458/#580 - internal changes for future support of multiple DNS responses. #559
- some code cleanup in DNS. #609,#610
- refactor signal handling in Weave and WeaveDNS. #633
Weave 0.10.0
Highlights:
- bug fixes, in particular eradicating several deadlocks that could
cause peer connection failures and hangs. - performance and scalability improvements to the weave control plane,
as a result of which it is now possible to construct much larger
weave networks than previously. - improved installation and administration, particularly the
introduction of remote execution of the weave script in a container,
permitting fully containerised deployment of weave. - improved diagnostics, such as the reporting of connection failures
inweave status
. - new weaveDNS features, most notably the caching of
DNS records for application containers, which makes finding container IP addresses via
weaveDNS much faster.
More detail below and in the change log.
NB: This release changes the Weave Docker image names. To upgrade from an older version, 1) stop all application containers, 2) run weave reset
from the old version to remove all traces of weave, and only then 3) install the new version.
bug fixes
- eliminate several deadlocks during connection establishment,
shutdown and topology gossip. These could lead to weave routers
failing to connect to each other, existing connections timing out,
weave status
hanging, and general
mayhem. #341,#411/#414,#418/#421,#415/#428,#445/#476,#464,#529/#530,#515/#565 - avoid excessive ARP caching. This prevented connectivity to
containers which were restarted with the same IP or otherwise given
an IP that was recently in use. Connectivity toweave expose
ed
addresses was similarly affected. #439/#441/#457 - prevent accidental injection of ICMP "fragmentation needed" packets
with a broadcast/multicast source address. This contravened
RFC1122 and also broke
subsequent routing of broadcast/multicast packets from that
address. #419/#433 - cope with linux kernels <3.8.0. #470/#504.
- exclude non-established connections from broadcast routing. This
could lead to excessive loss of broadcast packets during connection
establishment, as well as a lot of noise in the logs. #452/#453 - don't rely on docker for container aliveness check. This could cause
a misreporting of a container death duringweave launch
,weave run
and others as network configuration error. #522
performance and scalability improvements
- massively reduce the cost and complexity of topology gossip. This
allows construction of substantially larger weave networks than
hitherto possible, and copes much better with the sudden connection
or disconnection of large numbers of peers. The default per-peer
connection limit has been increased from 10
to 30. #514/#516,#517/#521,#445/#476,#454/#461,#425 - tighten the conditions under which we attempt to connect to the
remote addresses of inbound connections we learn about from other
peers. Being rather lax here was resulting in excessive failed
attempts, with the associated log noise, load, and spuriously
exceeding the configured connection limit. #448/#451/#477,#478/#555 - [dns] cache container DNS records. This significantly reduces lookup time
for IPs in the weaveDNS domain used by application
containers. #225/#429,#473,#494/#501,#532
new administrative features
- containerised execution of the weave script, which enables remote
execution (e.g. by settingDOCKER_HOST
), and makes it possible to run weave purely through docker and without any shell access to the host. #312/#388,#379,#540/#542/#545,#507/#523/#546,#574/#575 - add
weave forget <peer>
command, for removal of decommissioned weave
peers. #486/#488,#549/#550 - allow multiple CIDRs to be specified in weave commands. #467/#498,#568/#570
- accept a list of container names/ids in
weave ps
. #526 - make
weave launch
synchronous, which is useful for automation. #500/#509/#538 - make
weave connect
act immediately, instead of waiting for the
expiry of any timeout from a previous connection attempt to the same
destination. #499
new diagnostics features
- reporting of connection failure reasons in
weave status
. #552 - add weaveDNS status
information,
such as current container/IP/name mappings, toweave status
. #237/#266/#465 - give peers a
nickname
for easier identification, defaulting to the
hostname. #369/#407/#472 - improved logging of connection lifecycle events. #449,#560
- include
weave expose
d addresses inweave ps
output. #385/#558
new weaveDNS features
- handle large responses over UDP and also support TCP fallback. This
is especially needed when containers query external
domains. #362/#392,#360/#361 - allow setting of domain name to something other than
weave.local
#366/#394,#573/#581 - add ability to name
weave expose
d
addresses. #375/#566
build system improvements
- enable containerised
build, making
easier to get a weave development environment set up and contribute
to weave. #370,#387 - Travis CI
integration, including linting. #397,#503,#571,#491 - coverage reports and enable coveralls.io
integration. #396,#505/#508,#557 - make smoke tests work with Docker 1.6. #579
- bump go version to 1.4.2. #490,#535/#536
- speed up tests. #547
miscellaneous improvements
- make weave commands interruptable with Ctrl-C. #391/#395
- stop weave more gracefully in
weave stop/stop-dns/reset
, by
invokingdocker stop
instead ofdocker kill
. #512 - add
WEAVE_PORT
env var for overriding default weave port. #531/#534,#551 - make weaveDNS container configurable by supplying docker parameters
to inWEAVEDNS_DOCKER_ARGS
. #484,#487 - detect UDP connectivity breakage, and recover from it if
possible. #373/#413 - reduce likelihood of IP address clashes in tests and examples. #402
- add installation instructions for CoreOS. #434/#435
Weave 0.9.0
- Improve WeaveDNS to the point where it can act as the name server for containers in nearly all situations.
- Diagnose and report peer connectivity more comprehensively.
- Adapt to changes in topology - adding & removing of weave peers, disruption of connectivity - more rapidly.
- Cope with delays in downloading/running docker images/containers required for weave operation.
Weave 0.8.0
- Align script and image version. When the
weave
script has a version number, i.e. it is part of an official release, it runs docker images matching that version. Thus the script and image versions are automatically aligned. Unversioned/unreleasedweave
scripts run the 'latest'-tagged image versions. - Eliminate dependency on ethtool and conntrack. Instead of requiring these to be installed on the host, weave invokes them via a
weavetools
docker image that contains minimally packaged versions of these utilities. - New
weave setup
command. This downloads all docker images used by weave. Invoking this is strictly optional; its main purpose is to facilitate automated installation of weave and preventing delays in subsequent weave command execution due to image downloading.
Weave 0.7.0
This is the first release assigned a version number.
When downloading weave you now have the following choices...
- a specific version, e.g. https://github.com/zettio/weave/releases/download/v0.7.0/weave
- latest released version: https://github.com/zettio/weave/releases/download/latest_release/weave
- most recent 'master' commit: https://raw.githubusercontent.com/zettio/weave/master/weave
Previously the only documented download location was (3). We recommend
that any automated scripts using that be changed to either (1) or (2).