Skip to content

Add the Serval API and controller for the non-cluster host gateway#5067

Draft
hjiawei wants to merge 2 commits into
tigera:masterfrom
hjiawei:serval-non-cluster-host-gateway
Draft

Add the Serval API and controller for the non-cluster host gateway#5067
hjiawei wants to merge 2 commits into
tigera:masterfrom
hjiawei:serval-non-cluster-host-gateway

Conversation

@hjiawei

@hjiawei hjiawei commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Description

New feature. Adds the Serval API (operator.tigera.io/v1) and controller. Serval is a layer-7 gateway that becomes the single entrypoint for non-cluster hosts: one HTTPS endpoint serving the impersonating kube-apiserver proxy, the log ingestion routes, and a WebSocket tunnel that carries the felix-typha sync connection. It supersedes the deprecated NonClusterHost resource; NonClusterHost keeps working unchanged as a legacy mode until a later removal release.

The controller renders the gateway Deployment (combined calico image, controlPlaneReplicas with pod anti-affinity, enableServiceLinks: false), a ClusterIP Service, an operator-issued TLS keypair including the external endpoint SAN, RBAC (impersonation, TokenReview/SubjectAccessReview create, get on serviceaccounts for the Tigera-JWT authenticator), and allow-tigera network policies. The fluent-bit input policy admits serval as a source, and the host ClusterRole gains read on servals.

Testing: render unit tests, plus end-to-end validation of the rendered object shapes on a kubeadm Enterprise cluster with a Rocky 9 non-cluster host (felix in sync through the tunnel, apiserver proxy serving the cert-init and token-minting flows, logs flowing to linseed).

Companion PR (calico-private): https://github.com/tigera/calico-private/pull/12765
Design: tigera/designs 2026/serval-non-cluster-host-gateway

Release Note

Added the Serval resource and controller, deploying a layer-7 gateway that is the single entrypoint for non-cluster hosts. NonClusterHost is deprecated.

🤖 Generated with Claude Code

hjiawei and others added 2 commits July 19, 2026 09:19
The cluster-scoped Serval resource supersedes the deprecated
NonClusterHost. The serval controller renders the gateway Deployment
(combined calico image, controlPlaneReplicas, service links disabled),
Service, TLS keypair with the endpoint SAN, RBAC for the impersonating
proxy and token/access reviews, and network policies. The fluent-bit
input policy admits serval as a source, the host ClusterRole gains
read on servals, and NonClusterHost reconciles log a deprecation
warning.

Design: tigera/designs 2026/serval-non-cluster-host-gateway.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Picks up the BPFOverlayHostSourceIP field via make gen-versions. Drop
this commit if the CRD sync lands on master separately.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@hjiawei
hjiawei force-pushed the serval-non-cluster-host-gateway branch from a5bfb21 to e2c4293 Compare July 19, 2026 16:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants