除錯 Keycloak

透過將除錯器在本機上連線到 minikube 內的 Keycloak,來分析開發期間的問題。在 Minikube 內執行 Keycloak 版本是先決條件。

概觀

Keycloak 的部署預設啟用除錯,並在 minikube 上開啟節點埠 30012。開發人員使用其本機 IDE,透過 JVM 遠端除錯工作階段連線到 minikube 中執行的 Keycloak 執行個體。

所有埠都指定且未含埠偏移。如果您正在使用組態選項 KC_PORT_OFFSET,則需要將偏移量新增至埠號。對於埠偏移量 XX (00-26) 和埠號 300YY,產生的埠將為 3XXYY。
minikube runtime view debug keycloak.dio

如何設定

先決條件

  1. Keycloak 已安裝並在 Minikube 上執行

  2. 本機上的 Java IDE,其中包含已簽出的 Keycloak 儲存庫,且與要除錯的 Keycloak 已部署版本相符,或者包含已簽出的提供者儲存庫,該提供者已安裝到開發人員想要除錯的 Keycloak 中。

設定遠端除錯

  1. 透過在命令列上呼叫 minikube ip 來判斷 minikube 的 IP 位址。

  2. 使用在上一步中擷取的 IP 位址和埠號 30012 設定遠端除錯的主機名稱。

每次重新建立 minikube 執行個體時,minikube 的 IP 位址都會變更。
所有埠都指定且未含埠偏移。如果您正在使用組態選項 KC_PORT_OFFSET,則需要將偏移量新增至埠號。對於埠偏移量 XX (00-26) 和埠號 300YY,產生的埠將為 3XXYY。

假設命令 minikube ip 傳回 192.168.39.39,請參閱以下 IntelliJ 的範例螢幕擷取畫面。

keycloak debugging

深入了解 IntelliJ 中的遠端除錯

遠端除錯 Keycloak 時的注意事項

  • 當在 minikube 中執行多個 Keycloak 複本時,IDE 會連線到隨機執行個體。

  • Keycloak 執行個體重新啟動時(例如,由於重新部署),IDE 會自動中斷連線,開發人員需要重新啟動除錯工作階段。

  • 建立會暫停所有執行緒的斷點時,也會暫停為 Kubernetes 存活探測提供服務的執行緒。探測最終會逾時,且 Kubernetes 會在除錯工作階段期間意外重新啟動 Keycloak Pod。

    請改為建立僅暫停目前執行緒的斷點。在 IntelliJ 中,執行此操作的方法是

    1. 在斷點上按一下滑鼠右鍵。

    2. 針對目前的斷點進行調整。

    3. 然後將其設定為所有未來斷點的預設值。

      keycloak breakpoint