Skip to content

예제: demo-idp-app 배포

실제로 IDP에 배포된 demo-idp-app 프로젝트를 예시로, 프로젝트 설정부터 배포 완료까지의 과정을 설명합니다.

항목
저장소letsur-dev/demo-idp-app
브랜치main
슬러그idp-demo
퍼블릭 도메인https://idp-demo.letsur.dev
컨테이너 포트8080

프로젝트 생성 시 슬러그를 idp-demo로 지정했습니다. 이에 따라 배포된 서비스는 https://idp-demo.letsur.dev로 접근할 수 있습니다.

프로젝트 설정에서 default 프로필에 다음 환경변수를 추가했습니다.

KeyValue설명
test1테스트용 변수
test22테스트용 변수

이 서비스는 포트 8080에서 HTTP 요청을 수신합니다. 프로젝트 설정에서 컨테이너 포트를 올바르게 지정해야 합니다. 포트를 설정하지 않거나 잘못 지정하면 503 Service Unavailable 오류가 발생할 수 있습니다.

  1. 프로젝트 생성letsur-dev/demo-idp-app 저장소를 선택하고, 슬러그를 idp-demo로 설정한 뒤 프로젝트를 생성했습니다.
  2. 환경변수 설정 — 프로젝트 설정 페이지에서 default 프로필에 필요한 환경변수를 추가했습니다.
  3. 수동 배포 — 프로젝트 헤더의 Deploy 버튼을 클릭하여 배포를 트리거했습니다.
  4. 빌드 — Railpack이 소스 코드를 감지하여 컨테이너 이미지를 자동으로 빌드했습니다. 약 1분 30초 소요.
  5. 배포 완료 — Kubernetes에 Rolling Update로 배포가 진행되어 서비스가 정상 동작합니다.

배포 완료 후 퍼블릭 도메인에 요청하면 서비스가 응답합니다.

Terminal window
$ curl https://idp-demo.letsur.dev/
{"status":"ok","message":"demo-idp-app is running"}

이후 demo-idp-app/test-idp 엔드포인트를 추가하고 main 브랜치에 push했습니다.

// index.js — 추가된 코드
if (req.url === "/test-idp") {
const testEnvVars = {};
for (const [key, value] of Object.entries(process.env)) {
if (key.toLowerCase().startsWith("test")) {
testEnvVars[key] = value;
}
}
res.writeHead(200, { "Content-Type": "application/json" });
res.end(JSON.stringify(testEnvVars));
return;
}

IDP는 GitHub webhook을 통해 push 이벤트를 감지하고, 자동으로 새로운 배포를 트리거했습니다.

항목
트리거git_push (자동)
커밋a8125d9
소요 시간약 1분 40초
결과성공

배포 완료 후, 새로 추가한 엔드포인트에서 환경변수가 정상적으로 주입된 것을 확인할 수 있습니다.

Terminal window
$ curl https://idp-demo.letsur.dev/test-idp
{"test":"1","test2":"2"}

프로젝트 설정에서 지정한 환경변수 test=1, test2=2가 컨테이너에 주입되어 응답에 포함됩니다.

이 예제에서 핵심적인 설정은 다음 세 가지입니다.

  1. 슬러그 — 퍼블릭 도메인을 결정합니다. idp-demoidp-demo.letsur.dev
  2. 환경변수 — 배포 시 컨테이너에 주입됩니다. 변경 후 재배포 필수.
  3. 컨테이너 포트 — 서비스가 수신하는 포트입니다. 올바르게 지정하지 않으면 503 오류가 발생합니다.

또한 main 브랜치에 push하면 자동으로 배포가 트리거되므로, 별도의 수동 작업 없이 코드 변경이 반영됩니다.