K8s 어드미션 컨트롤

1 개요[ | ]

K8s Admission Control
k8s 어드미션 컨트롤, k8s 어드미션 제어
  • K8s API 접근 제어의 세 단계(인증, 인가, 어드미션 제어) 중 마지막 단계
  • API 서버가 요청을 etcd에 영구 저장하기 전에 개입하여 객체를 검증·수정하거나 요청을 거부할 수 있는 메커니즘
  • 요청은 인증인가 단계를 통과한 뒤 Admission 단계로 전달되며, 이 과정에서 여러 Admission Controller가 순차적으로 실행된다.

2 용어[ | ]

용어 설명 Kubernetes에서 (예시)
Admission 단계 인증·인가 이후, 요청이 etcd에 저장되기 전 최종 검토 절차 요청 파이프라인의 Admission 단계
Admission Control Admission 단계에서 요청을 검증·수정·거부하는 메커니즘 Admission Controller들의 동작 집합
Admission Controller Admission Control을 실제로 수행하는 개별 플러그인 NamespaceLifecycle, ResourceQuota, LimitRanger 등
┗ 내장 Admission Controller API 서버에 기본 포함된 고정 기능 NamespaceLifecycle, ServiceAccount, ResourceQuota
웹훅 API 서버가 외부 HTTP 서버를 호출하여 확장 로직을 수행하는 메커니즘 Admission Controller, Audit Backend 등에서 활용
┗ Webhook Admission Controller 외부 웹훅 서버를 호출하여 요청을 검증·수정 MutatingAdmissionWebhook, ValidatingAdmissionWebhook
┗┗ Mutating Webhook 요청 객체를 수정하기 위해 호출되는 웹훅 MutatingAdmissionWebhook, MutatingWebhookConfiguration
┗┗ Validating Webhook 요청 객체를 검증하기 위해 호출되는 웹훅 ValidatingAdmissionWebhook, ValidatingWebhookConfiguration
┗┗ Validating Webhook Policy Validating Webhook의 정책 리소스 ValidatingWebhookConfiguration (웹훅 서버 엔드포인트·규칙 정의)
┗ 정책 기반 Admission Controller 외부 서버 호출 없이 API 리소스로 선언적 정책 정의 (v1.26+) ValidatingAdmissionPolicy, ValidatingAdmissionPolicyBinding (CEL 기반)

3 동작[ | ]

Admission Controller는 생성(create), 수정(update), 삭제(delete) 요청에 적용되며, 읽기(get, list, watch)는 제외된다.

구분 설명
동작 유형 Mutating → 요청 객체 수정
Validating → 요청 객체 검증
동작 단계 1단계: Mutating Admission Controller 실행
2단계: Validating Admission Controller 실행
거부 처리 어느 단계에서든 거부되면 요청은 즉시 실패
Mutating 단계에서 객체가 수정되면 일부 컨트롤러가 다시 실행될 수 있음

4 컨트롤러[ | ]

Admission Controller는 API 서버에 내장되어 있으며, 활성화 여부는 설정으로 제어한다.

확장 포인트 리소스 설명
MutatingAdmissionWebhook MutatingWebhookConfiguration 외부 웹훅 서버 호출로 요청 수정
ValidatingAdmissionWebhook ValidatingWebhookConfiguration 외부 웹훅 서버 호출로 요청 검증
ValidatingAdmissionPolicy ValidatingAdmissionPolicy, ValidatingAdmissionPolicyBinding 외부 서버 없이 API 리소스로 선언적 검증 (CEL 기반, v1.26+)

5 설정[ | ]

Admission Controller는 API 서버 실행 시 플러그인으로 제어한다.

동작 플래그
활성화 --enable-admission-plugins
비활성화 --disable-admission-plugins
kube-apiserver \
  --enable-admission-plugins=NamespaceLifecycle,LimitRanger \
  --disable-admission-plugins=PodNodeSelector

※ 일부 Admission Controller(NamespaceLifecycle, ServiceAccount 등)는 항상 활성화되어 있으며 비활성화할 수 없다.

6 필요성[ | ]

  • PodSecurity, ResourceQuota, LimitRange 등 핵심 기능은 Admission Controller 활성화가 필수이다.
  • 적절히 설정하지 않으면 보안·자원 관리 기능이 제한되어 API 서버가 불완전하게 동작할 수 있다.

7 같이 보기[ | ]

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