DNS 영역 만들기

이 문서에서는 DNS 영역을 사용하여 Google Distributed Cloud (GDC) 에어 갭에서 새 도메인의 DNS 변환을 구성하는 방법을 안내합니다. DNS 영역을 사용하여 DNS 레코드 집합을 함께 그룹화하고 GDC의 Virtual Private Cloud (VPC) 외부에서 이러한 레코드를 볼 수 있는지 여부를 제어합니다.

이 문서의 대상은 조직의 DNS 확인을 관리하는 플랫폼 관리자 및 애플리케이션 운영자입니다.

GDC 환경에서 서비스의 공개 상태 및 액세스 요구사항에 맞게 공개 또는 비공개 DNS 영역을 만들 수 있습니다.

  • 외부 네트워크 공개 상태 및 액세스가 필요한 서비스의 경우: 네트워크 외부의 사용자와 시스템이 서비스에 액세스할 수 있도록 공개 DNS 영역을 설정합니다. 웹사이트, 공개 API 또는 GDC Cloud 환경 외부에서 연결할 수 있어야 하는 서비스가 있는 경우 도메인 이름을 적절한 IP 주소에 매핑하는 공개 DNS 영역이 필요합니다.
  • 내부 시스템에 대한 보안 및 제한된 액세스가 필요한 서비스의 경우: 비공개 DNS 영역을 설정하여 내부 도메인 이름을 숨기고 내부 서비스에 대한 액세스를 제한합니다. 보안 프로토콜과 비공개 IP 주소만 사용하여 다른 내부 서비스와 통신해야 하는 내부 애플리케이션, 데이터베이스 또는 마이크로서비스가 있는 경우 도메인 이름을 적절한 IP 주소에 매핑하는 비공개 DNS 영역이 필요합니다. 비공개 DNS 영역을 사용하면 이러한 서비스가 외부 네트워크에 존재 또는 IP 주소를 노출하지 않고도 내부 도메인 이름을 사용하여 서로를 찾을 수 있습니다. 이렇게 하면 보안이 강화되고 내부 네트워킹이 간소화됩니다.

공개 DNS 영역과 비공개 DNS 영역의 차이점에 대한 자세한 내용은 Cloud DNS의 영역 유형을 참조하세요.

시작하기 전에

GDC에서 DNS 영역을 구성하고 레코드를 추가하려면 다음이 있어야 합니다.

  • 기존 프로젝트. 자세한 내용은 프로젝트 만들기를 참조하세요.
  • 필요한 ID 및 액세스 역할. 프로젝트의 DNS 영역을 관리하려면 프로젝트 IAM 관리자 에게 관리형 DNS 프로젝트 관리자 (managed-dns-project-admin) 역할을 부여해 달라고 요청하세요.
  • gdcloud CLI를 사용하려면 설치되어 있는지 확인하세요. 자세한 내용은 다음 자료를 참조하세요. gdcloud CLI 설치
  • kubectl을 사용하는 경우 전역 API 서버의 kubeconfig 파일. 이 파일을 아직 생성하지 않은 경우 로그인하기를 참조하세요. 자세한 내용은 전역 및 영역 API 서버를 참조하세요.

공개 DNS 영역 만들기

공개 DNS 영역을 만든 후에는 네트워크의 DNS 리졸버가 요청을 적절한 네임서버로 전달하도록 구성해야 합니다.

영역 만들기

gdcloud CLI 또는 Kubernetes API를 사용하여 공개 DNS 영역을 만들 수 있습니다.

gdcloud

공개 DNS 영역을 만들려면 gdcloud dns managed-zones create 명령어를 사용합니다.

gdcloud dns managed-zones create DNS_ZONE_NAME \
    --dns-name=DOMAIN_NAME \
    --visibility=PUBLIC \
    --description="DESCRIPTION" \
    [--project=PROJECT_NAMESPACE] \
    [--async]

다음을 바꿉니다.

  • DNS_ZONE_NAME: DNS 영역의 이름입니다.
  • DOMAIN_NAME: 공개 DNS 영역의 도메인 이름입니다(예: example.com).
  • DESCRIPTION: DNS 영역에 대한 설명입니다. 예를 들어 Public DNS zone for example.com입니다. 이 필드는 선택사항입니다.
  • PROJECT_NAMESPACE: 프로젝트의 네임스페이스입니다. gdcloud config set project를 사용하여 전역적으로 기본 프로젝트를 설정한 경우 이 플래그는 선택사항입니다.
  • --async: 작업이 완료될 때까지 기다리지 않고 명령어가 즉시 반환되도록 하려면 이 플래그를 지정합니다. describe를 사용하여 작업 상태를 확인할 수 있습니다.

API

GDC에서 Kubernetes API를 사용하여 공개 DNS 영역을 만듭니다.

  1. ManagedDNSZone 리소스를 만들고 적용하여 GDC 외부에서 액세스할 수 있는 DNS 영역을 만듭니다.

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ManagedDNSZone
    metadata:
      name: DNS_ZONE_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      dnsName: DOMAIN_NAME
      description: DESCRIPTION
      visibility: PUBLIC
    EOF
    

    다음을 바꿉니다.

    • GLOBAL_API_SERVER: 전역 API 서버의 kubeconfig 경로입니다. 자세한 내용은 전역 및 영역 API 서버를 참조하세요. API 서버의 kubeconfig 파일을 아직 생성하지 않은 경우 자세한 내용은 로그인하기를 참조하세요.
    • DNS_ZONE_NAME: DNS 영역의 이름입니다.
    • PROJECT_NAMESPACE: 프로젝트의 네임스페이스입니다.
    • DOMAIN_NAME: 공개 DNS 영역의 도메인 이름입니다(예: example.com).
    • DESCRIPTION: DNS 영역에 대한 설명입니다. 예를 들어 Public DNS zone for example.com입니다. 이 필드는 선택사항입니다.

    visibility는 대소문자를 구분하며 정확한 값 PUBLIC을 가져야 합니다.

DNS 리졸버 구성

공개 DNS 영역의 경우 해당 DNS 영역의 DNS 요청을 해당 DNS 영역을 호스팅하는 GDC의 네임서버로 전달하도록 네트워크의 DNS 리졸버를 구성해야 합니다.

  1. 생성한 ManagedDNSZone의 네임서버를 가져옵니다. 이 단계에서는 kubectl을 사용해야 합니다.

    kubectl --kubeconfig GLOBAL_API_SERVER get manageddnszones DNS_ZONE_NAME -n PROJECT_NAMESPACE -oyaml
    

    다음을 바꿉니다.

    • GLOBAL_API_SERVER: 전역 API 서버의 kubeconfig 경로입니다. 자세한 내용은 전역 및 영역 API 서버를 참조하세요. API 서버의 kubeconfig 파일을 아직 생성하지 않은 경우 자세한 내용은 로그인하기를 참조하세요.
    • DNS_ZONE_NAME: DNS 영역의 이름입니다.
    • PROJECT_NAMESPACE: 프로젝트의 네임스페이스입니다. gdcloud config set project를 사용하여 전역적으로 기본 프로젝트를 설정한 경우 이 플래그는 선택사항입니다.

    네임서버가 상태 출력에 나열됩니다.

      apiVersion: networking.global.gdc.goog/v1
      kind: ManagedDNSZone
      metadata:
        name: DNS_ZONE_NAME
        namespace: PROJECT_NAMESPACE
      spec:
        dnsName: example.com
        description: "Public DNS zone for example.com"
        visibility: PUBLIC
      status:
      
      nameServers:
        - ns.managed-dns-public.gdc1.staging.gpcdemolabs.com
    
  2. 새 영역의 DNS 요청을 전달하도록 네트워크의 DNS 리졸버를 업데이트합니다. 이 예에서는 example.com의 요청을 ns.managed-dns-public.gdc1.staging.gpcdemolabs.com으로 전달하도록 DNS 리졸버를 업데이트해야 합니다. 이 구성에서는 확인자가 GDC의 인프라 DNS 영역 gdc1.staging.gpcdemolabs.com의 DNS 요청을 적절하게 전달하는 데 필요한 구성을 이미 가지고 있다고 가정합니다.

비공개 DNS 영역 만들기

gdcloud CLI 또는 Kubernetes API를 사용하여 비공개 DNS 영역을 만들 수 있습니다.

gdcloud

비공개 DNS 영역을 만들려면 gdcloud dns managed-zones create 명령어를 사용합니다.

gdcloud dns managed-zones create DNS_ZONE_NAME \
    --dns-name=DOMAIN_NAME \
    --visibility=PRIVATE \
    --description="DESCRIPTION" \
    [--project=PROJECT_NAMESPACE] \
    [--async]

다음을 바꿉니다.

  • DNS_ZONE_NAME: DNS 영역의 이름입니다.
  • DOMAIN_NAME: 비공개 DNS 영역의 도메인 이름입니다(예: example.com).
  • DESCRIPTION: DNS 영역에 대한 설명입니다. 예를 들어 Private DNS zone for example.com입니다. 이 필드는 선택사항입니다.
  • PROJECT_NAMESPACE: 프로젝트의 네임스페이스입니다. gdcloud config set project를 사용하여 전역적으로 기본 프로젝트를 설정한 경우 이 플래그는 선택사항입니다.
  • --async: 작업이 완료될 때까지 기다리지 않고 명령어가 즉시 반환되도록 하려면 이 플래그를 지정합니다. describe를 사용하여 작업 상태를 확인할 수 있습니다.

API

Kubernetes API를 사용하여 비공개 DNS 영역을 만듭니다.

  • ManagedDNSZone 리소스를 만들고 적용하여 기본 고객 VPC 내에서만 액세스할 수 있는 DNS 영역을 만듭니다.

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ManagedDNSZone
    metadata:
      name: DNS_ZONE_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      dnsName: DOMAIN_NAME
      description: DESCRIPTION
      visibility: PRIVATE
    EOF
    

    다음을 바꿉니다.

    • GLOBAL_API_SERVER: 전역 API 서버의 kubeconfig 경로입니다. 자세한 내용은 전역 및 영역 API 서버를 참조하세요. API 서버의 kubeconfig 파일을 아직 생성하지 않은 경우 자세한 내용은 로그인하기를 참조하세요.
    • DNS_ZONE_NAME: DNS 영역의 이름입니다.
    • PROJECT_NAMESPACE: 프로젝트의 네임스페이스입니다.
    • DOMAIN_NAME: 비공개 DNS 영역의 도메인 이름입니다(예: example.com).
    • DESCRIPTION: DNS 영역에 대한 설명입니다. 예를 들어 Private DNS zone for example.com입니다. 이 필드는 선택사항입니다.

    visibility는 대소문자를 구분하며 정확한 값 PRIVATE을 가져야 합니다.

다음 단계