Skip to content

Hybrid gateways - Update Gateway Controller Provisioning Logic #2377

@sandromodarelli

Description

@sandromodarelli

Problem Statement

To provision a Gateway correctly we need to provision a Konnect controlplane and a local DataPlane. Currently the gateway controller is not handling the provisioning of Konnect controlplanes.

Proposed Solution

Design doc ref: https://docs.google.com/document/d/1TlH7z2AQSvVvdIgU_osxRuZDTvX4E-6zuIxLBcPhWeg/edit?tab=t.0#heading=h.urfn7ys34vi7

The Gateway controller orchestrates the creation of all components required for a Konnect hybrid deployment based on the configuration provided.

The Gateway controller's reconciliation loop will be updated:

  • Check if the referenced GatewayClass's parametersRef points to a GatewayConfiguration with the .spec.konnect.APIAuthConfiguration field set.
  • If so, provision the following resources, setting the Gateway as their owner:
    • A KonnectAPIAuthConfiguration resource. The .spec of this resource will be populated from the GatewayConfiguration.
    • A KonnectGatewayControlPlane resource to link the KonnectAPIAuthConfiguration.
    • A KonnectExtension resource to link the KonnectGatewayControlPlane.
    • A DataPlane resource, which will be configured via the KonnectExtension to connect to Konnect.

Additional Information

Acceptance Criteria

  • Documentation is updated with this new feature / enhancement
  • Tests are added for this feature / enhancement
  • Helm chart is updated to work with this feature / enhancement
  • As a user, I can create a Gateway with a GatewayClass who points to a GatewayConfiguration with a konnect auth ref
  • For each Gateway operator will create and reconcile a KonnectAPIAuthConfiguration, a KonnectGatewayControlPlane, a KonnectExtension and a DataPlane
  • the KonnectAPIAuthConfiguration will have specs coming from spec.konnect.APIAuthConfiguration of the GatewayConfiguration
  • the KonnectGatewayControlPlane will have specs coming from spec.konnect.gatewayControlPlaneOptions of the GatewayConfiguration

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions