Skip to content

feat(netbird): dedicated gRPC/relay Services with appProtocol; bump to 0.73.2#113

Merged
mikkeldamsgaard merged 1 commit into
mainfrom
chore/104-112-grpc-relay-services-and-netbird-bump
Jun 23, 2026
Merged

feat(netbird): dedicated gRPC/relay Services with appProtocol; bump to 0.73.2#113
mikkeldamsgaard merged 1 commit into
mainfrom
chore/104-112-grpc-relay-services-and-netbird-bump

Conversation

@mikkeldamsgaard

Copy link
Copy Markdown
Contributor

Summary

Two things this round: a real chart bug fix (#104) and the consolidated upstream version bump.

Fix #104 — routes shared one Service with no appProtocol

gRPC and relay (WebSocket) traffic was routed through the main server Service, which carries no appProtocol. Envoy-based Gateway API controllers (Cilium, Envoy Gateway) read a Service port's appProtocol to pick the upstream codec, so a plain Service forced an HTTP/1.1 upstream — breaking gRPC (needs h2c/HTTP-2) and WebSocket (needs upgrade handling).

This adds two ClusterIP Services with the same selector as the main one:

Service appProtocol Rendered when Consumed by
<release>-server-grpc kubernetes.io/h2c server.grpcRoute on server.grpcRoute
<release>-server-relay kubernetes.io/ws server.relayHttpRoute on server.relayHttpRoute

server.grpcRoute / server.relayHttpRoute auto-fill omitted backendRefs to these Services. Both are enabled by default (server.grpcService.enabled, server.relayService.enabled), render only when their route is enabled, and can be set false to fall back to the main Service. Route resource names are unchanged; relayTcpRoute (raw TCP) still targets the main Service. README documents the Services and the Cilium gatewayAPI.enableAppProtocol=true requirement.

netbird 0.72.3 → 0.73.2

Consolidates #103/#110/#111/#112. Upstream changes are internal (management/signal/relay stability & perf, posture-check hardening) — no config, env var, port, protocol, or DB-migration changes; dashboard image stays at v2.39.0.

Closes #103, #104, #110, #111, #112

How to verify

make test        # lint + 371 helm-unittest tests — passing locally
dprint check     # formatting — clean
make e2e         # full suite in kind — all 9 scenarios passed locally

The Gateway API e2e now asserts the new backendRef targets and that the dedicated Services carry the correct appProtocol:

grpcroute/...-server-grpc  backendRefs[0].name = ...-server-grpc ✓
httproute/...-server-relay backendRefs[0].name = ...-server-relay ✓
service/...-server-grpc    appProtocol = kubernetes.io/h2c ✓
service/...-server-relay   appProtocol = kubernetes.io/ws ✓

🤖 Generated with Claude Code

…o 0.73.2

Fixes #104: gRPC and relay (WebSocket) traffic previously shared the main
server Service, which has no appProtocol. Envoy-based Gateway API
controllers (Cilium, Envoy Gateway) read a Service port's appProtocol to
pick the upstream codec, so routing everything through the plain Service
forced an HTTP/1.1 upstream and broke gRPC (needs h2c/HTTP-2) and
WebSocket (needs upgrade handling).

Adds two ClusterIP Services with the same selector as the main Service:
- <release>-server-grpc  with appProtocol kubernetes.io/h2c
- <release>-server-relay with appProtocol kubernetes.io/ws

server.grpcRoute and server.relayHttpRoute now auto-fill omitted
backendRefs to these Services. Both are enabled by default and only render
when their route is enabled; set enabled=false to fall back to the main
Service. Route resource names are unchanged. relayTcpRoute (raw TCP) keeps
defaulting to the main Service since appProtocol does not apply.

Also bumps netbird appVersion 0.72.3 -> 0.73.2 (consolidates the upstream
update issues). Upstream changes are internal stability/perf and
posture-check hardening; no config, env var, port, protocol, or DB
migration changes. Dashboard image stays at v2.39.0.

Includes unit tests for the new Services and route fallbacks, extends the
Gateway API e2e to assert backendRef targets and appProtocol values, and
documents the Services (including the Cilium gatewayAPI.enableAppProtocol
requirement) in the README.

Closes #103, #104, #110, #111, #112

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

All Server Routes use the same Service chore(netbird): upstream update available — server 0.72.3 → 0.72.4

1 participant