Scheduling/82/Admission Controllers

y001·2025년 2월 20일
post-thumbnail

Admission Controllers의 개념

  • kubectl을 사용하여 Kubernetes API Server에 요청을 보내면, 요청이 인증(Authentication)과 인가(Authorization)를 거쳐야 한다.
  • Role-Based Access Control(RBAC)을 이용하여 특정 사용자에게 특정 리소스에 대한 접근 권한을 부여할 수 있다.
  • 하지만 RBAC만으로는 특정 세부 정책을 적용하기 어렵다. 예를 들어, 퍼블릭 Docker Hub에서 이미지를 가져오는 것을 제한하거나, latest 태그 사용을 방지하는 등의 정책을 적용할 수 없다.
  • 이러한 제한을 적용하기 위해 Admission Controllers가 필요하다.

Admission Controllers

  • AlwaysPullImages: Pod가 생성될 때마다 이미지를 항상 pull하도록 강제.
  • DefaultStorageClass: PVC(Persistent Volume Claim)가 생성될 때 기본 Storage Class를 자동으로 추가.
  • EventRateLimit: API Server가 처리할 수 있는 요청 수를 제한하여 과부하 방지.
  • NamespaceExists: 존재하지 않는 네임스페이스에 대한 요청을 거부.
  • NamespaceAutoProvision(기본적으로 비활성화됨): 존재하지 않는 네임스페이스에 대해 자동으로 네임스페이스를 생성.

Admission Controllers 활성화 및 비활성화

  • kube-apiserver에서 --enable-admission-plugins 플래그를 설정하여 활성화할 수 있다.
  • kubectl exec 명령을 사용하여 API Server 컨테이너 내에서 활성화된 Admission Controller 목록을 확인할 수 있다.
  1. Namespace Lifecycle Admission Controller
    • NamespaceExistsNamespaceAutoProvision Admission Controller는 Namespace Lifecycle Admission Controller로 통합되었다.
    • 특정 네임스페이스(default, kube-system, kube-public) 삭제 방지 기능을 제공.

0개의 댓글