-
Notifications
You must be signed in to change notification settings - Fork 24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature Request] Implement LBaaS in Yaook #719
Comments
FTR, here is one of the main problems that prevented integration of Octavia in Yaook so far: https://storyboard.openstack.org/#!/story/2007370#comment-153426 In Yaook, any database instances are running behind HAProxy instances. This does seem to lead to severe problems with Octavia in production, according to the linked issue. We should at least consider having a look at improving Octavia and/or its integration as re-implementing the whole Octavia LBaaS v2 API using a different LB framework will be no easy feat either. We should get in touch with @horazont and check if there were other issues observed with Octavia than the one mentioned above that would need to be addressed as well. |
I had a discussion with @horazont about this:
Footnotes |
While discussing the topic in a small topic kickoff with @kgube, @josephineSei and @kitsudaiki we identified the following tasks:
Note that aside from the last point most of these tasks are independent and can be addressed in parallel. Footnotes |
@markus-hentsch In Kolla (used by OSISM by default to deploy OpenStack) there are 2 ways to access the MariaDB Galera cluster: HAPRoxy + ProxySQL. With both ways all nodes in a cluster access the database through the same node. This is the node that holds the primary IP address managed by Keepalived. If Keepalived is not used and the database is accessed otherwise and possibly not via only one node, I think Galera ensures that the information is identical on all nodes because Galera implements a multi-master cluster. |
Started with a first prototypical octavia-operator for YAOOK. Reactivated the old issue on gitlab regarding the octavia integration ( https://gitlab.com/yaook/operator/-/issues/186 ) and create a new brauch for an octavia-operator ( https://gitlab.com/yaook/operator/-/tree/feature/add-octavia-operator ) and octavia docker-image for YAOOK ( https://gitlab.com/yaook/images/octavia/-/tree/feature/initial-version ) for the implementation. |
For Amphora images you can use https://github.com/osism/openstack-octavia-amphora-image. I will add 2024.2 images later this day. |
I was looking through the Octavia documentation today and tried to identify use cases and features. Different drivers / possible other choices:At first there it can be noted, that the VM or container with the load-balancer itself (amphora) can be substituted by other options(see: https://docs.openstack.org/octavia/latest/admin/providers/index.html):
From all these drivers that could be used only OVN is compared to Amphora in several feature matrices here. Looking through this document, it can be seen that there is a huge gap that seems to mainly be around everything needed for Layer 7 loadbalancing, which OVN does not support. Example Use CasesOctavia guides for basic and Layer 7 load-balancing give many examples for use cases. It could be very coarsely divided into:
Problem: TLSTo make use of TLS termintation or re-encryption a deployment with a working Key-Manager is needed. Further FeaturesThere are other features that come with Octavia, that are useful for operators mostly:
|
This might be important concerning Octavia with OVN backend: osism/issues#959 |
To make our Cluster Stacks working (or other Cluster API solutions) without special hacks, we need LBaaSv2 loadbalancers at two places: I have been trying to use the OVN provider instead of amphorae in Cluster-API-Provider (KaaS-v1), because this makes the thing much more resource-efficient, more reliable and also allows for seeing the client-IPs. (In general, I'm more convinced of the design of doing L3 loadbalancing right at the network level and leaving the L7 complexity to some other place.) Historic information is here, updated by |
Current state of the implementation of the octavia-operator for YAOOK:
|
Update status of the octavia-operator in YAOOK: Additional to the last week missing network-configuration and the certificates, some other problems appeared while testing, which were fixed thanks to debug-support by @markus-hentsch. Current prototype of the octavia-operator with amphora works. The setup was successfully tested so far by creating a load-balancer with 2 VMs behind the load-balancer and successfully accessed both VMs round-robin over the floating-ip, which was bound to the load-balancer. The current state is only a first prototype and not ready for merge to the main-branch. Still open tasks:
|
Regarding the SCS KaaS requirements for load balancing: there is a draft for a DR (though it might be changed to a standard) that requires the Service type LoadBalancer. There is also an octavia ingress controller, which uses the LBaaS L7 capabilities to implement the Ingress API. |
Restructured code and added basic documentation. Created PR in Draft-state so far to make the checks of the CI-pipeline green: https://gitlab.com/yaook/operator/-/merge_requests/2679 , but unit- and integration-tests still have to be done |
While trying to add a second provider network to my test-deployment, which should work as load-balancer manger network for further tests, I accidentally broke my OVN by an invalid configuration, which takes/took me some time to fix. |
I removed the Nova and Neutron layer from the test deployment again to completely wipe the networking stuff, cleaned up any remnants and redeployed both services. It should work again now. |
Added unit- and integration-tests for the new octavia-operator in YAOOK and after testing also with dedicated load-balancer-provider-network, I marked the merge-requests for review:
(the octavia-image has to be merged first in order so set valid image-tags, so the operator is still in draft-mode at the moment) |
Yaook as a further implementation of SCS standards, does not support a standard conform load balancer, yet. We have to provide one. At this, the only requirement is to provide a OpenStack conform endpoint to the user. The behavior behind the sense does not matter.
Tasks:
This issue is related to #587, which standardizes mandatory and recommended IaaS Service and LBaaS should be part of it.
The text was updated successfully, but these errors were encountered: