Support for generating partial/fallback configuration when Kong rejects entities #5854
Closed
14 tasks done
Labels
area/feature
New feature or request
priority/high
release/highlight
This part of the release is worth bragging about.
release/required
it is required that this be resolved before releasing
Milestone
Is there an existing issue for this?
Does this enhancement require public documentation?
Problem Statement
Kubernetes Ingress Controller in DB-less mode uses Kong’s Admin API POST /config endpoint to populate Kong with configuration entities like Services, Routes, Plugins, etc. The whole configuration is a result of translating Kubernetes resources to Kong entities. No split of the structure happens - it’s treated as one undividable piece and is sent as such to Kong. KIC doesn’t keep a complete history of configuration changes. It can only keep the “last known good” configuration in memory (#4048) or fetch it from any Kong instance it configures (#4264). In KIC 2.11, the strategy for handling invalid configuration is divided into the following stages:
The third stage is most notably painful in scenarios where users configure their Kubernetes resources in an ApiOps/GitOps manner. There’s no way to ensure in a CI pipeline that the configuration that was applied with
kubectl apply -f
was correct due to the asynchronous nature of the 2nd and 3rd stages. Once the problem is discovered in the 3rd stage, there’s no other way to recover than removing or fixing the faulty object. It can be painful if the pipeline is shared between multiple teams (e.g., an organization with a single cluster/Gateway and multiple teams governing their own services configuration) as a mistake of one team can affect the whole organization, halting the possibility of changing the Gateway’s configuration without looking into Kubernetes Events or KIC logs and taking actions to fix them. In other words: as Kubernetes resources belonging to different teams do not rely on each other, users expect team’s A resources’ validation errors to not affect team’s B resources from being updated.As a result of fixing this issue, we limit the blast radius that one broken entity in the configuration can make, allowing users to still modify other parts of the configuration without an urgent need to fix the mistake.
Proposed Solution
The proposed solution is described in the design doc.
Additional information
No response
Acceptance Criteria
Tasks
ResolveDependencies
is implemented for all supported object types #6026The text was updated successfully, but these errors were encountered: