F5Networks / k8s-bigip-ctlr

Repository for F5 Container Ingress Services for Kubernetes & OpenShift.
Apache License 2.0
355 stars 193 forks source link

[CONTCNTR-3566] Make the parameter Host an Array to make EDNS integration easier #2575

Open skenderidis opened 2 years ago

skenderidis commented 2 years ago

Title

Make the parameter "Host" an Array

Description

When having a 2-tier architecture, CIS has the role of the publishing the Ingress Controller (IC) running inside Kubernetes (like NGINX) and the IC has the role of routing the traffic to the application pods based on the Ingress rules. Usually you would publish the IC with the use 1 TransportServer CRD (or Ingresslink, VS).

If you want to use CIS ExternalDNS to publish the applications (lets assume 20 apps) that are running behind NGINX then you would need to have 20 EDNS CRDs that match 20 TransportServer CRD. Each transportServer needs to have different IP and different Host. Which means the relationship is 1-1.

Please see Mark Dittmer's example. https://github.com/mdditt2000/k8s-bigip-ctlr/tree/main/user_guides/externaldns-nginx

Actual Problem

The problem is that for publishing 20 application we need not only 20 EDNS CRDS but also 20 TS CRDS and 20 different IPs. This makes it very difficult to scale.

Solution Proposed

Instead of having 1-1 relationship between EDNS and TS/IngressLink/VS we can implement 1->many relationship. The integration between EDNS and TS is based on the Host Parameter. EDNS's Host parameter needs to match the TS Host parameter. If we change the Host parameter on TS to be an Array, then we could put many (100s) entries on a single TS CRD and EDNS needs to match any of them.

So for 20 applications we will have 20 EDNS CRDs and only 1 TS with 1 IP address

See an example below for IngressLink Host

trinaths commented 1 year ago

Created [CONTCNTR-3566] for internal tracking.

trinaths commented 6 months ago

@skenderidis - Is the RFE still valid ?

skenderidis commented 5 months ago

yes

mdditt2000 commented 5 months ago

@trinaths @skenderidis i believe we resolved this with adding Host to Ingresslink and transportserver CRD. Example https://github.com/mdditt2000/k8s-bigip-ctlr/tree/main/user_guides/per-application-failover#readme

I believe this issue can be closed.