テストドメインの使用

カスタム ドメインをマッピングする前に、クラスタ内の Knative serving サービスをテスト用にアクセスする方法について説明します。

デフォルトでは、Knative serving クラスタにデプロイするサービスは nip.io ベースドメインに設定されます。そのため、Ingress ゲートウェイに推奨の名前を使用すると、追加構成なしでサービスをすぐにテストし、リクエストを送信できます。例: http://{SERVICE_NAME}.{NAMESPACE}.kuberun.{EXTERNAL_IP}.nip.io

なお、無料の DNS ワイルドカード サービスである nip.io ドメインなどの DNS ワイルドカードを使用する場合、リクエストの信頼性に関して問題が生じる可能性があります。対照的に、テスト用のカスタム ドメインを設定して使用すると、信頼性が向上します。

必要に応じて、外部 IP アドレスからサービスにアクセスすることもできます。

nip.io テストドメインの使用

デフォルトの nip.io ベースドメインを使用してサービスにアクセスするには、Google Cloud コンソール内から 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 は Namespace、11.111.11.111 は外部ロードバランサの IP アドレスです。

手動

サービスの URL を手動で作成するには、サービスの名前、サービスが動作している Namespace、ロードバランサの IP アドレスを使用します。

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

次のように置き換えます。

  • SERVICE_NAME: 実際のサービスの名前。
  • NAMESPACE: サービスをデプロイした Namespace。デフォルトでは、サービスは default Namespace にデプロイされます。
  • EXTERNAL_IP: ロードバランサの外部 IP アドレス

たとえば、default Namespace に 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 Ingress コントローラは一般公開されている IP アドレスで Google Cloud ネットワーク ロードバランサを作成します。

cURL サービスや DNS サービスでサービスへのアクセスを構成するには、まず、ロードバランサ サービスの外部 IP アドレスを取得する必要があります。

コンソール

Google Cloud コンソールからロードバランサの外部 IP アドレスを取得するには:
  1. Google Cloud コンソールの GKE ページに移動します。
    GKE に移動
  2. [Services と ingress] をクリックします。
  3. クラスタの Istio Ingress のサービスを特定します。Service のタイプ外部ロードバランサで、名前istio-ingressgateway になります。
  4. クラスタの Istio Ingress サービスが見つかったら、そのエンドポイントをコピーします。これは、ポート番号なしの 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 Ingress が配置されている Namespace に置き換えます。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 の使用

デフォルトの nip.io ベースドメインで cURL コマンドを使用して、サービスにリクエストを送信できます。

cURL コマンドでは、サービスの名前や Namespace とともにロードバランサの外部 IP アドレスを指定します。

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

次のように置き換えます。

  • SERVICE_NAME: Knative serving サービスの名前。
  • NAMESPACE: サービスが動作している 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 サービスが使用するベースドメインを定義します。ConfigMap は、Google Cloud コンソールまたは kubectl コマンドを使用して更新できます。

コンソール

Google Cloud コンソールで、デフォルトのベースドメインを nip.io から DNS ワイルドカード サービスに変更するには:

  1. Google Cloud コンソールで Knative serving の [ドメイン マッピング] ページに移動します。

    [ドメイン マッピング] に移動

  2. [マッピングを追加] > [クラスタのデフォルト ドメインを追加] の順に選択します。

  3. 「このドメイン マッピングを、クラスタにデプロイされたすべての Knative serving サービスに適用します」の横にあるチェックボックスをオンにします。

  4. プルダウン メニューからクラスタを選択します。

  5. [ドメイン] フィールドに、使用するワイルドカード DNS サイトを入力します。例: sslip.io

kubectl

デフォルトのベースドメインを nip.io から DNS ワイルドカード サイトの 1 つに変更するには、次のコマンドを使用します。

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} で使用可能になります。