DNS 영역 만들기

이 문서에서는 DNS 영역을 사용하여 Google Distributed Cloud (GDC) 에어 갭의 새 도메인에 DNS 변환을 구성하는 방법을 안내합니다. DNS 영역을 사용하여 DNS 레코드 집합을 그룹화하고 해당 레코드가 GDC의 가상 프라이빗 클라우드 (VPC) 외부에 표시되는지 여부를 제어합니다.

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

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

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

공개 및 비공개 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를 가져야 합니다.

다음 단계