動的リソース割り当て(DRA)は、強力なスケジューリング機能とデバイス管理機能を提供します。
DRAのコンポーネントはResourceClaimのステータスを更新するため、クラスター管理者は、明示的かつ最小権限のRBACを用いて、それらの更新に対する認可を設定する必要があります。
Kubernetes v1.36以降、DRAのステータス更新では合成サブリソース(synthetic subresource)が使用され、場合によってはノードを考慮した特別なverbも使用されます。
DRAのステータス更新では、resourceclaims/statusサブリソースに対するupdate権限の付与に加えて、クラスター管理者は、コンポーネントが変更する必要のある具体的なフィールドに応じて、特定の「合成」サブリソースに対する権限を付与する必要があります。
これにより、スケジューラー、カスタムコントローラー、DRAドライバーの間で最小権限の原則が徹底されます。
DRAの認可チェックは、2つの合成サブリソースに分かれています:
resourceclaims/bindingstatus.allocationとstatus.reservedForを変更するために必要です。updateおよびpatch verbを使用します。resourceclaims/driverstatus.devicesを変更するために必要です。resourceclaims/driverへの更新を認可する際は、適切で特別なverbプレフィックスを使用してください:
associated-node:<verb>(例: associated-node:update)arbitrary-node:<verb>(例: arbitrary-node:patch)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"]
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"]
稼働中のクラスターにこれらのパターンを適用するには、クラスターにおける動的リソース割り当ての堅牢化を参照してください。