villebro opened a new pull request, #360: URL: https://github.com/apache/superset-kubernetes-operator/pull/360
## Summary A component Service with `service.type: NodePort` or `LoadBalancer` that does not pin `service.nodePort` gets a node port auto-allocated by the apiserver on create. The component reconciler rebuilds the desired Service spec from scratch each reconcile (with `nodePort: 0`) and did not preserve the allocated value, so the apiserver re-allocated a **different** node port on every reconcile. The externally reachable node port (and the LoadBalancer target) therefore changed continuously, causing Service update churn and intermittently broken external access. This affects a supported, common configuration and is silent — there is no error, the port just keeps moving. ## Details `preserveServiceAllocatedFields` already carries apiserver-allocated fields (`clusterIP`, `clusterIPs`, `ipFamilies`, `healthCheckNodePort`) from the existing Service into the rebuilt desired spec. This extends it to also preserve per-port `nodePort` for `NodePort`/`LoadBalancer` Services when the user has not pinned one (matching the existing port by name + protocol — the operator names its single port `http`). A user-pinned `nodePort` still wins, and `ClusterIP` Services are deliberately left untouched so a node port is never set on a type that rejects it. ### Tests Extended `TestPreserveServiceAllocatedFields` with cases for: preserving an auto-allocated node port when unpinned, keeping a user-pinned node port over the existing one, and not carrying a node port onto a `ClusterIP` Service. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
