設定自訂網域,用於存取 Knative 服務。您可以將一或多個自訂網域對應至個別服務,也可以將單一網域對應至叢集,供所有服務使用。自訂網域對應可以是基本網域 (例如 your-domain.com),也可以是子網域 (例如 your-subdomain.your-domain.com)。
根據預設,您部署至 Knative serving 叢集的服務會設為 nip.io 基本網域。這樣一來,您就能立即在下列網址測試服務:
http://{SERVICE_NAME}.{NAMESPACE}.kuberun.{EXTERNAL_IP}.nip.io
事前準備
您必須擁有或購買要對應至服務的網域。 您可以使用任何一家網域名稱註冊商,但是如果使用 Cloud Domains,系統會自動為 Knative 服務驗證網域,所以您不必經歷網域驗證程序。
如要透過 Cloud Domains 註冊網域,請參閱「在 Knative Serving 控制台中透過 Cloud Domains 註冊網域」。
您必須至少具備 Kubernetes Engine 開發人員 Identity and Access Management 角色或同等權限。
如要透過自訂網域對應啟用 HTTPS,您必須設定受管理的 TLS 憑證或設定自己的憑證。
如要將自訂網域對應至私人內部網路中的叢集或服務,請停用代管傳輸層安全標準 (TLS) 憑證。
對應自訂網域
您可以使用 Google Cloud 主控台或指令列工具對應自訂網域。
一般來說,設定自訂網域的步驟如下:
- 選用:保留負載平衡器的 IP 位址。
- 在 Knative serving 中,將服務或叢集對應至自訂網域。
- 在網域註冊商中更新 DNS 記錄。
保留負載平衡器 IP 位址
安裝 Knative Serving 時,Istio Ingress 控制器會建立具有可用 IP 位址的負載平衡器。
視 GKE 叢集而定,您可能需要為 Istio Ingress 控制器保留負載平衡器的 IP 位址:
- 外部 Google Cloud
- 請參閱執行 GKE 叢集環境的說明文件,瞭解 IP 位址的管理方式,以及負載平衡器的 IP 位址是否為靜態。另請參閱GKE 叢集的設定頁面。舉例來說,視您為 Google Distributed Cloud 設定負載平衡的方式而定,您可能已保留這些 IP 位址。
- 透過 Google Cloud
您必須保留負載平衡器的外部 IP 位址,確保在刪除 Ingress 服務後,該位址仍維持不變。 視叢集設定而定,IP 位址可能僅供內部使用,例如私人叢集,也可能對外開放。
- 內部負載平衡器 Google Cloud
- 如要瞭解如何保留內部負載平衡器的 IP 位址,請參閱下列頁面: 保留靜態內部 IP 位址
- 外部負載平衡器 (開啟) Google Cloud
- 如要保留外部負載平衡器的 IP 位址:
取得負載平衡器的 IP 位址:
控制台
如要透過 Google Cloud 控制台取得負載平衡器的外部 IP 位址,請按照下列步驟操作:- 前往 Google Cloud 控制台的 GKE 頁面:
前往 GKE - 按一下「Services and ingress」(服務和 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 位址。
- 前往 Google Cloud 控制台的 GKE 頁面:
將 IP 位址保留為靜態 IP:
gcloud compute addresses create ADDRESS-NAME --addresses EXTERNAL-IP --region REGION
取代:
- ADDRESS-NAME 改成您要為靜態 IP 取的名稱。
- EXTERNAL-IP 替換為您在上一個步驟中取得的負載平衡器外部 IP 位址。
- REGION 替換為叢集所在的區域。
取得負載平衡器的 IP 位址後,您就可以使用該位址對應自訂網域:
地圖服務
請選擇下列其中一種方法,將自訂網域對應至 Knative serving 服務。每項個別服務都可以對應至多個網域。
控制台
在 Google Cloud 控制台中開啟網域對應頁面:
請注意,當顯示視窗太小時,畫面未顯示「Mapping Custom Domains」(對應自訂網域) 按鈕時,您必須按一下頁面右下角的三點垂直刪節號圖示。
按一下「新增對應」,然後選取「新增服務網域對應」,將網域對應至個別服務。您可以將多個網域對應至各項服務。
從「Add Mapping」(新增對應) 表單的下拉式清單中,選取要對應自訂網域的服務:
輸入網域名稱,例如
your-domain.com或subdomain.your-domain.com。網域規定:- 系統不支援基本路徑對應。基本路徑是指網域名稱後的網址路徑名稱。舉例來說,
users是your-domain.com/users的基本路徑。Knative serving 只允許您將網域對應至/,而非特定基本路徑。因此,任何路徑轉送都必須在服務的容器內使用路由器處理,或使用 Firebase Hosting。 -
您無法將網域對應至與服務網址相符的子網域。服務的網址定義為
http://{service}.{namespace}.{your-domain.com},因此如果服務位於test.default.your-domain.com,您就不得建立對應至相同子網域test.default.your-domain.com的網域對應。
- 系統不支援基本路徑對應。基本路徑是指網域名稱後的網址路徑名稱。舉例來說,
按一下「繼續」。
前往網域註冊商網站,使用最後一步顯示的 DNS 記錄更新您的 DNS 記錄。 您隨時都可以顯示記錄,只要在網域對應 [...] 動作選單中按一下「DNS 記錄」即可。
按一下 [完成]。
gcloud
將您的服務對應至自訂網域:
gcloud run domain-mappings create --service SERVICE --domain DOMAIN
取代:
- SERVICE 改為您的服務名稱。
- DOMAIN 改為您的自訂網域。例如
your-domain.com或subdomain.your-domain.com。網域規定:- 系統不支援基本路徑對應。基本路徑是指網域名稱後方的網址路徑名稱。舉例來說,
users是your-domain.com/users的基本路徑。Knative serving 只允許您將網域對應至/,而非特定基本路徑。因此,任何路徑轉送都必須在服務的容器內使用路由器處理,或使用 Firebase Hosting。 -
您無法將網域對應至與服務網址相符的子網域。服務的網址定義為
http://{service}.{namespace}.{your-domain.com},因此如果服務位於test.default.your-domain.com,您就不得建立對應至相同子網域test.default.your-domain.com的網域對應。
- 系統不支援基本路徑對應。基本路徑是指網域名稱後方的網址路徑名稱。舉例來說,
自訂網域對應至 Knative Serving 後,您必須在網域註冊商處新增 DNS 記錄。
對應叢集
選擇下列其中一種方法,將自訂網域對應至叢集:
控制台
在 Google Cloud 控制台中開啟網域對應頁面:
請注意,當顯示視窗太小時,畫面未顯示「Mapping Custom Domains」(對應自訂網域) 按鈕時,您必須按一下頁面右下角的三點垂直刪節號圖示。
按一下「新增對應」,然後選取「新增預設網域」,將網域對應至叢集中的所有服務。根據預設,您部署的新服務會使用對應的網域。
按一下核取方塊,將新的網域對應關係套用至叢集中的所有現有服務。
從「Add Mapping」(新增對應) 表單的下拉式清單中,選取要對應自訂網域的叢集:
輸入網域名稱,例如
your-domain.com或subdomain.your-domain.com。網域規定:- 系統不支援基本路徑對應。基本路徑是指網域名稱後方的網址路徑名稱。舉例來說,
users是your-domain.com/users的基本路徑。Knative serving 只允許您將網域對應至/,而非特定基本路徑。因此,任何路徑轉送都必須在服務的容器中使用路由器處理,或使用 Firebase Hosting。 -
您無法將網域對應至與服務網址相符的子網域。服務的網址定義為
http://{service}.{namespace}.{your-domain.com},因此如果服務位於test.default.your-domain.com,您就不得建立對應至相同子網域test.default.your-domain.com的網域對應。
- 系統不支援基本路徑對應。基本路徑是指網域名稱後方的網址路徑名稱。舉例來說,
按一下「繼續」。
前往網域註冊商網站,使用最後一步顯示的 DNS 記錄更新您的 DNS 記錄。 您隨時都可以顯示記錄,只要在網域對應 [...] 動作選單中按一下「DNS 記錄」即可。
按一下 [完成]。
kubectl
執行下列指令,從
config-domainConfigMap 移除現有基礎網域,並換成自訂網域:kubectl patch configmap config-domain --namespace knative-serving --patch \ '{"data": {"nip.io": null, "DOMAIN": ""}}'
將 DOMAIN 替換成自訂網域。例如
your-domain.com或subdomain.your-domain.com。網域規定:- 系統不支援基本路徑對應。基本路徑是指網域名稱後的網址路徑名稱。舉例來說,
users是your-domain.com/users的基本路徑。Knative serving 只允許您將網域對應至/,而非特定基本路徑。因此,任何路徑轉送都必須在服務的容器中使用路由器處理,或使用 Firebase Hosting。 -
您無法將網域對應至與服務網址相符的子網域。服務的網址定義為
http://{service}.{namespace}.{your-domain.com},因此如果服務位於test.default.your-domain.com,您就不得建立對應至相同子網域test.default.your-domain.com的網域對應。
- 系統不支援基本路徑對應。基本路徑是指網域名稱後的網址路徑名稱。舉例來說,
自訂網域對應至 Knative Serving 後,您必須在網域註冊商處新增 DNS 記錄。
將 DNS 記錄新增到網域註冊商的系統中
將服務對應至 Knative Serving 中的自訂網域之後,接著必須更新您放在網域註冊商的 DNS 記錄。為方便作業,Knative serving 會產生並顯示您需要輸入的 DNS 記錄。您必須將這些指向 Knative serving 服務的記錄新增到網域註冊商那裡,以使對應生效。
如果使用 Cloud DNS 做為 DNS 供應商,請參閱「新增記錄」。
使用以下方式,擷取網域對應的 DNS 記錄資訊:
控制台
前往 Knative serving 網域對應頁面:
按一下服務右側三點垂直刪節號圖示,然後按一下 [DNS RECORDS] (DNS 記錄) 顯示所有的 DNS 記錄:
gcloud
gcloud run domain-mappings describe --domain DOMAIN
將 DOMAIN 替換成自訂網域。例如
your-domain.com或subdomain.your-domain.com。您需要顯示在
resourceRecords標題底下的所有記錄。在網域註冊商服務中登入您的帳戶,然後開啟 DNS 設定頁面。
前往您網域的設定頁面並找出「主機記錄」部分,然後新增您將網域對應到 Knative serving 服務時取得的每一筆資源記錄。
將上述 DNS 記錄全部新增至您在 DNS 供應商的帳戶時:
- 選取上一步傳回的 DNS 記錄類型:
A、AAAA或CNAME。 - 使用名稱
www對應至www.your-domain.com。 - 使用名稱
@對應your-domain.com。 - 使用萬用字元
*對應至*.your-domain.com。
- 選取上一步傳回的 DNS 記錄類型:
儲存您在網域帳戶 DNS 設定頁面上所做的變更。 通常這些變更只要幾分鐘就能生效,不過在某些情況下可能要耗費數小時,時間長短取決於註冊商,以及網域中任何之前 DNS 記錄的存留時間 (TTL)。您可以使用
dig工具 (例如這個線上dig版本),確認 DNS 記錄已成功更新。前往服務的新網址 (例如
https://www.your-domain.com),測試是否成功。請注意,核發代管 SSL/TLS 憑證可能需要幾分鐘的時間。
將已驗證的網域擁有者新增至其他使用者或服務帳戶
當使用者驗證網域時,系統只會對這個使用者帳戶驗證該網域。也就是說,只有這位使用者可以新增更多使用該網域的網域對應。因此,如要讓其他使用者能新增使用該網域的對應,您必須將其他使用者新增為已驗證的擁有者。
如果必須將您網域的已驗證擁有者新增至其他使用者或服務帳戶,您可以透過「Search Console」頁面新增權限:
在網路瀏覽器中前往以下網址:
在「Properties」(屬性) 底下,按一下您要新增使用者或服務帳戶的網域。
向下捲動到「Verified owners」(已驗證擁有者) 清單,按一下 [Add an owner] (新增擁有者),然後輸入 Google 帳戶電子郵件地址或服務帳戶 ID。
如要查看服務帳戶清單,請在 Google Cloud 控制台中開啟「Service Accounts」(服務帳戶) 頁面:
在 Knative Serving 控制台中,使用 Cloud Domains 註冊網域
如要透過 Knative 服務控制台使用 Cloud Domains 註冊網域,請按照下列步驟操作:
前往 Knative serving 網域對應頁面:
按一下「註冊網域」。
按照「註冊網域」一文中的說明完成註冊程序。
完成本頁稍早的步驟,將網域對應至 Knative serving,然後在網域註冊機構新增 DNS 記錄。
疑難排解
如要查看常見問題,請參閱「排解自訂網域和受管理 TLS 的問題」。