Files
claude-code/CHANGELOG-2.1.263-d.md
T
claude 1b74e230ad
Helm Chart Release / release-chart (push) Successful in 7s
Build Session Image / build-push (push) Successful in 2m3s
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 検証済み
2026-09-08 21:14:56 +09:00

39 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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"`。