Helm 차트 설정 레퍼런스
NPU Operator 차트의 주요 값과 기본값을 설명합니다. 배포 구성별 YAML은 Helm 구성 예제, 설치 절차는 Kubernetes 설치, 사용 시나리오는 튜토리얼에서 확인할 수 있습니다.
버전별 값 확인
기본값은 설치할 차트에서 확인합니다. 이미지 태그는 릴리스마다 달라지므로 아래 표에서는 <chart default>로 표시합니다. operator.image.tag와 validator.image.tag를 비워 두면 차트의 appVersion을 사용합니다.
| 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에 병합합니다. 아래 명령의 버전은 현재 차트 버전으로 지정해야 합니다. 차트 버전도 바꾸려면 먼저 업그레이드 절차를 따릅니다.
| 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의 환경 변수. | [] |
| 키 | 설명 | 기본값 |
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에서 수신 대기합니다.