IL-0088 UK Ministry of Justice · 2020-09-07kubernetesaws
Cloud Platform 은 팀마다 ingress 컨트롤러를 모듈로 배포한다. 이 모듈의 0.1.0 버전은 ValidatingWebhookConfiguration 리소스를 만드는 옵션을 켰다. 이 옵션은 ingress-controllers 네임스페이스에 있는 ingress 컨트롤러 파드 전체의 단일 장애점이 되었다.
live-1 클러스터에서 새 0.1.0 컨트롤러 하나가 AWS 리소스 한도 때문에 만들어지지 않았다. 그 뒤 검증 웹훅이 새 Ingress 규칙 생성을 막았고, API 서버는 웹훅을 부를 때 x509 인증서 오류를 냈다. 새 서비스를 띄우는 사용자는 Ingress 를 만들 수 없었다.
팀은 0.1.0 이 만든 추가 admission 컨트롤러를 손으로 모두 지웠다. 이어서 모듈에서 admission 웹훅을 빼고 0.1.1 을 냈고, 0.1.0 을 쓰던 ingress 모듈을 모두 0.1.1 로 올렸다. 15:56 에 해결되었고, 복구까지 3시간 2분, 해결까지 3시간 17분이 걸렸다.
2020-09-07 12:39 에 Cloud Platform 의 live-1 클러스터에서 새 Ingress 규칙이 만들어지지 않는 문제가 처음 감지되었다. Ingress API 가 POST 요청을 100% 거부하고 있었다.
Ingress 를 만들려고 하면 다음 오류가 났다. Error from server (InternalError): error when creating "ingress.yaml": Internal error occurred: failed calling webhook "validate.nginx.ingress.kubernetes.io": Post offender-categorisation-prod-nx-controller-admission.ingress-controllers.svc:443/extensions/v1beta1/ingresses?timeout=30s: x509: certificate signed by unknown authority
오류는 웹훅 validate.nginx.ingress.kubernetes.io 를 부르는 단계에서 났다. 호출 대상은 ingress-controllers 네임스페이스의 offender-categorisation-prod-nx-controller-admission 서비스였다.
새 서비스를 띄우려는 사용자는 클러스터로 들어오는 Ingress 를 만들 수 없었다. 팀은 Slack 스레드에서 조사를 시작했고 12:54 에 장애를 선언했다.
증상 ? 배포 실패
문제는 2020-09-07 12:39 에 처음 감지되었다. 확인해 보니 Ingress API 가 POST 요청을 100% 거부하고 있었다. 팀은 Slack 스레드에서 조사를 시작했고 12:54 에 장애를 선언했다.
–
검증 웹훅을 켜는 옵션 하나가 네임스페이스에 있는 ingress 컨트롤러 파드 전체의 단일 장애점이 되었다. 컨트롤러 하나가 뜨지 못하자 그 웹훅이 클러스터 전체의 새 Ingress 생성을 막았다.
같은 원인 · 공통 인그레스 컨트롤러
같은 원인 · 공통 인그레스 컨트롤러