nine_ch
Joined 5 months ago
Joined 5 months ago
Problems came up with the defaults, not with the annotation mapping: 50 instead of 60 second timeouts (almost 10 times longer on exports that finished faster than a minute before), 2000 per pod for maxconn and unchanged HTTP/1.0 passing through to a rejecting S3 backend. And on musl, there was bcrypt basic auth behind a process-wide spinlock, pushing one pod past 2 CPU cores with 155 concurrent connections.
In the linked blogpost, you'll be able to read about the 8 differences and values we ended up with.
The write-up is mostly about what we got wrong: our automated detection only covered our own prefixes, not customer prefixes we announce on their behalf. Blackholing at the IXs we connect to only took effect via route servers, not on direct peerings. And we had no way to withhold a prefix from one specific upstream, so we had to build that while under full load. On top of that, our own website runs on the same shared platform as customer apps, so when it was targeted, unrelated applications were affected too.
What eventually ended it was moving exposed applications behind a CDN with DDoS protection. The full timeline is in the PDF postmortem linked from the post. Happy to answer questions.