Skip to content

Instantly share code, notes, and snippets.

@Devaansh-Kumar
Last active November 28, 2024 06:14
Show Gist options
  • Save Devaansh-Kumar/4778e5bb3c61d4c16a20202b5f77aac7 to your computer and use it in GitHub Desktop.
Save Devaansh-Kumar/4778e5bb3c61d4c16a20202b5f77aac7 to your computer and use it in GitHub Desktop.
Google Summer of Code 2024 Work Product.md

GSoC Kubernetes Gateway API Cloud Native Computing Foundation  

Google Summer of Code 2024: Work Product Submission

Devaansh Kumar (@Devaansh-Kumar)

Project Abstract

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)

Work Done

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

List of tasks completed in relation to the project:

  • 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.

Contributions during GSoC Period

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

Contributions Prior to GSoC

Pull Request Description Status
#2836 Implemented gwctl describe namespace Merged
#2872 Implemented gwctl describe policycrds Merged

Current State and Future Improvements

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.

Acknowledgement

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.

@utkarshkrsingh
Copy link

utkarshkrsingh commented Nov 28, 2024

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!

@Devaansh-Kumar
Copy link
Author

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment