차트 구성 참고 자료¶
이 문서는 차트를 구성하거나 변경할 때 참고할 차트 values를 정리합니다. 설치 절차는 이 문서가 아니라 서빙 스택 설치(Helm 차트)에서 다룹니다.
주요 차트 설정¶
다음 표는 자주 사용하는 차트 values입니다. 모든 values와 기본값을 확인하는 방법은 전체 values 목록 및 오타 검증 범위에 정리되어 있습니다.
| 키 | 설명 | 기본값 |
|---|---|---|
modelserver.model | 서빙할 모델 이름. modelserver.model은 모델 레시피의 나머지 값과 함께 변경하세요(주요 구성 변경 참고) | MiniMaxAI/MiniMax-M2.7 |
modelserver.image.{repository,tag,digest} | modelserver 이미지의 repository, tag, digest. tag와 digest 중 하나만 지정하세요. modelserver.image를 바꾸면 차트는 modelserver.strategy에서 정한 방식으로 모든 modelserver Pod를 교체합니다 | 기본 modelserver 이미지 |
modelserver.replicas.prefill / modelserver.replicas.decode | 자동 배치 모드의 P:D 토폴로지. 복제본 수를 0으로 설정한 P/D role에 대해서는 차트가 Deployment와 컴파일 캐시 PersistentVolumeClaim(PVC)을 생성하지 않습니다 | 4 / 4 |
modelserver.nodePlacement | 명시적 배치 모드의 P:D 토폴로지. Pod마다 P/D role(prefill 또는 decode)과 노드를 지정하는 목록입니다. nodePlacement를 사용하려면 modelserver.replicas.prefill과 modelserver.replicas.decode를 0으로 설정하세요. replicas가 0보다 큰 상태에서 nodePlacement를 함께 지정하거나 둘 다 지정하지 않으면 렌더링이 실패합니다 | [] |
modelserver.serveArgs / modelserver.serveEnv | 서빙 인자 및 환경 변수. 각 값은 서빙 설정을 참고하세요 | MiniMax-M2.7 서빙 인자 |
modelserver.extraServeArgs | P/D role별로 플래그를 추가하는 키. 차트는 extraServeArgs의 플래그를 serveArgs 뒤에 추가하며, 같은 플래그를 두 번 지정하면 뒤의 값이 적용됩니다. 병렬도 플래그 세 개(--data-parallel-size, --tensor-parallel-size, --pipeline-parallel-size)를 extraServeArgs에 지정하면 렌더링이 실패합니다. 병렬도는 modelserver.serveArgs에서 변경하세요 | {} |
modelserver.extraServeEnv | P/D role별로 환경 변수를 추가하는 키. serveEnv는 prefill과 decode에 모두 적용되므로 prefill이나 decode 한쪽에만 필요한 변수는 extraServeEnv에 지정하세요. 이름이 겹치면 extraServeEnv의 값이 우선합니다. prefill의 LMCACHE_* 변수는 extraServeEnv.prefill에서 변경하세요. 같은 변수를 serveEnv에 지정해도 prefill에서는 extraServeEnv.prefill의 값이 우선합니다 | {prefill: {LMCACHE_*}}(LMCache 변수 7개) |
modelserver.removeServeArgs | P/D role별로 serveArgs에서 플래그를 제거하는 키. 플래그 이름만 입력하세요. 플래그를 지정한 P/D role의 serveArgs에 없는 플래그를 지정하면 렌더링이 실패합니다. 병렬도 플래그 세 개는 제거할 수 없습니다 | {} |
modelserver.resources | modelserver Pod당 CPU와 메모리. 노드 예산은 리소스 및 노드 예산을 참고하세요 | CPU 40, 메모리 630Gi |
storage.{model,compileCache,modelOffload,dshm} | modelserver Pod의 볼륨(볼륨 참고). storage.model에는 사용할 수 있는 기본값이 없으므로 반드시 설정해야 합니다. 차트 기본값에는 사용자 클러스터의 StorageClass 이름이 없습니다 | model = 기본값 없음(필수), compileCache = kind: pvc + storageClass: "", modelOffload = enabled: false |
devices.claimTemplateName | Pod가 참조하는 ResourceClaimTemplate(이하 RCT) 이름(npu-rdma용 ResourceClaimTemplate 참고) | npu-rdma |
gateway.enabled / gateway.gatewayClassName | 차트의 Gateway 생성 여부와 그 Gateway의 GatewayClass provider(외부 노출 및 게이트웨이 Service 참고) | true / istio |
gateway.annotations | Gateway 어노테이션(외부 노출 및 게이트웨이 Service 참고) | {} |
gateway.agentgateway.parameters.service | agentgateway Service 명세(예: 유형). 차트는 agentgateway를 사용할 때만 gateway.agentgateway.parameters.service를 적용합니다 | {} |
llm-d-router-gateway.* | llm-d 라우터 서브차트에 그대로 전달되는 키. 복제본 수, 리소스, 모든 플러그인 설정을 포함합니다 | 서브차트 기본값 |
llm-d-router-gateway.router.modelServers.targetPorts | EPP가 연결하는 포트 목록. 포트 수는 decode 데이터 병렬 rank 수와 같아야 합니다. 포트 수가 다르면 렌더링이 실패합니다(targetPorts has N entries but decode runs M independent engines — the count is dp, not the number of ports an engine opens. …). pipeline parallelism을 사용하면 prefill 엔진은 8000 포트에서만 요청을 받습니다. prefill Pod 안의 pp-port-shim이 8001부터 8003까지의 포트를 수신해 8000으로 전달합니다(컨테이너 포트 참고) | [8000, 8001, 8002, 8003] |
monitoring.enabled | 차트의 모니터링 커스텀 리소스(CR) 생성 여부. 기본값인 VictoriaMetrics Operator에서 monitoring.enabled: true이면 monitoring.scraper.serviceAccount.{name,namespace}도 설정해야 하며, 설정하지 않으면 렌더링이 실패합니다. monitoring.backend: prometheus에서는 필요하지 않습니다(모니터링 › 메트릭 수집 대상 참고) | false |
imagePullSecrets | modelserver 이미지를 가져올 Image Pull Secret 이름 목록 | [] |
modelserver.podOverrides.<role> | Pod 명세 확장. 차트는 맵을 재귀적으로 병합하고 목록은 통째로 교체합니다. podOverrides가 거부하는 필드는 전체 values 목록 및 오타 검증 범위를 참고하세요 | unset |
설치 후 변경, 롤백 및 제거는 운영을 참고하세요.
주요 구성 변경¶
변경 종류마다 적용 방법은 다음과 같습니다.
| 변경 | 적용 방법 | 참고 |
|---|---|---|
| P:D 토폴로지: 같은 배치 모드 안에서 확장 | helm upgrade를 실행하세요 | 확장 및 업그레이드 › 변경 규칙 |
P:D 토폴로지: replicas와 nodePlacement 사이의 전환 | Helm 릴리스를 uninstall한 뒤 install하세요. nodePlacement 예제는 차트의 examples/node-placement.yaml에 있습니다 | 확장 및 업그레이드 › 변경 규칙 |
| 스토리지 | 각 storage.<volume>의 kind: 키로 볼륨 유형을 선택하세요 | 볼륨의 표 |
| 모델: MiniMax-M2.7이 아닌 모델 | Helm 릴리스를 uninstall하세요. 그다음 레시피의 RCT를 kubectl apply -f로 적용하고, 레시피의 values 파일을 -f로 전달해 install하세요. 레시피는 차트의 examples/models/<model>/에, 레시피별 설치 명령은 examples/models/README.md에 있습니다 | N/A |
이미지: modelserver.image | modelserver.image를 바꾸면 modelserver Pod가 다시 생성됩니다. 재컴파일을 피하려면 컴파일 캐시 PVC를 유지하세요 | 확장 및 업그레이드 › 변경 유형별 영향, 롤링 업데이트, 캐시 재사용 조건 |
| 데이터 플레인: agentgateway로 전환(Unverified) | 차트의 examples/gateway-agentgateway.yaml을 -f로 적용하세요 | GatewayClass provider |
| EPP 구성 | upstream 차트의 values를 llm-d-router-gateway: 키 아래에 그대로 지정하세요. llm-d-router-gateway.router.epp.pluginsCustomConfig를 바꾸면 helm upgrade 뒤 EPP를 직접 다시 시작하세요(다음 명령) | 서빙 설정, 확장 및 업그레이드 › 변경 유형별 영향 |
Warning
-f에는 values 파일만 전달합니다. examples/manifests/의 Kubernetes 매니페스트(RCT 또는 외부 노출)를 -f로 전달하면 렌더링이 실패합니다. 스키마가 apiVersion, kind, metadata, spec을 열거하며 additional properties ... not allowed로 매니페스트를 거부합니다. 매니페스트는 kubectl apply -f로 적용하세요.
외부 노출 및 게이트웨이 Service¶
차트는 스택을 클러스터 외부에 노출하지 않습니다. 게이트웨이 Service를 클러스터에서 운영하는 인그레스나 로드 밸런서에 연결하세요.
차트는 서빙 엔드포인트의 인증이나 권한 부여를 제공하지 않습니다. 인증과 권한 부여는 게이트웨이 계층이나 게이트웨이 앞에서 처리하세요.
클러스터가 관리하는 Gateway에 연결: 차트의 Gateway 대신 기존 Gateway를 사용하려면 다음 values를 설정하세요. 기존 Gateway에 연결하는 방식은 Unverified입니다.
차트는 게이트웨이 Service를 생성하지 않습니다. Istio가 Gateway에서 <gateway-name>-istio라는 이름으로 게이트웨이 Service를 생성합니다. 차트 기본 Gateway 이름을 쓰면 게이트웨이 Service 이름은 최초 추론에서 사용하는 <release-name>-inference-gateway-istio가 됩니다. LoadBalancer 주소를 할당받을 수 없는 클러스터에서는 gateway.annotations로 게이트웨이 Service 유형을 ClusterIP로 바꾸세요.
전체 values 목록 및 오타 검증 범위¶
주요 차트 설정 표는 자주 사용하는 values만 다룹니다. 모든 values와 기본값은 다음 명령으로 확인합니다.
podOverrides로 다음 필드를 지정하면 렌더링이 실패합니다. '대신 사용할 키' 열의 키를 사용하세요. 렌더링 오류 메시지도 대신 사용할 키를 안내합니다.
podOverrides의 필드 | 대신 사용할 키 |
|---|---|
containers | modelserver.serveEnv, modelserver.serveArgs, modelserver.resources |
initContainers | routing.proxy.image |
volumes | storage.* |
volumeMounts | storage.<name>.mountPath |
imagePullSecrets | 최상위 imagePullSecrets |
metadata | modelserver.podAnnotations, modelserver.podLabels |
볼륨, 마운트, 컨테이너를 추가하려면 modelserver.extraVolumes, modelserver.extraVolumeMounts, modelserver.extraContainers, modelserver.extraInitContainers를 사용하세요.
Warning
구조를 정의하는 키에 오타가 있으면 렌더링이 실패합니다. 스키마는 최상위부터 차트 자체의 블록에 정의되지 않은 키를 거부합니다. 예를 들어 monitoring.enabeld=true는 at '/monitoring': additional properties 'enabeld' not allowed 오류로 거부됩니다. 반면 사용자가 키 이름을 정하는 맵의 내부는 스키마가 검사하지 못하므로, 다음 맵 안의 오타는 오류 없이 무시됩니다.
modelserver.serveEnv,modelserver.extraServeEnv.<role>modelserver.podOverrides.<role>(Pod 명세 필드)gateway.annotations,gateway.agentgateway.parameters.service.{metadata,spec}storage.<volume>.selector/annotations,routing.proxy.resources.{requests,limits}내부의 키,globalllm-d-router-gateway.*아래 전체(서브차트에 스키마가 없음)modelserver.extraVolumes,modelserver.extraVolumeMounts,modelserver.extraContainers,modelserver.extraInitContainers의 항목(Kubernetes 객체를 그대로 전달)
--set이 적용되지 않으면 helm get values로 적용된 values를 확인합니다. 전체 검증 범위의 기준은 차트의 values.schema.json입니다.