tailscale / tailscale/tailscale

FR: GRPC Support for Kubernetes Ingresses

Open
#13,854 0 comments 0 reactions 0 assignees View on GitHub
fr kubernetes needs-triage
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.