Commit graph

134 commits

Author SHA1 Message Date
Alessandro Boch
ded6e1934a Clear ingress resources on graceful shutdown
Signed-off-by: Alessandro Boch <aboch@docker.com>
2016-09-29 15:01:44 -07:00
Anusha Ragunathan
003e04775b Make libnetwork understand pluginv2.
As part of daemon init, network and ipam drivers are passed a
pluginstore object that implements the plugin/getter interface. Use this
interface methods in libnetwork to interact with network plugins. This
interface provides the new and improved pluginv2 functionality and falls
back to pluginv1 (legacy) if necessary.

Signed-off-by: Anusha Ragunathan <anusha@docker.com>
2016-09-27 15:29:10 -07:00
Madhu Venugopal
9fae5d1779 Merge pull request #1412 from msabansal/dnsv2
DNS support for Windows
2016-09-20 17:35:26 -07:00
msabansal
7f43fd30f3 DNS support
Signed-off-by: msabansal <sabansal@microsoft.com>
2016-09-20 13:02:02 -07:00
Jana Radhakrishnan
f34bd07737 Merge pull request #1449 from sanimej/ingress
Name the ingress sandbox explicitly
2016-09-20 11:39:57 -07:00
Santhosh Manohar
e31db5d6af Name the ingress sandbox explicitly
Signed-off-by: Santhosh Manohar <santhosh@docker.com>
2016-09-15 15:22:57 -07:00
Alessandro Boch
989d9b2cc4 Check if IPv6 is enabled before restoring the network pools
Signed-off-by: Alessandro Boch <aboch@docker.com>
2016-09-15 11:21:33 -07:00
Jana Radhakrishnan
ff59f1baab Serialize dynamic network creation
When dynamic networks are created and there is a race in creation of the
same network from two different tasks then one of them will fail while
the other will succeed. For service tasks this is not a big problem
because they will be rescheduled again. But for attachment tasks this
can be a problem since they won't get recreated and making the whole
connection fail. Fixed it by serializing network creation for the
network with the same id and trying to see if the id is present after
coming out of wait.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2016-09-12 15:24:38 -07:00
Alessandro Boch
2a1ea8a642 Merge pull request #1398 from sanimej/access
Allow reachability across services on the same host
2016-08-30 23:06:12 +02:00
Santhosh Manohar
416a730dad Allow reachability across services on different networks in the same host
This also allows pubslied services to be accessible from containers on bridge
networks on the host

Signed-off-by: Santhosh Manohar <santhosh@docker.com>
2016-08-29 22:25:21 -07:00
Jana Radhakrishnan
9041996509 Nil check ingressSandbox before deleting
Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2016-08-25 22:41:59 -07:00
Jana Radhakrishnan
b29ba21551 Avoid double close of agentInitDone
Avoid by reinitializing the channel immediately after closing the
channel within a lock. Also change the wait code to cache the channel in
stack be retrieving it from controller and wait on the stack copy of the
channel.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2016-08-24 14:00:36 -07:00
Jana Radhakrishnan
4f55b50f93 Cleanup service bindings when leaving cluster
When leaving the entire gossip cluster or when leaving a network
specific gossip cluster, we may not have had a chance to cleanup service
bindings by way of gossip updates due to premature closure of gossip
channel. Make sure to cleanup all service bindings since we are not
participating in the cluster any more.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2016-08-19 18:11:15 -07:00
Santhosh Manohar
6e965c03ad Reset the encryption keys on swarm leave
Signed-off-by: Santhosh Manohar <santhosh@docker.com>
2016-08-16 17:37:33 -07:00
Jana Radhakrishnan
4b80c3411d Cleanup ingress network and sandbox on leave
When a node leaves the swarm cluster, we should cleanup the ingress
network and sandbox. This makes sure that when the next time the node
joins the swarm it will be able to update the cluster with the right
information.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2016-08-17 13:48:51 -07:00
Santhosh Manohar
ab02b015ef Remove unused key handling functions
Signed-off-by: Santhosh Manohar <santhosh@docker.com>
2016-08-05 04:46:01 -07:00
allencloud
d69747e19e fix typo in comments and log
Signed-off-by: allencloud <allen.sun@daocloud.io>
2016-07-30 02:21:10 +08:00
Madhu Venugopal
d6fefd1ad8 Merge pull request #1346 from aboch/lk
Lock in isAgent() and inMaster()
2016-07-22 17:50:39 -07:00
Alessandro Boch
3c36b06cb3 Lock in isAgent() and inMaster()
Signed-off-by: Alessandro Boch <aboch@docker.com>
2016-07-22 14:21:28 -07:00
Alessandro Boch
47c071b654 Save the controller config on config reload
Signed-off-by: Alessandro Boch <aboch@docker.com>
2016-07-21 12:09:07 -07:00
Madhu Venugopal
68e53443c9 Merge pull request #1323 from aboch/sbr
Return proper error types on sandbox creation
2016-07-12 21:33:30 -07:00
Alessandro Boch
2e88dfa406 Return proper error types on sandbox creation
Signed-off-by: Alessandro Boch <aboch@docker.com>
2016-07-12 21:02:10 -07:00
Alessandro Boch
d0192db0cd On agent init, re-join on existing cluster networks
Signed-off-by: Alessandro Boch <aboch@docker.com>
2016-07-12 17:35:32 -07:00
Madhu Venugopal
576267bfb9 Moving IPAM initalization out of drvRegistry into libnetwork core
Signed-off-by: Madhu Venugopal <madhu@docker.com>
2016-07-05 16:42:34 -07:00
Jana Radhakrishnan
bc89397105 Index service on both id and portconfigs
While trying to update loadbalancer state index the service both on id
and portconfig. From libnetwork point of view a service is not just
defined by its id but also the ports it exposes. When a service updates
its port its id remains the same but its portconfigs change which should
be treated as a new service in libnetwork in order to ensure proper
cleanup of old LB state and creation of new LB state.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2016-06-27 15:37:22 -07:00
Santhosh Manohar
8ded762a0b Update key handling logic to process keyring with 3 keys
Signed-off-by: Santhosh Manohar <santhosh@docker.com>
2016-06-11 04:50:25 -07:00
Jana Radhakrishnan
d5ce149555 Do not add loadbalancer to unpopulated sandboxes
When adding a loadbalancer to a sandbox, the sandbox may have a valid
namespace but it might not have populated all the dependent network
resources yet. In that case do not populate that endpoint's loadbalancer
into that sandbox yet. The loadbalancer will be populated into the
sandbox when it is done populating all the dependent network resources.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2016-06-15 19:58:33 -07:00
Alessandro Boch
9328f1ea1e Refresh special drivers networks if present in store
Signed-off-by: Alessandro Boch <aboch@docker.com>
2016-06-14 21:50:58 -07:00
Alessandro Boch
ae90761a21 Reserve addresses of existing local endpoints
Signed-off-by: Alessandro Boch <aboch@docker.com>
2016-06-13 23:48:00 -07:00
Lei Jitang
055c5dd496 Add network restore to support docker live restore container
Signed-off-by: Lei Jitang <leijitang@huawei.com>
2016-06-13 23:48:00 -07:00
Jana Radhakrishnan
a70909792a Reserve IPAM pools before resource cleanup
If the IPAM pools are not reserved before resource cleanup happens then
the resource release will not happen correctly.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2016-06-11 19:19:16 -07:00
Madhu Venugopal
0e284be943 Handle the case of reseting the Cluster Provider for leave cases
Signed-off-by: Madhu Venugopal <madhu@docker.com>
2016-06-10 08:46:22 -07:00
Jana Radhakrishnan
cd1362e370 Revert "Handle the case of reseting the Cluster Provider for leave caes" 2016-06-09 20:18:49 -07:00
Madhu Venugopal
74fdcb1f4b Handle the case of reseting the Cluster Provider for leave caes
Signed-off-by: Madhu Venugopal <madhu@docker.com>
2016-06-09 16:51:44 -07:00
Jana Radhakrishnan
26ae9499f0 Set controller ingress state only if ingress
Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2016-06-07 19:51:44 -07:00
Santhosh Manohar
c4d5bbad7a Use controller methods for handling the encyrption keys from agent
instead of the Provider interface methods.

Signed-off-by: Santhosh Manohar <santhosh@docker.com>
2016-06-05 00:47:30 -07:00
Jana Radhakrishnan
409431edd3 Merge pull request #1217 from sanimej/cpsec
Add support for encrypting gossip traffic
2016-06-06 15:56:37 -07:00
Jana Radhakrishnan
3eff69860d Reset agentInitDone channel when leaving a cluster
When leaving a cluster the agentInitDone should be re-initialized so tha
when a new cluster is initialized this is usable.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2016-06-06 11:35:35 -07:00
Jana Radhakrishnan
a63fca344f Add agent initialization wait method in controller
Agent initialization wait method is added to make sure callers for
controller methods which depend on agent initialization to be complete
can wait on it.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2016-06-05 19:37:13 -07:00
Jana Radhakrishnan
f98cfa5597 Fix a missing unlock on ingress sandbox failure
Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2016-06-05 18:59:35 -07:00
Madhu Venugopal
9054ac2b48 Provide a way for libnetwork to make use of Agent mode functionalities
Signed-off-by: Madhu Venugopal <madhu@docker.com>
2016-06-05 18:41:21 -07:00
Madhu Venugopal
79c0292f53 Merge pull request #1208 from mrjana/lb
Add ingress load balancer
2016-06-05 09:33:14 -07:00
Jana Radhakrishnan
0f89c9b7bc Add ingress load balancer
Ingress load balancer is achieved via a service sandbox which acts as
the proxy to translate incoming node port requests and mapping that to a
service entry. Once the right service is identified, the same internal
loadbalancer implementation is used to load balance to the right backend
instance.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2016-06-04 20:38:32 -07:00
Santhosh Manohar
b2b87577d4 Add support for encrypting gossip traffic
Signed-off-by: Santhosh Manohar <santhosh@docker.com>
2016-06-04 03:55:14 -07:00
Madhu Venugopal
1242f27cb5 Merge pull request #1130 from aboch/noips
Avoid persisting ipam data if it can be reconstructed
2016-06-03 19:08:02 -07:00
allencloud
de588f950d fix typos
Signed-off-by: allencloud <allen.sun@daocloud.io>
2016-05-30 18:20:52 +08:00
Alessandro Boch
651f6ea0fa Avoid persisting ipam data if it can be reconstructed
- Also restore older behavior where overlap check is not run
  when preferred pool is specified. Got broken by recent changes

Signed-off-by: Alessandro Boch <aboch@docker.com>
2016-05-12 10:27:10 -07:00
Jana Radhakrishnan
ffdceda255 Add service support
Add a notion of service in libnetwork so that a group of endpoints
which form a service can be treated as such so that service level
features can be added on top. Initially as part of this PR the support
to assign a name to the said service is added which results in DNS
queries to the service name to return all the IPs of the backing
endpoints so that DNS RR behavior on the service name can be achieved.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2016-05-05 16:47:05 -07:00
Jana Radhakrishnan
0580043718 Add libnetwork agent mode support
libnetwork agent mode is a mode where libnetwork can act as a local
agent for network and discovery plumbing alone while the state
management is done elsewhere. This completes the support for making
libnetwork and its associated drivers to be completely independent of a
k/v store(if needed) and work purely based on the state information
passed along by some some external controller or manager. This does not
mean that libnetwork support for decentralized state management via a
k/v store is removed.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2016-05-02 18:19:32 -07:00
Jana Radhakrishnan
6fb69f0816 Add driver api enhancements for gossip
With the introduction of a driver generic gossip in libnetwork it is not
necessary for drivers to run their own gossip protocol (like what
overlay driver is doing currently) but instead rely on the gossip
instance run centrally in libnetwork. In order to achieve this, certain
enhancements to driver api are needed. This api aims to provide these
enhancements.

The new api provides a way for drivers to register interest on table
names of their choice by returning a list of table names of interest as
a response to CreateNetwork. By doing that they will get notified if a
CRUD operation happened on the tables of their interest, via the newly
added EventNotify call.

Drivers themselves can add entries to any table during a Join call by
invoking AddTableEntry method any number of times during the Join
call. These entries lifetime is the same as the endpoint itself. As soon
as the container leaves the endpoint, those entries added by driver
during that endpoint's Join call will be automatically removed by
libnetwork. This action may trigger notification of such deletion to all
driver instances in the cluster who have registered interest in that
table's notification.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2016-04-18 19:55:39 -07:00