에이전트

Windows 서버에서 배포 요청을 수신하고 처리

목차

명령어

sdp agent

포그라운드에서 에이전트를 실행합니다. 테스트/디버깅용.

# 기본 설정 파일 사용
sdp agent

# 설정 파일 경로 지정
sdp agent -c C:\path\to\agent.yaml

Ctrl + C로 종료합니다.

sdp agent install

Windows 서비스로 등록하고 시작합니다.

sdp agent install
⚠️

관리자 권한이 필요합니다. PowerShell을 관리자로 실행하세요.

sdp agent uninstall

서비스를 중지하고 등록을 해제합니다.

sdp agent uninstall

서비스 관리

설치 절차

  1. 서버에 sdp.exe 복사 (예: C:\SDP\sdp.exe)
  2. 설정 파일 작성: C:\ProgramData\SDP\agent.yaml
  3. 관리자 PowerShell에서 설치:
    cd C:\SDP
    .\sdp.exe agent install

서비스 상태 확인

# PowerShell
Get-Service SaigeDeployAgent

# 또는 sc 명령어
sc query SaigeDeployAgent

서비스 수동 제어

# 시작
Start-Service SaigeDeployAgent

# 중지
Stop-Service SaigeDeployAgent

# 재시작
Restart-Service SaigeDeployAgent
ℹ️

서비스는 시스템 시작 시 자동으로 실행됩니다.

설정 파일

기본 경로: C:\ProgramData\SDP\agent.yaml

# gRPC 서버 설정
server:
  host: 0.0.0.0           # 모든 인터페이스에서 수신
  port: 50051             # gRPC 포트

# 인증
auth:
  api_key: "your-secret-api-key-here"

# 허용된 배포 경로 (보안)
allowed_paths:
  - C:\Saige

# 허용된 서비스 목록 (보안)
allowed_services:
  - saige-vims-server
  - saige-vims-server
  - saige-vims-server

# 임시 파일 저장 경로
temp_dir: C:\ProgramData\SDP\temp

# 롤백 설정
rollback:
  enabled: true
  max_backups: 5
  backup_dir: C:\ProgramData\SDP\backups
  skip_on_low_disk: true
  min_free_disk_gb: 10

# 데이터베이스 (SQLite)
database:
  dir: C:\ProgramData\SDP\db

# 로그 설정
log:
  level: info
  dir: C:\ProgramData\SDP\logs
  max_size_mb: 100
  max_files: 10

설정 필드 설명

server

필드기본값설명
host0.0.0.0바인딩할 IP (0.0.0.0 = 모든 인터페이스)
port50051gRPC 포트

rollback

필드기본값설명
enabledtrue백업 활성화 여부
max_backups5경로별 최대 백업 수
backup_dir-백업 저장 경로
skip_on_low_disktrue디스크 부족 시 백업 스킵
min_free_disk_gb10최소 여유 공간 (GB)

log

필드기본값설명
levelinfo로그 레벨 (trace, debug, info, warn, error)
dir-로그 파일 경로
max_size_mb100파일당 최대 크기
max_files10보관할 파일 수

디렉터리 구조

C:\ProgramData\SDP\
├── agent.yaml              # 서버 설정
├── db\
│   ├── history.db          # 배포 이력 DB
│   └── backups.db          # 백업 메타데이터 DB
├── temp\                   # 임시 파일 (전송 중)
├── backups\                # 롤백용 백업
│   ├── 1\                  # backup_id = 1
│   ├── 2\                  # backup_id = 2
│   └── ...
└── logs\
    ├── sdp-agent.2024-01-15.log
    ├── sdp-agent.2024-01-16.log
    └── ...
ℹ️

백업 폴더 이름은 backups.db의 PRIMARY KEY (backup_id)를 사용합니다.

보안 설정

허용된 경로 (allowed_paths)

지정된 경로의 하위 폴더에만 배포 및 로그 조회를 허용합니다. 클라이언트의 sdp push 배포 경로와 sdp logs 로그 파일 경로 모두 이 범위 안에 있어야 합니다.

allowed_paths:
  - C:\Saige
  - D:\Deploy
요청 경로용도결과
C:\Saige\SaigeVIMS\bin배포✓ 허용
C:\Saige\SaigeVIMS\logs\server.log로그✓ 허용
D:\Deploy\api배포✓ 허용
C:\Windows\System32-✗ 거부
E:\Other\app.log로그✗ 거부

허용된 서비스 (allowed_services)

지정된 서비스만 재시작을 허용합니다.

allowed_services:
  - saige-vims-server
  - saige-vims-server
  - saige-vims-server
서비스 이름결과
saige-vims-server✓ 허용
saige-vims-server✓ 허용
nginx✗ 거부
MySQL✗ 거부

API Key 인증

모든 요청에 API Key가 필요합니다. 클라이언트와 서버의 키가 일치해야 합니다.

# 서버 (agent.yaml)
auth:
  api_key: "your-secret-api-key"

# 클라이언트 (.sdp/config.yaml)
server:
  api_key: "your-secret-api-key"
⚠️

API Key는 외부에 노출되지 않도록 주의하세요. 설정 파일을 git에 커밋하지 마세요.