Cloud/k8s-CKAD

[CKAD] Admission Controller

jinkwon.kim 2024. 10. 16. 00:13
728x90
반응형

개요

Pod를 생성을 요청했을때의 전체 과정을 알아 본후

Admission Controller에 대하여 알아보겠습니다.

Pod 생성 과정

kubectl: 명령어 실행

Authentication : 사용자 인증, config 파일의 certificate를 사용하여 인증 합니다. 

Authorization : 사용자의 권한 확인, Role를 통하여 검증 합니다.

AdmissionController : Authentication과 Authorization에서 하지 못한 제어를 추가 적으로 진행 합니다.

Admission Controller 개념

cluster 들어오는 요청을 처리하고, 해당 요청이 실제로 cluster에 적용되기 전에 추가적인 검증이나 수정 작업을 수행하는 중요한 구성 요소입니다. admission controller는 인증(Authentication)과 권한 부여(Authorization)를 통과한 후, 실제 resource가 생성되거나 수정되기 전에 개입하여 정책 준수 여부를 확인하거나 요청을 변경할 수 있습니다.

Admission Controllers의 역할

정책 적용

  • 클러스터에 배포되는 리소스가 조직의 정책이나 보안 규정을 준수하는지 확인합니다.
  • 예를 들어, 특정 네임스페이스에서만 특정 이미지를 사용하도록 제한하거나, Pod가 특정 리소스 요청을 초과하지 않도록 제한할 수 있습니다.

리소스 수정

  • 요청된 리소스 객체를 수정하여 기본값을 설정하거나, 필요한 필드를 자동으로 추가할 수 있습니다.
  • 예를 들어, 모든 Pod에 특정 라벨을 자동으로 추가하거나, 이미지 풀 정책을 설정할 수 있습니다.

보안 강화

  • 악의적인 요청을 차단하거나, 보안 설정이 제대로 되어 있는지 확인하여 클러스터의 보안을 강화합니다.
  • 예를 들어, PodSecurityPolicy를 사용하여 Pod의 보안 컨텍스트를 강제할 수 있습니다.

메트릭 및 로깅

  • 요청에 대한 메트릭을 수집하거나, 로깅을 통해 클러스터 활동을 모니터링할 수 있습니다.
  • 이를 통해 클러스터의 상태를 파악하고, 문제 발생 시 빠르게 대응할 수 있습니다.

Admission Controllers의 동작 방식

  • 클라이언트 요청: 사용자가 kubectl이나 다른 도구를 통해 Kubernetes API 서버에 리소스 생성/수정 요청을 보냅니다.
  • 인증(Authentication): API 서버는 요청자의 신원을 확인합니다.
  • 권한 부여(Authorization): 요청자가 해당 작업을 수행할 권한이 있는지 검증합니다.
  • admission controller 실행: 요청이 인증 및 권한 부여를 통과하면, adminssion controller가 요청을 검토하고 필요한 작업을 수행합니다.
  • resource 저장: admisson controller가 요청을 승인하면, resource etcd에 저장되고 cluster에 적용됩니다.

Admission Controllers의 종류

Validating Admission Controllers

  • 요청이 cluster정책을 준수하는지 검증하고, 조건에 맞지 않으면 요청을 거부합니다.

Mutating Admission Controllers:

  • 요청된 resource객체를 수정하여 클러스터의 정책에 맞게 변경합니다.

주요 Admission Controllers 예시

NamespaceLifecycle

  • 네임스페이스의 생성 및 삭제 과정에서 리소스의 생명주기를 관리합니다.

LimitRanger

  • 리소스에 대한 리밋(제한)을 적용하여, 네임스페이스 내의 리소스가 지정된 제한을 초과하지 않도록 합니다.

ServiceAccount

  • Pod에 서비스 어카운트를 자동으로 할당하여, Pod가 클러스터 내에서 적절한 권한을 가지도록 합니다.

DefaultStorageClass

  • PVC(PersistentVolumeClaim)에 기본 스토리지 클래스를 자동으로 지정합니다.

PodSecurityPolicy

  • Pod가 실행될 때 보안 컨텍스트를 검증하고, 보안 정책을 강제합니다.

 

 
4초 동안 생각

Kubernetes(K8s)에서 **Admission Controllers(어드미션 컨트롤러)**는 클러스터에 들어오는 요청을 처리하고, 해당 요청이 실제로 클러스터에 적용되기 전에 추가적인 검증이나 수정 작업을 수행하는 중요한 구성 요소입니다. 어드미션 컨트롤러는 인증(Authentication)과 권한 부여(Authorization)를 통과한 후, 실제 리소스가 생성되거나 수정되기 전에 개입하여 정책 준수 여부를 확인하거나 요청을 변경할 수 있습니다.

Admission Controllers의 역할

  1. 정책 적용:
    • 클러스터에 배포되는 리소스가 조직의 정책이나 보안 규정을 준수하는지 확인합니다.
    • 예를 들어, 특정 네임스페이스에서만 특정 이미지를 사용하도록 제한하거나, Pod가 특정 리소스 요청을 초과하지 않도록 제한할 수 있습니다.
  2. 리소스 수정:
    • 요청된 리소스 객체를 수정하여 기본값을 설정하거나, 필요한 필드를 자동으로 추가할 수 있습니다.
    • 예를 들어, 모든 Pod에 특정 라벨을 자동으로 추가하거나, 이미지 풀 정책을 설정할 수 있습니다.
  3. 보안 강화:
    • 악의적인 요청을 차단하거나, 보안 설정이 제대로 되어 있는지 확인하여 클러스터의 보안을 강화합니다.
    • 예를 들어, PodSecurityPolicy를 사용하여 Pod의 보안 컨텍스트를 강제할 수 있습니다.
  4. 메트릭 및 로깅:
    • 요청에 대한 메트릭을 수집하거나, 로깅을 통해 클러스터 활동을 모니터링할 수 있습니다.
    • 이를 통해 클러스터의 상태를 파악하고, 문제 발생 시 빠르게 대응할 수 있습니다.

Admission Controllers의 동작 방식

  1. 요청 처리 흐름:
    • 클라이언트 요청: 사용자가 kubectl이나 다른 도구를 통해 Kubernetes API 서버에 리소스 생성/수정 요청을 보냅니다.
    • 인증(Authentication): API 서버는 요청자의 신원을 확인합니다.
    • 권한 부여(Authorization): 요청자가 해당 작업을 수행할 권한이 있는지 검증합니다.
    • 어드미션 컨트롤러 실행: 요청이 인증 및 권한 부여를 통과하면, 어드미션 컨트롤러가 요청을 검토하고 필요한 작업을 수행합니다.
    • 리소스 저장: 어드미션 컨트롤러가 요청을 승인하면, 리소스가 etcd에 저장되고 클러스터에 적용됩니다.
  2. 어드미션 컨트롤러의 종류:
    • Validating Admission Controllers: 요청이 클러스터 정책을 준수하는지 검증하고, 조건에 맞지 않으면 요청을 거부합니다.
    • Mutating Admission Controllers: 요청된 리소스 객체를 수정하여 클러스터의 정책에 맞게 변경합니다.

주요 Admission Controllers 예시

  1. NamespaceLifecycle:
    • 네임스페이스의 생성 및 삭제 과정에서 리소스의 생명주기를 관리합니다.
  2. LimitRanger:
    • 리소스에 대한 리밋(제한)을 적용하여, 네임스페이스 내의 리소스가 지정된 제한을 초과하지 않도록 합니다.
  3. ServiceAccount:
    • Pod에 서비스 어카운트를 자동으로 할당하여, Pod가 클러스터 내에서 적절한 권한을 가지도록 합니다.
  4. DefaultStorageClass:
    • PVC(PersistentVolumeClaim)에 기본 스토리지 클래스를 자동으로 지정합니다.
  5. PodSecurityPolicy:
    • Pod가 실행될 때 보안 컨텍스트를 검증하고, 보안 정책을 강제합니다.

Admission Controllers 설정 방법

Kubernetes API 서버는 여러 어드미션 컨트롤러를 지원하며, 필요에 따라 활성화하거나 비활성화할 수 있습니다. API server 시작 시 --enable-admission-plugins 플래그를 사용하여 필요한 admission controller를 지정할 수 있습니다.

 

아래는 2가지 방식의 설정 방식 입니다. 

 

정리 

  • Admission Controllers는 Kubernetes cluster 들어오는 요청을 검증하고 수정하여 정책 준수와 보안을 강화합니다.
  • ValidatingMutating 두 가지 유형이 있으며, 각각 요청의 검증과 수정 역할을 수행합니다.
  • 다양한 admission controller를 통해 cluster의 다양한 요구사항과 정책을 충족시킬 수 있습니다.
  • API server 설정을 통해 필요한 admission controller를 활성화하거나 비활성화할 수 있습니다.
728x90
반응형

'Cloud > k8s-CKAD' 카테고리의 다른 글

[CKAD] Statefulset 과 Headless Service  (0) 2024.10.09
[CKAD] Network Policy  (0) 2024.10.03
[CKAD] service  (0) 2024.09.16
[CKAD] Jobs과 Cron Job  (2) 2024.09.14
[CKAD] Pod의 배포 및 업데이트  (0) 2024.09.02