Kuryr Kubernetes Loadbalancers Reconciliation Design
The purpose of this document is to define the design decision behind the OpenStack resources reconciliation. A ServiceReconciliationHandler is added to the Kuryr Controller pipeline which manages the OpenStack service events. Change-Id: Ib28708fa726137469913f1b83e679a905490b218
This commit is contained in:
parent
512d6d80e0
commit
a8a3ba0a6e
Binary file not shown.
After Width: | Height: | Size: 28 KiB |
Binary file not shown.
After Width: | Height: | Size: 35 KiB |
|
@ -45,6 +45,7 @@ Design documents
|
||||||
kuryr_kubernetes_versions
|
kuryr_kubernetes_versions
|
||||||
network_policy
|
network_policy
|
||||||
updating_pod_resources_api
|
updating_pod_resources_api
|
||||||
|
lbaas_reconciliation_design.rst
|
||||||
|
|
||||||
|
|
||||||
Indices and tables
|
Indices and tables
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
..
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||||
|
License.
|
||||||
|
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
Convention for heading levels in Neutron devref:
|
||||||
|
======= Heading 0 (reserved for the title in a document)
|
||||||
|
------- Heading 1
|
||||||
|
~~~~~~~ Heading 2
|
||||||
|
+++++++ Heading 3
|
||||||
|
''''''' Heading 4
|
||||||
|
(Avoid deeper levels because they do not render well.)
|
||||||
|
|
||||||
|
====================================================
|
||||||
|
Kuryr Kubernetes Loadbalancers Reconciliation Design
|
||||||
|
====================================================
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
-------
|
||||||
|
The purpose of this document is to present an approach for implementing the
|
||||||
|
design of the Kuryr Kubernetes Loadbalancers reconciliation.
|
||||||
|
|
||||||
|
Overview
|
||||||
|
--------
|
||||||
|
|
||||||
|
Currently, if the OpenStack loadbalancer is manually deleted or removed,
|
||||||
|
due to the Octavia loadbalancer being stuck on PENDING_UPDATE, Kuryr does
|
||||||
|
not detect this event neither does it recreate the OpenStack resources.
|
||||||
|
Hence, it is necessary to monitor changes in OpenStack resources in order
|
||||||
|
to ensure that the information on the "spec" section of the CRD is represented
|
||||||
|
on OpenStack, and then update the "status" of the CRD with the recovered or
|
||||||
|
created OpenStack resources.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Proposed Solution
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
The implementation requires detecting changes in OpenStack loadbalancers
|
||||||
|
and reconciling with KuryrKubernetes CRD. The OpenStack resources are pooled
|
||||||
|
occasionally to check for the information on the spec data. If some resources
|
||||||
|
on OpenStack are missing, we remove them from the associated KuryrLoadBalancer
|
||||||
|
CRD status, so that the KuryrLoadBalancerHandler react to it (re-executes the
|
||||||
|
on_present function) and by executing the sync_lbaas_member function reconciles
|
||||||
|
it (i.e., recovering the existing resources, recreating the missing ones).
|
||||||
|
|
||||||
|
Diagram describing Loadbalancers Reconciliation Design
|
||||||
|
|
||||||
|
.. image:: ../../images/lbaas_recon_design.png
|
||||||
|
:alt: Lbaas reconciliation design
|
||||||
|
:align: center
|
||||||
|
:width: 100%
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Kuryr Controller Impact
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
We shall implement a reconciliation event which checks the OpenStack loadbalancers
|
||||||
|
for missing spec data. Since the KuryrLoadBalancerHandler watches the
|
||||||
|
KuryrLoadBalancers CRD, we shall implement the reconciliation event on the handler.
|
||||||
|
If there is a missing information on the OpenStack resource, the
|
||||||
|
KuryrLoadBalancerHandler which has the KuryLoadBalancer CRD, sets the status field
|
||||||
|
to `empty`. This triggers the KuryrLoadBalancerHandler which then reconciles the
|
||||||
|
OpenStack resources by calling the LoadBalancer Driver.
|
||||||
|
|
||||||
|
Diagram describing Loadbalancers Reconciliation Design
|
||||||
|
|
||||||
|
.. image:: ../../images/lbaas_recon_flow.png
|
||||||
|
:alt: Lbaas reconciliation flow design
|
||||||
|
:align: center
|
||||||
|
:width: 100%
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue