하드닝 가이드 - 동적 리소스 할당

하드닝 가이드 - 동적 리소스 할당 (Hardening Guide - Dynamic Resource Allocation)

동적 리소스 할당(Dynamic Resource Allocation, DRA)은 강력한 스케줄링과 장치 관리 기능을 추가해요. DRA 컴포넌트가 ResourceClaim 상태를 업데이트하므로, 클러스터 관리자는 그 업데이트에 대한 인가를 명시적이고 최소 권한의 RBAC로 구성해야 해요.

쿠버네티스 v1.36부터 DRA 상태 업데이트는 합성(synthetic) 하위 리소스와, 경우에 따라 특수한 노드 인지형 동사(node-aware verbs)를 사용해요.

출처: 문서

본문

DRA 상태 업데이트 권한 하드닝하기

DRA 상태 업데이트를 위해 resourceclaims/status 하위 리소스에 update 권한을 부여하는 것에 더해, 클러스터 관리자는 컴포넌트가 수정해야 하는 정확한 필드에 따라 특정 "합성" 하위 리소스에 대한 권한을 부여해야 해요. 이는 스케줄러, 커스텀 컨트롤러, DRA 드라이버 사이에 최소 권한의 원칙을 강제해요.

DRA 인가 검사는 두 개의 합성 하위 리소스로 나뉘어요:

  • resourceclaims/binding
  • resourceclaims/driver

노드 인지형 DRA 동사

resourceclaims/driver 업데이트를 인가할 때는 적절한 특수 동사 접두사를 사용해요:

  • associated-node:<verb> (예: associated-node:update)
  • arbitrary-node:<verb> (예: arbitrary-node:patch)

예시 RBAC 패턴

스케줄러와 할당 컨트롤러 권한

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: dra-binding-updater
rules:
  - apiGroups: ["resource.k8s.io"]
    resources: ["resourceclaims/status"]
    verbs: ["get", "patch", "update"]
  - apiGroups: ["resource.k8s.io"]
    resources: ["resourceclaims/binding"]
    verbs: ["patch", "update"]

노드 로컬 DRA 드라이버 권한

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: dra-node-driver-status-updater
rules:
  - apiGroups: ["resource.k8s.io"]
    resources: ["resourceclaims/status"]
    verbs: ["get", "patch", "update"]
  - apiGroups: ["resource.k8s.io"]
    resources: ["resourceclaims/driver"]
    verbs: ["associated-node:patch", "associated-node:update"]
    resourceNames: ["dra.example.com"]

다중 노드 상태 컨트롤러 권한

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: dra-multinode-status-updater
rules:
  - apiGroups: ["resource.k8s.io"]
    resources: ["resourceclaims/status"]
    verbs: ["get", "patch", "update"]
  - apiGroups: ["resource.k8s.io"]
    resources: ["resourceclaims/driver"]
    verbs: ["arbitrary-node:patch", "arbitrary-node:update"]
    resourceNames: ["dra.example.com"]

관련 클러스터 관리자 태스크

이 패턴을 실행 중인 클러스터에 적용하려면 클러스터에서 동적 리소스 할당 하드닝하기를 참고해요.

더 알아보기 (Learn more)