Incident Library

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.

Symptom DNS resolution failuresService outage

Root cause

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

Action items

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

Check your cluster for this

kubegap audits a Kubernetes cluster for conditions like the ones in this case, Authoritative DNS servers and records 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.