{"id":"IL-0090","org":"UK Ministry of Justice","date":"2021-06-09","docs":[],"title":{"en":"After an upgrade of the ModSec ingress controller module, its validating webhook served a certificate for the wrong service name and blocked every Ingress create and change","ko":"ModSec 인그레스 컨트롤러 모듈을 v3.33.0 으로 올린 뒤 검증 웹훅 호출이 x509 인증서 오류로 실패해, 모든 인그레스 생성과 변경이 막히고 사용자 애플리케이션 배포가 멈췄다."},"domain":["kubernetes"],"impact":{"scope":"all Ingress create and update calls on the cluster, and with them all user application deployments","users":"all users deploying applications on the Cloud Platform","region":"unknown"},"review":{"written_by":"session","reviewed_at":null,"reviewed_by":null},"lessons":null,"related":[],"sources":[{"url":"https://runbooks.cloud-platform.service.justice.gov.uk/incidents/2021-06-09-unable-to-create-new-ingress-rules.html","kind":"runbook","license":"unknown","archived":null}],"summary":{"en":"The ModSec ingress controller registers a validating admission webhook, which the Kubernetes API server calls before it accepts any Ingress create or change. After the module was upgraded to v3.33.0, the API server called the webhook at the service name modsec01-nx-modsec-admission, but the TLS certificate the webhook served was valid only for modsec01-nx-controller-admission. The API server therefore could not call the webhook, and every Ingress create or change was rejected, including those in all user application deployments.\n\nThe team rolled the ModSec ingress controller module back to v0.0.7. The incident was repaired at 13:46, 31 minutes after the first report, and resolved at 13:58. The review asks why the test cluster did not show the problem, and notes that neither the old nor the new ModSec module version worked on the cluster named live.","ko":"2021년 6월 9일 Cloud Platform 팀은 ModSec 인그레스 컨트롤러 모듈을 v3.33.0 으로 업그레이드했고, 배포는 성공한 것처럼 보였다. 업그레이드 직후부터 ModSec 검증 웹훅이 새 인그레스 생성과 기존 인그레스 변경을 모두 막았다. 웹훅 호출은 x509 인증서 오류로 실패했다. 인증서는 modsec01-nx-controller-admission 이름으로 발급돼 있었는데, 호출은 modsec01-nx-modsec-admission.ingress-controllers.svc 로 갔다.\n\n인그레스 API 호출이 모두 막히면서 사용자 애플리케이션 배포도 전부 멈췄다. 팀은 ModSec 인그레스 컨트롤러 모듈을 v0.0.7 로 롤백해 문제를 풀었다. 수리까지 31분, 해결까지 43분이 걸렸다. 이 문제는 테스트 클러스터에서 걸러지지 않았다."},"trigger":{"en":"The Cloud Platform team upgraded the ModSec ingress controller module to v3.33.0; the deployment appeared to succeed.","ko":"ModSec 인그레스 컨트롤러 모듈을 v3.33.0 으로 업그레이드했다."},"severity":"unknown","symptoms":["deploys-failing"],"timeline":{"detected_after":null,"resolved_after":"43m"},"date_kind":"incident","detection":{"en":"A user reported the deployment error in the #ask-cloud-platform Slack channel at 13:15.","ko":"13:15 에 한 사용자가 #ask-cloud-platform 채널에 UAT 애플리케이션 배포 오류를 올리면서 장애가 드러났다. 장애 선언은 13:54 였다."},"components":["admission-webhook","ingress"],"root_cause":"upgrade-breaking-change","remediation":[{"text":{"en":"rolled back the ModSec ingress controller module to v0.0.7","ko":"ModSec 인그레스 컨트롤러 모듈을 v0.0.7 로 롤백했다."}}],"action_items":[{"text":{"en":"Find out why the issue was not flagged in the test cluster and try to reproduce it, possibly with a new test (ticket #2972)","ko":"이 문제가 테스트 클러스터에서 왜 걸러지지 않았는지 알아본다. 문제를 재현해 보고 테스트를 하나 더 둘지 판단한다. 티켓 #2972."}},{"text":{"en":"Add a smoke test that checks the alerts in Alertmanager (ticket #2973)","ko":"스모크 테스트에 Alertmanager 의 알림을 확인하는 테스트를 더한다. 티켓 #2973."}},{"text":{"en":"Add a helloworld app that uses the ModSec controller so smoke tests can check that traffic works (ticket #2974)","ko":"ModSec 컨트롤러를 쓰는 helloworld 앱을 두고, 스모크 테스트로 트래픽이 실제로 흐르는지 확인한다. 티켓 #2974."}},{"text":{"en":"Make a new version of the ModSec module work on EKS for both live-1 and live; neither the old nor the new version works on live (ticket #2975)","ko":"새 버전의 ModSec 모듈이 EKS 의 live-1 과 live 에서 동작하게 만든다. 지금은 옛 버전과 새 버전 모두 live 에서 동작하지 않는다. 티켓 #2975."}}],"contributing":["staging-not-representative"],"recurrence_of":null,"symptoms_text":{"en":"At 13:15 on 9 June 2021 a user reported in the #ask-cloud-platform channel that deploying a UAT application failed on its Ingress resource.\n\nThe error was: kind Ingress: Internal error occurred: failed calling webhook \"validate.nginx.ingress.kubernetes.io\": Post https://modsec01-nx-modsec-admission.ingress-controllers.svc:443/networking/v1beta1/ingresses?timeout=10s: x509: certificate is valid for modsec01-nx-controller-admission, modsec01-nx-controller-admission.ingress-controllers.svc, not modsec01-nx-modsec-admission.ingress-controllers.svc\n\nEvery Ingress API call was blocked. No new Ingress could be created and no change to an existing Ingress could be deployed, which stopped all user application deployments. The failures started right after an upgrade of the ModSec ingress controller module that had appeared to deploy successfully.","ko":"2021년 6월 9일 13:15 에 한 사용자가 #ask-cloud-platform 채널에 UAT 애플리케이션을 배포하다가 오류가 났다고 알렸다.\n\n오류 문구는 다음과 같았다. kind Ingress: Internal error occurred: failed calling webhook \"validate.nginx.ingress.kubernetes.io\": Post https://modsec01-nx-modsec-admission.ingress-controllers.svc:443/networking/v1beta1/ingresses?timeout=10s: x509: certificate is valid for modsec01-nx-controller-admission, modsec01-nx-controller-admission.ingress-controllers.svc, not modsec01-nx-modsec-admission.ingress-controllers.svc\n\n인그레스 API 호출이 모두 막혀 새 인그레스를 만들 수 없었고 기존 인그레스의 변경도 배포되지 않았다. 사용자 애플리케이션 배포도 전부 여기에 걸렸다. 장애는 ModSec 인그레스 컨트롤러 모듈을 v3.33.0 으로 업그레이드한 직후에 시작됐다. 업그레이드 자체는 성공한 것처럼 보였다."},"updated_at":"2026-11-10T00:00:32.321007Z","url":"https://benchlet.com/incidentlib/app/cases/IL-0090","org_slug":"uk-ministry-of-justice"}