Skip to content

CFP: Add support for k8s Gateway API #20655

@sayboras

Description

@sayboras

Cilium Feature Proposal

This issue is to discuss and track for k8s API Gateway work mentioned in roadmap. Kindly note that the actual work or implementation might vary based on the discussion and requirements mentioned in this GitHub issue.

Pre-tasks v1.13.0-rc1

While it's not strictly required, it's best to complete all follow-up items in #19698 or at least the below-related tasks:

Tasks (Mid October)

At the time of writing, the below APIs were just graduated to beta, it's making sense to start with these APIs as the first step.

At the high level, the L7 HTTP route could be done the same way Cilium does with IngressController. Below items can be used as references or starting points:

  • Add new APIs into the Cilium codebase and check if slim types are required.
    • If slim types are not required, direct go import should be just sufficed.
  • Add required watchers for Gateway, HTTPRoute objects.
    • Watch only Gateway object with class name as cilium.
  • Provision required envoy resources.
    • no change in datapath is foreseen, but let's see how it's going.
    • handle conflicts between HTTP routes. Please refer to API Spec.
  • Add a feature flag like what we have with ingress controller or envoy config.
  • Add installation support via helm chart
    • Pre-configure Cilium GatewayClass if the feature flag is enabled.
  • Make sure that upstream conformance tests are successfully running as part of CI.
  • Add Getting Started Guide documentation. docs: Add Getting Started guide for Gateway API support #21908

Optional

Below APIs are still under v1alpha2 at the time of writing. However, while implementing the above tasks, it's better to think forward to avoid any potential re-work in future.

Metadata

Metadata

Labels

area/agentCilium agent related.area/proxyImpacts proxy components, including DNS, Kafka, Envoy and/or XDS servers.area/servicemeshGH issues or PRs regarding servicemeshkind/featureThis introduces new functionality.

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions