如要使用 HTTPS,
- 容器應會繼續在 $PORT上接聽電話
- 您必須選擇提供 TLS 憑證的方式: - 使用代管的傳輸層安全標準 (TLS) 憑證,系統會視需要自動建立 TLS 憑證,並自動更新。本頁說明這項功能,適用於支援的 Google Kubernetes Engine 版本。
- 使用自己的憑證:您必須自行取得及續約憑證。在某些情況下 (如「限制」一節所述),您必須使用自己的憑證。
 
- 如果您使用代管憑證,也必須對應自訂網域,才能使用代管憑證功能。 
使用 HTTPS 和 HTTP
根據預設,如果您使用代管憑證,則具有代管憑證的叢集或 Knative 服務會同時公開 HTTP 和 HTTPS 流量。如果只想要 HTTPS 流量,可以啟用 HTTPS 重新導向,強制所有流量僅使用 HTTPS。
疑難排解
如果使用代管 TLS 憑證時發生問題,請參閱代管 TLS 疑難排解頁面。
限制
使用代管的傳輸層安全標準 (TLS) 憑證功能時,請注意下列事項:
- 在 Google Cloud上,Knative Serving 私人叢集會停用代管 TLS 憑證,且不支援這類憑證。
- 如要使用代管憑證功能,服務必須對外公開,不能是叢集本機服務,也不能是透過 Virtual Private Cloud 公開的服務。
- 代管憑證功能僅適用於 Cloud Service Mesh。不支援 Istio 外掛程式或其他 Istio 設定。
- 這項功能使用 Let's Encrypt,每個註冊網域每週的初始配額上限為 50 個 TLS 憑證。如要申請提高配額,請參閱 Let's Encrypt 說明文件。
- 在其他平台 (例如地端或 AWS) 上執行 Knative serving 叢集時,這項功能會停用。如要使用這項功能,請務必確保叢集可以存取 Let's Encrypt,且 Cloud Service Mesh Ingress 服務已發布至公開網際網路。
事前準備
本頁的操作說明假設您已符合以下條件:
- 您已將 Knative serving 服務部署到叢集。
- 您擁有網域。如果沒有網域,可以向 Google 或其他網域供應商取得。
- 您已為服務建立網域對應,並按照網域對應頁面的說明更新 DNS 記錄。
- 使用 Cloud DNS 或您選擇的 DNS 伺服器。
為整個叢集停用代管傳輸層安全標準 (TLS) 憑證和 HTTPS
更新 ConfigMap config-domainmapping,為叢集停用受管理 TLS:
kubectl patch cm config-domainmapping -n knative-serving -p '{"data":{"autoTLS":"Disabled"}}'
為特定網域對應停用代管傳輸層安全標準 (TLS) 和 HTTPS
如有需要,您可以針對特定網域對應關閉代管 TLS:
- 新增註解 - domains.cloudrun.com/disableAutoTLS: "true"`:- kubectl annotate domainmappings DOMAIN domains.cloudrun.com/disableAutoTLS=true 
- 確認 HTTPS 無法運作: - curl https://DOMAIN
- 確認服務使用 HTTP: - gcloud run domain-mappings describe --domain DOMAIN - 將 DOMAIN 替換成您自己的網域名稱,例如: - your-domain.com- 檢查上述指令傳回的 - url:欄位:網址應包含- http,而非- https。
重新啟用代管的傳輸層安全標準 (TLS) 憑證和 HTTPS
如要重新啟用代管 TLS:
- 如果尚未建立服務的網域對應,請按照網域對應頁面的說明,建立網域對應並更新 DNS 記錄。 
- 更新 ConfigMap - config-domainmapping,開啟代管的傳輸層安全標準 (TLS) 憑證和 HTTPS:- kubectl patch cm config-domainmapping -n knative-serving -p '{"data":{"autoTLS":"Enabled"}}' 
- 指令成功執行後,請稍待幾分鐘,然後確認憑證功能是否正常運作: - kubectl get kcert - 如果憑證已準備就緒,您應該會看到類似以下的訊息: - NAME READY REASON your-domain.com True - Kcert可能需要 20 秒至 2 分鐘才能準備就緒。如有任何問題,請參閱這項功能的疑難排解操作說明。
驗證成功
- 執行下列指令,確認 DNS 記錄是否生效: - gcloud run domain-mappings describe --domain DOMAIN - 將 DOMAIN 替換成您自己的網域名稱,例如: - your-domain.com
- 檢查上述指令傳回的 - url:欄位:網址應包含- https,而非- http。
- 檢查上述指令中 - resourceRecords:rrdata下列出的 IP 位址,並與執行- host DOMAIN指令時看到的值進行比較。兩者應相同。
為 Knative serving 啟用 HTTPS 重新導向
如果您使用代管的傳輸層安全標準 (TLS) 憑證功能,基於回溯相容性考量,叢集預設會同時公開 HTTP 和 HTTPS 流量。如要強制所有流量僅使用 HTTPS,可以叫用下列指令,為現有網域對應啟用 HTTPS 重新導向:
kubectl annotate domainmappings DOMAIN domains.cloudrun.com/httpsRedirect=Enabled
其中 DOMAIN 是網域對應的名稱。
相關主題
- 如要瞭解如何檢查網域對應、憑證配額、訂單狀態和訂單逾時,以及授權失敗,請參閱代管 TLS 疑難排解。
- 如要瞭解如何使用自己的 TLS 憑證,而非代管 TLS 憑證,請參閱「自備 TLS 憑證」。