K8s 웹훅

1 개요[ | ]

K8s webhook
k8s 웹훅
  • API 서버 동작 과정에서 외부 HTTP(S) 엔드포인트를 호출하여 요청을 검증·변경하거나 감사(Audit) 로깅을 수행할 수 있는 확장 메커니즘
  • 주로 Admission Controller, Audit, CRD 기능과 결합하여 클러스터의 보안·정책·운영 자동화를 구현한다.
  • 웹훅은 API 서버가 요청을 처리하는 중간 단계에서 동기적으로 실행되므로, 응답 시간과 가용성이 중요하다.

2 Admission 확장 포인트[ | ]

  • 쿠버네티스 Admission Controller 중에서, 동적으로 확장 가능한 세 가지 주요 컨트롤러가 있다.
확장 포인트 리소스 설명
MutatingAdmissionWebhook MutatingWebhookConfiguration 외부 웹훅 서버를 호출해 요청 객체를 수정할 수 있다 (예: Pod에 사이드카 주입).
ValidatingAdmissionWebhook ValidatingWebhookConfiguration 외부 웹훅 서버를 호출해 요청 객체를 검증한다 (예: 정책 위반 차단).
ValidatingAdmissionPolicy ValidatingAdmissionPolicy, ValidatingAdmissionPolicyBinding 외부 서버 없이 API 리소스로 선언적 검증을 수행한다. CEL 기반.

3 동작 원리[ | ]

  • API 서버는 객체 생성·수정·삭제 요청이 들어올 때, 관련 웹훅 구성을 확인하고 지정된 조건과 일치하면 해당 엔드포인트에 AdmissionReview 요청을 전송한다.
  • 웹훅 서버는 JSON 형식의 AdmissionReview 요청을 받고, AdmissionResponse로 결과를 반환한다.
    • allowed: true/false → 요청 허용 여부
    • patch → MutatingWebhook의 경우 JSONPatch를 통해 객체 수정 가능
  • API 서버는 응답에 따라 요청을 반영하거나 거부한다.

4 활용 사례[ | ]

  • Pod에 기본 레이블·사이드카 자동 주입 (예: Istio, Vault Agent Injector)
  • 특정 네임스페이스·리소스에 대한 보안 정책 강제 (예: privileged 컨테이너 금지)

5 주의 사항[ | ]

  • 웹훅 서버는 고가용성(HA)으로 배포해야 하며, 네트워크 문제 시 API 서버 요청이 지연될 수 있다.
  • failurePolicy를 통해 웹훅 호출 실패 시 요청을 허용할지(Ignore) 거부할지(Fail) 설정할 수 있다.
  • TLS 인증서 구성이 필수이며, API 서버는 HTTPS로만 웹훅 엔드포인트와 통신한다. (보통 caBundleService 리소스를 통해 설정)

6 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}