Incident Library

IL-0513 Python Software Foundation · 2022-10-24kubernetesawsnetworking

PyPI backends on Kubernetes were unreachable over HTTPS for 20 minutes when the Ingress ELB lost its HTTPS listener

PyPI and several ancillary services run as Deployments in a Kubernetes cluster and are exposed through Ingress with the AWS Elastic Load Balancer (ELB) integration. The ELB's TLS certificate is managed in Amazon's Certificate Manager (ACM), and the Ingress had been set up with an existing ACM certificate. After the previous rolling upgrade, PyPI's Ingress needed an additional hostname, so PyPI administrators created a new ACM certificate with that hostname and updated the Ingress-managed ELB to use it by hand in the AWS console, while the Ingress configuration still named the old certificate.

On 24 October 2022 a rolling restart of all nodes brought up new Kubernetes API servers. They re-validated the Ingress configurations, could not find the old ACM certificate, and disabled the HTTPS listener for the Ingress serving PyPI. Once the cause was found, the administrators pointed the Ingress configuration at the new ACM certificate, Kubernetes restored the HTTPS listener on the ELB, and access came back at 15:03 UTC.

Severity
–
Scope
PyPI backends over HTTPS: CDN page fetches, uploads to uploads.pypi.org and the legacy file redirect service
Users affected
–
Region
–
Time to detect
–
Time to resolve
20m

Symptoms

From 14:43 to 15:03 UTC on 24 October 2022, during regular maintenance of the Kubernetes cluster that hosts PyPI, PyPI's backends could not be reached over HTTPS. The CDN could not fetch pages, uploads to uploads.pypi.org were impossible, and other services such as the legacy file redirect service were interrupted.

The HTTPS listener of the AWS Elastic Load Balancer that the Kubernetes Ingress manages had been disabled for the Ingress serving PyPI and its associated services. The status page listed pypi.org backends, files.pythonhosted.org redirects and the redirects backends as affected.

Symptom Service outage

Root cause

Trigger
Regular maintenance did a rolling restart of every node in the cluster to roll out upgrades and new configuration; as the new Kubernetes API server hosts came up, Kubernetes validated and refreshed the Ingress configurations.

Detection

–

Remediation

Action items

Lessons

When every resource is managed through the Kubernetes API, drift between the desired state and reality is less likely to build up and then surface during later maintenance.

Sources

Related cases

Check your cluster for this

kubegap audits a Kubernetes cluster for conditions like the ones in this case, Ingress controller, Cloud load balancer among them, read-only, from Claude Code or Codex. Its checks cite public reports like this one.

For AI tools and scripts

The API needs no key. The MCP server offers search_incidents, get_incident, list_incidents, get_topic and vocab; both are explained on API and MCP.