Cloud DNS ResourceRecordSets API

1. 소개

64e18005b6cdcd83.png

최종 업데이트: 2021년 1월 6일

Cloud DNS란 무엇인가요?

홈페이지를 참고하세요.

빌드할 항목

이 Codelab에서는 gcloud를 사용하여 Cloud DNS ManagedZone과 관련 ResourceRecordSets를 만들어 일부 VM 인스턴스로의 이름 변환을 관리합니다.

학습할 내용

개별 ResourceRecordSet을 생성, 읽기, 삭제, 업데이트하는 방법

필요한 항목

2. 설정

Google Cloud Platform 프로젝트 설정

gcloud에 로그인

gcloud auth login

프로젝트 만들기

gcloud projects create my-codelab-project

Cloud DNS API 사용 설정

gcloud services enable dns.googleapis.com

적용되는 데 몇 분 정도 걸릴 수 있습니다.

3. 비공개 ManagedZone 만들기

ManagedZone에는 ResourceRecordSet이 포함됩니다.

DNS 레코드를 추가할 도메인 이름을 확인합니다. 이 예에서는 'my-domain.com'을 사용하고 VM 인스턴스가 기본 네트워크에 있다고 가정합니다.

gcloud dns managed-zones create my-zone \
    --description="ManagedZone for Cloud DNS ResourceRecordSets codelab." \
    --dns-name=my-domain.com. \
    --networks=default \
    --visibility=private

4. ResourceRecordSets 관리

이 섹션이 끝나면 도메인에 대한 가상 사설망을 통한 DNS 요청이 VM의 IP 주소로 확인됩니다.

예를 들어 VM의 IP 주소가 '1.2.3.4'이고 'my-domain.com'이 해당 IP 주소로 확인되도록 하려면 'A 레코드'를 만들어야 합니다.

A 레코드 만들기

gcloud dns record-sets create "my-domain.com." --type="A" --ttl="60" --rrdatas="1.2.3.4" --zone="my-zone"
  • 위치 인수 'my-domain.com.' (dnsName)은 DNS 변환을 정의하려는 이름입니다.
  • –type: 생성하려는 DNS 레코드 유형을 나타냅니다.
  • –ttl: 이 레코드의 TTL(수명)을 나타냅니다.
  • –rrdatas: 질문에 대한 실제 답변을 보유합니다.
  • –zone: 이 레코드가 생성되어야 하는 ManagedZone을 지정하는 데 필요합니다.

DNS 개념에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

이제 A 레코드를 만들었으므로 DNS 확인을 테스트할 수 있습니다.

SSH를 통해 머신에 연결합니다. 이 예에서는 'us-central1-a'에 'dns-codelab'이라는 VM 인스턴스를 사용합니다.

gcloud compute ssh codelab --zone=us-central1-a

'dig' 명령어를 사용할 수 있도록 dnsutils 설치

sudo apt install dnsutils

도메인 쿼리

dig my-domain.com.

다음과 비슷한 출력이 생성됩니다.

...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19979
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
...
;; QUESTION SECTION:
;my-domain.com.                        IN        A

;; ANSWER SECTION:
my-domain.com.                60        IN        A        1.2.3.4
...

CNAME 레코드 생성, 패치, 가져오기

이제 my-domain.com을 1.2.3.4에 매핑했으므로 www.my-domain.com도 1.2.3.4로 확인되도록 해야 합니다. 'www' 접두사의 레코드는 자동으로 생성되지 않습니다.

www.my-domain.com을 쿼리하는 경우

dig www.my-domain.com.

다음과 비슷한 출력이 표시됩니다.

...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 61964
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
...

해당 도메인에 DNS 레코드가 없음을 나타냅니다.

다른 A 레코드를 만드는 대신 다른 레코드를 가리키는 포인터인 CNAME 레코드를 만들어야 합니다. 이렇게 하면 다른 IP 주소를 사용하려는 경우 두 레코드를 모두 변경하지 않아도 됩니다.

VM 인스턴스를 종료합니다.

exit

CNAME 레코드 만들기

gcloud dns record-sets create "www.my-domain.com." --type="CNAME" --ttl="60" --rrdatas="my-domin.com." --zone="my-zone"

이제 CNAME 레코드를 만들었으므로 DNS 변환을 테스트할 수 있습니다.

머신에 다시 SSH로 연결합니다.

gcloud compute ssh codelab --zone=us-central1-a

도메인 쿼리

dig www.my-domain.com.

다음과 비슷한 출력이 표시됩니다.

...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 61964
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
...

이런! '–rrdatas' 플래그에서 CNAME 레코드를 만들 때 오타가 있는 것 같습니다. 레코드를 삭제하고 다시 만드는 대신 올바른 변경사항을 패치할 수 있습니다.

VM 인스턴스 종료

exit

CNAME 레코드 패치

gcloud dns record-sets update "www.my-domain.com." --type="CNAME" --rrdatas="my-domain.com." --zone="my-zone"

TTL을 변경하지 않으므로 '–ttl' 플래그는 생략할 수 있지만 다른 모든 플래그는 ResourceRecordSet의 범용 고유 식별자의 일부이므로 포함해야 합니다.

gcloud를 사용하여 레코드가 예상대로인지 확인할 수도 있습니다.

gcloud dns record-sets describe "www.my-domain.com." --type="CNAME" --zone="my-zone"

다음과 같은 출력이 생성되어야 합니다.

NAME                    TYPE    TTL  DATA
www.my-domain.com.      CNAME   60  "my-domain.com."

CNAME 레코드가 올바르게 확인되는지 확인

gcloud compute ssh codelab --zone=us-central1-a
dig www.my-domain.com.

다음과 비슷한 출력이 표시됩니다.

...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7471
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1
...
;; QUESTION SECTION:
;www.my-domain.com.                IN        A

;; ANSWER SECTION:
www.my-domain.com.        60        IN        CNAME         my-domain.com..
...

삭제하여 정리

ManagedZone을 삭제하려면 먼저 ManagedZone 내의 모든 ResourceRecordSet을 삭제해야 합니다 (자동으로 생성되고 ManagedZone에 항상 있어야 하는 NS 및 SOA 레코드 제외).

VM 인스턴스 종료

exit

CNAME 레코드 삭제

gcloud dns record-sets delete "www.my-domain.com." --type="CNAME" --zone="my-zone"

A 레코드 삭제

gcloud dns record-sets delete "my-domain.com." --type="A" --zone="my-zone"

ManagedZone 삭제

gcloud dns managed-zones delete "my-zone"

5. 축하합니다

수고하셨습니다. ResourceRecordSets를 관리하는 방법을 성공적으로 배웠습니다.

추가 자료

참조 문서