テストドメインの使用

カスタム ドメインをマッピングする前に、クラスタ内の 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 は名前空間、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 Ingress コントローラは一般公開されている IP アドレスで Google Cloud ネットワーク ロードバランサを作成します。

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

Console

Google Cloud Console からロードバランサの外部 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 は、Anthos Service Mesh Ingress が配置されている Namespace に置き換えます。Anthos 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 コマンドでは、サービスの名前や名前空間とともにロードバランサの外部 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 サービスが使用するベースドメインを定義します。ConfigMap は、Google Cloud コンソールまたは kubectl コマンドを使用して更新できます。

Console

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

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

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

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

  3. [Apply this domain mapping to all Knative serving services deployed to this cluster] の横にあるチェックボックスをオンにします。

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

  5. [Domain] フィールドに、使用するワイルドカード 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} で使用可能になります。