02-12 17:04
반응형
250x250
Recent Posts
Recent Comments
Link
관리 메뉴

DevOps Tasks

[Kubernetes] Admission Controller 란? 본문

Kubernetes

[Kubernetes] Admission Controller 란?

데밥스 2025. 2. 9. 20:48
728x90
반응형

Admission Controller란?

`Admission Controller`는 Kubernetes 클러스터의 요청 흐름을 제어하고, 보안을 강화하며 정책을 시행하는 중요한 도구입니다.

이 컨트롤러는 API 요청이 클러스터 리소스에 적용되기 전에 요청을 가로채어 변경하거나 승인/거부를 결정합니다.

 

 

Kubernetes API Server로의 요청 흐름

Kubernetes API를 통해 리소스를 생성, 업데이트, 삭제하려는 모든 요청은 `API Server`를 통해 아래의 단계를 거칩니다.

  1. Authentication (인증)
    • 요청한 주체(사용자, 서비스)가 유효한 자격 증명을 가졌는지 확인.
      • (예: OIDC, 클라이언트 인증서, 토큰 등)
    • 인증 실패 시 요청 거부.
  2. Authorization (인가)
    • 주체가 `RBAC`(Role-Based Access Control) 정책에 따라 해당 작업을 수행할 권한이 있는지 확인.
    • 권한 없으면 요청 거부.
  3. Admission Control
    • 요청이 리소스에 영향을 미치기 전, `Mutating`, `Validating Webhook` 및 `Object Schema Validation`을 통해 검토 및 변경/거부.
  4. etcd 저장
    • 모든 검증이 완료된 요청만 클러스터 상태를 반영하며 `etcd`에 저장.

Admission Controller의 역할과 동작 방식

Kubernetes 클러스터의 안정성과 보안을 유지하려면, API 요청이 클러스터에 적용되기 전에 체계적인 검토가 필요합니다.

`Admission Controller`는 이러한 요청을 제어하는 중요한 단계로, 클러스터에 적용될 요청을 수정, 검증하거나 거부하는 역할을 합니다.

 

Admission Controller의 주요 기능

`Admission Controller`는 크게 세 가지 주요 기능을 제공합니다

1) Mutating Admission Webhook (변경)

  • 요청을 승인하기 전에 리소스 객체를 수정하거나 기본값을 추가합니다.

example

  • `Pod` 리소스에 특정 `label`을 자동으로 추가.
  • `spec.containers`에 누락된 기본값을 채워 넣기.

2) Object Schema Validation (스키마 검증)

  • 요청된 리소스가 Kubernetes의 OpenAPI 스키마와 일치하는지 검증하여, 형식 오류를 방지하고 API 요청의 유효성을 보장합니다.
  • Kubernetes API 서버에 내장되어 자동으로 실행.

example

  • `Pod`의 `spec.containers` 필드가 비어 있는 경우 요청 거부.
  • `CRD`(Custom Resource Definition)의 스키마 요구사항을 충족하지 않는 경우 요청 거부.

3) Validating Admission Webhook (유효성)

  • 요청이 클러스터의 정책 및 요구사항을 준수하는지 검토합니다.

example

  • `Pod`의 보안 설정(예: `readOnlyRootFilesystem`)이 누락된 경우 요청 거부.
  • 네임스페이스 별 `Resource Quotas` 초과 여부 검토.
  • `Object Schema Validation`은 `Mutating Webhook` 이후, `Validating Webhook` 이전에 실행.
  • 스키마 유효성을 검증한 후, 정책 검토가 이루어짐.

마무리하며

`Admission Controller`는 Kubernetes에서 보안과 정책 준수의 문지기 역할을 수행합니다.

클러스터가 혼란스러운 요청들로 인해 무너지는 것을 방지하고, 요청을 깔끔하게 다듬어 클러스터에 적용합니다.

마치 출근길에 갑작스러운 복장 검사를 당하는 직원들처럼, API 요청도 Admission Controller 앞에서는 완벽한 준비를 해야 통과할 수 있습니다.

"넌 누구냐, 어디서 왔냐, 이러면 안 되는데?"라는 질문에 모두 답할 수 있어야죠.

클러스터의 문턱을 지키는 Admission Controller 덕분에 Kubernetes는 더욱 안정적이고 안전한 환경을 제공할 수 있습니다.

그러니, 오늘도 우리 클러스터의 작은 보안관에게 감사의 마음을 전하며 마무리합니다. 😊


PS: Admission Controller 없이 Kubernetes 클러스터를 운영하는 건, 문 앞에서 아무도 신분증을 확인하지 않는 건물과 같습니다. 위험은 언제나 가까이에 있으니, 잘 활용해 보세요! 🚀

728x90
반응형