테스트 도메인 사용

와일드 카드 DNS 레코드를 사용하여 클러스터의 도메인을 구성하는 방법을 알아봅니다. 서비스가 요청을 수락하고 테스트 목적으로 액세스를 허용하도록 도메인을 구성해야 합니다.

기본적으로 Cloud Run for Anthos on Google Cloud 클러스터는 example.com 기본 도메인을 사용하며 서비스 요청을 허용하지 않습니다. 예를 들어 http://{service}.{namespace}.example.com에 대한 요청 전송은 실패합니다.

클러스터의 서비스가 요청을 허용하도록 설정하려면 다음 중 하나를 사용하도록 도메인을 구성해야 합니다.

  • 무료 DNS 와일드 카드 서비스
  • 소유한 커스텀 도메인. 자세한 내용은 커스텀 도메인 매핑을 참조하세요.

DNS 와일드 카드 레코드는 요청 안정성과 관련된 문제로 인해 테스트 목적으로만 사용해야 합니다. 와일드 카드 DNS 레코드에 대해 자세히 알아보세요.

시작하기 전에

Cloud SDK 및 kubectl을 설치하고 구성했는지 확인합니다.

와일드 카드 DNS 서비스와 커스텀 도메인 중 선택

개발 및 테스트할 때 와일드 카드 DNS 테스트 사이트를 사용하도록 기본 도메인을 변경할 수 있습니다. 예를 들면 다음과 같습니다.

이미 테스트 목적으로 사용할 도메인이 있는 경우 또는 테스트 목적으로 도메인을 구매해도 상관없는 경우 자체 도메인을 사용하도록 기본 도메인을 설정할 수 있습니다. 커스텀 도메인은 테스트에 대해 더 나은 안정성을 제공합니다.

외부 IP 주소 가져오기

먼저 Istio 인그레스 컨트롤러용으로 만든 부하 분산기 서비스의 외부 IP 주소를 가져와야 합니다.

콘솔

Google Cloud Console에서 부하 분산기의 외부 IP 주소를 가져오려면 다음 단계를 따르세요.

  1. Cloud Console에서 GKE 페이지로 이동합니다.
    GKE 페이지로 이동

  2. 서비스 및 인그레스를 클릭합니다.

  3. 클러스터의 Istio 인그레스 컨트롤러인 서비스를 식별합니다. 서비스의 유형외부 부하 분산기입니다. 다음 표에서는 클러스터 버전에 따른 서비스 이름을 보여줍니다.

    클러스터 버전 ISTIO-GATEWAY
    1.15.3-gke.19 이상
    1.14.3-gke.12 이상
    1.13.10-gke.8 이상
    istio-ingress
    다른 모든 버전 istio-ingressgateway
  4. 클러스터의 Istio 인그레스 컨트롤러를 찾으면 엔드포인트를 복사합니다. 이는 포트 번호가 없는 IP 주소입니다. 예를 들어 00.000.000.000:11이 엔드포인트로 표시되지만 00.000.000.000만 복사하면 됩니다.

명령줄

Istio 인그레스 게이트웨이의 외부 IP를 가져오려면 다음 안내를 따르세요.
kubectl get svc istio-ingress -n gke-system
여기서 결과 출력은 다음과 같이 표시됩니다.
NAME            TYPE           CLUSTER-IP     EXTERNAL-IP  PORT(S)
istio-ingress   LoadBalancer   XX.XX.XXX.XX   pending      80:32380/TCP,443:32390/TCP,32400:32400/TCP
부하 분산기의 EXTERNAL-IP는 반드시 사용해야 하는 IP 주소입니다.

와일드 카드 서비스를 사용 중인 경우 클러스터 구성을 수정할 때 외부 IP 주소가 필요합니다. 커스텀 도메인을 사용하는 경우 도메인 등록기관에서 레코드를 만들거나 업데이트하려면 외부 IP 주소가 필요합니다.

클러스터의 도메인 구성

Cloud Run for Anthos는 config-domain ConfigMap을 사용하여 클러스터에 배포된 모든 서비스의 기본 도메인을 정의합니다. 이 구성을 수정하는 명령어는 와일드 카드 DNS 서비스를 사용하는지 또는 소유한 커스텀 도메인을 사용하는지에 따라 다릅니다. 나중에 기본 클러스터 도메인을 업데이트하려면 다른 값으로 이러한 단계를 반복하면 됩니다.

DNS 와일드 카드 서비스로 테스트

xip.io은 DNS 와일드 카드 서비스를 사용하도록 도메인을 구성하는 방법을 설명하지만 이를 원하는 서비스로 대체할 수 있습니다.

콘솔

기본 도메인을 example.com에서 Cloud Console의 DNS 와일드 카드 서비스 중 하나(예: xip.io)로 변경하려면 다음 단계를 따르세요.

  1. Google Cloud Console에서 Cloud Run for Anthos 도메인 매핑 페이지로 이동합니다.
    도메인 매핑 페이지로 이동

  2. 매핑 추가 > 클러스터 기본 도메인 추가를 선택합니다.

  3. '이 클러스터에 배포된 모든 Cloud Run for Anthos 서비스에 이 도메인 매핑을 적용합니다' 옆의 체크박스를 선택합니다.

  4. 드롭다운 메뉴에서 클러스터를 선택합니다.

  5. 도메인 필드에 [EXTERNAL-IP].xip.io를 입력합니다. 다음과 같이 바꿉니다.

    • [EXTERNAL-IP]를 부하 분산기 외부 IP 주소로 바꿉니다.

    • xip.io를 사용 중인 와일드 카드 DNS 사이트로 바꿉니다.

명령줄

기본 도메인을 example.com에서 DNS 와일드 카드 사이트 중 하나(예: xip.io)로 변경하려면 다음 명령어를 사용합니다.

kubectl patch configmap config-domain --namespace knative-serving --patch \
  '{"data": {"example.com": null, "[EXTERNAL-IP].xip.io": ""}}'

바꾸기

  • [EXTERNAL-IP]를 부하 분산기 외부 IP 주소로 바꿉니다.
  • xip.io를 사용 중인 와일드 카드 DNS 사이트로 바꿉니다.

이제 {service-name}.{namespace}.{[EXTERNAL-IP].xip.io}에서 서비스를 사용할 수 있습니다.

커스텀 도메인으로 테스트

자체 커스텀 도메인을 테스트용으로 사용하려는 경우 다음 단계에 따라 설정하세요.

먼저 도메인을 가리키도록 클러스터의 ConfigMap을 업데이트합니다.

콘솔

  1. Google Cloud Console에서 Cloud Run for Anthos 도메인 매핑 페이지로 이동합니다.
    도메인 매핑 페이지로 이동

  2. 매핑 추가 > 클러스터 기본 도메인 추가를 선택합니다.

  3. '이 클러스터에 배포된 모든 Cloud Run for Anthos 서비스에 이 도메인 매핑을 적용합니다' 옆의 체크박스를 선택합니다.

  4. 드롭다운 메뉴에서 클러스터를 선택합니다.

  5. 도메인 필드에 도메인 이름을 입력합니다. 예: example.com

명령줄

다음 명령어를 사용하여 커스텀 도메인을 지정합니다.

kubectl patch configmap config-domain --namespace knative-serving --patch \
'{"data": {"example.com": null, "[DOMAIN]": ""}}'

[DOMAIN]을 소유한 도메인으로 바꿉니다(예: mydomain.com). 위의 명령어는 ConfigMap에서 example.com를 삭제하고 mydomain.com를 기본 도메인으로 추가합니다. 다른 도메인으로 다시 변경하려면 이 명령어를 반복하면 됩니다.

도메인 등록기관의 웹사이트에서 나머지 단계를 수행해야 합니다.

  1. 본인 계정으로 도메인 등록기관에 로그인하고 DNS 구성 페이지를 엽니다.

  2. 도메인 구성 페이지의 호스트 레코드 섹션을 찾은 다음 필요한 리소스 레코드를 추가합니다.

    1. DNS 레코드를 DNS 제공업체의 계정에 추가하려면 다음을 수행하세요.

      • 레코드 유형 A를 선택합니다.
      • 다음 예시와 같이 와일드 카드 *를 입력합니다.

        DNS 와일드 카드

    2. 도메인 계정의 DNS 구성 페이지에 변경사항을 저장합니다. 대부분의 경우 변경사항이 적용되는 데 몇 분 정도 걸리지만 도메인에 대한 이전 DNS 레코드의 등록기관 및 TTL(수명)에 따라 몇 시간이 걸릴 수도 있습니다.

DNS 레코드를 업데이트하고 클러스터를 가리키면 {service-name}.{namespace}.{your-domain}에서 서비스를 사용할 수 있습니다.