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
notifications
package. - Generated tables from
notifications
package to display notifications using tablewriter. - Migrated different providers to utilise notifications as well enabled notifications from
common
package. - Created unit tests for
notifications
and enhanced existing unit tests as well. - Created new flag
--notifications-output-file
to 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 | Open |
#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.
Hey @Devaansh-Kumar , I just learning Go basics and saw your contributions to GSOC and CNCF—they’re super inspiring! Do you think I can aim for GSOC 2025 as a beginner? Would love any advice!