Comment 16 for bug 1961088

Revision history for this message
Samuel Allan (samuelallan) wrote (last edit ):

For why `bind_ip` doesn't get set initially, is it possible that the initial configuration writing can happen before the interfaces are set up? The function that gets the health_manager_bind_ip can return None if an exception happens when retrieving the interface for all interfaces, or if no interfaces are found:
https://opendev.org/openstack/charm-octavia/src/commit/975502813f51f022887508e7d2c5840308c198d8/src/lib/charm/openstack/octavia.py#L111-L115 This kind of race condition would explain why bind_ip is not set on deployment, but then becomes set when triggering a config change later (and thus reevaluation of this function).

It totally makes sense btw for the lb to display as offline while still working in this case - if the health manager is defaulting to listening on 127.0.0.1, where it cannot be accessed by whatever is checking the health. So the missing `bind_ip` is definitely related at least.

> if we should just set `bind_ip` to '::'

Two questions about this:

- will this introduce a security issue? Is it ok for the health manager to be listening on all interfaces?

- Do we want to always use this interface, or only use this as a fallback if health_manager_bind_ip() fails to get the interfaces?