{"id":"IL-0086","org":"CircleCI","date":"2021-03-11","docs":[],"title":{"en":"A deployment meant for a CircleCI test Kubernetes cluster also removed Traefik and Calico resources from the production cluster, taking down the CircleCI UI and runner.circleci.com","ko":"테스트 Kubernetes 클러스터용 배포가 운영 클러스터의 Traefik 과 Calico 리소스까지 지워 CircleCI UI 와 runner.circleci.com 이 1시간 54분 동안 내려갔다."},"domain":["kubernetes","networking"],"impact":{"scope":"CircleCI UI and runner.circleci.com unavailable and CircleCI Runner jobs not running; the API and builds outside Runner were unaffected","users":"unknown","region":"unknown"},"review":{"written_by":"session","reviewed_at":null,"reviewed_by":null},"lessons":{"en":"A deployment path that can reach both a test cluster and production can remove shared networking components from production. When the ingress controller and the CNI are both affected, restoring the ingress alone is not enough: engineers had to find the link between Calico and Traefik and restore Calico before pods served traffic again.\n\nTime went to DNS and AWS red herrings because nothing linked the outage to the test deployment; CircleCI's answer is better network runbooks, network alerting and guardrails between clusters.","ko":"테스트 클러스터용 배포가 운영 클러스터의 리소스를 건드릴 수 있으면 스테이징 작업이 곧 운영 장애가 된다. 스테이징 배포가 운영에 영향을 줬다는 사실이 바로 보이지 않아 조사가 DNS 와 AWS 에서 시작됐다. Traefik 만 되살려서는 복구되지 않았고 Calico 와 Traefik 의 관계까지 알아야 했다. CircleCI 는 Kubernetes 네트워크의 모든 계층을 담은 문서와 런북이 필요하다고 정리했다."},"related":[],"sources":[{"url":"https://status.circleci.com/incidents/67vvll4phmcn","kind":"official-status","license":"unknown","archived":null}],"summary":{"en":"On 11 March 2021 CircleCI deployed an update to a test Kubernetes cluster. The deployment removed Traefik and Calico resources from both the test cluster and CircleCI's primary production cluster. Without Traefik, the CircleCI UI and runner.circleci.com were unreachable; the API has its own ingress point and was not affected.\n\nBecause the connection to the test deployment was not obvious, engineers first investigated DNS and AWS causes. A deeper look showed the Traefik problem, and Traefik was restored quickly, but that did not fix everything. Engineers then found that the link between Calico and Traefik was the root cause; once Calico was restored, pods in the production cluster went back to serving customer requests. The outage lasted 1 hour 54 minutes.","ko":"2021년 3월 11일 15:35 EST 부터 1시간 54분 동안 CircleCI 에 장애가 있었다. 테스트 Kubernetes 클러스터에 한 업데이트가 의도치 않게 CircleCI 의 주 운영 클러스터에도 영향을 줬다. 이 배포는 운영과 테스트 클러스터 양쪽에서 Traefik 과 Calico 리소스를 지웠다.\n\nTraefik 이 사라지자 CircleCI UI 와 runner.circleci.com 에 접속할 수 없었다. 조사 도중 Runner 잡도 돌지 않는다는 것이 드러났다. API 는 다른 인그레스를 쓰고 있어 영향이 없었고, Runner 밖의 빌드도 정상으로 돌았다.\n\n엔지니어들은 DNS 와 AWS 쪽을 먼저 조사했지만 둘 다 원인이 아니었다. 이후 Traefik 문제를 찾아 빠르게 복구했지만 문제가 다 풀리지 않았다. 그때 Calico 와 Traefik 사이의 연결이 근본 원인이라는 것을 찾았고, Calico 를 복구하자 운영 클러스터의 파드가 다시 고객 요청을 처리했다. 상태 페이지는 22:33 UTC 에 해결을 알렸다."},"trigger":{"en":"An update deployed to a test Kubernetes cluster also removed Traefik and Calico resources from CircleCI's primary production cluster.","ko":"테스트 Kubernetes 클러스터를 대상으로 한 배포가 테스트 클러스터와 운영 클러스터 양쪽에서 Traefik 과 Calico 리소스를 지웠다."},"severity":"unknown","symptoms":["service-unavailable","resources-deleted"],"timeline":{"detected_after":null,"resolved_after":"1h 54m"},"date_kind":"incident","detection":{"en":"CircleCI engineers were alerted and began investigating. The status page posted its first notice at 20:45 UTC.","ko":"알림을 받은 엔지니어들이 조사를 시작했다. 상태 페이지에는 20:45 UTC 에 첫 공지가 올라왔다."},"components":["ingress","calico"],"root_cause":"deploy-rollout","remediation":[{"text":{"en":"restored Traefik in the production cluster","ko":"지워진 Traefik 을 복구했다."}},{"text":{"en":"restored Calico in the production cluster, after which pods served customer requests again","ko":"Calico 를 복구해 운영 클러스터의 파드가 다시 고객 요청을 처리하게 했다."}}],"action_items":[{"text":{"en":"Improve network-level documentation and runbooks to cover every layer of the Kubernetes networks","ko":"Kubernetes 네트워크의 여러 계층을 모두 다루도록 네트워크 수준 문서와 런북을 보강한다."}},{"text":{"en":"Improve monitoring and alerting for the network infrastructure","ko":"네트워크 인프라 쪽 모니터링과 알림을 개선했다."}},{"text":{"en":"Add guardrails that isolate the production and staging clusters so they cannot interfere with each other","ko":"운영 클러스터와 스테이징 클러스터가 서로 간섭하지 않도록 둘을 더 확실히 떼어 놓는 안전장치를 추가한다."}}],"contributing":["blast-radius-too-wide","no-runbook","monitoring-blind-spot"],"recurrence_of":null,"symptoms_text":{"en":"At 15:35 EST on 11 March 2021 the CircleCI web UI and runner.circleci.com became unavailable. The API, which uses a separate ingress point, stayed reachable, and builds kept running.\n\nLater in the incident CircleCI found that jobs on CircleCI Runner were not running either, while all builds outside Runner ran as expected.\n\nNothing pointed at the test cluster, so engineers first chased DNS and AWS-related leads, which turned out to be red herrings. When the fix was in, CircleCI said that because the problem was DNS-related some customers might need to clear their browser's DNS cache, and some locations might see the change a little later.","ko":"2021년 3월 11일 15:35 EST 에 CircleCI UI 에 접속할 수 없게 됐다. API 는 별도 인그레스로 들어오기 때문에 계속 응답했고 빌드도 계속 돌았다.\n\n상태 페이지는 20:45 UTC 에 UI 장애를 조사 중이라고 처음 알렸다. 21:34 UTC 에는 CircleCI Runner 잡도 돌지 않는다는 것이 추가로 드러났다. Runner 밖의 빌드는 정상으로 돌았다.\n\n엔지니어들은 스테이징 배포가 운영 클러스터에 영향을 줬다는 것을 바로 알아채지 못했다. 그래서 DNS 와 AWS 쪽을 먼저 조사했지만 둘 다 원인이 아니었다. 더 파고들어 Traefik 문제를 찾아 복구했지만 그것만으로는 문제가 다 풀리지 않았다.\n\n수정을 적용한 뒤 CircleCI 는 문제가 DNS 와 얽혀 있다고 안내했다. 그래서 일부 고객은 브라우저의 DNS 캐시를 지워야 할 수 있고, 지역에 따라 반영이 조금 늦을 수 있다고 했다."},"updated_at":"2026-11-10T00:00:32.141298Z","url":"https://benchlet.com/incidentlib/app/cases/IL-0086","org_slug":"circleci"}