CNCF: Kubernetes Gateway API
Design and develop notification mechanism for ingress2gateway
Devaansh Kumar (@Devaansh-Kumar)
The Gateway API project is the next generation of Kubernetes Ingress, Load Balancing, and Service Mesh APIs focusing on L4 and L7 routing. For the longest time, Kubernetes Ingress resource has been in use to help developers expose their applications and manage external access by providing HTTP and HTTPS routing rules to the services within a Kubernetes cluster.
To streamline the transition process and ensure seamless migration of existing Ingress resources as well as provider specific resources (Like Istio Gateway and VirtualService) within a Kubernetes cluster to the new Gateway API resources, a new tool called ingress2gateway has been created. It looks at all Ingress resources currently in the cluster and converts them to equivalent Gateway API resources: Gateway, HTTPRoute, TLSRoute, TCPRoute, UDPRoute, GRPCRoute and ReferenceGrants as well as resources based on the provider used.
However ingress2gateway does not provide the users with useful notification regarding conversion results, warnings and crucial messages about their resource conversion. This project seeked to design a generic notification system that provides such information to the user about overview of changes, partial conversions, fields that cannot be converted and fields that are not supported by the tool, but supported by Gateway API.
Github Issue: Build a notification system/process to report conversion results
Mentors: Lior Lieberman (@LiorLieberman), Mattia Lavacca (@mlavacca)
The Project began with discussing the different approaches that can be taken and creating small POCs for all such possibilities during the Community Bonding Period. Once the approach was ready we started implementing the solution and documenting the steps in a Google Doc.
I had weekly meets with both my mentors where I showcased my progress. All my work was done on a forked repository from which pull requests were created. Link: Devaansh-Kumar/ingress2gateway
Project Pull Requests: ingress2gateway Repository PR
- Implemented the
notificationspackage. - Generated tables from
notificationspackage to display notifications using tablewriter. - Migrated different providers to utilise notifications as well enabled notifications from
commonpackage. - Created unit tests for
notificationsand enhanced existing unit tests as well. - Created new flag
--notifications-output-fileto specify the file where to output notifications.
| Pull Request | Description | Status |
|---|---|---|
| #160 | Implemented basic support for notifications package and created notifications for Istio VirtualService | Merged |
| #170 | Created Unit Tests for notifications | Merged |
| #171 | Added notifications for Istio Gateway conversion | Merged |
| #173 | Added notifications for Kong provider | Merged |
| #176 | Added notifications for Apisix provider | Merged |
| #177 | Added notifications for Ingress-Nginx provider | Merged |
| #178 | Added notifications for OpenAPI3 provider | Merged |
| #180 | Implemented notification mechanism from common package | Open |
| #181 | Created new flag --notifications-output-file to specify where to output notifications |
Open |
| Pull Request | Description | Status |
|---|---|---|
| #2836 | Implemented gwctl describe namespace |
Merged |
| #2872 | Implemented gwctl describe policycrds |
Merged |
While ingress2gateway has come a long way, we still need more providers to onboard their implementation onto the tool, so that more users can transition to Gateway API.
I want to express my deep gratitude to my mentors for granting me this incredible opportunity. They, along with the organization, have been exceptionally approachable and have continuously offered their support and guidance throughout the project. Additionally my mentors also presented me with an opportunity to present my work at a CNCF webinar which will air on 12th September and also helped me draft a proposal to submit a talk on my GSoC experience for KubeCon+CloudNativeCon India 2024. I am excited to continue contributing and learning more from the organization.



Hi @utkarshkrsingh. Yes you can definitely apply as a beginner, thats what the entire program is for. Even I was a beginner when I started preparing for GSoC.
Some tips would be to try to decide the organisation you want to contribute to early so you can spend time playing with the code and making some improvements. I had decided by January to contribute to CNCF but it took me a while to choose the right organisation.
Another tip would be to attend community meetings and introduce yourself and get any doubts cleared. Many organisations keep a google doc for meeting notes where you may find discussions of the organisation participating in LFX/GSoC.
Most people say to search for good first issues while starting out. But I would say you can try out the regular issues as well.