[서비스 만들기] #6 - GCP App Engine에 도메인 연결하기(Custom Domain)

당연히 서비스를 만들려면 홈페이지 하나쯤은 있어야겠죠? 서버는 만들었지만 192.*~ 이런 주소로 접근해야한다면 말이 안되는 서비스일 것입니다. DNS를 사용하고싶다면 도메인을 가지고있어야합니다. 도메인을 구매하려면 Goolge Domain에서 구매해주세요. 가격은 최상위 도메인마다 다르지만 저의 경우 .com으로 구매하여 연간 12달러 지불하도록 하였습니다. 도메인을 소유하셨다면 구글 앱 엔진(GAE)와 연결해보겠습니다.


도메인 맵핑 구글 문서입니다.
위 문서를 얼핏보고 따라하시면 아마 맵핑이 안되실겁니다.(이건 제 경험...)
1. 구글 클라우드 콘솔 -> 앱 엔진 -> 설정 -> 커스텀 도메인
구글에서 가져온 사진
1번에서 도메인을 선택하시고 verify 눌러주세요.

구글에서 가져온 사진

2단계는 서브 도메인을 적어주는 곳입니다. 기본적으로 www가 추가되어있습니다. 서브 도메인 있으시면 추가해주시고 3번으로 넘어가주세요.
자 이렇게 보면 간단하게 설정이 끝난 것으로 보이지만 앱 엔진의 설정을 보시면 ssl보안 칸에 노란색 경고 표시보이시나요. 저 경고 표시가 나타나며 맵핑한 주소로 들어가시면 사이트가 맵핑이 안되어있을 겁니다



제가 맨위에 링크 걸어드린 구글 문서를 따라한 결과입니다. 무지한 저는 5일간 헤매다 맵핑을 성공했습니다. 추가적인 작업을 포스팅하겠습니다.

2. Network serivces에 Cloud DNS에 들어가주세요.




3. Zone name과 Dns name을 적어주세요.
영역 이름은 일반적으로 DOMAIN-dot-com 이런 형식으로 적는 것 같습니다. 저의 경우는 rally-dot-com 이렇게 했습니다. DNS name 영역은 서브 도메인 말고 구매한 메인을 적어주세요.
DNSSEC는 Domain Name System Security Extension의 약자입니다. dns는 보안 공격에 취약합니다. dns의 주소를 바꿀 수 있다는 것입니다. 물론 이게 쉽지는 않지만 불가능은 아닙니다. 캐시 DNS서버의 가짜 데이터를 넣어 가짜 IP를 반환하도록 하는 것을 DNS 캐시 포이즈닝이라고 부릅니다. 이 방법을 막기 위해서 DNSSEC 가 등장합니다. DNSSEC는 DNS에 공개키 암호화 방식의 보안기능을 부여하여 보안성을 강화하는 것을 말합니다. 
 한국인터넷정보센터 사진

4. 구글 도메인에 들어갑니다.


5. 맞춤 리소스 레코드에 값을 추가해줍니다.
A 레코드와 AAAA레코드의 값은 앱 엔진 -> 설정 -> 커스텀 도메인에 들어가시면 나옵니다.
A, AAAA 레코드를 채우셨다면 www가 아닌 DOMAIN.com 들어가시면 맵핑이 되어있을 것입니다. www CNAME 레코드를 채우시면 www.DOMAIN.com 에 들어가셔도 같은 화면이 나오는 것을 확인하실 수 있습니다.



5.1 DNS 맵핑이 잘 안되었을 경우 아래 명령어를 터미널에 쳐봅니다.
gcloud --project=PROJECT_ID beta app ssl-certificates list

그럼 아래와 같이 나올 것 입니다.
ID        DISPLAY_NAME         DOMAIN_NAMES    MANAGED_CERTIFICATE_STATUS
12345678  managed_certificate  DOMAIN.com      FAILED_RETRYING_NOT_VISIBLE
12345679  managed_certificate  www.DOMAIN.com  FAILED_RETRYING_NOT_VISIBLE


5.2 DNS맵핑 재시도하시려면 아래 명령어를 쳐주세요.

gcloud beta app domain-mappings update DOMAIN --certificate-management 'AUTOMATIC'
gcloud beta app domain-mappings update www.DOMAIN --certificate-management 'AUTOMATIC'


도메인 관련은 즉각 반영이 되지않다보니 시간의 텀을 두고 작업을 확인하시기를 권장드립니다. 앱 엔진에서 도메인 맵핑할 때 보셨겠지만 최대 48시간을 기다려달라고합니다.
맵핑이 되었는지 확인하시려면 아래 명령어ㅡㄹ 다시 쳐봅니다.
gcloud --project=PROJECT_ID beta app ssl-certificates list

그럼 아래와 같이 나올 것 입니다.
ID        DISPLAY_NAME         DOMAIN_NAMES    MANAGED_CERTIFICATE_STATUS
12345678  managed_certificate  DOMAIN.com      OK
12345679  managed_certificate  www.DOMAIN.com  OK

맵핑이 성공적으로 되면 도메인으로 접속이 가능해집니다!




댓글

이 블로그의 인기 게시물

[생활] 짝눈(부동시)로 신체검사 4급(공익) 받은 방법.

[INTELLIJ] 인텔리제이 폴더 안 보이고 파일만 보이는 버그 해결 방법

[스프링부트] @Mapper import 실패시(빨간줄) 해결 방법