ngrok / kubernetes-ingress-controller

The official ngrok Ingress Controller for Kubernetes
https://ngrok.com
MIT License
183 stars 20 forks source link

feat: Auto-provision domain for TLS Edges #386

Closed jonstacks closed 1 month ago

jonstacks commented 1 month ago

contributes to #375. Pulling this change out for easier review.

What

The hostports for a given TLS Edge need to be reserved as domains in ngrok before they can be used. Because of this, it makes sense that the TLSEdge handles reserving the domains if they aren't already reserved in the same way that the TCPEdge controller will take care of reserved addrs and the same way that the ingress controller builds the list of domains to reserve in its store across namespaces.

How

Parse out the hostports defined in the TLSEdge and automatically find or reserve the necessary domains. Also, populate a new field cnameTargets map in the TLSEdge's Status that contains the CNAME target from the domains. This will allow other controllers which may create TLSEdges to use the CNAMETargets map. For example, Services can use this to update the .status.loadBalancer.ingress fields.

Also handles dangling CNAME records more gracefully in the domain controller by retrying them.

Breaking Changes

No