DNS 바인딩 구성
이 페이지에서는 표준 VMware Engine 네트워크의 DNS 바인딩을 구성하는 방법을 설명합니다.
각 프라이빗 클라우드는 모든 관리 어플라이언스 확인에 사용되는 Cloud DNS 서버를 배포합니다. DNS 바인딩을 설정하여 이 서버를 모든 VMware 워크로드의 DNS 서버로 구성할 수 있습니다. 이렇게 하려면 다음을 수행해야 합니다.
- 프라이빗 클라우드 DNS 서버의 IP 주소 가져오기
- 사용자 주 구성원이 인트라넷 VPC에 바인딩할 수 있도록 DNS 바인딩 권한 설정
- VMware 워크로드나 NSX-T 세그먼트 DHCP DNS 설정에 DNS 구성
시작하기 전에
gcloud
도구나 API를 사용하여 DNS 바인딩만 구성할 수 있습니다.
gcloud 및 API 요구사항
gcloud
명령줄 도구나 API를 사용하여 VMware Engine 리소스를 관리하려면 다음 설명대로 도구를 구성하는 것이 좋습니다.
gcloud
기본 프로젝트 ID를 설정합니다.
gcloud config set project PROJECT_ID
기본 리전 및 영역을 설정합니다.
gcloud config set compute/region REGION
gcloud config set compute/zone ZONE
gcloud vmware
도구에 대한 자세한 내용은 Cloud SDK 참조 문서를 검토하세요.
API
이 문서 집합의 API 예시는 cURL
명령줄 도구를 사용하여 API를 쿼리합니다. cURL
요청의 일부로 유효한 액세스 토큰이 필요합니다. 유효한 액세스 토큰을 가져오는 방법에는 여러 가지가 있습니다. 다음 단계에서는 gcloud
도구를 사용하여 액세스 토큰을 생성합니다.
Google Cloud에 로그인합니다.
gcloud auth login
액세스 토큰을 생성하여 TOKEN으로 내보냅니다.
export TOKEN=`gcloud auth print-access-token`
TOKEN이 제대로 설정되었는지 확인합니다.
echo $TOKEN
이제 API에 대한 요청에 승인 토큰을 사용합니다. 예를 들면 다음과 같습니다.
curl -X GET -H "Authorization: Bearer \"$TOKEN\"" -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations
Python
이 문서의 Python 코드 샘플은 VMware Engine 라이브러리를 사용하여 API와 통신합니다. 이 접근 방식을 사용하려면 라이브러리를 설치해야 하며 애플리케이션 기본 사용자 인증 정보를 구성해야 합니다.
Python 라이브러리를 다운로드하고 설치합니다.
pip install google-cloud-vmwareengine
셸에서 명령어를 실행하여 ADC 정보를 구성합니다.
gcloud auth application-default login
또는 서비스 계정 키 파일을 사용합니다.
export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
라이브러리에 대한 자세한 내용은 참조 페이지를 확인하거나 GitHub의 코드 샘플을 확인하세요.
프라이빗 클라우드 워크로드 DNS 서버 IP 가져오기
콘솔
프라이빗 클라우드 DNS 서버의 IP 주소를 가져오려면 다음 단계를 수행합니다.
Google Cloud 콘솔에서 프라이빗 클라우드 페이지로 이동합니다.
연결할 프라이빗 클라우드의 이름을 클릭합니다.
프라이빗 클라우드의 요약 페이지에 있는 프라이빗 Cloud DNS 서버에서 복사를 클릭하여 프라이빗 Cloud DNS 서버 IP 주소를 복사합니다.
gcloud
Google Cloud CLI를 사용하여 프라이빗 클라우드 DNS 서버의 IP 주소를 가져오려면 gcloud vmware private-clouds describe
명령어를 사용합니다.
gcloud vmware private-clouds describe PRIVATE_CLOUD_ID \ --project=PROJECT_ID \ --location=REGION
다음을 바꿉니다.
PRIVATE_CLOUD_ID
: 이 요청의 프라이빗 클라우드 이름입니다.PROJECT_ID
: 이 요청의 프로젝트 ID입니다.REGION
: 프라이빗 클라우드 리전입니다. 확장된 프라이빗 클라우드인 경우 이 프라이빗 클라우드의 영역을 지정합니다.
API
VMware Engine API를 사용하여 프라이빗 클라우드 DNS 서버의 IP 주소를 가져오려면 GET
요청을 수행합니다.
curl -X GET -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json; charset=utf-8" "https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/privateCloud/PRIVATE_CLOUD_ID"
다음을 바꿉니다.
PROJECT_ID
: 이 요청의 프로젝트 ID입니다.REGION
: 프라이빗 클라우드 리전입니다. 확장된 프라이빗 클라우드인 경우 이 프라이빗 클라우드의 영역을 지정합니다.PRIVATE_CLOUD_ID
: 이 요청의 프라이빗 클라우드 이름입니다.
DNS 바인딩 권한 설정
gcloud
도구를 사용하거나 REST API를 직접 사용하여 DNS 바인딩 권한만 설정하고 관리할 수 있습니다. 콘솔을 통해 바인딩을 설정할 수 없습니다.
DNS 바인딩 권한 부여
사용자가 DNS 바인딩을 구성하려면 사용자 주 구성원에게 인트라넷 VPC에 바인딩할 수 있는 권한을 부여해야 합니다. 이 경우 사용자 주 구성원은 비공개 DNS 영역을 인트라넷 VPC와 바인딩할 사용자의 이메일 주소입니다.
gcloud
gcloud vmware dns-bind-permission grant \ --user=USER
USER를 비공개 DNS 영역을 인트라넷 VPC와 결합하려는 사용자의 이메일로 바꿉니다. 예를 들면 example1@gmail.com
입니다.
API
POST
요청을 dnsBindPermissions:grant
메서드에 보내고 요청 본문에 사용자 이메일 주소를 제공합니다.
curl -X POST -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dnsBindPermission:grant -d ' { "principal": { "user": "USER" } }'
다음을 바꿉니다.
PROJECT_ID
: 이 요청의 프로젝트USER
: 권한을 취소하려는 사용자의 이메일. 예를 들면example1@gmail.com
입니다.
DNS 바인딩 권한 취소
이전에 사용자에게 부여된 DNS 바인딩 권한을 취소합니다.
gcloud
gcloud vmware dns-bind-permission revoke \ --user=USER
USER를 권한을 취소하려는 사용자의 이메일로 바꿉니다. 예를 들면 example1@gmail.com
입니다.
API
POST
요청을 dnsBindPermissions:revoke
에 보내고 요청 본문에 사용자 이메일 주소를 제공합니다.
curl -X POST -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dnsBindPermission:revoke -d ' { "principal": { "user": "USER" } }'
다음을 바꿉니다.
PROJECT_ID
: 이 요청의 프로젝트USER
: 권한을 취소하려는 사용자의 이메일. 예를 들면example1@gmail.com
입니다.
DNS 바인딩 권한 설명
프로젝트에 대한 DNS 바인딩 권한과 DNS 바인딩을 구성하기 위해 액세스할 수 있는 사용자 주 구성원을 설명합니다.
gcloud
gcloud vmware dns-bind-permission describe
API
GET
요청을 dnsBindPermissions
리소스에 보냅니다.
curl -X GET -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dnsBindPermission
PROJECT_ID
를 이 요청의 프로젝트로 바꾸세요.
VMware Engine 네트워크 인트라넷 VPC와 프라이빗 Cloud DNS 영역 바인딩
사용자 주 구성원에게 DNS 바인딩을 구성할 수 있는 권한을 부여하면 사용자는 Cloud DNS의 비공개 DNS 영역과 VMware Engine Network의 인트라넷 VPC 사이에 바인딩을 만들 수 있습니다. VMware Engine은 DNS 피어링을 사용하여 Cloud DNS 변환을 지원합니다.
인트라넷 VPC URL 찾기
새 바인딩을 만들려면 네트워크 인트라넷 VPC URL이 필요합니다. VMware Engine 네트워크의 세부정보를 나열하여 VMware Engine 네트워크 인트라넷 VPC를 찾을 수 있습니다.
콘솔
Google Cloud 콘솔을 사용하여 인트라넷 VPC URL을 찾으려면 다음 단계를 수행합니다.
Google Cloud 콘솔에서 VMware Engine 네트워크 페이지로 이동합니다.
VMware Engine 네트워크를 찾아 작업 옵션을 클릭하고 인트라넷 VPC 네트워크 URL 복사를 선택합니다.
gcloud
gcloud vmware networks describe VMWARE_ENGINE_NETWORK
VMWARE_ENGINE_NETWORK
를 설명할 네트워크로 바꿉니다. 응답의 일부로 gcloud
는 인트라넷 VPC URL이 포함된 네트워크의 세부정보를 반환합니다.
API
GET
요청을 vmwareEngineNetworks
리소스에 보내고 네트워크 이름을 제공합니다.
curl -X GET -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/vmwarenEngineNetworks/NETWORK_ID
다음을 바꿉니다.
PROJECT_ID
: 이 요청의 프로젝트입니다.NETWORK_ID
: 설명할 네트워크입니다.
Binding
바인딩 권한이 구성되면, 의도된 워크플로우는 VMware Engine 네트워크 인트라넷 VPC를 각 영역에 대한 표준 Cloud DNS 영역 관리 프로세스에 DNS 피어링을 추가하는 것입니다.
gcloud
gcloud dns managed-zones create peering-DOMAIN \ --dns-name="DOMAIN" \ --visibility="private" \ --networks="INTRANET_VPC_URL" \ --target-project="PROJECT_ID" \ --target-network="EXISTING_VPC" \ --description="DESCRIPTION"
다음을 바꿉니다.
DOMAIN
: 확장할 도메인(예:zone1.example.com
)입니다.INTRANET_VPC_URL
: VMware Engine 네트워크의 인트라넷 VPC URL입니다.EXISTING_VPC
:DOMAIN
이 이미 바인딩된 기존 VPC 네트워크의 URL입니다.PROJECT_ID
: 이 요청의 프로젝트 ID입니다.
API
PATCH
요청을 managedZones
리소스에 보내고 영역 이름을 제공합니다.
curl -X POST -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json; charset=utf-8" https://dns.googleapis.com/v1/projects/PROJECT_ID/managedZones -d "{ "name": "peering-DOMAIN", "description": "", "dnsName": DOMAIN, "peeringConfig": { "targetNetwork": { "networkUrl": EXISTING_VPC } }, "privateVisibilityConfig": { "networks": [ { "networkUrl": INTRANET_VPC_URL } ] } }"
다음을 바꿉니다.
PROJECT_ID
: 이 요청의 프로젝트 ID입니다.DOMAIN
: 확장할 도메인(예:zone1.example.com
)입니다.INTRANET_VPC_URL
: VMware Engine 네트워크의 인트라넷 VPC URL입니다.EXISTING_VPC
: DOMAIN이 이미 바인딩된 기존 VPC 네트워크의 URL입니다.
DNS 바인딩 예시
다음은 사용할 수 있는 DNS 결합 예시입니다.
권한
gcloud dns managed-zones create zone1 \ --dns-name="zone1.example.com." \ --visibility="private" \ --description="DESCRIPTION" \ --networks="EXISTING_VPC"
gcloud dns managed-zones create peering-zone1 \ --dns-name="zone1.example.com." \ --visibility="private" \ --networks="INTRANET_VPC_URL" \ --target-project="PROJECT_ID" \ --target-network="EXISTING_VPC" \ --description="DESCRIPTION"
조건부 전달
gcloud dns managed-zones create zone1 \ --description="DESCRIPTION" \ --dns-name="zone1.example.com." \ --visibility="private" \ --networks=EXISTING_VPC \ --forwarding-targets="DNS_SERVER_IP1","DNS_SERVER_IP2"
gcloud dns managed-zones create peering-zone1 \ --dns-name="zone1.example.com." \ --visibility="private" \ --networks="INTRANET_VPC_URL" \ --target-project="PROJECT_ID" \ --target-network="EXISTING_VPC" \ --description="DESCRIPTION"
모두 전달
gcloud dns managed-zones create forward-all \ --description="" --dns-name="." \ --visibility="private" \ --networks="EXISTING_VPC" \ --forwarding-targets="DNS_SERVER_IP1","DNS_SERVER_IP2"
gcloud dns managed-zones create peering-forward-all \ --dns-name="." \ --visibility="private" \ --networks="INTRANET_VPC_URL" \ --target-project="PROJECT_ID" \ --target-network="EXISTING_VPC" \ --description="DESCRIPTION"
Google API Private
gcloud dns managed-zones create googleapis \ --dns-name="googleapis.com." \ --visibility="private" \ --description="Direct GCVE traffic to Private IPs for Google API Access" \ --networks="EXISTING_VPC"
gcloud dns managed-zones create peering-googleapis \ --dns-name="googleapis.com." \ --visibility="private" \ --networks="INTRANET_VPC_URL" \ --target-project="PROJECT_ID" \ --target-network="EXISTING_VPC" \ --description="DESCRIPTION"
gcloud dns record-sets create private.googleapis.com. \ --zone="googleapis" \ --type="A" \ --ttl="300" \ --rrdatas="199.36.153.8,199.36.153.9,199.36.153.10,199.36.153.11"
gcloud dns record-sets create *.googleapis.com. \ --zone="googleapis" \ --type="CNAME" \ --ttl="300" \ --rrdatas="private.googleapis.com."
Google API 제한됨
gcloud dns managed-zones create googleapis \ --dns-name="googleapis.com." \ --visibility="private" \ --description="Direct GCVE traffic to Private IPs for Google API Access" \ --networks="EXISTING_VPC"
gcloud dns managed-zones create peering-googleapis \ --dns-name="googleapis.com." \ --visibility="private" \ --networks="INTRANET_VPC_URL" \ --target-project="PROJECT_ID" \ --target-network="EXISTING_VPC" \ --description="DESCRIPTION"
gcloud dns record-sets create restricted.googleapis.com. \ --zone="googleapis" \ --type="A" \ --ttl="300" \ --rrdatas="199.36.153.4, 199.36.153.5, 199.36.153.6, 199.36.153.7"
gcloud dns record-sets create *.googleapis.com. \ --zone="googleapis" \ --type="CNAME" \ --ttl="300" \ --rrdatas="restricted.googleapis.com."