Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Take healthcheck configuration overrides from the backendconfig
This enables taking the healthcheck configuration from a backendconfig associated with the given Service. As part of this PR, we also clean up the override handling to be easier to understand where the settings come from. For a given ServicePort `sp` and its associated healthcheck `hc`: 1. `sp` has some default settings depending on its type (e.g. IG, NEG, ILB). 2. SyncServicePort() will override those settings if the Probe exists. Path, Host, TimeoutSec, CheckIntervalSec. 3. We then sync with what exists in GCE: 3.1 If the healthcheck is does not exist, it will be CREATED. 3.1.1 If it has a backendconfig, then the following settings are used: CheckIntervalSec, TimeoutSec, HealthyThreshold, UnhealthyThreshold, Type, RequestPath We have `Port` in the struct, but it does not seem to be a valid field to use so it is currently ignored. 3.2 Otherwise the healthcheck will need to be UPDATED. The criteria for update can be found in `calculateDiff()`: 3.2.1 Services w/out backendconfig will only update when `Protocol`, `PortSpecification` changes. 3.2.2 Services w/ backendconfig will also consider any fields covered by the backendconfig (see above) 3.2.3 We merge in the settings from the existing healthcheck. As users have (in the past) done edits to their HCs directly, we do not want to break any previous behavior. Thus we merge in all of the settings on HTTPHealthCheck as well as any fields on HealthCheck itself, with the exception of: `Port`, `PortSpecification` 3.2.2 We now consider the backendconfig to be a final override. See list above for settings from the backendconfig. Several situations do not seem to be handled currently: * There is no way to change HC based on probe after it is created. This is because there is no way to tell if the difference is due to a user changing the setting directly in GCE or the HC should be updated. * Changing types to/from NEG, ILB will leak the old healthcheck. User healthchecksettings will not propagate to the new healthcheck. * backendconfig seems to be missing `Host`
- Loading branch information