如要使用 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 憑證」。