IL-0502 2i2c · 2025-08-20networking
The JupyterHub at temple.2i2c.cloud stopped resolving in DNS after a wildcard record was added for a new cluster
While setting up a new cluster for Temple at 9:21 AM, 2i2c added a wildcard DNS record, *.temple.2i2c.cloud, at its DNS provider Namecheap, pointing to the new cluster's Ingress IP. Existing records were not touched, so no change was expected. The new wildcard, however, stopped the existing *.2i2c.cloud wildcard from answering for temple.2i2c.cloud itself, so the name of the existing hub no longer resolved; DNS caching delayed the effect until 10:02 AM. The engineer setting up the cluster had no access to Namecheap, so the record was created by passing the request on to others.
When the uptime alert fired at 10:02 AM, an engineer found that temple.2i2c.cloud returned no records and added an explicit A record for temple.2i2c.cloud in Namecheap. The alert resolved at 10:15 AM, 13 minutes 46 seconds after it started. Because the community's demo was close, the TTL was lowered from the 30-minute default to 5 minutes at 10:32 AM, though it was unclear whether this changed propagation, and at 10:47 AM the community member preparing the demo was offered an /etc/hosts entry as a workaround. At 10:55 AM the community reported that the hub worked for them.
- Severity
- –
- Scope
- The JupyterHub at temple.2i2c.cloud did not resolve and could not be reached
- Users affected
- the Temple community, shortly before a demo
- Region
- –
- Time to detect
- 0m
- Time to resolve
- 13m 46s
Symptoms
On 20 August 2025 at 10:02 AM Pacific time, an automated uptime check on temple.2i2c.cloud started failing and paged 2i2c: the JupyterHub at temple.2i2c.cloud could not be reached, shortly before the community that uses it was to give a demo.
The alert, INCIDENT #1194, read "An uptime check on two-eye-two-see Uptime Check URL labels {project_id=two-eye-two-see, host=temple.2i2c.cloud} is failing." Running `dig temple.2i2c.cloud` returned NOERROR but no entries, so the hub's name was not resolving. A community member opened a support ticket at 10:09 AM.
The DNS record that caused the failure had been added at 9:21 AM, about 40 minutes earlier, without any visible effect at the time; the team put the delay down to DNS caching. Because the default TTL on Namecheap records is 30 minutes, any fix could take that long to propagate. DNS resolved properly for the engineer working on the issue only at 10:47 AM.
Root cause
Root cause Configuration change
- Trigger
- At 9:21 AM, while setting up a new cluster for Temple, a wildcard DNS record *.temple.2i2c.cloud was added pointing to the new cluster's Ingress IP.
Detection
Automated uptime alerts caught the failure at 10:02 AM, before the community reported it in a support ticket at 10:09 AM.
Remediation
- Added an explicit A record for temple.2i2c.cloud in Namecheap
- Lowered the DNS TTL from the 30-minute default to 5 minutes
- Offered the community member running the demo an /etc/hosts entry as a workaround
Action items
- Give everyone on the team access to Namecheap, or move to another DNS provider
- Use a 5-minute TTL instead of 30 minutes for all new DNS entries
- Document that adding a *.X.2i2c.cloud DNS entry requires adding an X.2i2c.cloud entry as well
Lessons
Adding a wildcard record for a subdomain stopped a broader wildcard from answering for that subdomain's own name, so a *.X.2i2c.cloud record needs an X.2i2c.cloud record alongside it. The 30-minute default TTL at Namecheap meant any DNS fix could take that long to propagate, and the engineer creating the original record had no access to the DNS provider.
Sources
References
Related cases
IL-0512xpro.mit.edu returned 503 for an hour when its Kubernetes/APISIX origin certificate expired after renewal failedMIT Open Learning · 2026 · sev1same root cause · shared Authoritative DNS servers and records
IL-0533Names in chinacloudapp.cn and chinacloudsites.cn stopped resolving as DNS caches expired, breaking Azure China servicesMicrosoft Azure · 2024same root cause · shared Authoritative DNS servers and records
IL-0254Square's internal DNS servers failed and Square products, services and payments were unavailable for about 15 hoursSquare · 2023same root cause · shared Authoritative DNS servers and records
IL-0549Media, attachments, Git LFS and build artifacts failed for Atlassian in us-west-1 when an old network stack was removedAtlassian · 2023same root cause · shared Authoritative DNS servers and records
IL-0363static.crates.io did not resolve for 10-15 minutes during a Terraform deployment, so Rust builds could not fetch cratesRust Project · 2023same root cause · shared Authoritative DNS servers and records
Check your cluster for this
For AI tools and scripts
- This case as JSON: https://incidentlib-api.benchlet.com/cases/IL-0502
- The cases most like it: https://incidentlib-api.benchlet.com/cases/IL-0502/similar
- MCP server (Streamable HTTP, no key):
https://incidentlib-mcp.benchlet.com/mcp
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.