Skip to main content

Kamal + SSM으로 GitHub Actions에서 EC2에 배포하기

· 4 min read

이전 글에서 EC2를 public subnet에 두더라도 올바르게 구성하면 안전하다고 했다. 그 구성에서는 보안 그룹 인바운드에 CloudFront prefix list의 443만 허용하고, 관리 접속은 SSM Session Manager로 처리한다. SSH 포트는 열려 있지 않다.

하지만 Kamal은 SSH로 EC2에 접속해서 Docker 명령어를 실행한다. SSH 포트 없이 Kamal 배포를 어떻게 할 수 있을까. 이 글은 OIDC, SSM, 일회성 SSH 키를 조합해서 이 문제를 해결하는 방법을 다룬다.

EC2를 public subnet에 두면 안 될까

· 5 min read

Private subnet은 EC2 배포의 필수 조건이 아니다. 올바르게 구성한 public subnet EC2는 VPS 호스팅과 구조적으로 다르지 않다. 왜 괜찮은지, 그리고 Kamal + AWS SSM으로 실제로 어떻게 구성했는지를 다룬다.

AWS Well-Architected Framework의 모범 사례

AWS의 모범 사례를 따르면 EC2는 private subnet에 배치하고 load balancer만 외부에 노출해야 한다. 합리적인 원칙이지만, 따르려면 구성이 복잡해진다. Private subnet의 EC2가 외부 API를 호출하거나 패키지를 설치하려면 NAT Gateway가 필요하다. 이 비용을 받아들이기 전에, 실제로 무엇이 다른지 따져보자.