設定自訂網域,用於存取 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 - 按一下「服務和 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 服務,您必須在網域註冊商處新增 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-domain
ConfigMap 移除現有基礎網域,並換成自訂網域: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 服務,您必須在網域註冊商處新增 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 的疑難」。