tailscale / tailscale/tailscale
FR: GRPC Support for Kubernetes Ingresses
- Dominant language
- Go
- Stars
- 36.5k
- Forks
- 3.2k
- Avg merge
- 1d 23h
- Merged PRs (30d)
- 132
Description
### What are you trying to do?
I would love to expose a GRPCs ingress using the tailscale kubernetes operator.
### How should we solve this?
I would imagine it could have a config like so:
```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: tailscale-my-grpc-service
annotations:
tailscale.com/backend-protocol: "GRPC"
spec:
ingressClassName: tailscale
defaultBackend:
service:
name: my-grpc-service
port:
number: 80
tls:
- hosts:
- my-grpc-service
```
Then I would be able to access the service via `grpcs://my-grpc-service.funny-name.ts.net`
I inspired my suggestion from the nginx ingress controller config:
- https://kubernetes.github.io/ingress-nginx/examples/grpc/
### What is the impact of not solving this?
For now I don't use a tailscale ingress. I use `tailscale.com/expose` on the service, but this means I don't have TLS. I have to use `grpc` and not `grpcs`.
Contributor guide
Research direction
Start by tracing the Tailscale Kubernetes operator's Ingress handling and how it interprets the tailscale.com/backend-protocol annotation. Compare the requested GRPC behavior with the linked nginx Ingress example; done means a Kubernetes Ingress can route GRPC over TLS to the named service and support grpcs:// access.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, grpc, kubernetes
- Domain
- infrastructure, networking
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100