Commit 0348638
committed
cilium-cli: skip identity-less endpoints in policy-revision wait
After applying a policy, the connectivity test waits for every endpoint on each
Cilium node to realize the new revision before running the scenario. The wait
polls "cilium endpoint list" and counts an endpoint as not-ready whenever its
realized policy revision is missing or below the target. That count includes
every endpoint on the node, not just the ones the policy was applied to.
A pod that was just scheduled onto the node shows up in the list before it has
been assigned a security identity. The agent reports such an endpoint with a nil
policy status (GetPolicyModel returns nil while SecurityIdentity is nil) and a
nil identity, so it is counted as "not realized" even though it has computed no
policy at all and is enforcing no revision. Under --test-concurrency>1 a sibling
test namespace is frequently creating a pod on the shared node, so there is
almost always such an endpoint in flight and the wait can never reach zero: it
burns the entire PolicyWaitTimeout and then fails setup, either with "N
endpoints have not yet realized policy revision R" or, when the deadline lands
during the endpoint-list exec, with an opaque "context deadline exceeded". On
AKS with IPsec the extra regeneration latency and high concurrency make a fresh
uninitialized endpoint almost always present during the poll. This is what
cilium#46877 was chasing when it dropped the node-wide Ready requirement, but the
residual uninitialized case remained.
Skip endpoints that have no security identity yet (nil Status.Identity). An
endpoint without an identity has computed no policy, so skipping it cannot let
the test run against an endpoint still enforcing an old policy; once it gets an
identity, regeneration computes policy at the current revision and it is counted
again. Endpoints that do have an identity are counted as before, so a genuinely
lagging endpoint still holds the wait. This corrects what is counted rather than
bumping the timeout, which would only hide a truly stuck endpoint.
Add a table-driven unit test over the counting logic covering the nil-identity
skip, the identity-with-stale-revision count, and the identity-at-revision
no-count cases.
Seen in https://github.com/cilium/cilium/actions/runs/29349504650
AIL:3
Signed-off-by: André Martins <andre@cilium.io>1 parent ce46fbf commit 0348638
2 files changed
Lines changed: 132 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
| 24 | + | |
24 | 25 | | |
25 | 26 | | |
26 | 27 | | |
| |||
129 | 130 | | |
130 | 131 | | |
131 | 132 | | |
132 | | - | |
133 | | - | |
| 133 | + | |
134 | 134 | | |
135 | 135 | | |
136 | 136 | | |
137 | 137 | | |
138 | 138 | | |
| 139 | + | |
| 140 | + | |
139 | 141 | | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
140 | 149 | | |
141 | 150 | | |
142 | | - | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
143 | 155 | | |
144 | 156 | | |
145 | 157 | | |
146 | 158 | | |
147 | 159 | | |
148 | | - | |
| 160 | + | |
149 | 161 | | |
150 | 162 | | |
151 | 163 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
0 commit comments