Solving Ingress problems for Remote Development
Context: #377921 (comment 1147374443)
Problem
How do we expose a developer's workspace in a Kubernetes cluster(with GA4K) to become accessible?
- There are many ingress controllers(nginx, istio, traefik, etc.) that can be used by the customer. Each ingress controller has different configuration format. There's also the problem of having to deal with some versions of the controller supporting certain k8s versions with certain features.
- Customers can have isolated clusters
Possible Solutions
Solution 1
Use GA4K to create Ingress resources in the cluster. Build a custom IDE ingress/gateway controller
which will be exposed using a public address/IP by the customer.
Solution 2
Use GA4K to create Ingress resources in the cluster. Build a custom IDE ingress/gateway controller
which has tunnelling capabilities (probably using GA4K).
Solution 3
Use GA4K to create a tunnel directly to the resources.
Things to consider
Regardless of which solution we settle on, we need to take the following considerations in mind
- It should support various protocols - HTTP, HTTPS, WS, WSS, TCP, UDP (Any other protocol ?)
- Is there a limit to how many tunnels/connections we can open?
- Is the tunnel stable and persistent?
- How can the new Kubernetes Gateway API help to reduce some of the configuration format problems? https://kubernetes.io/blog/2022/07/13/gateway-api-graduates-to-beta/
Exit Criteria
- To have a list of Pros/Cons for each solution described
- Discuss their technical feasibility and how can we achieve them with the GA4K team
- We should have enough information to settle on a solution and to build on it iteratively.
Edited by Vishal Tak