• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

zalando-incubator / kube-ingress-aws-controller / 37441790374
71%
master: 71%

Build:
Build:
LAST BUILD BRANCH: refs/tags/v0.21.11
DEFAULT BRANCH: master
Ran 06 Oct 2026 09:17AM UTC
Jobs 1
Files 27
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

06 Oct 2026 09:05AM UTC coverage: 71.451% (+0.2%) from 71.259%
37441790374

push

github

web-flow
worker: keep and refresh stacks with expired certificate TTLs while ingresses are assigned (#817)

Fixes #816

A stack whose certificate TTL tags have all expired was always handled
as `delete`, even when
ingresses were assigned to it in the current model. If the deletion
failed, the controller retried
it forever and never updated the ingresses' load balancer status. If it
succeeded, a load balancer
with live traffic was deleted.

Changes:

- `Status()` returns `delete` only when no ingress is assigned. A stack
with ingresses goes through
the normal update path, which writes a zero TTL for the certificates in
use.
- Before matching, `inUseFirst` moves the load balancers that ingresses
currently point to (their
status hostname) to the front and keeps the `sortStacks` order
otherwise. Without this, all
ingresses would be matched to the idle stack that sorts first by name,
and DNS would move to it.
Whether an ingress fits a load balancer is still decided by
`addIngress`.
- Keeping a stack that is marked for deletion is not expected, so it is
reported: the controller
logs a warning and increments
`kube_ingress_aws_controller_deletion_blocked_total`
  (alert with `increase(...[1h]) > 0`).

Behaviour change: among stacks that can take an ingress, the ones that
ingresses currently point to
are tried first. Previously the order came only from `sortStacks`
(certificate count, then name).

Tests: `TestExpiredCertTTLStacksWithIngresses` builds the model for two
shared stacks with the
same, expired certificates, one existing ingress (status points to the
stack that sorts second)
and one new ingress. It fails on `master` (both ingresses land on the
other stack) and passes with
this change. `TestInUseFirstKeepsOrderWithoutStatus` covers the
ordering. `go test ./...` passes.
Also tested on an EKS lab cluster (see comments).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01Q9yx9H3zxVNBsWGxJ4U2UW

---------

Signed-off-... (continued)

32 of 37 new or added lines in 2 files covered. (86.49%)

2728 of 3818 relevant lines covered (71.45%)

11.49 hits per line

Uncovered Changes

Lines Coverage ∆ File
4
78.49
0.87% worker.go
1
85.12
0.3% metrics.go
Jobs
ID Job ID Ran Files Coverage
1 37441790374.1 06 Oct 2026 09:17AM UTC 27
71.45
GitHub Action Run
Source Files on build 37441790374
  • Tree
  • List 27
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 45878c17 on github
  • Prev Build on refs/tags/v0.21.10 (#36852014007)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc