feat: 失敗セッションの調査性を改善(終了Pod保持 + ログAPI + UI)(v2.1.263-d)
セッション 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 検証済み
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
# 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 遮断)をメッセージで提示。
|
||||
|
||||
## トラブルシューティング追記(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"`。
|
||||
Reference in New Issue
Block a user