Commit graph

176 commits

Author SHA1 Message Date
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
Jana Radhakrishnan
7d7b9f2405 Add support to accepting arbitrary network ID
Currently the libnetwork function `NewNetwork` does not allow
caller to pass a network ID and it is always generated internally.
This is sufficient for engine use. But it doesn't satisfy the needs
of libnetwork being used as an independent library in programs other
than the engine. This enhancement is one of the many needed to
facilitate a generic libnetwork.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2016-04-15 12:34:21 -07:00
Jana Radhakrishnan
f539be8a63 Create driver registry package
Currently driver management logic is tightly coupled with
libnetwork package and that makes it very difficult to
modularize it and use it separately. This PR modularizes
the driver management logic by creating a driver registry
package.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
2016-04-09 09:43:43 -07:00
Madhu Venugopal
c92b196d2e Reload config should initialize only the appropriate datastore
With the current implementation, a config relaod event causes all the
datastores to reinitialize and that impacts objects with Persist=false
such as none and host network.

Signed-off-by: Madhu Venugopal <madhu@docker.com>
2016-03-25 01:10:03 -07:00
Alessandro Boch
c92a4e9fd6 Avoid network/endpoint count inconsistences
- ... on ungraceful shutdown during network create
- Allow forceful deletion of network
- On network delete, first mark the network for deletion
- On controller creation, first forcely remove any network
  that is marked for deletion.

Signed-off-by: Alessandro Boch <aboch@docker.com>
2016-03-15 09:09:13 -07:00
Stefan Weil
13451d9a07 Fix some typos in comments and strings
All of them were found and fixed by codespell.

Signed-off-by: Stefan Weil <sw@weilnetz.de>
2016-03-01 16:45:14 +01:00
Alessandro Boch
209cb0b476 Allow to pass global datastore config
- After boot via ReloadConfiguration() method

Signed-off-by: Alessandro Boch <aboch@docker.com>
2016-02-17 13:13:58 -08:00
Alessandro Boch
247e8034b8 Introduce discoverapi.Discover interface
- Move DiscoverNew() and DiscoverDelete() methods into the new interface
- Add DatastoreUpdate notification
- Now this interface can be implemented by any drivers, not only network drivers

Signed-off-by: Alessandro Boch <aboch@docker.com>
2016-01-28 12:13:04 -08:00
Madhu Venugopal
a7c52918fd Force delete sandbox during sandboxCleanup
Stale sandbox and endpoints are cleaned up during controller init.
Since we reuse the exact same code-path, for sandbox and endpoint
delete, they try to load the plugin and it causes daemon startup
timeouts since the external plugin containers cant be loaded at that
time. Since the cleanup is actually performed for the libnetwork core
states, we can force delete sandbox and endpoint even if the driver is
not loaded.

Signed-off-by: Madhu Venugopal <madhu@docker.com>
2016-01-17 14:47:49 -08:00