테스트 도메인 사용

커스텀 도메인 매핑을 선택하기 전에 클러스터에서 Knative serving 서비스에 액세스하는 방법을 알아보세요.

기본적으로 Knative serving 클러스터에 배포하는 서비스는 nip.io 기본 도메인으로 설정됩니다. 따라서 인그레스 게이트웨이에 권장 이름을 사용하면 서비스를 즉시 테스트하고 추가 구성 없이 요청을 보낼 수 있습니다. 예를 들면 http://{SERVICE_NAME}.{NAMESPACE}.kuberun.{EXTERNAL_IP}.nip.io입니다.

무료 DNS 와일드카드 서비스인 nip.io 도메인을 포함하여 DNS 와일드카드를 사용할 때 요청 안정성과 관련된 문제가 있을 수 있습니다. 이와 달리 테스트에 커스텀 도메인을 설정하고 사용하면 안정성을 높일 수 있습니다.

필요한 경우 외부 IP 주소를 통해 서비스에 액세스할 수도 있습니다.

nip.io 테스트 도메인 사용

기본 nip.io 기본 도메인을 사용하여 서비스에 액세스하려면 Google Cloud Console 내에서 URL을 찾거나 수동으로 URL을 구성하면 됩니다.

콘솔

  1. Google Cloud 콘솔에서 Knative serving 페이지로 이동합니다.

    Knative serving으로 이동

  2. 목록에서 URL을 가져올 서비스를 클릭합니다.

  3. 페이지 상단에 URL이 표시됩니다.

    예: http://my-service.default.kuberun.11.111.11.111.nip.io

    여기서 my-service는 Knative serving 서비스의 이름이고 default는 네임스페이스이며 11.111.11.111은 외부 부하 분산기의 IP 주소입니다.

수동

서비스에 대한 URL을 수동으로 구성하려면 서비스 이름, 서비스가 실행되는 네임스페이스, 부하 분산기의 IP 주소를 사용합니다.

http://SERVICE.NAMESPACE.kuberun.EXTERNAL_IP.nip.io

다음과 같이 바꿉니다.

  • SERVICE_NAME를 서비스 이름으로 바꿉니다.
  • NAMESPACE를 서비스를 배포한 네임스페이스로 바꿉니다. 기본적으로 서비스는 default 네임스페이스에 배포됩니다.
  • EXTERNAL_IP를 부하 분산기의 외부 IP 주소로 바꿉니다.

예를 들어 default 네임스페이스에 hello라는 서비스가 있고 외부 IP 주소가 12.345.67.890이면 URL은 다음과 같습니다.

http://hello.default.kuberun.12.345.67.890.nip.io

외부 IP 주소 사용

선택적으로 부하 분산기의 외부 IP 주소를 사용하여 cURL 명령어를 통하거나 대체 DNS 와일드 카드 서비스를 수동으로 구성하여 서비스에 액세스할 수 있습니다.

시작하기 전에

외부 IP 주소 가져오기

GKE Enterprise 클러스터가 생성되면 Istio 인그레스 컨트롤러에서 공개적으로 사용 가능한 IP 주소로 Google Cloud 네트워크 부하 분산기를 만듭니다.

cURL 또는 DNS 서비스를 사용하여 서비스에 대한 액세스를 구성하려면 먼저 부하 분산기 서비스의 외부 IP 주소를 가져와야 합니다.

콘솔

Google Cloud Console에서 부하 분산기의 외부 IP 주소를 가져오려면 다음 단계를 따르세요.
  1. Google Cloud 콘솔의 GKE 페이지로 이동합니다.
    GKE로 이동
  2. 서비스 및 인그레스를 클릭합니다.
  3. 클러스터의 Istio 인그레스 서비스를 식별합니다. 서비스의 유형외부 부하 분산기이고 이름istio-ingressgateway입니다.
  4. 클러스터의 Istio 인그레스 서비스를 찾았으면 엔드포인트를 복사합니다. 이는 포트 번호가 없는 IP 주소입니다. 예를 들어 00.000.000.000:11이 엔드포인트로 표시되지만 00.000.000.000만 복사하면 됩니다.

kubectl

부하 분산기의 외부 IP를 가져오려면 다음 명령어를 실행합니다.

kubectl get svc istio-ingressgateway -n ASM-INGRESS-NAMESPACE

ASM-INGRESS-NAMESPACE를 Cloud Service Mesh 인그레스가 있는 네임스페이스로 바꿉니다. 기본 구성을 사용하여 Cloud Service Mesh를 설치한 경우 istio-system을 지정합니다.

결과 출력은 다음과 유사합니다.

NAME                   TYPE           CLUSTER-IP     EXTERNAL-IP  PORT(S)
istio-ingressgateway   LoadBalancer   XX.XX.XXX.XX   pending      80:32380/TCP,443:32390/TCP,32400:32400/TCP

여기서 EXTERNAL-IP 값은 부하 분산기의 외부 IP 주소입니다.

부하 분산기의 외부 IP 주소를 가져온 후 cURL 명령어 또는 DNS 와일드 카드 서비스와 함께 사용하여 Knative serving 서비스에 액세스할 수 있습니다.

cURL 사용

cURL 명령어를 기본 nip.io 기본 도메인과 함께 사용하여 서비스에 요청을 보낼 수 있습니다.

cURL 명령어에 서비스 및 네임스페이스의 이름과 함께 부하 분산기의 외부 IP 주소를 지정합니다.

curl --header 'Host: SERVICE_NAME.NAMESPACE.kuberun.EXTERNAL_IP.nip.io' EXTERNAL_IP

다음과 같이 바꿉니다.

  • SERVICE_NAME을 Knative serving 서비스의 이름으로 바꿉니다.
  • NAMESPACE를 서비스가 실행되는 네임스페이스로 바꿉니다.
  • EXTERNAL_IP를 부하 분산기의 외부 IP 주소로 바꿉니다.

예:

curl --header 'Host: my-service.default.kuberun.12.345.67.890.nip.io' http://12.345.67.890

다른 DNS 와일드 카드 서비스 사용

기본적으로 Knative serving 서비스는 nip.io DNS 와일드 카드 서비스를 사용합니다. 하지만 sslip.io와 같은 다른 서비스를 사용할 수도 있습니다. 다른 DNS 와일드 카드 서비스를 구성하려면 먼저 부하 분산기의 외부 IP 주소를 가져온 다음 해당 IP 주소를 사용하여 DNS 와일드 카드 서비스를 구성해야 합니다.

클러스터의 도메인 구성

Knative serving은 config-domain ConfigMap을 사용하여 배포된 모든 Knative serving 서비스에 사용되는 기본 도메인을 정의합니다. Google Cloud 콘솔 또는 kubectl 명령어를 통해 해당 ConfigMap을 업데이트할 수 있습니다.

콘솔

기본 도메인을 nip.io에서 Google Cloud 콘솔의 DNS 와일드 카드 서비스 중 하나로 변경하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 Knative serving 도메인 매핑 페이지로 이동합니다.

    도메인 매핑으로 이동

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

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

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

  5. 도메인 입력란에 사용할 와일드 카드 DNS 사이트를 입력합니다. 예를 들면 sslip.io입니다.

kubectl

기본 도메인을 nip.io에서 DNS 와일드 카드 사이트 중 하나로 변경하려면 다음 명령어를 사용하세요.

kubectl patch configmap config-domain --namespace knative-serving --patch \
  '{"data": {"kuberun.EXTERNAL_IP.nip.io": null, "DNS_SERVICE": ""}}'

바꾸기

  • EXTERNAL_IP를 부하 분산기 외부 IP 주소로 바꿉니다.
  • DNS_SERVICE를 사용 중인 와일드 카드 DNS 사이트로 바꿉니다. 예를 들면 sslip.io입니다.

이제 http://{SERVICE_NAME}.{NAMESPACE}.kuberun.{EXTERNAL_IP}.{DNS_SERVICE}에서 서비스를 사용할 수 있습니다.