我正在使用 Helm Chart 測驗,我有點困惑。我有幾個(愚蠢的)問題,
- 測驗吊艙有什么作用?為什么還要制作測驗吊艙?為什么原來的 Pod 不能做測驗?
- Test Pod 如何與原始 Pod 通信?
- 測驗 Pod 是否告訴原始 Pod 執行某些任務?
- 如果我想檢查埠和主機(ping 服務器),是測驗 Pod 告訴原始 Pod 執行 ping 命令,還是測驗 Pod 執行 ping?如果測驗 Pod 正在運行測驗,您如何確定原始 Pod 正常作業(即,如果它沒有做任何事情)?
也許一些關于 Helm 測驗的理論對我來說非常有益。如果有包含 Helm 測驗詳細資訊的檔案,請告訴我。
uj5u.com熱心網友回復:
想象一下,您想知道 Stack Overflow 是否正常作業。所以你跑curl https://stackoverflow.com。99.9% 的時間,負載均衡器和資料庫的一些魔法以及沒有發生的事情,你會得到一個問題串列,但 0.1% 的時間你會得到一個“有問題”的頁面。也就是說,通過從應用程式外部的某個地方發出 HTTP GET 請求,您仍然可以從高級別的角度了解它是否在作業。
您可以從測驗 pod 進行盡可能多或盡可能少的測驗。像ping (1) 那樣發送 ICMP ECHO 資料包并沒有那么有趣,因為它只驗證 Service 存在并且 Kubernetes 網路層正常作業;它根本不會到達您的應用程式。一個簡單的“你還活著嗎”的呼叫可能很有趣,但就緒和活躍度探測也可以做到這一點。我可能會嘗試撰寫一些依賴于整個應用程式及其可用依賴項的東西,而不僅僅是查看 HTTP 端點是否回應。
您需要的測驗工具可能不是您的主應用程式的一部分。作為一個極端的例子,許多 Go 影像構建在
FROM scratch除了應用程式二進制檔案之外根本不包含任何內容的影像上,因此您需要一個包含curl外殼的單獨影像。你可以想象運行一個更大的測驗系統,它需要某種與普通語言不匹配的語言運行時。測驗 pod 向應用程式服務“發出正常請求”。這通常是通過 HTTP 實作的,但這取決于應用程式的具體功能。
測驗 pod 可以發出導致某些操作的 HTTP POST 請求,并驗證其結果。您還可以爭辯說,測驗 pod 不應該在生產推出期間修改資料。除了普通的網路請求路徑之外,測驗 pod 沒有辦法讓應用程式“執行任務”。
測驗 pod 可以發出一組已知的 (HTTP) 請求并驗證回傳的結果。例如,如果它得到503 Service Unavailable,那幾乎肯定是壞事。它可以根據 OpenAPI 規范驗證回應是否具有正確的格式。可能沒有隨機的其他 pod 導致應用程式運行任意命令的路徑,這無助于您證明應用程式正常作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/447585.html
上一篇:2個微服務上的集成測驗與單元測驗
下一篇:當至少一個賽普拉斯測驗失敗時,在AWSCodeBuild中獲取“COMMAND_EXECUTION_ERROR...原因:退出狀態1”
