콘텐츠로 이동

Helm 차트 설정 레퍼런스

NPU Operator 차트의 주요 값과 기본값을 설명합니다. 배포 구성별 YAML은 Helm 구성 예제, 설치 절차는 Kubernetes 설치, 사용 시나리오는 튜토리얼에서 확인할 수 있습니다.

버전별 값 확인

기본값은 설치할 차트에서 확인합니다. 이미지 태그는 릴리스마다 달라지므로 아래 표에서는 <chart default>로 표시합니다. operator.image.tag와 validator.image.tag를 비워 두면 차트의 appVersion을 사용합니다.

1
2
3
export CHART_VERSION=0.6.0
helm show values oci://docker.io/rebellions/rbln-npu-operator-chart \
  --version "$CHART_VERSION"

image.*는 registry, repository, tag, pullPolicy를 뜻합니다. RSMD의 driver.smd.image에는 registry와 repository만 있으며, 태그는 드라이버 버전을 따릅니다.

값 적용

설정 조각은 설치 시 사용한 npu-values.yaml에 병합합니다. 아래 명령의 버전은 현재 차트 버전으로 지정해야 합니다. 차트 버전도 바꾸려면 먼저 업그레이드 절차를 따릅니다.

1
2
3
4
5
helm list -n rbln-system
export CHART_VERSION=<INSTALLED_CHART_VERSION>
helm upgrade rbln-npu-operator oci://docker.io/rebellions/rbln-npu-operator-chart \
  --version "$CHART_VERSION" -n rbln-system \
  --reset-values -f npu-values.yaml --wait --timeout 10m

--reset-values는 파일에 없는 사용자 설정을 유지하지 않습니다. 기존 파일이 없다면 helm get values rbln-npu-operator -n rbln-system -o yaml로 사용자 설정을 확인해 파일을 준비합니다. 목록 값은 항목별로 합쳐지지 않고 새 목록으로 대체됩니다.

Helm values와 CR 필드는 구분해야 합니다. 예를 들어 devicePlugin.image.tag는 RBLNClusterPolicy.spec.devicePlugin.version으로, driver.image.tag는 RBLNDriver.spec.version으로 변환됩니다. OLM 설치에서는 Helm values 대신 해당 CR을 수정합니다.

차트 전반

키 설명 기본값
nameOverride 차트 리소스의 이름에 사용할 이름. RBLNClusterPolicy 인스턴스와 기본 RBLNDriver 인스턴스의 이름은 바뀌지 않으며, 여러 Operator 설치를 분리하는 옵션이 아닙니다. rbln-npu-operator
workloadType 기본 워크로드 모드: container 또는 vm-passthrough. 노드별 재정의는 워크로드 레이블에서 확인할 수 있습니다. container
nfd.enabled Node Feature Discovery 하위 차트 배포 여부. 기존 NFD가 있으면 false로 둡니다. false
podDefaults.labels 오퍼레이터가 관리하는 모든 DaemonSet Pod에 적용되는 레이블. {}
podDefaults.annotations 오퍼레이터가 관리하는 모든 DaemonSet Pod에 적용되는 어노테이션. {}
podDefaults.tolerations 오퍼레이터가 관리하는 모든 DaemonSet Pod에 적용되는 톨러레이션. []
podDefaults.priorityClassName 오퍼레이터가 관리하는 모든 DaemonSet Pod에 적용되는 PriorityClass. ""

CRD 업그레이드 훅

키 설명 기본값
crds.upgrade.enabled 설치·업그레이드 전에 CRD를 갱신하는 훅 실행 여부. true
crds.upgrade.imagePullSecrets 오퍼레이터 이미지를 실행하는 훅 Job의 이미지 풀 시크릿. []
crds.upgrade.tolerations 훅 Job Pod의 톨러레이션. []
crds.upgrade.resources 훅 Job Pod의 CPU/메모리 requests/limits. {}
crds.upgrade.logging.level CRD 훅 Job의 로그 레벨: error, warning, info, debug. info
crds.upgrade.logging.format 훅 Job의 로그 형식: json 또는 text. json

Operator

키 설명 기본값
operator.image.* controller-manager Pod의 이미지. 특정 오퍼레이터 버전으로 고정하려면 tag를 덮어씁니다. docker.io/rebellions/rbln-npu-operator:<chart default>
pullPolicy: IfNotPresent
operator.replicas Operator Pod 수. 리더 선출로 활성 컨트롤러를 정합니다. 1
operator.resources.requests 오퍼레이터 Pod에 보장되는 최소 리소스. cpu: 50m, memory: 128Mi
operator.resources.limits 오퍼레이터 Pod의 최대 리소스. cpu: 500m, memory: 256Mi
operator.metrics.enabled 인증으로 보호되는 오퍼레이터 자체 메트릭 엔드포인트와 Service 활성화 여부. true
operator.metrics.port 메트릭 HTTPS 포트. 8443
operator.metrics.serviceMonitor.* Prometheus Operator용 ServiceMonitor 생성 여부와 수집 옵션(interval, scrapeTimeout 등). 자세한 내용은 오퍼레이터 관찰가능성에서 확인할 수 있습니다. enabled: false
operator.logging.level 로그 레벨: error, info, debug, panic 또는 상세도 정수. 잘못된 값은 시작 오류를 일으킵니다. info
operator.logging.encoder 로그 인코딩: json 또는 console. json
operator.logging.timeEncoding 타임스탬프 형식: epoch, millis, nanos, iso8601, rfc3339, rfc3339nano. rfc3339nano
operator.logging.develMode 개발용 로깅 동작 활성화. 운영에서는 기본값을 유지합니다. false
operator.driverImageCheck 배포 전 드라이버 이미지의 존재 여부 확인. Operator가 노드용 레지스트리에 접근할 수 없거나 노드의 이미지 풀 자격 증명을 사용할 수 없는 환경에서는 false로 설정합니다. true
operator.securityContext.runAsNonRoot Pod 수준 securityContext. 클러스터 보안 정책에 맞춰 조정합니다. true
operator.affinity 오퍼레이터 Pod의 affinity(예: control-plane 노드 고정). {}
operator.tolerations 오퍼레이터 Pod의 톨러레이션(예: taint가 설정된 노드에 스케줄링 허용). []

Driver Manager

키 설명 기본값
driver.enabled 오퍼레이터가 NPU 드라이버를 설치·관리할지 여부. 호스트에 드라이버가 미리 설치되어 있다면 false로 둡니다. false
driver.image.* 드라이버 컨테이너 이미지. 사설 미러나 특정 드라이버 릴리스로 고정하려면 값을 재정의합니다. repository에는 NPU 제품군을 넣어서는 안 됩니다. 오퍼레이터가 노드 풀마다 직접 삽입합니다. repo.rebellions.ai/rebellions/rbln-driver:<chart default>
pullPolicy: IfNotPresent
driver.imagePullSecrets 드라이버 이미지를 받을 때 사용할 이미지 풀 시크릿. drivercred 대신 다른 시크릿을 사용한다면 그 이름을 지정해야 합니다. [drivercred]
driver.nodeSelector 드라이버 Pod를 특정 노드로 제한합니다. 오퍼레이터가 관리하는 rebellions.ai/npu.driver.owner와 rebellions.ai/npu.deploy.driver 키는 사용할 수 없습니다. {}
driver.tolerations 드라이버 Pod의 톨러레이션. []
driver.annotations 드라이버 Pod의 어노테이션. {}
driver.priorityClassName Pod PriorityClass. 비워두면 CRD가 system-node-critical로 기본 설정합니다. ""
driver.resources 드라이버 Pod의 CPU/메모리 requests/limits. 선택 사항이며, 비워두면 드라이버 Pod는 requests/limits 없이 실행됩니다. {}
driver.env 드라이버 컨테이너에 전달되는 환경 변수(예: 로그 레벨). []
driver.manager.image.* Driver Manager init container 이미지. 차트 기본값을 사용합니다. docker.io/rebellions/rbln-k8s-driver-manager:<chart default>
pullPolicy: IfNotPresent
driver.smd.image.registry
driver.smd.image.repository
드라이버와 함께 배포되는 RSMD 노드 데몬의 레지스트리와 리포지토리. 태그 키는 없으며, 태그는 항상 드라이버 버전을 따릅니다. repo.rebellions.ai
rebellions/rbln-smd
driver.deployDefault 기본 RBLNDriver 생성 여부. false이면 driver.instances에 하나 이상의 인스턴스가 필요합니다. true
driver.instances 노드 그룹별로 다른 드라이버 버전을 운영하기 위한 추가 RBLNDriver 리소스. 구성 방법은 여러 드라이버 버전 운영에서 다룹니다. {}

드라이버 업그레이드 정책

동작과 상태는 수동 업그레이드 설정과 자동 업그레이드 정책에서 확인할 수 있습니다.

키 설명 기본값
driver.upgradePolicy.autoUpgrade 자동 드라이버 업그레이드 활성화 false
driver.upgradePolicy.maxParallelUpgrades 동시에 업그레이드할 최대 노드 수 1
driver.upgradePolicy.podRestartTimeoutSeconds 드라이버 Pod 교체 제한 시간(초) 1800
driver.upgradePolicy.waitForCompletion.timeoutSeconds 선택한 Pod의 완료 대기 시간(초). 0은 무한 대기 0
driver.upgradePolicy.waitForCompletion.podSelector 완료를 기다릴 Pod 레이블 선택자. 비우면 대기 생략 ""
driver.upgradePolicy.npuPodDeletion.force 컨트롤러가 없는 NPU Pod의 퇴거 허용 false
driver.upgradePolicy.npuPodDeletion.timeoutSeconds 자동 업그레이드의 NPU Pod 퇴거 제한 시간(초) 300
driver.upgradePolicy.npuPodDeletion.deleteEmptyDirData emptyDir를 사용하는 NPU Pod의 퇴거 허용. 볼륨 데이터가 삭제됩니다. false

RDS

Rebel100™ 노드에서 RDS를 활성화하고 바인딩할 NVMe 장치를 선택합니다. 자세한 내용은 RDS 지원에서 확인할 수 있습니다.

키 설명 기본값
rds.enabled rebellions.ai/rds.present=true 노드에서 RDS 바인딩 활성화. RDS가 선택한 NVMe 장치를 직접 제어합니다. false
rds.deviceSelection nodeName과 targetBDFs로 구성한 노드별 NVMe 허용 목록. 미지정 노드를 제외하는 목록이 아닙니다. 미지정

Device Plugin

키 설명 기본값
devicePlugin.enabled 표준 컨테이너 Device Plugin 배포 여부. DRA 전용(draKubeletPlugin)이나 VM 전용 워크로드만 사용한다면 비활성화합니다. true
devicePlugin.image.* Device Plugin 이미지. docker.io/rebellions/k8s-device-plugin:<chart default>
pullPolicy: IfNotPresent
devicePlugin.useGenericResourceName 제품별 리소스 외에 rebellions.ai/npu 리소스도 제공할지 여부. 워크로드의 리소스 이름과 맞춰 설정합니다. true
devicePlugin.otlpEndpoint Device Plugin이 NPU 할당 트레이스를 내보낼 OTLP gRPC 엔드포인트(host:port 또는 스킴을 포함한 URL). 설정하면 트레이스가 활성화됩니다. ""

DRA Driver

키 설명 기본값
draKubeletPlugin.enabled Kubernetes 1.34 이상에서 Dynamic Resource Allocation을 사용할 때 활성화합니다. devicePlugin.enabled와 동시에 사용할 수 없습니다. false
draKubeletPlugin.image.* DRA kubelet 플러그인 이미지. docker.io/rebellions/k8s-dra-driver-npu:<chart default>
pullPolicy: IfNotPresent
draKubeletPlugin.driverName 드라이버 이름. DeviceClass.spec.config.driver에서 참조하는 값과 일치해야 합니다. npu.rebellions.ai
draKubeletPlugin.kubeletRegistrarDirectoryPath 플러그인이 kubelet에 등록되는 호스트 경로. /var/lib/kubelet/plugins_registry
draKubeletPlugin.kubeletPluginsDirectoryPath 플러그인 소켓이 위치하는 호스트 경로. /var/lib/kubelet/plugins
draKubeletPlugin.healthcheckPort 플러그인 헬스체크 엔드포인트의 TCP 포트. 51515

전체 DRA 사용법은 NPU DRA Driver에서 확인할 수 있습니다.

Sandbox Device Plugin

키 설명 기본값
sandboxDevicePlugin.enabled VFIO 기반 Sandbox Device Plugin 배포 여부. KubeVirt 등 VM 환경에서 활성화합니다. false
sandboxDevicePlugin.image.* Sandbox Device Plugin 이미지. docker.io/rebellions/sandbox-device-plugin:<chart default>
pullPolicy: IfNotPresent

플러그인이 NPU 제품별 리소스 이름을 자동으로 도출하므로 별도로 구성할 리소스 목록이 없습니다. 제품별 리소스 이름은 리소스 이름 규칙에 정리되어 있습니다.

VFIO Manager

키 설명 기본값
vfioManager.enabled VM 패스스루를 위한 VFIO 바인딩 관리. Sandbox Device Plugin 또는 DRA Driver도 함께 활성화해야 합니다. false
vfioManager.image.* VFIO Manager 이미지. docker.io/rebellions/rbln-vfio-manager:<chart default>
pullPolicy: IfNotPresent
vfioManager.driverManager.image.* VFIO Manager initContainer가 사용하는 driver-manager 이미지. docker.io/rebellions/rbln-k8s-driver-manager:<chart default>
pullPolicy: IfNotPresent
vfioManager.driverManager.env 해당 initContainer의 환경 변수. []

Container Toolkit

키 설명 기본값
containerToolkit.enabled Container Toolkit DaemonSet 배포 여부. CDI 스펙과 런타임 설정을 외부에서 관리한다면 비활성화합니다. true
containerToolkit.image.* Container Toolkit 이미지. docker.io/rebellions/rbln-container-toolkit:<chart default>
pullPolicy: IfNotPresent
containerToolkit.imagePullSecrets 이미지 풀 시크릿. 사설 레지스트리에서 이미지를 받을 때 필요합니다. []
containerToolkit.resources 툴킷 Pod의 CPU/메모리 requests/limits. {}
containerToolkit.env 툴킷에 전달되는 환경 변수(RBLN_CTK_DAEMON_SOCKET, RBLN_CTK_DAEMON_CONFIG_PATH 등). []
containerToolkit.refreshInterval 각 노드에서 rbln-ctk-daemon이 CDI 스펙과 컨테이너 런타임 설정을 다시 적용하는 주기. 주기적 갱신을 비활성화하려면 0s로 설정합니다. Pod에는 RBLN_CTK_DAEMON_REFRESH_INTERVAL 환경 변수로 전달됩니다. 5s

NPU Feature Discovery

키 설명 기본값
npuFeatureDiscovery.enabled 오퍼레이터가 NPU Feature Discovery를 배포할지 여부. NPU 노드 레이블을 다른 방식으로 관리한다면 비활성화합니다. true
npuFeatureDiscovery.image.* NPU Feature Discovery 이미지. docker.io/rebellions/rbln-npu-feature-discovery:<chart default>
pullPolicy: IfNotPresent

Metrics Exporter

키 설명 기본값
metricsExporter.enabled Prometheus 메트릭 익스포터 배포 여부. 다른 텔레메트리 파이프라인이 NPU 메트릭을 이미 수집한다면 비활성화합니다. true
metricsExporter.image.* 메트릭 익스포터 이미지. docker.io/rebellions/rbln-metrics-exporter:<chart default>
pullPolicy: IfNotPresent

Operator Validator

키 설명 기본값
validator.image.* Validator DaemonSet 이미지. docker.io/rebellions/rbln-npu-operator-validator:<chart default>
pullPolicy: IfNotPresent
validator.imagePullSecrets 이미지 풀 시크릿. 사설 레지스트리에서 이미지를 받을 때 필요합니다. []
validator.resources Validator Pod의 CPU/메모리 requests/limits. {}
validator.env 최상위 Validator 프로세스의 환경 변수. []
validator.toolkit.env Container Toolkit 준비 상태 하위 검사용 환경 변수. []
validator.driver.env 드라이버 준비 상태 하위 검사용 환경 변수. []

RSMD 노드 데몬

각 RBLNDriver는 RSMD(rbln-smd) DaemonSet을 하나씩 배포합니다. 이미지는 위 Driver Manager 표의 driver.smd.image.*로 설정합니다. RSMD는 호스트 포트 50051에서 수신 대기합니다.