DEVELOPMENT NOTE / CHIP THRONE

Watchtower 기반 자동 배포

문제

  • GitHub Actions 러너가 EC2에 SSH로 접속하는 재배포 단계에서 i/o timeout 발생
  • 22번 포트는 개인 IP만 허용했지만 GitHub Actions 러너의 IP는 실행할 때마다 달라짐

해결 전략

  • 22번 포트를 전체 공개하지 않고 배포 방향을 push에서 pull로 전환
  • EC2의 Watchtower가 GHCR을 60초마다 확인하고 새 이미지가 있으면 컨테이너 교체
  • GitHub Actions는 이미지 저장까지만, EC2 반영은 Watchtower가 담당

기술 선택 이유

  • SSH 포트를 전체 공개하면 상시 스캔과 무차별 대입 공격에 노출
  • pull 구조는 외부에서 EC2로 접속하지 않으므로 기존 보안그룹을 그대로 유지
GitHub ActionspushGHCR60초마다 pull 확인Watchtower새 이미지면 교체Backend
GitHub Actions는 이미지만 저장하고 EC2 내부 Watchtower가 새 이미지를 가져오는 pull 배포

결과

  • 보안그룹 22번은 개인 IP만 허용한 채 유지
  • main 반영 → 이미지 빌드 → 60초 내 EC2 자동 갱신
  • 배포 경로에서 SSH 키·러너 IP 관리 부담 제거