瞭解如何存取叢集中的 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 控制台中找出網址,也可以手動建構網址。
控制台
前往 Google Cloud 控制台的「Knative serving」頁面。
在清單中,按一下要取得網址的服務。
頁面頂端附近會顯示 網址。
例如:
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 萬用字元服務。
事前準備
確認已安裝最新版的 Google Cloud CLI 和 kubectl 指令列工具:
- Google Cloud 上的 GKE 叢集
- 外部 GKE 叢集 Google Cloud
您必須至少具備 Kubernetes Engine 開發人員 Identity and Access Management 角色或同等權限。
取得外部 IP 位址
建立 GKE Enterprise 叢集時,Istio Ingress 控制器會建立 Google Cloud 網路負載平衡器,並指派公開可用的 IP 位址。
如要使用 cURL 或 DNS 服務設定服務存取權,請先取得負載平衡器服務的外部 IP 位址:
控制台
如要透過 Google Cloud 控制台取得負載平衡器的外部 IP 位址,請按照下列步驟操作:- 前往 Google Cloud 控制台的 GKE 頁面:
前往 GKE - 按一下「服務和 Ingress」。
- 找出叢集 Istio Ingress 的服務。服務的「類型」會是「外部負載平衡器」,「名稱」會是
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 替換為 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 萬用字元服務,請按照下列步驟操作:
前往Google Cloud 控制台的 Knative serving「網域對應」頁面:
依序選取「新增對應」>「新增叢集預設網域」
選取「將這個網域對應關係套用至已部署於這個叢集的所有 Knative serving 服務」旁的核取方塊。
從下拉式選單中選取叢集。
在「網域」欄位中,輸入要使用的萬用字元 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}
使用。