模擬 Kubernetes 中 Keycloak 的故障
如何在 Kubernetes 環境中自動化模擬 Keycloak Pod 的故障,以測試 Keycloak 在故障後的恢復。
為什麼需要故障測試
關於為什麼我們一般需要混沌測試工具,在混沌測試工具 krkn 的簡介中有一篇很好的文章。
使用 kc-chaos.sh
腳本執行故障測試
準備工作
-
解壓縮
keycloak-benchmark-${version}.[zip|tar.gz]
檔案 -
請確保您可以從您計劃執行故障測試的位置存取 Kubernetes 叢集,並執行諸如
kubectl get pods -n keycloak-keycloak
之類的命令
模擬負載
使用從 CLI 執行基準測試指南,模擬針對特定 Kubernetes 環境的負載。
使用 Krkn 混沌測試框架執行故障測試
我們將混沌測試框架krkn整合為 Taskfile 的一部分 Chaos.yaml,並建立了個別任務,以針對 Kubernetes 上 Keycloak 多站點設定內的不同組件執行 pod-scenarios
測試。它著重於模擬 Keycloak 和 Infinispan 應用程式的 Pod 故障情境。
準備工作
-
此 Taskfile 需要在系統上安裝和配置 Podman/Docker。
-
ROSA 叢集的 Kubernetes 設定檔案必須在指定的
ISPN_DIR
目錄中可用。 -
請務必在執行任務之前設定所需的環境變數。
-
您可以透過覆寫變數的預設值來自訂任務的行為。
kraken-pod-scenarios
這是一個內部任務,提供執行 Kraken Pod 故障情境的核心功能。它使用krkn-chaos/krkn-hub儲存庫中的 pod-scenarios 映像。此任務需要以下變數
ROSA_CLUSTER_NAME
-
ROSA 叢集的名稱
POD_LABEL
-
用於識別目標 pod 的標籤選擇器
EXPECTED_POD_COUNT
-
中斷後預期的 pod 數量
ISPN_DIR
-
包含 Infinispan 設定的目錄
此任務為諸如 DEFAULT_NAMESPACE
、DISRUPTION_COUNT
、WAIT_DURATION
和 ITERATIONS
等變數設定了一些預設值。它還具有一個先決條件,以確保 Kubernetes 設定檔案的存在。
kill-gossip-router
此任務會關閉 Infinispan 叢集中的 JGroups Gossip Router pod。它會以 POD_LABEL
、DISRUPTION_COUNT
和 EXPECTED_POD_COUNT
的特定值呼叫 kraken-pod-scenarios
任務。
目前, |
限制
-
目前,我們無法查看在 kraken pod 內產生,但由於是臨時儲存而被移除的 Krkn 報告。這目前計劃修正,並在 GitHub 問題中追蹤。