Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement GatewayAPI in Ingress NGINX #7517

Open
rikatz opened this issue Aug 21, 2021 · 19 comments
Open

Implement GatewayAPI in Ingress NGINX #7517

rikatz opened this issue Aug 21, 2021 · 19 comments
Assignees
Labels
kind/feature Categorizes issue or PR as related to a new feature. priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. triage/accepted Indicates an issue or PR is ready to be actively worked on.
Milestone

Comments

@rikatz
Copy link
Contributor

rikatz commented Aug 21, 2021

We need to start thinking about Gateway API (https://gateway-api.sigs.k8s.io/) in Ingress NGINX.

A good approach here would be to understand the internal controller data model (https://github.com/kubernetes/ingress-nginx/blob/main/internal/ingress/types.go) and how can we reconcile Gateway API objects into the internal model.

I'm aware that probably we will need some evolution into this datamodel, but I would like to have a minimum surface change and keep some things like template generation (nginx.conf), some annotations not covered by GatewayAPI model and other stuff the way they are.

So, maybe a good first approach would be:

  • Reconcile "HTTPRoute" objects into "Locations" and Servers
  • Reconcile "Gateway" objects into something (need to understand the API better)

An alpha1 version of this would be just available to do this reconciliations. No status, no feedback to users, just turn the objects above into a structure that Ingress can understand.

Also we can look into previous arts like Contour (https://projectcontour.io/guides/gateway-api/) and HAProxy to see what lessons learned from them we can apply here :)

@rikatz rikatz added the kind/feature Categorizes issue or PR as related to a new feature. label Aug 21, 2021
@k8s-ci-robot k8s-ci-robot added needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. needs-priority labels Aug 21, 2021
@rikatz rikatz added this to the v1.2.0 milestone Aug 21, 2021
@rikatz rikatz modified the milestones: v1.2.0, v1.1.0 Sep 26, 2021
@bishtsaurabh5
Copy link
Contributor

bishtsaurabh5 commented Sep 26, 2021

I think they are gonna soon release the v1alpha2 version , we can start implementing that since there are significant changes as compared to the v1alpha1 version

@bishtsaurabh5
Copy link
Contributor

@rikatz I have initiated a thread on gateway api slack about how different resources could be mapped to the existing ingress nginx resources https://kubernetes.slack.com/archives/CR0H13KGA/p1632688608134500

@sunlintong
Copy link

As https://github.com/kubernetes-sigs/gateway-api/releases/tag/v0.4.0, gateway api v1alpha2 has been released. Can we start implementing this :)

@rikatz
Copy link
Contributor Author

rikatz commented Feb 15, 2022

@sunlintong we are a bit overloaded with some fixes that needs to be released, but PRs are always welcome :D @tao12345666333 is working on the design of this, feel free to reach us on Slack and jump in into the design and implementation :)

@tao12345666333
Copy link
Member

Yes, I'm working on the design, and I'm expected to send out a specific design draft and task split in the near future.

@sunlintong
Copy link

Thanks for Reply, maybe I can get involved too and make it happen together :D

@bishtsaurabh5
Copy link
Contributor

@tao12345666333 I am also interested in working on Gateway API implementation . Can you please include me as well while sending out the draft proposal :)

@tao12345666333
Copy link
Member

/assign

@bishtsaurabh5 sure, sorry for the long delay.

I will finish the proposal as soon as possible and send it out.

@strongjz
Copy link
Member

/triage accepted
/priority longterm-important

@k8s-ci-robot
Copy link
Contributor

@strongjz: The label(s) priority/longterm-important cannot be applied, because the repository doesn't have them.

In response to this:

/triage accepted
/priority longterm-important

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@k8s-ci-robot k8s-ci-robot added triage/accepted Indicates an issue or PR is ready to be actively worked on. and removed needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. labels Jun 15, 2022
@strongjz strongjz removed this from the v1.1.2 milestone Jun 15, 2022
@strongjz
Copy link
Member

/priority important-longterm

one day ill have the memorized and then it will change

@k8s-ci-robot k8s-ci-robot added the priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. label Jun 15, 2022
@jemag
Copy link

jemag commented Jul 27, 2022

Is the intent to implement the Gateway in this repository or create a new one to host that code?

If a new repository is created for this purpose, this could be a good opportunity to try and differentiate the project from the NginxInc one (https://github.com/nginxinc/nginx-kubernetes-gateway) and perhaps avoid some of the confusion going around (see: #7554 and nginxinc/kubernetes-ingress#1910)

Also, not sure about the current state of this endeavor, but eventually it would be nice to have a reference here : https://gateway-api.sigs.k8s.io/implementations/ so that current users of the ingress controller can again see a choice between this community one and the NginxInc one.

@tao12345666333
Copy link
Member

Thanks for your comment.

We plan implement Gateway API in this repo.

Currently we are doing some higher priority things like splitting cp and dp

@k8s-triage-robot
Copy link

The Kubernetes project currently lacks enough contributors to adequately respond to all issues and PRs.

This bot triages issues and PRs according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the issue is closed

You can:

  • Mark this issue or PR as fresh with /remove-lifecycle stale
  • Mark this issue or PR as rotten with /lifecycle rotten
  • Close this issue or PR with /close
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Nov 5, 2022
@tao12345666333
Copy link
Member

/remove-lifecycle stale

@k8s-ci-robot k8s-ci-robot removed the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Nov 5, 2022
@mumubin
Copy link

mumubin commented Sep 11, 2023

Flagger can support sticky session if ingress-nginx support gateway api, it there a plan to support it?

fluxcd/flagger#1487

@PierreBeucher
Copy link

Implementation of Gateway API is becoming an important choice criteria for an Ingress Controller. Most tools on the market support it in beta/preview mode. Do you have plan to support it ? Thanks !

@siegenthalerroger
Copy link

@PierreBeucher they have mentioned, that they have it on their roadmap, however they first want to work on splitting the control- and data-plane before adding a new control-plane for the GatewayAPI

@strongjz strongjz self-assigned this Mar 28, 2024
@strongjz strongjz added this to the release-2.0 milestone Mar 28, 2024
@strongjz
Copy link
Member

Per our talk at Kubecon Paris 2024. We will start with our implementation.

The initial release will support:

  • GatewayClass
  • Gateway
  • HTTPRoute

More discussion in our talk here https://www.youtube.com/watch?v=8qaU9SX-IdI

https://docs.google.com/presentation/d/1IQEmJ4FWuy9i57A11lRARdfqDtrMLuJ79mrPv8VvE94/edit?usp=sharing

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/feature Categorizes issue or PR as related to a new feature. priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. triage/accepted Indicates an issue or PR is ready to be actively worked on.
Projects
Development

No branches or pull requests