콘텐츠로 이동

RBLN NPU Operator 업그레이드

설치 방식에 맞춰 Helm 또는 OLM으로 업그레이드합니다. 드라이버 교체 방법은 NPU 드라이버 업그레이드에서 다룹니다.

업그레이드 전 확인

지원 버전과 변경사항을 확인하고 기존에 배포된 설정을 백업합니다.

kubectl get rblnclusterpolicies,rblndrivers -o yaml > npu-resources-before-upgrade.yaml

Helm 설치에서는 기존 사용자 설정과 대상 차트의 기본값을 비교합니다.

1
2
3
4
export CHART_VERSION=0.6.0
helm get values rbln-npu-operator -n rbln-system -o yaml > values-before-upgrade.yaml
helm show values oci://docker.io/rebellions/rbln-npu-operator-chart \
  --version "$CHART_VERSION" > chart-defaults.yaml

Helm 업그레이드

기존 릴리스 이름과 네임스페이스를 사용해야 합니다. NPU Operator의 Helm 설정을 참고하여 npu-values.yaml에 오버라이드할 값을 지정합니다.

1
2
3
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

OpenShift / OLM 업그레이드

OLM은 Subscription이 구독하는 채널에서 새 버전을 감지하면 업그레이드 경로에 따라 InstallPlan을 생성합니다.

현재 버전과 업그레이드 대상 버전, 승인 방식을 확인합니다.

oc get subscriptions,installplans,csv -n rbln-system
oc describe subscription rbln-npu-operator -n rbln-system

Subscription의 status.installedCSV는 현재 버전, status.currentCSV는 OLM이 선택한 버전입니다. status.installPlanRef.name에서 이 Subscription의 InstallPlan 이름을 확인할 수 있습니다.

InstallPlan이 생성되면 spec.installPlanApproval에 따라 업그레이드를 진행합니다.

installPlanApproval 업그레이드 방식
Automatic InstallPlan을 자동 승인하고 업그레이드
Manual 사용자가 InstallPlan을 승인하면 업그레이드

Manual이면 Subscription에서 확인한 InstallPlan을 조회하고 대상 버전을 확인한 뒤 승인합니다.

1
2
3
4
export INSTALL_PLAN='<INSTALL_PLAN_NAME>'
oc describe installplan "$INSTALL_PLAN" -n rbln-system
oc patch installplan "$INSTALL_PLAN" -n rbln-system \
  --type=merge -p '{"spec":{"approved":true}}'

업그레이드 확인

Helm 또는 OLM의 완료 상태와 별도로 RBLNDriver 인스턴스와 RBLNClusterPolicy 인스턴스의 상태를 확인합니다.

$ kubectl wait --for=jsonpath='{.status.state}'=ready \
  rblndriver --all --timeout=600s
rblndriver.rebellions.ai/rbln-driver-rebel100 condition met

$ kubectl wait --for=jsonpath='{.status.state}'=ready \
  rblnclusterpolicy/rbln-cluster-policy --timeout=600s
rblnclusterpolicy.rebellions.ai/rbln-cluster-policy condition met

$ kubectl get rblnclusterpolicy rbln-cluster-policy \
  -o 'custom-columns=NAME:.metadata.name,STATE:.status.state'
NAME                  STATE
rbln-cluster-policy   ready
$ kubectl get rblndriver \
  -o 'custom-columns=NAME:.metadata.name,STATE:.status.state,READY:.status.readyNodes,DESIRED:.status.desiredNodes'
NAME                   STATE   READY   DESIRED
rbln-driver-rebel100   ready   1       1
$ kubectl wait --for=jsonpath='{.status.state}'=ready \
  rblndriver --all --timeout=600s
rblndriver.rebellions.ai/rbln-driver-atom condition met

$ kubectl wait --for=jsonpath='{.status.state}'=ready \
  rblnclusterpolicy/rbln-cluster-policy --timeout=600s
rblnclusterpolicy.rebellions.ai/rbln-cluster-policy condition met

$ kubectl get rblnclusterpolicy rbln-cluster-policy \
  -o 'custom-columns=NAME:.metadata.name,STATE:.status.state'
NAME                  STATE
rbln-cluster-policy   ready
$ kubectl get rblndriver \
  -o 'custom-columns=NAME:.metadata.name,STATE:.status.state,READY:.status.readyNodes,DESIRED:.status.desiredNodes'
NAME               STATE   READY   DESIRED
rbln-driver-atom   ready   1       1
kubectl get pods -n rbln-system

모든 대상 리소스가 ready이고 필요한 Pod가 준비되었는지 확인합니다.