使用測試網域

瞭解如何存取叢集中的 Knative serving 服務,以便在選擇對應自訂網域前進行測試。

根據預設,您部署至 Knative serving 叢集的服務會設為 nip.io 基本網域。因此,如果您使用建議的 Ingress 閘道名稱,即可立即測試服務及傳送要求,不必進行額外設定。例如: http://{SERVICE_NAME}.{NAMESPACE}.kuberun.{EXTERNAL_IP}.nip.io

請注意,使用 DNS 萬用字元 (包括免費的 DNS 萬用字元服務 nip.io 網域) 時,可能會發生要求可靠性問題。相較之下,設定及使用自訂網域進行測試,可提高可靠性。

您也可以選擇透過外部 IP 位址存取服務。

使用 nip.io 測試網域

如要使用預設 nip.io 基礎網域存取服務,您可以從 Google Cloud 控制台中找出網址,也可以手動建構網址。

控制台

  1. 前往 Google Cloud 控制台的「Knative serving」頁面。

    前往 Knative serving

  2. 在清單中,按一下要取得網址的服務。

  3. 頁面頂端附近會顯示 網址

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

    其中 my-service 是 Knative 服務服務的名稱,default 是命名空間,11.111.11.111 則是外部負載平衡器的 IP 位址。

手動

如要手動建構服務網址,請使用服務名稱、該服務執行的命名空間,以及負載平衡器的 IP 位址:

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

取代:

  • SERVICE_NAME 改為您的服務名稱。
  • NAMESPACE 替換為您部署服務的命名空間。根據預設,服務會部署到 default 命名空間。
  • EXTERNAL_IP 改成負載平衡器的外部 IP 位址

舉例來說,如果您在 default 命名空間中有名為 hello 的服務,且外部 IP 位址為 12.345.67.890,則網址可能如下所示:

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

使用外部 IP 位址

您也可以使用負載平衡器的外部 IP 位址,透過 cURL 指令存取服務,或手動設定替代 DNS 萬用字元服務。

事前準備

取得外部 IP 位址

建立 GKE Enterprise 叢集時,Istio Ingress 控制器會建立 Google Cloud 網路負載平衡器,並指派公開可用的 IP 位址。

如要使用 cURL 或 DNS 服務設定服務存取權,請先取得負載平衡器服務的外部 IP 位址:

控制台

如要透過 Google Cloud 控制台取得負載平衡器的外部 IP 位址,請按照下列步驟操作:
  1. 前往 Google Cloud 控制台的 GKE 頁面:
    前往 GKE
  2. 按一下「服務和 Ingress」
  3. 找出叢集 Istio Ingress 的服務。服務的「類型」會是「外部負載平衡器」,「名稱」會是 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 所在的命名空間。如果您使用預設設定安裝 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 服務服務。

正在使用 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}使用。