ワイルドカード DNS レコードを使用してクラスタのドメインを構成する方法について説明します。サービスがリクエストを受け入れ、テスト目的でのアクセスを許可するようにドメインを構成する必要があります。
デフォルトでは、Cloud Run for Anthos クラスタは example.com
ベースドメインを使用し、サービスに対するリクエストを許可しません。たとえば、http://{service}.{namespace}.example.com
へのリクエストの送信は失敗します。
クラスタ内のサービスがリクエストを受け入れるには、次のいずれかを使用するようにドメインを構成する必要があります。
- 無料の DNS ワイルドカード サービス
- 独自のカスタム ドメイン詳細については、カスタム ドメインのマッピングをご覧ください。
リクエストの信頼性に関する問題があるため、DNS ワイルドカード レコードはテスト目的でのみ使用してください。ワイルドカード DNS レコードの詳細をご覧ください。
始める前に
Google Cloud CLI と kubectl がインストールされ、構成されていることを確認します。
ワイルドカード DNS サービスとカスタム ドメインの選択
開発とテストでは、デフォルト ドメインを変更してワイルドカード DNS のテストサイトを使用できます。次に例を示します。
テストに使用するドメインがすでにある場合や、テスト用にドメインを購入したくない場合は、独自のドメインを使用するようにデフォルト ドメインを設定できます。カスタム ドメインを使用すると、テストの信頼性が向上します。
外部 IP アドレスを取得する
続行する前に、Istio Ingress コントローラに作成されたロードバランサ サービスの外部 IP アドレスを取得する必要があります。
Console
Google Cloud コンソールからロードバランサの外部 IP アドレスを取得するには:
Google Cloud コンソールの GKE ページに移動します。
GKE ページに移動[Services と ingress] をクリックします。
クラスタの Istio Ingress コントローラのサービスを特定します。Service のタイプは外部ロードバランサです。次の表に、クラスタのバージョンに基づく Service の名前を示します。
クラスタのバージョン ISTIO-GATEWAY 1.15.3-gke.19
以降1.14.3-gke.12
以降1.13.10-gke.8
以降istio-ingress
他のすべてのバージョン istio-ingressgateway
クラスタの Istio Ingress コントローラが見つかったら、そのエンドポイントをコピーします。これは、ポート番号なしの IP アドレスになります。たとえば、
00.000.000.000:11
がエンドポイントとして表示される場合がありますが、00.000.000.000
のコピーが必要です。
コマンドライン
Istio Ingress ゲートウェイの外部 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
ワイルドカード サービスを使用している場合は、クラスタ構成を編集するときに外部 IP アドレスが必要になります。独自のカスタム ドメインを使用している場合、ドメイン登録事業者でレコードを作成または更新するときに外部 IP アドレスが必要になります。
クラスタのドメインの構成
Cloud Run for Anthos は、config-domain
ConfigMap を使用して、クラスタにデプロイされたすべてのサービスのベースドメインを定義します。この構成を編集するコマンドは、ワイルドカード DNS サービスを使用しているか、独自のカスタム ドメインを使用するかによって異なります。後でデフォルトのクラスタ ドメインを更新する場合は、異なる値を使用してこれらの手順を繰り返します。
DNS ワイルドカード サービスでのテスト
xip.io
では、DNS ワイルドカード サービスを使用するようにドメインを構成していますが、任意のサービスに置き換えることができます。
コンソール
Cloud コンソールで、デフォルトのベースドメインを example.com
から DNS ワイルドカード サービス(xip.io
など)に変更するには:
Google Cloud コンソールで Cloud Run for Anthos の [ドメイン マッピング] ページに移動します。
[マッピングを追加] > [クラスタのデフォルト ドメインを追加] の順に選択します。
[Apply this domain mapping to all Cloud Run for Anthos services deployed to this cluster] の横にあるチェックボックスをオンにします。
プルダウン メニューからクラスタを選択します。
[ドメイン] フィールドに「[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 を更新します。
コンソール
Google Cloud コンソールで Cloud Run for Anthos の [ドメイン マッピング] ページに移動します。
[マッピングを追加] > [クラスタのデフォルト ドメインを追加] の順に選択します。
[Apply this domain mapping to all Cloud Run for Anthos services deployed to this cluster] の横にあるチェックボックスをオンにします。
プルダウン メニューからクラスタを選択します。
[ドメイン] にドメイン名を入力します。例:
example.com
コマンドライン
次のコマンドを使用して、カスタム ドメインを指定します。
kubectl patch configmap config-domain --namespace knative-serving --patch \ '{"data": {"example.com": null, "[DOMAIN]": ""}}'
[DOMAIN] は、実際のドメイン(mydomain.com
など)に置き換えます。上記のコマンドにより、example.com
が ConfigMap から削除され、mydomain.com
がデフォルトのベースドメインとして追加されます。これを別のドメインに変更する場合は、同じコマンドを使用できます。
残りの手順は、ドメイン登録事業者のウェブサイトで行う必要があります。
ドメイン登録事業者のアカウントにログインし、DNS 構成ページを開きます。
ドメインの構成ページのホストレコードのセクションに移動し、必要なリソース レコードを追加します。
DNS プロバイダでアカウントに DNS レコードを追加するには:
- レコードタイプ
A
を選択します。 次の例のように、ワイルドカード
*
を指定します。
- レコードタイプ
ドメインのアカウントの DNS 構成ページで変更を保存します。通常、この変更が反映されるまでに数分しかかかりませんが、登録事業者やドメインの以前の DNS レコードに設定されている有効期間(TTL)によっては、数時間かかることもあります。
DNS レコードを更新してクラスタを設定すると、{service-name}.{namespace}.{your-domain}
でサービスが使用できるようになります。