본문으로 건너뛰기
runlot

배포 URL

프로젝트마다 `<프로젝트>.<조직>.runlot.app` 주소가 생성되며, TLS는 자동으로 설정됩니다.

배포가 완료되면 프로젝트의 기본 주소가 생성됩니다.

my-app.me.runlot.app

<프로젝트>.<조직>.runlot.app 입니다.

옛 -- 주소는 더 이상 없습니다

예전에는 프로젝트 이름과 조직 이름을 한 라벨로 합쳐 my-app--me.runlot.app 형태로 만들었습니다. 이 형태는 더 이상 등록되지 않습니다. 배포는 두 라벨 주소만 등록하고, 변경 전에 배포한 프로젝트도 새 주소로 옮겼습니다. 옛 주소를 어딘가에 공유했다면 바꿔 주세요. 그 주소는 이제 열리지 않습니다.

라벨을 나눌 수 있게 된 이유

와일드카드 인증서는 하위 도메인 라벨 하나만 덮습니다. 그래서 *.runlot.app 인증서 한 장으로는 라벨이 두 개인 주소를 처리할 수 없었습니다. 지금은 조직마다 *.<조직>.runlot.app 와일드카드 인증서를 ACME DNS-01로 직접 발급합니다. 주 인증 기관은 Google Trust Services이고, 실패하면 Let's Encrypt로 넘어갑니다. 덕분에 프로젝트와 조직이 각각 자기 라벨을 가질 수 있습니다.

이름 규칙

조직 slug와 프로젝트 이름은 다음 규칙을 따라야 합니다.

  • ^[a-z0-9](-?[a-z0-9])*$
  • 최대 30자(DNS 라벨의 63자 제한을 기준으로 계산)
  • 이름에 하이픈 두 개(--)를 사용할 수 없음

기본 주소는 더 이상 --를 쓰지 않지만 이 규칙은 유지합니다. PostgreSQL 직접 접속 주소는 여전히 두 이름을 --로 잇고(my-app--me.wire.runlot.app), 이 규칙이 없으면 a--b 조직의 c 프로젝트와 a 조직의 b--c 프로젝트가 같은 접속 주소를 갖게 됩니다.

프로젝트 이름을 변경하면 이 주소도 함께 바뀝니다

관리자는 프로젝트 설정 탭이나 runlot project rename <현재 이름> <새 이름> 으로 프로젝트 이름을 변경할 수 있습니다. 기본 주소가 이름을 따라 함께 이동하며, 인증서를 다시 발급할 필요는 없습니다 — 조직 와일드카드 인증서가 그 아래의 모든 프로젝트 레이블을 이미 포함하기 때문입니다.

옛 주소는 즉시 응답을 멈추고, 별칭은 남기지 않습니다. 둘 다 유지하면 한 프로젝트에 주소가 두 개가 되고 어느 쪽이 정본인지 말할 수 없게 됩니다. 다음은 직접 수정해 주세요:

  • runlot.json 의 name
  • git remote (runlot repo list 가 새 주소를 보여 줍니다)
  • 저장해 둔 PostgreSQL 접속 문자열 (runlot pg connect)

저장된 데이터는 이동하지 않습니다. 데이터베이스, env.storage 의 파일, 백업 세대, 시크릿, 저장소의 내용은 모두 이름이 아니라 프로젝트 id 로 관리되므로, 이름을 변경해도 복사하거나 다시 만들지 않습니다. 커스텀 도메인도 그대로 연결된 상태로 남습니다.

이름을 따라가지 않는 것이 하나 있습니다 — 이미 사용 중인 이메일 주소는 옛 이름을 유지합니다. 이메일을 켜는 시점에 고정되는데, 외부에서 이미 그 주소로 메일을 보내고 있기 때문입니다. 옮기려면 이메일을 해제한 뒤 다시 부여하면 됩니다. 그 시점부터 옛 주소로 오는 메일은 도착하지 않습니다.

조직 슬러그는 다릅니다 — 변경할 수 없습니다. 와일드카드 인증서가 바로 그 레이블로 발급되기 때문에, 변경하려면 인증서를 다시 발급받고 그동안 옛 이름이 계속 해석되도록 유지해야 합니다.

TLS

이 주소의 TLS 인증서는 접속 서버가 자동으로 관리합니다. 별도로 설정할 필요가 없으며, http:// 요청은 https://로 리디렉션합니다.

보유한 도메인을 연결하려면 커스텀 도메인을 참고하세요.

워커가 받는 헤더

접속 서버는 현재 배치 정보를 요청 헤더에 추가합니다. 이 헤더는 문제를 분석할 때 유용합니다.

request.headers.get("Runlot-Project-Id");
request.headers.get("Runlot-Epoch");
request.headers.get("Runlot-Node");
request.headers.get("Runlot-Slot");

클라이언트가 보낸 runlot-* 헤더는 접속 서버가 모두 제거한 뒤 신뢰할 수 있는 값으로 다시 추가합니다. 따라서 클라이언트가 이 헤더 값을 위조할 수 없습니다.

이 페이지의 목차