Skip to content

[Bug]: Cannot get F5 Nginx Ingress to report node ExternalIPs to ExternalDNS integration #8655

@artem-zinnatullin

Description

@artem-zinnatullin

Version

5.2.1

What Kubernetes platforms are you running on?

Other

Steps to reproduce

  1. We have k8s cluster with bus-bar ingress networking where most nodes in the cluster run ingress controller and take external HTTP(S) traffic on ports 80 and 443
  2. The current setup uses now deprecated community-maintained ingress-nginx running as DaemonSet with ExternalDNS set up to source=ingress which syncs ingress-controller node external IPs to DNS and works okay
  3. We're now trying to migrate to F5 Nginx Ingress (this repo), however we're facing major challenges as we can't get the F5 Ingress DaemonSet to pick up nodes' ExternalIP to get them reported to ExternalDNS

These are our Helm values for F5 Nginx Ingress (helm chart oci://ghcr.io/nginx/charts/nginx-ingress 2.3.1):

controller:
  kind: DaemonSet
  ingressClass:
    name: f5-nginx
  ingressClassResource:
    setAsDefaultIngress: true
  service:
    enabled: false
    externalTrafficPolicy: Local
  reportIngressStatus:
    enable: true
    externalService: ""
    enableLeaderElection: true
  enableCustomResources: true
  enableCertManager: true
  enableExternalDNS: true
  hostNetwork: true

Here are helm values for ingress-nginx that easily report ExternalIPs to ExternalDNS via Ingress objects (helm chart https://kubernetes.github.io/ingress-nginx 4.14.0):

controller:
  kind: DaemonSet
  ingressClass: ingress-nginx
  ingressClassResource:
    default: true
  service:
    enabled: false
  reportNodeInternalIp: false
  terminationGracePeriodSeconds: 240
  extraArgs:
    shutdown-grace-period: 180
    post-shutdown-grace-period: 1
    status-update-interval: 15
    update-status-on-shutdown: false
    election-ttl: 10s
  hostPort:
    enabled: true

Each node in the cluster has ExternalIP on eth0:

kubectl describe node x

# Real IPs changed here of course.
Addresses:
  InternalIP:  10.0.0.3
  Hostname:    xxx
  ExternalIP:  1.2.3.4

We've tried so many things, but yet to make F5 Nginx resolve the nodes' ExternalIP and report the IPs to ExternalDNS.

How does one make F5 Nginx Ingress resolve node ExternalIP and report it to ExternalDNS without using MetalLB or other LoadBalancers that add unnecessary network hops and cost?

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugAn issue reporting a potential bugneeds triageAn issue that needs to be triagedwaiting for responseWaiting for author's response

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions