Incident Library
적용된 필터 구성 요소GKE 컨트롤 플레인증상리소스 삭제도메인쿠버네티스모두 풀기검색어 없이 필터만 적용한 목록입니다. 최근 사례부터입니다.
추천 필터 검색하면 검색어에서 찾은 분류 값이 여기에 나옵니다.

그래프

  • 원인
  • 구성 요소
  • 증상
  • 기여 요인
  • 사례

사례2건

2건 중 1~2번째

  1. 증상

    Secure Connect 를 켠 커넥터를 쓰려던 고객이 연결 타임아웃과 실패를 겪었다. Secure Connect 를 켠 git 커넥터 테스트가 연결 타임아웃으로 실패했고, Secure Connect 를 켠 CI 파이프라인은 멈추거나 실패했다. Secure Connect 없이 도는 커넥터는 정상이었다.

    촉발

    Secure Connect 의 내부 FRPS 인프라를 돌리는 GKE 클러스터에서 컨트롤 플레인 자동 업그레이드가 두 단계로 잇달아 실행됐고, 단계마다 GKE 클라우드 컨트롤러 매니저가 재시작됐다.

    원인
    구성 요소
    기여 요인
    –
    조치
    • FRPS 디플로이먼트를 롤아웃 재시작해 클라이언트가 FRPS 서버에 다시 연결되게 했다. IP 예약이 사라진 근본 문제는 이 조치로 풀리지 않았다.
    • 내부 쿠버네티스 서비스 frps-internal 을 지우고 다시 만들어, GKE 가 새 IP 주소로 새 로드 밸런서를 만들게 했다.
    • Cloud DNS A 레코드가 새 로드 밸런서 IP 를 가리키게 바꿔, Secure Connect 트래픽 전체의 경로를 되살렸다.
  2. 증상

    Terraform 이 아시아 운영 GKE 클러스터를 지웠다. 사내 서비스 디스커버리가 사라진 클러스터에 닿지 못하자 클러스터 운영 팀이 호출을 받았다.

    촉발

    클러스터 운영 팀이 아시아 클러스터를 Terraform 상태 파일로 가져오는 PR 을 올렸고, 그 리뷰 빌드가 운영에 쓰이는 전역 상태 파일을 바꿨다. 그런데 이 PR 보다 클러스터 사용자의 PR 이 먼저 머지됐고, 그 PR 에는 아시아 클러스터 정의가 없었다. Terraform 은 정의에 없는 아시아 클러스터를 삭제했다.

    원인
    구성 요소
    기여 요인
    감지

    사내 서비스 디스커버리가 사라진 클러스터에 닿지 못하자 클러스터 운영 팀이 호출을 받았다.

    조치
    • 서비스 디스커버리 설정에서 사라진 클러스터를 빼고 사내 서비스 디스커버리를 재시작해 파드 IP 를 백엔드 목록에서 지웠고, 트래픽을 쿠버네티스 밖 인스턴스로 넘겼다.
    • 쿠버네티스와 VM 에 반씩 나눠 돌던 한 팀이 부하를 받으려고 쿠버네티스 밖 VM 을 더 만들었다.
    • 미리 복원을 시험해 둔 클러스터 백업으로 삭제된 클러스터를 다시 만들었다.
    • 옛 클러스터 마스터 IP 를 하드코딩한 곳을 찾아 모두 새 값으로 고쳤다.
    후속 조치
    • 드라이런 결과를 PR 댓글로 달아 무엇이 바뀔지 바로 보이게 했다.
    • 머지 전에 브랜치가 최신 master 를 반영해야 하는 필수 상태 검사를 켜서, 드라이런이 실제로 일어날 일을 보여 주게 했다.
    • PR 머지에 승인 리뷰를 필수로 했다.
    • destroy 같은 키워드가 보이면 리뷰를 바로 실패시키고, 클러스터 삭제는 이 저장소 밖에서 손으로 하게 했다.
    • 클러스터 설정을 린터와 검증기로 검사하게 했다.
    • 일정을 미리 잡아 널리 알린 뒤, 클러스터가 사라지는 경우와 그보다 작은 실패를 다루는 재해 복구 훈련을 했다.
    교훈

    Terraform 은 상태 파일을 보고 할 일을 정한다. 리뷰 빌드가 운영 상태 파일을 바꾸게 두면 머지 순서 하나로 운영 리소스가 지워질 수 있다. 같은 리소스도 API 를 호출하는 권한에 따라 다른 속성으로 보이므로, 가져올 때와 관리할 때 권한이 다르면 Terraform 이 그 차이를 변경으로 읽는다. 처음부터 실패에 대비하고, 큰 인프라를 서서히 옮기고, 되돌릴 방법을 남겨 둔 덕분에 운영 클러스터 두 개가 사라져도 최종 사용자 영향이 없었다. 복원을 시험해 보지 않은 백업은 백업이 아니다. 실수를 누가 했는지보다 무엇을 배웠고 같은 종류의 실수를 어떻게 막을지가 중요하다.

내 클러스터에도 있는지 확인하기

이 2건에서 가장 많이 나오는 구성 요소: GKE 컨트롤 플레인, CI 시스템. kubegap 은 Claude Code 나 Codex 에서 쿠버네티스 클러스터를 읽기만 하며 이런 틈을 점검합니다. 점검 항목의 근거는 이 라이브러리와 같은 공개 보고서입니다.

원인별2