Skip to content

policy: Start NPDS even if the first ADS listener is rejected - #2056

Open
arruko wants to merge 1 commit into
cilium:mainfrom
arruko:pr/arruko/npds-start-rejected-listener
Open

arruko wants to merge 1 commit into
cilium:mainfrom
arruko:pr/arruko/npds-start-rejected-listener

Conversation

@arruko

@arruko arruko commented Sep 27, 2026

Copy link
Copy Markdown

Since #1982 the policy map is pinned for the ADS stream lifetime, but its NPDS start target is only registered with the listener that created the map. If that listener is rejected, NPDS is never requested, so the agent waits forever for NPDS ACKs and new pods on the node fail CNI ADD.

Add the start target to each listener that reuses the map until NPDS has started, and make start() a no-op once started. The new integration test sends two rejected listeners and checks that NPDS starts with the next one.

Fix for cilium/cilium#49056

Please backport to v1.37 (used by Cilium v1.20).

With ADS the policy map is pinned for the stream lifetime, but its NPDS
start target is only added to the init manager of the listener that
created the map. If that listener is rejected after its listener
filters are built, the target never runs and NPDS is never requested.
The agent then waits forever for NPDS ACKs and new pods on the node
fail CNI ADD.

Add the start target to each listener that reuses the map until NPDS
has started, and make start() a no-op on a started subscription.

Fixes: 0b027ba ("envoy: keep ADS policy maps alive")
Relates: cilium/cilium#49056
Signed-off-by: Jimmy Herrera <4251126+arruko@users.noreply.github.com>
@arruko
arruko requested a review from a team as a code owner September 27, 2026 21:40
@arruko
arruko requested a review from jrajahalme September 27, 2026 21:40

This branch has not been deployed

No deployments
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.

1 participant