이 Codelab 정보
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에는 ResourceRecordSets가 포함됩니다.
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 관리
이 섹션이 끝나면 도메인의 가상 사설망(VPN)을 통한 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를 통해 머신에 연결합니다. 이 예시에서는 이름이 'dns-codelab'인 VM 인스턴스를 사용합니다. 'us-central1-a'에서
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'은 생략할 수 있습니다. 플래그는 변경되지 않지만 다른 모든 플래그는 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..
...
DELETE로 정리
ManagedZone을 삭제하려면 먼저 ManagedZone 내의 모든 ResourceRecordSet를 삭제해야 합니다. 단, NS 및 SOA 레코드는 예외적으로 자동으로 생성되고 ManagedZone에 항상 존재해야 합니다.
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"