Converts the single-replica netbird-ingress Deployment to a DaemonSet so every node runs its own rootless routing peer — HA, no single point of failure.
kind: Deployment → DaemonSet (drop replicas/Recreate; RollingUpdate maxUnavailable: 1 so peers roll one node at a time)
per-node peer name: NB_HOSTNAME=netbird-ingress-$(NODE_NAME) via the downward API (each peer shows its node in the dashboard)
Node coverage: runs on k8s-1/2/3 (3 peers). k8s-edge is excluded — it has a workload-class=pinned:NoSchedule taint and the DaemonSet does not tolerate it (correct — no routing peer needed on the reserved node). Say so if you want it there too and I'll add the toleration.
🛠 NetBird-side: make sure the 10.2.99.0/24 + fd99::/64 route uses the k8s-ingress-router group as its routing peer (not a single peer), so NetBird distributes/fails over across all DaemonSet members.
🤖 Generated with Claude Code
Converts the single-replica `netbird-ingress` Deployment to a **DaemonSet** so every node runs its own rootless routing peer — HA, no single point of failure.
- `kind: Deployment → DaemonSet` (drop `replicas`/`Recreate`; `RollingUpdate maxUnavailable: 1` so peers roll one node at a time)
- per-node peer name: `NB_HOSTNAME=netbird-ingress-$(NODE_NAME)` via the downward API (each peer shows its node in the dashboard)
- securityContext / image / probes / egress CNP unchanged (rootless, capless)
**Node coverage:** runs on `k8s-1/2/3` (3 peers). `k8s-edge` is excluded — it has a `workload-class=pinned:NoSchedule` taint and the DaemonSet does not tolerate it (correct — no routing peer needed on the reserved node). Say so if you want it there too and I'll add the toleration.
🛠 **NetBird-side:** make sure the `10.2.99.0/24` + `fd99::/64` route uses the **`k8s-ingress-router` group** as its routing peer (not a single peer), so NetBird distributes/fails over across all DaemonSet members.
🤖 Generated with Claude Code
Convert the single-replica Deployment to a DaemonSet so every node runs
its own rootless NetBird routing peer. With the mesh route/nameserver
pointed at the k8s-ingress-router group, NetBird distributes and fails the
route over across all per-node peers — no single point of failure if a
node or pod drops.
- kind Deployment -> DaemonSet (drop replicas/Recreate; RollingUpdate
maxUnavailable=1 so peers roll one node at a time)
- per-node peer name: NB_HOSTNAME=netbird-ingress-$(NODE_NAME) via the
downward API, so each peer shows its node in the dashboard
- securityContext/image/probes/egress CNP unchanged (rootless, capless)
NetBird-side: ensure the 10.2.99.0/24 + fd99::/64 route uses the
k8s-ingress-router GROUP as its routing peer (not a single peer) so all
DaemonSet members serve it.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Converts the single-replica
netbird-ingressDeployment to a DaemonSet so every node runs its own rootless routing peer — HA, no single point of failure.kind: Deployment → DaemonSet(dropreplicas/Recreate;RollingUpdate maxUnavailable: 1so peers roll one node at a time)NB_HOSTNAME=netbird-ingress-$(NODE_NAME)via the downward API (each peer shows its node in the dashboard)Node coverage: runs on
k8s-1/2/3(3 peers).k8s-edgeis excluded — it has aworkload-class=pinned:NoScheduletaint and the DaemonSet does not tolerate it (correct — no routing peer needed on the reserved node). Say so if you want it there too and I'll add the toleration.🛠 NetBird-side: make sure the
10.2.99.0/24+fd99::/64route uses thek8s-ingress-routergroup as its routing peer (not a single peer), so NetBird distributes/fails over across all DaemonSet members.🤖 Generated with Claude Code