/kind feature
What happened:
With enable-ingress-hostname=true in the cloud config, OCCM publishes every PROXY protocol load balancer in the Service status as an <ip>.nip.io hostname (perhaps specific to our Cloud Provider). Anything that reads that status to publish DNS, such as ExternalDNS via the Gateway API, can then only create a CNAME to a nip.io name.
What you expected to happen:
A way for one Service to get the IP with ipMode: Proxy instead, which OCCM already does when the option is off. On a managed cluster the cloud config belongs to the provider, so a tenant cannot turn the option off, and the provider is understandably reluctant to change a default for every customer.
How to reproduce it:
- Set
enable-ingress-hostname=true under [LoadBalancer] in the cloud config.
- Create a
type: LoadBalancer Service with loadbalancer.openstack.org/proxy-protocol: "true".
status.loadBalancer.ingress shows hostname: <ip>.nip.io and no ip. No annotation on the Service changes that; loadbalancer.openstack.org/hostname only substitutes another hostname.
Anything else we need to know?:
Proposal: a Service annotation loadbalancer.openstack.org/enable-ingress-hostname that overrides the config option, defaulting to it, in the same way enable-health-monitor overrides create-monitor. Setting it to false yields the IP with ipMode: Proxy, so kube-proxy still leaves the LB IP alone on Kubernetes 1.32 and later. I have a PR ready.
Environment:
- openstack-cloud-controller-manager(or other related binary) version: v1.33.0
- OpenStack version: Octavia on Elastx (managed Kubernetes)
- Others: Kubernetes v1.34.4, Istio Gateway API, ExternalDNS v0.21.0
/kind feature
What happened:
With
enable-ingress-hostname=truein the cloud config, OCCM publishes every PROXY protocol load balancer in the Service status as an<ip>.nip.iohostname (perhaps specific to our Cloud Provider). Anything that reads that status to publish DNS, such as ExternalDNS via the Gateway API, can then only create a CNAME to a nip.io name.What you expected to happen:
A way for one Service to get the IP with
ipMode: Proxyinstead, which OCCM already does when the option is off. On a managed cluster the cloud config belongs to the provider, so a tenant cannot turn the option off, and the provider is understandably reluctant to change a default for every customer.How to reproduce it:
enable-ingress-hostname=trueunder[LoadBalancer]in the cloud config.type: LoadBalancerService withloadbalancer.openstack.org/proxy-protocol: "true".status.loadBalancer.ingressshowshostname: <ip>.nip.ioand noip. No annotation on the Service changes that;loadbalancer.openstack.org/hostnameonly substitutes another hostname.Anything else we need to know?:
Proposal: a Service annotation
loadbalancer.openstack.org/enable-ingress-hostnamethat overrides the config option, defaulting to it, in the same wayenable-health-monitoroverridescreate-monitor. Setting it tofalseyields the IP withipMode: Proxy, so kube-proxy still leaves the LB IP alone on Kubernetes 1.32 and later. I have a PR ready.Environment: