<div dir="ltr"><br><div class="gmail_quote"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class="">On Fri, Aug 14, 2015 at 5:36 PM, Adrian Otto <span dir="ltr"><<a href="mailto:adrian.otto@rackspace.com" target="_blank">adrian.otto@rackspace.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="auto">
<div>That's clear, thanks Gal. The feature benchmark should be parity with how the majority of other (complete) remote drivers for libnetwork behave. From a Magnum perspective we value consistency from an end user perspective when you use containers on OpenStack
compared to when you run them outside of an OpenStack cloud environment. </div></div></blockquote></span><div><br><div><br></div><div>When I previously evaluated the port mapping question, the most valid reasons I could see of why an operator<br>that uses Neutron to provide container networking would want port mapping was:<br>- density and availability of floating IPs, i.e. how many endpoints I could expose, which instead of being<br> determined by the amount of free FIPs it would be #FIPs times ports.<br></div><div>- current restrictions in the container orchestration software to use.<br></div> <br></div><span class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto">
<div><br>
</div>
<div>If we offer extra features that's okay, but we do need to be careful not to to leave feature gaps where things hat work elsewhere don't work on OpenStack. Do we know if there are other libnetwork remote drivers that support port mapping, or have a statement
of intent to implement it? That should help guide us here. Is it too early to know?<br></div></div></blockquote><div><br></div></span><div>I would imagine that those that have a network model in which the container networking is accessible/routable from the host<br></div><div>networking namespace will find a way to accommodate the port mapping use case and will always use the host IP as the address to<br></div><div>reach the containers it contains.<br><br></div><div>The last status I saw for Docker's own overlay driver was that they did not have a way to provide port mapping and that one<br></div><div>option that they had considered for software that depended on it was to have one veth on the overlay and one veth for port<br></div><div>mapping. <br></div><div><br></div><div>Under the Neutron networking implementations the networks in which the instances running in a compute node take part<br>are not necessarily routable/reachable from the default host namespace. This is something that would break some<br></div><div>assumptions made by container orchestration that was developed when there was only the typical docker0 bridge<br></div><div>scenario.<br><br>In Kubernetes, for example one would normally target the minions with external load balancers and then the port<br></div><div>mapping would get the data from the host to the correct pod. In Neutron, to serve this case, the usual thing would be<br></div><div>to use Neutron's LBaaS and assign a FIP to the LBaaS. Of course, that means that you get a whole FIP for a single<br></div><div>service and that may be expensive.<br></div><div><br></div>We have to work with the current bay model providers and see how many assumptions need to be accommodated<br></div><div class="gmail_quote">(either by Neutron API usage patterns or extensions) and which could be smoothened out by means of plugins in <br>the orchestrator.<div><div class="h5"><br><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div>
<br>
--
<div>Adrian</div>
</div><div><div>
<div><br>
On Aug 14, 2015, at 8:09 AM, Gal Sagie <<a href="mailto:gal.sagie@gmail.com" target="_blank">gal.sagie@gmail.com</a>> wrote:<br>
<br>
</div>
<blockquote type="cite">
<div>
<div dir="ltr">Hi Adrian,
<div><br>
</div>
<div>Thanks for the explanation, i agree with you that we shouldn't break anything useful in docker, but from what i understand</div>
<div>(and please correct me if i am wrong) you are describing an implementation detail of docker networking (at its default current state).</div>
<div><br>
</div>
<div>Kuryr is not an implementation of containers networking, it is meant to allow docker networking to be</div>
<div>constructed using Neutron plugins and solutions.</div>
<div><br>
</div>
<div>For the point i was trying to make, lets take the simple case of connecting containers in a host (not the nested VM case), assuming</div>
<div>we use with Kuryr the L2 OVS agent and L3 agent (Neutron reference implementation) and we are able to plug</div>
<div>containers to a neutron network and define a floating ip to it, why would we need port mapping? (the iptables</div>
<div>translation is already happening as we have NAT)</div>
<div><br>
</div>
<div>Hope that make sense, and please correct me if i am saying nonsense or i didn't grasp the full</div>
<div>use case of port mapping.</div>
<div>But none the less, we will need to allow anything that docker allows and keep compatibility with all the available tooling</div>
<div>that depends on it as you mention (and of course be flexible to use Kuryr in the same environment with other </div>
<div>docker remote drivers)</div>
<div><br>
</div>
<div>Gal</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Fri, Aug 14, 2015 at 5:26 PM, Adrian Otto <span dir="ltr">
<<a href="mailto:adrian.otto@rackspace.com" target="_blank">adrian.otto@rackspace.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="auto">
<div>The port mapping feature is the -p flag on the "docker run" command. It determines which ports in the network namespace of the container are exposed to the root namespace. It configures iptables rules and docker proxy capabilities to achieve the desired
result. This feature is essential, so we must not break it.</div>
<div><br>
</div>
<div>In other words, this feature is what allows a network port within a container to be externally accessed, and on what IP address(es) and port number(s) on the host.</div>
<div><br>
</div>
<div>Example:</div>
<div><br>
</div>
<div>docker run -d -p 12.34.56.7:8000:80 nginx:latest</div>
<div><br>
</div>
<div>This runs the nginx container and exposes top port 80 from inside the container to tcp port 8000 on 12.34.56.7 on the host. Without this feature docker is rather useless for running network services unless you use -net host or an equivalent workaround.
This could break a lot of tooling that depends on -p.<br>
<br>
--
<div>Adrian</div>
</div>
<div>
<div>
<div><br>
On Aug 14, 2015, at 6:57 AM, Gal Sagie <<a href="mailto:gal.sagie@gmail.com" target="_blank">gal.sagie@gmail.com</a>> wrote:<br>
<br>
</div>
<blockquote type="cite">
<div>
<div dir="ltr">Hi feisky,
<div><br>
</div>
<div>I think thats a great question, not because of port-mapping in particular :) but because</div>
<div>we need to think on a feature by feature basis and map all the features the dockers API allow which</div>
<div>we cannot support directly with Neutron API or its services sub-projects API.</div>
<div>(apuimedo, maybe we need to set this as a future task for us)</div>
<div><br>
</div>
<div>But we also need to understand the use cases for supporting these API's so we can address them</div>
<div>and give them priorities (and this is something we as a community need to decide how to handle).</div>
<div><br>
</div>
<div>For your question, given that we have network isolation and security from neutron API's and given</div>
<div>we have NAT support (by Neutron API and the plugins implementing the network) , what do you see as a use case to use the port-mapping ? </div>
<div><br>
</div>
<div>I welcome you and everyone else to raise and describe these use cases so the Neutron/Kuryr community can think</div>
<div>how to solve and help, and if needed also adjust or add extensions for support.</div>
<div><br>
</div>
<div>Thanks</div>
<div>Gal.</div>
<div><br>
</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Fri, Aug 14, 2015 at 7:28 AM, feisky <span dir="ltr">
<<a href="mailto:feiskyer@gmail.com" target="_blank">feiskyer@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Will Kuryr supports docker's port-mapping?<br>
<br>
<br>
<br>
--<br>
View this message in context: <a href="http://openstack.10931.n7.nabble.com/neutron-kuryr-magnum-Design-Specification-for-Kuryr-tp82256p82299.html" rel="noreferrer" target="_blank">
http://openstack.10931.n7.nabble.com/neutron-kuryr-magnum-Design-Specification-for-Kuryr-tp82256p82299.html</a><br>
Sent from the Developer mailing list archive at <a href="http://Nabble.com" target="_blank">
Nabble.com</a>.<br>
<div>
<div><br>
__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">
OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
</div>
</div>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div>Best Regards ,<br>
<br>
The G. </div>
</div>
</div>
</blockquote>
<blockquote type="cite">
<div><span>__________________________________________________________________________</span><br>
<span>OpenStack Development Mailing List (not for usage questions)</span><br>
<span>Unsubscribe: <a href="mailto:OpenStack-dev-request@lists.openstack.org" target="_blank">
OpenStack-dev-request@lists.openstack.org</a>?subject:unsubscribe</span><br>
<span><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a></span><br>
</div>
</blockquote>
</div>
</div>
</div>
<br>
__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">
OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div>Best Regards ,<br>
<br>
The G. </div>
</div>
</div>
</blockquote>
<blockquote type="cite">
<div><span>__________________________________________________________________________</span><br>
<span>OpenStack Development Mailing List (not for usage questions)</span><br>
<span>Unsubscribe: <a href="mailto:OpenStack-dev-request@lists.openstack.org" target="_blank">OpenStack-dev-request@lists.openstack.org</a>?subject:unsubscribe</span><br>
<span><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a></span><br>
</div>
</blockquote>
</div></div></div>
<br>__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br></blockquote></div></div></div><br></div></div>
</div><br></div>