カスタム ドメインをマッピングする前に、クラスタ内の 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 を手動で作成します。
コンソール
Google Cloud コンソールで、[Knative serving] ページに移動します。
リストで、URL を取得するサービスをクリックします。
ページの上部付近に 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 ワイルドカード サービスを手動で構成して、サービスにアクセスできます。
始める前に
Google Cloud CLI と kubectl コマンドライン ツールがインストールされ、最新であることを確認します。
少なくとも Kubernetes Engine デベロッパーの Identity and Access Management ロールまたは同等の権限が必要です。
外部 IP アドレスを取得する
GKE Enterprise クラスタが作成されると、Istio Ingress コントローラは一般公開されている IP アドレスで Google Cloud ネットワーク ロードバランサを作成します。
cURL サービスや DNS サービスでサービスへのアクセスを構成するには、まず、ロードバランサ サービスの外部 IP アドレスを取得する必要があります。
Console
Google Cloud Console からロードバランサの外部 IP アドレスを取得するには:- Google Cloud コンソールの GKE ページに移動します。
GKE に移動 - [Services と ingress] をクリックします。
- クラスタの Istio Ingress のサービスを特定します。Service のタイプは外部ロードバランサで、名前は
istio-ingressgateway
になります。 - クラスタの 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 ワイルドカード サービスに変更するには:
Google Cloud コンソールで Knative serving の [ドメイン マッピング] ページに移動します。
[マッピングを追加] > [クラスタのデフォルト ドメインを追加] の順に選択します。
[Apply this domain mapping to all Knative serving services deployed to this cluster] の横にあるチェックボックスをオンにします。
プルダウン メニューからクラスタを選択します。
[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}
で使用可能になります。