<div dir="ltr"><p style="margin:0px;font-size:12px;font-family:Helvetica">Hi,</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica;min-height:14px"><br></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">A few months ago, as part of moving from legacy systems to Openstack, there arose a requirement to support SSL APIs in our Openstack cloud infrastructure at Ebay/Paypal. While the new v2 LBaaS API with its considerable design improvements is in the process of addressing the SSL requirements of LBaaS deployments, it is still under development and we had to deploy a solution to address our immediate needs quicker.</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica;min-height:14px"><br></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">There was a previous effort upstream [1] towards this, but that was abandoned. Consequently, we came up with a different design for the LBaaS SSL API that best suited our current requirements, and developed an interim implementation that we currently have deployed on havana, but which can be ported to later releases (icehouse/juno) with minimal changes since it’s designed to be independent modularly and intersects existing code paths at relatively few points.</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica;min-height:14px"><br></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">We think that this API will be useful to the Openstack community and to companies that are currently running Openstack clouds with LBaaS and need SSL API support until LBaaS v2 comes out in Kilo or later, hence this mail containing pointers to the code and instructions.</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica;min-height:14px"><br></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">We have put up the code on github at:</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica;min-height:14px"><br></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">Neutron:</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">——————</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica"><a href="https://github.com/vijayendrabvs/ssl-python-neutronclient.git">https://github.com/vijayendrabvs/ssl-python-neutronclient.git</a></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">branch: stable/havana</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica;min-height:14px"><br></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">LBaaS Driver:</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">——————</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica"><a href="https://github.com/vijayendrabvs/ssl-f5-neutron-lbaas.git">https://github.com/vijayendrabvs/ssl-f5-neutron-lbaas.git</a></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">branch: havana</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica;min-height:14px"><br></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">CLI:</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">——————</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica"><a href="https://github.com/vijayendrabvs/ssl-neutron.git">https://github.com/vijayendrabvs/ssl-neutron.git</a></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">branch: master</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica;min-height:14px"><br></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica;min-height:14px"><br></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">The CLI and API documentation is at:</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica;min-height:14px"><br></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica"><a href="https://github.com/vijayendrabvs/ssl-neutron/blob/stable/havana/SSL-API-README">https://github.com/vijayendrabvs/ssl-neutron/blob/stable/havana/SSL-API-README</a></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica;min-height:14px"><br></p><p style="margin:0px;font-size:12px;font-family:Helvetica;min-height:14px"><br></p><p style="margin:0px;font-size:12px;font-family:Helvetica">We worked with the F5 Openstack team who provided their F5 LBaaS driver to work with our deployment of F5 LBs. We added the necessary modules in their driver to plumb SSL entities on the LB, in the F5 plugin and agent driver.</p><p style="margin:0px;font-size:12px;font-family:Helvetica"><br></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">F5 has currently released its drivers under the Mozilla license, and is in the process of releasing the same under Apache License to align with the rest of Openstack code.</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica;min-height:14px"><br></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">We do not currently intend to commit this code to upstream stable havana, unless the community thinks that doing so can be useful and pushes for it.</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica;min-height:14px"><br></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">At the time we developed this solution, HAProxy hadn’t come out with version 1.5 yet and thus didn’t support SSL, and lack of cycles meant we weren’t able to implement a reference implementation for HAProxy as well. That said, doing so would build on the same approach we use with F5, in reconfiguring HAProxy from the HAProxy driver to setup SSL termination on VIPs.</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica;min-height:14px"><br></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">A point to note is that we have relied on using the neutron db to store our certs/cert chains/cert keys. While this meets our current requirements, we wish to emphasize that this may not suit all deployments. The new LBaaS v2 API is designed to integrate with Barbican and thus address such requirements.</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica;min-height:14px"><br></p><p style="margin:0px;font-size:12px;font-family:Helvetica;min-height:14px">Finally, going forward, we will need to write migration scripts once the LBaaS v2 API is ready, and deploying v1’s SSL API will get us started towards that goal.<br></p>
<p style="margin:0px;font-size:12px;font-family:Helvetica;min-height:14px"><br></p><p style="margin:0px;font-size:12px;font-family:Helvetica;min-height:14px">Please let us know if you have any questions regarding the code or deploying it - we would be happy to help!</p><p style="margin:0px;font-size:12px;font-family:Helvetica;min-height:14px"><br></p><p style="margin:0px;font-size:12px;font-family:Helvetica;min-height:14px">Thanks,</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">Regards,</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica">Vijay B</p>
<p style="margin:0px;font-size:12px;font-family:Helvetica;min-height:14px"><br></p>
<p style="margin:0px;font-size:11px;font-family:Menlo"><span style="font-size:12px;font-family:Helvetica">[1] </span><a href="https://review.openstack.org/#/c/74031/5">https://review.openstack.org/#/c/74031/5</a></p>
<p style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></p></div>