{
"status": "UP",
"checks": []
}
Keycloakにはヘルスチェックのサポートが組み込まれています。このガイドでは、Keycloakのヘルスチェックを有効にして使用する方法について説明します。Keycloakのヘルスチェックは、デフォルトで管理ポート9000
で公開されています。詳細については、管理インターフェースの設定を参照してください。
Keycloakは4つのヘルスエンドポイントを公開しています。
/health/live
/health/ready
/health/started
/health
各エンドポイントの意味に関する情報については、Quarkus SmallRye Healthドキュメントを参照してください。
これらのエンドポイントは、成功時にはHTTPステータス200 OK
、失敗時には503 Service Unavailable
と、次のようなJSONオブジェクトで応答します。
{
"status": "UP",
"checks": []
}
{
"status": "UP",
"checks": [
{
"name": "Keycloak database connections health check",
"status": "UP"
}
]
}
ヘルスチェックは、ビルド時のオプションhealth-enabled
を使用して有効にすることができます。
bin/kc.[sh|bat] build --health-enabled=true
デフォルトでは、ヘルスエンドポイントからチェックは返されません。
ヘルスエンドポイントは、外部HTTPリクエストによって監視することを推奨します。Keycloakコンテナイメージからcurl
やその他のパッケージを削除するセキュリティ対策のため、ローカルコマンドベースの監視は容易に機能しません。
コンテナ内でKeycloakを使用していない場合は、ヘルスチェックエンドポイントにアクセスするために好きなものを使用してください。
Keycloakのlive
またはready
状態を判断するために、シンプルなHTTP HEADリクエストを使用できます。curl
はこの目的に適したHTTPクライアントです。
Keycloakがコンテナにデプロイされている場合、前述のセキュリティ対策のため、このコマンドをコンテナ外部から実行する必要があります。例:
curl --head -fsS http://localhost:9000/health/ready
コマンドがステータス0で返された場合、Keycloakは呼び出したエンドポイントに応じてlive
またはready
です。それ以外の場合は問題があります。
Kubernetesがヘルスエンドポイントを外部から監視できるように、HTTPプローブを定義してください。livenessコマンドは使用しないでください。
ContainerfileのHEALTHCHECK
命令は、コンテナの実行中にコンテナ内で定期的に実行されるコマンドを定義します。Keycloakコンテナには、CLI HTTPクライアントがインストールされていません。コンテナでのKeycloakの実行ガイドで詳しく説明されているように、追加のRPMとしてcurl
をインストールすることを検討してください。ただし、これによりコンテナのセキュリティが低下する可能性があることに注意してください。