업그레이드
컨테이너 모드 (2026.05+, 권장)
# 자동 (META-INF/VERSION.JSON 의 최신 build_date)
sudo bash /opt/kopens/install/upgrade.sh
# 특정 tag
sudo bash /opt/kopens/install/upgrade.sh --to 2026-20260601
# 직전 tag 로 rollback
sudo bash /opt/kopens/install/upgrade.sh --rollback
# 새 빌드 존재 여부만 확인
sudo bash /opt/kopens/install/upgrade.sh --check
수행 순서 (자동):
- META-INF/VERSION.JSON 의 build_date 비교
- pre-snapshot →
/data1/pp-backups/pe-backup-<ts>.tar.zst(backup.sh 호출, SKIP_BACKUP=1 로 우회 가능) docker pull <new-tag>/etc/kopens/version.env갱신 +systemctl restart/api/v1/system/health90초 probe- all UP → success / DEGRADED → 자동 rollback + snapshot 경로 안내
진행 상태: cat /etc/kopens/upgrade.status — JSON (idle / running / success / rolling-back / rolled-back / error + snapshot path).
UI / API 트리거:
# 컨테이너 안 (ConfigController) 에서 자동
echo '{"target_tag":"2026-20260601"}' > /etc/kopens/upgrade.request
# 호스트의 kopens-upgrade.path (inotify) 감지 → upgrade.sh --from-trigger 실행
자세한 가이드: 컨테이너 모드 운영 가이드 의 "OTA 업그레이드" 절.
(legacy) Native 모드
$PE_HOME/bin/upgrade.sh
수행 순서:
backup.sh호출 (자동)product.kopens.io에서 최신install.sh다운로드install.sh가 산출물(KOPENS_EDGE_V<VER>.tar.zstd) 다운로드 →/opt/kopens갈아끼움- 새
start.sh호출
정상 출력:
[1] BACKUP ... done (/data1/pp-backup/20260508-040215/)
[2] DOWNLOAD install.sh ... 22 KB OK
[3] EXEC install.sh ...
- downloading KOPENS_EDGE_V2026.tar.zstd ... 727 MB OK
- extracting ... OK
- finalizing ...
[4] START ... (start.sh 호출됨)
UPGRADE COMPLETED.
소요는 산출물 크기 + 회선 + 압축 해제 (보통 5–15분).
업그레이드 동안 게이트웨이는 다운타임
upgrade.sh 가 동작하는 동안 게이트웨이는 정지 상태 입니다. 외부 SCADA / Sparkplug 수신측에 미리 공지하세요. 가능하면 야간 점검 창 에 실행.
2. 사전 점검
업그레이드를 시작하기 전에:
# 1. 외부 망이 충분히 빠른지 — 회선이 느리면 download 만 수십 분
$PE_HOME/bin/network-speed-test.sh
# 2. 디스크 여유 (산출물 크기의 2–3배는 있어야)
df -h /opt /data1
# 3. 살아있는 백업이 있는지
ls -lt /data1/pp-backup | head -3
3. 업그레이드 결과 검증
$PE_HOME/bin/ps.sh # 모든 컴포넌트 살아있는지
curl -s http://127.0.0.1/api/v1/edge | jq # 버전/엣지 ID 새 값 확인
curl -s http://127.0.0.1/ui/opcua/tree | jq '.data.tree | length' # 사이트/태그 정상
$PE_HOME/bin/log-viewer.sh # 30초 정도 봐서 SEVERE 없는지
# (Ctrl+C)
외부 SCADA / Sparkplug 수신측에서도 정상 도착 여부를 함께 확인.
4. 자주 빠지는 함정
| 증상 | 원인 / 해결 |
|---|---|
download install.sh 에서 멈춤 | 외부 망 / product.kopens.io 점검. curl -v http://product.kopens.io/... 로 직접 확인 |
extracting 후 새 산출물이 깨져있음 | 다운로드 중 중단. 디스크 공간 + 다시 시도 |
| 업그레이드 후 일부 컴포넌트만 살아있음 | start.sh 의 단계별 실패 — log-viewer.sh 로 어디서 막혔는지 확인 |
| 업그레이드 후 과거 버전으로 롤백 | 백업으로부터 복구 → 백업 / 복구 |
5. firmware.sh — OS 패키지 업데이트
$PE_HOME/bin/firmware.sh
내부적으로:
dnf update -y
dnf clean all
분기 단위로 보안 패치를 적용할 때 사용. 커널 업데이트가 포함되면 reboot 이 필요 합니다.
$PE_HOME/bin/firmware.sh
needs-restarting -r # 새 커널이 깔렸는지 확인
# 결과가 "Reboot is required" 이면
$PE_HOME/bin/stop.sh
$PE_HOME/bin/reboot.sh
6. 더 알아보기
- 업그레이드 통합 시나리오 (안전한 절차) → 운영 시나리오 — 신버전 배포
- 산출물은 GitLab 릴리즈 체인(
edge:libs→edge:deploy-dev→edge:image→edge:staging→edge:version)이 만든다. - 설치 / 배포 (개발자용): 설치 / 배포