Skip to content

[occm] Per-Service override for enable-ingress-hostname #3232

Description

@BeyondEvil

/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:

  1. Set enable-ingress-hostname=true under [LoadBalancer] in the cloud config.
  2. Create a type: LoadBalancer Service with loadbalancer.openstack.org/proxy-protocol: "true".
  3. 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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind/featureCategorizes issue or PR as related to a new feature.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions