Kong / kubernetes-ingress-controller

:gorilla: Kong for Kubernetes: The official Ingress Controller for Kubernetes.
https://docs.konghq.com/kubernetes-ingress-controller/
Apache License 2.0
2.22k stars 592 forks source link

Allow configuring multiple Gateways with heterogenous versions/dbmodes #3590

Open czeslavo opened 1 year ago

czeslavo commented 1 year ago

Is there an existing issue for this?

Problem Statement

702 has introduced a basic functionality allowing configuring multiple Gateways with a single KIC instance. It also introduced a limitation that allows only Gateways with a homogenous versions/dbmodes, which is enforced by a validation rule.

The goal of this issue is to allow KIC to configure Gateways of different versions and dbmodes, effectively dropping the aforementioned validation rule.

Proposed Solution

Additional information

No response

Acceptance Criteria

mflendrich commented 1 year ago

Another problem this causes (see #3363): we may end up with different plugins schemas across Gateways

mheap commented 1 year ago

@mflendrich Should we bump this to 2.11?

mflendrich commented 1 year ago

Let's reconsider a blue-green approach to upgrading now that we're working on BG deployments for KGO (@pmalek)

pmalek commented 1 year ago

Let's reconsider a blue-green approach to upgrading now that we're working on BG deployments for KGO (@pmalek)

I might not be seeing the full context here but this is tracks the effort of relaxing the homogeneity requirement and possibly introducing a version/dbmode checks (think cross compatibility) whereas blue-green in KGO would

The latter point might be touching on "promotion" custom checks extension of BG at some point but that might be quite elaborate and to be defined using CRD fields (which are not in place yet) instead of relying on a mechanism embedded in KIC.

Having said that: this might be relevant for BG in KGO (https://github.com/Kong/gateway-operator/issues/706) but it all depends on the implementation of it (e.g. if we go the route of using "preview" Service and ReplicaSet as described in the doc then KIC would manage homogenous Gateways anyway).

programmer04 commented 1 year ago

Currently, there is a disparity between the requirement of homogeneity during startup https://github.com/Kong/kubernetes-ingress-controller/blob/84a345d92f209e4cb07a1bb965969fe279f7e800/internal/manager/utils/kongconfig/root.go#L33-L70 enforced with https://github.com/Kong/kubernetes-ingress-controller/blob/84a345d92f209e4cb07a1bb965969fe279f7e800/internal/manager/utils/kongconfig/root.go#L33-L70 but later available Kong Gateways (clients for them) are managed with https://github.com/Kong/kubernetes-ingress-controller/blob/84a345d92f209e4cb07a1bb965969fe279f7e800/internal/manager/run.go#L150-L163 and gateway discovery mechanism enforces nothing in terms of homogeneity