{"id":"IL-0459","org":"Wikimedia Foundation","date":"2023-08-09","docs":["https://gerrit.wikimedia.org/r/947331"],"title":{"en":"MediaWiki on Kubernetes terminated TLS with a wrong certificate after a deployment, and 1% of requests failed","ko":"쿠버네티스 위 MediaWiki 가 TLS 종료에 엉뚱한 인증서를 써서 약 30분 동안 트래픽 1% 가 오류를 받았다"},"domain":["kubernetes"],"impact":{"scope":"MediaWiki web and API availability: about 1% of traffic (120 requests/s) received errors for about 30 minutes","users":"unknown","region":"unknown"},"review":{"written_by":"session","reviewed_at":null,"reviewed_by":null},"lessons":{"en":"The cause was found quickly because the person who made the breaking change was responding. The change should have been caught by CI, but the repository it was made in (hieradata) does not run the CI of the deployment charts. Only 1% of traffic going to Kubernetes kept the impact small, and the low error volume made it slower to link the errors to Kubernetes.","ko":"문제를 일으킨 변경을 낸 사람이 대응자 가운데 있어 원인을 빨리 찾았다. 근본 원인은 CI 에서 보였어야 했다. 그러나 변경은 hieradata 저장소에서 했고 원인은 deployment-charts 저장소 쪽에 있어, 변경한 저장소의 CI 에서는 보이지 않았다. 당시에는 트래픽의 1% 만 쿠버네티스로 가서 피해가 작았다. 오류의 양이 적어 문제를 쿠버네티스 쪽으로 좁히는 데 시간이 걸렸다. 보고서는 쿠버네티스를 서비스 풀에서 더 일찍 뺐어야 했는지를 묻는다."},"related":[],"sources":[{"url":"https://wikitech.wikimedia.org/wiki/Incidents/2023-08-09_mw-on-k8s_outage_due_to_wrong_tls_cert","kind":"runbook","archived":"https://web.archive.org/web/20260512161723/https://wikitech.wikimedia.org/wiki/Incidents/2023-08-09_mw-on-k8s_outage_due_to_wrong_tls_cert"}],"summary":{"en":"A change to Wikimedia's global Kubernetes defaults, merged at 09:37 UTC on 9 August 2023, switched the charts that support it to cert-manager certificates. Nothing changed until the next MediaWiki on Kubernetes deployment, a MediaWiki configuration change at 11:41, after which the MediaWiki deployments used a wrong certificate for TLS termination. At the time only 1% of traffic was routed to Kubernetes, so about 1% of requests, around 120 per second, failed.\n\nProbe pages fired at 11:47. The person who had made the breaking change was one of the two responders, so the cause was found quickly: a patch was prepared at 11:58, the MediaWiki deployments were redeployed from 12:08, and the outage ended at 12:16. The write-up notes that the root cause should have been caught in CI, but the change was made in the hieradata repository, whose CI does not cover the deployment charts.","ko":"2023-08-09 09:37 UTC 에 쿠버네티스 전역 기본값을 바꿔, 이 기본값을 따르는 차트가 cert-manager 인증서를 쓰게 하는 변경이 머지됐다. 이 변경은 바로 드러나지 않았고, 11:41 에 MediaWiki 설정 변경을 배포하자 쿠버네티스 위 MediaWiki 배포가 이 기본값을 받아 TLS 종료에 엉뚱한 인증서를 쓰기 시작했다. 11:47 에 mw-api-ext 와 mw-api-int 의 프로브 실패 알림이 온콜 담당자를 호출했다. 쿠버네티스로 가는 트래픽이 전체의 1% 였으므로 피해는 초당 120건 요청의 오류로 그쳤다. 기본값 변경을 낸 사람이 대응자 가운데 있어 11:58 에 원인을 찾고 패치를 준비했으며, 12:08 에 MediaWiki 배포를 다시 시작해 12:16 에 장애가 끝났다. 변경은 hieradata 저장소에서 했다. 원인은 deployment-charts 저장소의 CI 에서 보였어야 했는데, 변경한 저장소의 CI 에서는 보이지 않았다."},"trigger":{"en":"At 09:37 a change to the global Kubernetes defaults was merged that switched supported charts to cert-manager certificates. The next MediaWiki on Kubernetes deployment, a configuration change at 11:41, picked it up.","ko":"09:37 에 쿠버네티스 전역 기본값을 바꾸는 변경이 머지됐다. 이 변경으로 이 기본값을 따르는 차트가 cert-manager 인증서를 쓰게 됐다. 11:41 에 MediaWiki 설정 변경을 배포하면서 쿠버네티스 위 MediaWiki 배포가 이 기본값을 받아 TLS 종료에 엉뚱한 인증서를 쓰게 됐다."},"severity":"unknown","symptoms":["high-error-rate","tls-certificate-errors","control-plane-slow"],"timeline":{"detected_after":"6m","resolved_after":"35m"},"date_kind":"incident","detection":{"en":"A page from the ProbeDown alerts for mw-api-ext:4447 and mw-api-int:4446 at 11:47; a KubernetesAPILatency alert had fired at 11:46.","ko":"11:47 에 \"(ProbeDown) firing: (6) Service mw-api-ext:4447 has failed probes (http_mw-api-ext_ip4)\" 와 \"(ProbeDown) firing: Service mw-api-int:4446 has failed probes (http_mw-api-int_ip4)\" 알림이 온콜 담당자를 호출해 알아챘다. 두 사람이 호출을 받았다."},"components":["cert-manager","helm"],"root_cause":"config-change","remediation":[{"text":{"en":"Identified the issue and prepared a patch, https://gerrit.wikimedia.org/r/947331","ko":"11:58 에 원인을 찾고 패치 https://gerrit.wikimedia.org/r/947331 을 준비했다."}},{"text":{"en":"Redeployed the MediaWiki deployments on Kubernetes","ko":"12:08 에 MediaWiki 디플로이먼트를 모두 다시 배포하기 시작했고, 12:16 에 장애가 끝났다."}}],"action_items":[{"text":{"en":"Review whether deployment procedures and testing should be strengthened, for example against surprising changes on the next deployment and with canary deployments for Kubernetes","ko":"배포 절차와 테스트를 더 강화해야 하는지 검토한다. 다음 배포에 뜻밖의 변경이 함께 실리는 문제와 쿠버네티스 카나리 배포도 검토 대상이다."}},{"text":{"en":"Look at metrics that become unavailable or unhealthy during deployments, or at reducing the impact of deployments","ko":"배포 중에 일부 지표를 볼 수 없거나 비정상이 되는 문제를 지표 쪽에서 고칠지, 배포의 영향을 줄일지 검토한다."}}],"contributing":["delayed-effect-change","no-config-tests"],"recurrence_of":null,"symptoms_text":{"en":"On 9 August 2023, right after a MediaWiki configuration deployment at 11:41 UTC, the MediaWiki deployments on Kubernetes terminated TLS with a wrong certificate, and about 1% of Wikimedia web and API traffic, around 120 requests per second, received errors for about 30 minutes. The issue was detected by a page for failed service probes on mw-api-ext and mw-api-int.\n\nThe alerts read \"(ProbeDown) firing: (2) Service mw-api-ext:4447 has failed probes (http_mw-api-ext_ip4) #page\" and \"(ProbeDown) firing: Service mw-api-int:4446 has failed probes (http_mw-api-int_ip4)\". One minute earlier, at 11:46, \"(KubernetesAPILatency) firing: High Kubernetes API latency (POST pods) on k8s@codfw\" had fired, and at 12:02 Icinga reported the httpbb_kubernetes_mw-api-int_hourly check on cumin2002 as CRITICAL.\n\nBecause only a small share of requests failed, it took some time to tie the errors to Kubernetes. Around 11:56 a responder suspected Kubernetes, and at 11:58 the cause was identified.","ko":"MediaWiki 설정 변경을 배포한 11:41 부터 쿠버네티스로 가는 MediaWiki 트래픽이 오류를 받기 시작했다. 11:47 에 mw-api-ext 와 mw-api-int 서비스의 프로브 실패 알림이 온콜 담당자를 호출했다. 전체 트래픽의 1%, 초당 120건의 요청이 약 30분 동안 오류를 받았다.\n\n알림은 \"(ProbeDown) firing: (6) Service mw-api-ext:4447 has failed probes (http_mw-api-ext_ip4)\" 와 \"(ProbeDown) firing: Service mw-api-int:4446 has failed probes (http_mw-api-int_ip4)\" 였다. 그보다 1분 앞선 11:46 에는 codfw 의 k8s 클러스터에서 \"(KubernetesAPILatency) firing: High Kubernetes API latency (POST pods)\" 가 울렸다. ATS 백엔드 오류도 함께 보였다.\n\n12:02 에는 cumin2002 에서 \"PROBLEM - Check unit status of httpbb_kubernetes_mw-api-int_hourly on cumin2002 is CRITICAL\" 이 울렸다. 배포 중에는 일부 지표를 볼 수 없거나 비정상으로 보였다.\n\n쿠버네티스로 가는 트래픽이 1% 뿐이라 오류의 양이 적었고, 그래서 문제를 쿠버네티스 쪽으로 좁히는 데 시간이 걸렸다. 11:56 에 대응자가 쿠버네티스 쪽 문제로 보고 확인에 들어갔다."},"updated_at":"2026-11-14T12:34:10.775364Z","url":"https://benchlet.com/incidentlib/app/cases/IL-0459","org_slug":"wikimedia-foundation"}