問題描述
某一天,使用 Chrome 訪問 Dashboard 時,產生 NET::ERR_CERT_INVALID 錯誤。
以前出現 NET::ERR_CERT_AUTHORITY_INVALID 錯誤,還能通過瀏覽器 Advanced 的 Proceed to xxxx (unsafe) 繼續訪問。
原因分析
類似的問題都是因為證書錯誤導致的。而且 Dashbaord 的證書是自簽名的,也會導致瀏覽器提示證書錯誤。
根本原因在於:在集群部署時,我們使用自簽名證書,導致后續的自動創建的證書都屬於自簽名證書。
解決方案
補充說明:以前我們嘗試重新生成 Dashboard 證書來解決問題,但繁瑣且不正規(因此我們從筆記中刪除該方案)。
如果想從根本上解決該問題,那么需要重新簽發集群證書,這樣才能從根本上解決相關問題。但是成本過高,而且要經過測試驗證。
我們選擇簡單的方法:直接定義 Ingress 資源,並使用 nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" 注解來反向代理 Dashboard 的 HTTPS 端口,由於 Nginx Ingress 默認 nginx.ingress.kubernetes.io/proxy-ssl-verify 為 off,因此不會檢查后端 Dashboard 的 TLS 證書,所以也未出現任何錯誤。
參考 Dashboard 筆記的「通過 Ingress 暴露 Dashboard 服務」部分,以獲取 Ingress 資源的配置方法。
相關文章
「Kubernetes」- 部署 Dashboard 服務(Kubernetes v1.18.9)
「Kubernetes」- 部署 Dashboard 服務(Kubernetes v1.14.0)