セッション Pod がブート失敗で Failed になると reaper が即削除し kubectl logs で 死因を追えなかった。「開く」で 502 になるだけで原因不明だった。 - session.reaper.terminatedRetentionSeconds(既定 900): 終了済み Pod を finishedAt からこの秒数は回収しない。manager 回収ループと reaper CronJob 両方が尊重 - GET /api/sessions/<id>/log: セッション Pod のログを text で返す(pods/log get のみ、追加権限なし) - UI: 「ログ」ボタン、状態の色分け、Failed 行に reason/exitCode/message 併記、 Running 以外は「開く」非表示 - session-entrypoint.sh: URL スキームと identity 型の不一致を警告。 git clone を --progress ... 2>&1 にして git/ssh の出力を Pod ログへ - helm lint / template 検証済み
2.2 KiB
2.2 KiB
CHANGELOG 2.1.263-d — 手動リリース
背景
セッション Pod がブート失敗(git clone エラー等)で Failed になると、reaper が
即座に削除するため kubectl logs で死因を確認できなかった。「開く」で 502 になるだけで
原因が分からない状態だった。
追加 / 変更
session.reaper.terminatedRetentionSeconds(既定 900) 終了済み(Succeeded / Failed)のセッション Pod を、この秒数が経過するまで回収しない。 Pod のcontainerStatuses[].state.terminated.finishedAtを基準に判定。0で旧挙動(即回収)。 manager の回収ループと予備 CronJob の両方が尊重する。GET /api/sessions/<id>/logセッション Pod(claudeコンテナ)の直近ログを text/plain で返す。manager は既にpods/logのget権限を持つ(追加権限なし)。- Web UI
- セッション一覧に 「ログ」ボタン(インラインでログ表示)。
- 状態を色分け表示。
Failedの行にreason/exit <code>/messageを併記。 Running以外では「開く」を出さない。
- セッションブートスクリプト(
files/session-entrypoint.sh)- URL のスキーム(
https:///git@/ssh://)と選択された identity の型 (ssh/https-token)の不一致を検出して警告。 git cloneを--progress ... 2>&1で実行し、git / ssh の出力をそのまま Pod ログへ。 失敗時は代表的な原因(認証不足・権限なし・known_hosts 不一致・NetworkPolicy による egress 遮断)をメッセージで提示。
- URL のスキーム(
トラブルシューティング追記(README)
- 「開く」で 502 / 一覧が
Failed→ UI の「ログ」ボタンで死因確認。 - clone が 60〜130 秒でタイムアウト → NetworkPolicy(Cilium 等)の egress 遮断を疑い、
--set networkPolicy.enabled=falseで切り分け。 - URL スキームと identity 型を一致させる(HTTPS ↔
https-token/ SSH ↔ssh)。
バージョン
version = 2.1.263-d / appVersion = "2.1.263"。