Repository navigation
k3s / Ubuntu 期の残りを消し、建て直しを Talos → Talos の手順にする - #404
Conversation
289a262 to
f159d50
Compare
- bootstrap/apiserver/ca.crt から k3s の CA を消す。残る 1 枚は talos/clusterconfig の kubeconfig の certificate-authority-data と同じもの(SHA-256 A5:76:EF:…:39:D0 で突き合わせた) - talos/cilium-values.yaml と talos/cert-manager-values.yaml を bootstrap/ の values.yaml に畳む。 重ねる相手の k3s が無くなったので 2 枚に分ける意味が無い。CI と同じダミーの秘密で render.sh を 前後で回し、鍵・証明書と毎回変わる値を除いて生成物が同じことを確かめた - cilium-drift から k3s の分岐を消す - bootstrap-apply は Namespace を先に当てる。まっさらなクラスタでは中身と同じ apply に渡すと `namespaces "auth" not found` で落ちた(2026-10-17) - talos-validate を bootstrap/cilium・cert-manager の変更でも走らせる(render.sh が読む) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JbmWyUB9jcBcYCnNyiGBSV
k3s には talos.dev/v1alpha1 の CRD が無いので寄せてあったもの。Talos に移ったので置く。 時刻は 13:45 UTC から 13:00 UTC にずらす(13:30 に matrix の Schedule が入っていて、forget の ロックとぶつかる)。talos/patches/etcd-backup.yaml の参照も直す。 マージされたら 1 回手で回して R2 に入ることを見る: kubectl -n k8up create job --from=cronjob/etcd-snapshot etcd-snapshot-first Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JbmWyUB9jcBcYCnNyiGBSV
SSD は Talos で上書き済みで、戻る先のホストはもう無い。 - 消す: backup/(k3s-backup と systemd unit)、recovery/restore.sh、talos/drift.sh(Ubuntu の ホストと比べる道具)、docs/restore-drill.md(k3s ホストを QEMU で戻すドリル)、 bootstrap/apiserver/authentication-config.yaml(k3s の /etc/rancher/k3s/ に置いていた写し。 正本は talos/patches/apiserver.yaml で、理由のコメントはあちらへ移した。YAML の値は変えていない) - notify.yaml から、ホストのスクリプトの複数経路のスナップショットを見分けるコードを消す (k8up も etcd も経路は 1 つなので使われない) - apps/・talos/・bootstrap/ のコメントから「k3s 期は…」「Ubuntu 期は…」を外し、 今も効いている理由だけ残す。talos/patches/*.yaml はコメントだけで、値は変えていない (CI と同じダミーの秘密で render.sh が通ることを確かめた) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JbmWyUB9jcBcYCnNyiGBSV
…md を畳む 2026-10-17 に実機で通した順をそのまま手順にした。migration-day.md(1 回きりの移行の手順)のうち 今も効くもの(ISO の起動、apply-config の前に見るもの、Argo CD の待ち方、疎通確認の表、 詰まったときに見るところ)はここへ移して消す。 踏んだもの(理由は手順の横と道具の中に書いた): - J:COM 側の PC からは 10.10.0.4(eno4)にしか届かない。kubeconfig の server を差し替える - render.sh は出力先を丸ごと消す。kubeconfig は ~/.kube/config に取り直す - USB は STATE / EPHEMERAL / u-local-path が ready になってから抜く - bootstrap apply の nodePort は Gateway の Service ができてからでないと当たらない(もう 1 回流す) - k8up の資格情報が Infisical から来るので、Infisical だけは手元の restic で直接戻す (recovery/infisical.sh)。DROP SCHEMA public は max_locks_per_transaction が足りず落ちるので old_public に退けて流し、あとで分けて消す - DB を戻すと Infisical の Kubernetes auth の CA が古いクラスタのものに戻る。PATCH して operator を 蹴り直す(recovery/infisical.sh ca / infisical-ca.mjs) - k8up の Restore は root で、数字だけの ID は引用符で。バイナリは kubectl exec -i の標準入力で 流さない(SQLite の末尾が欠けた)。Argo CD の selfHeal が replicas を戻すので application-controller を止めてから。Forgejo を先に。matrix は --restore-backup で 1 回起こす(recovery/pv.sh) pv.sh と infisical.sh は当日使った道具から namespace とスナップショット ID の決め打ちを外したもの。 引数にした形ではまだ流していない。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JbmWyUB9jcBcYCnNyiGBSV
- ROADMAP: 済んだ Phase 2 を 1 行の記録にし、残りを Phase 2.5(Z440)と Phase 3 に。 前のホストのスナップショット(host=main)はもう誰も forget しないことを Phase 3 に足した - talos/README.md: 入れ方は recovery/ へ寄せ、組み立てと当て直しだけに。描くたびに変わる値 (Hubble の CA と証明書、infisical の postgres-password)が差分に出ても害が無いことを当て直しの横に書いた - docs/talos.md: メディアの作り方(移行当日の手順への参照)と、Ubuntu のホストの上で QEMU を回す 手順を落とす。モジュールが名前の順に読まれる件を作法の表に足した - docs/decisions.md: k3s 期と Talos 期の比較表、HelmChart CRD から Application への移し方、 Traefik の切り替えの段取りを落とし、今の形を縛っている理由だけ残す - bootstrap/README.md・apps/k8up/README.md・router.md・cloudflare-tokens.md・tools/README.md・ README.md・z440-migration.md から k3s / Ubuntu の手順と /etc/k3s-backup/env を外す Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JbmWyUB9jcBcYCnNyiGBSV
DoT の証明書は cert-manager の Secret(adguard-dot-tls)を同じ名前のボリューム adguardhome-ssl で マウントしていて、同名の PVC はどの Pod も使っていない(Traefik の acme-watcher が書き出していた頃の残り)。 local-path は使う Pod が付くまで bind しないので、建て直しのあとは Pending のままで、 2026-10-17 の Restore で初めて bind した。中身は古い証明書だけ。 Argo CD の prune で PVC と PV(Delete)が消える。restic の /data/adguardhome-ssl は残る (通知はスナップショットが途切れてから 8 日鳴る)。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JbmWyUB9jcBcYCnNyiGBSV
kubectl / talosctl の資格情報と行き先(10.10.0.4)は t.ps1 が用意するようになったので、 --talosconfig・-n/-e・kubeconfig の取り直しと server の差し替えを手順から外し、 --admin のシェルで打つ形にする。upgrade-k8s は既定でクラスタの endpoint(10.0.0.2)に行くので --endpoint https://10.10.0.4:6443 を渡す。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JbmWyUB9jcBcYCnNyiGBSV
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JbmWyUB9jcBcYCnNyiGBSV
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JbmWyUB9jcBcYCnNyiGBSV
ed1eb53 to
4c6ebbe
Compare
|
Claude finished @5ym's task in 33s —— View job レビュー結果削除と文書の整理は、消したファイルへの参照が残っていないか grep で確認しました。残っているのは PR 本文に書いてある 不具合(要確認を含む)
セキュリティ
設計・その他
テスト
|
- pv.sh stop は控えがあれば書き直さない(2 回目で「元は 0」を控えてしまう)。start は控えを使ったら消す - pv.sh pgload は psql が落ちたらダンプを消さずに残す - infisical.sh db は old_public が残っていれば止まる、流し込んだあと users が 0 なら Infisical を起こさない - infisical.sh ca は port-forward が /api/status に答えるまで待つ Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JbmWyUB9jcBcYCnNyiGBSV
|
Claude finished @5ym's task in 18s —— View job レビュー結果先のレビューで挙げた 5 点は、最新コミット( 前回の指摘の確認
新たに見つけた問題不具合、セキュリティ、設計のいずれも、ブロックするものは見つかりませんでした。
テスト(要確認)
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JbmWyUB9jcBcYCnNyiGBSV
|
Claude finished @5ym's task in 31s —— View job レビュー結果先の 2 回のレビューの指摘( ブロックする問題は見つかりませんでした。 確認したこと
軽微な点(要確認・任意)
テスト
|
…ーの指摘) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JbmWyUB9jcBcYCnNyiGBSV
|
Claude finished @5ym's task in 23s —— View job レビュー結果前回までの指摘( 軽微(任意)
確認したこと
要確認
テスト
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JbmWyUB9jcBcYCnNyiGBSV
|
Claude finished @5ym's task in 14s —— View job レビュー結果最新の ブロックする問題はありません。前回までの指摘は直っています。
軽微(任意)
残る注意
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JbmWyUB9jcBcYCnNyiGBSV
|
Claude finished @5ym's task in 15s —— View job レビュー結果最新の ブロックする問題はありません。前回までの指摘は直っています。
軽微(任意)
残る注意
セキュリティ面(トークンは env 経由で非表示、シークレットの混入なし)と、 |
2026-10-17 に Talos へ移し終えたので、Ubuntu + k3s 期の残りを消し、建て直しの手順を Talos → Talos の形に書き直す。
消したもの
backup/(k3s-backup と systemd unit・env.example・k3s-server-config.yaml)、recovery/restore.shtalos/drift.sh(Ubuntu のホストと比べる道具)、talos/after-migration/(中身はapps/k8up/へ移した。下)docs/restore-drill.md(k3s ホストを QEMU で戻すドリル)、docs/migration-day.md(今も効くところはrecovery/README.mdへ)bootstrap/apiserver/authentication-config.yaml(k3s の/etc/rancher/k3s/に置いていた写し。正本はtalos/patches/apiserver.yamlで、理由のコメントはあちらへ移した。値は変えていない)talos/cilium-values.yaml/talos/cert-manager-values.yaml(bootstrap/の values.yaml に畳んだ。重ねる相手の k3s が無い)bootstrap/apiserver/ca.crtの k3s の CA。残る 1 枚はtalos/clusterconfig/kubeconfigのcertificate-authority-dataと同じ(SHA-256A5:76:EF:…:39:D0で突き合わせた)cilium-drift.ymlの k3s の分岐、notify.yamlのホストのスクリプト用の判定(複数経路のスナップショット)apps/adguardhome/pvc.yamlのadguardhome-ssl(どの Pod も使っていない。下)書き直したもの
recovery/README.mdを建て直しの唯一の入口にした(1 鍵と render.sh → 2 ISO → 3 apply-config → 4 bootstrap/kubeconfig → 5 bootstrap apply → 6 Infisical の DB → 7 Kubernetes auth の CA → 8 PV → 9 確認 → 10 後始末)。今日踏んだものはそれぞれの手順の横に理由を書いたrecovery/pv.sh(k8up の Restore を root で、SQLite は大きさを突き合わせて付け替え、tar 展開、pg_dump、Argo CD の一時停止)、recovery/infisical.sh+infisical-ca.mjs(restic から直接 DB を戻す・old_public の後始末・Kubernetes auth の CA の PATCH と operator の蹴り直し)。当日.home/で使ったスクリプトから決め打ちを外したものbootstrap-apply.yml: Namespace を先に当てる(初回のnamespaces "auth" not found対策)talos-validate.yml:bootstrap/cilium/**とbootstrap/cert-manager/**でも走る(render.sh が読む)apps/k8up/etcd-snapshot.yamlに置いた(マージで有効になる)。時刻は 13:45 → 13:00 UTC(13:30 に matrix の Schedule が入っていて forget のロックとぶつかる)確かめたこと
render.shを前後で回し、鍵・証明書・毎回変わる値を除いて生成物が同じ(valid for metal mode)sh -nが通る迷ったところ・見てほしいところ
pv.sh/infisical.shは引数にした形ではまだ流していない(元のスクリプトは当日通った)。次の建て直しかリハーサルで確かめる必要があるadguardhome-sslは残り物と判断して消した。 DoT の証明書は同名のボリューム(Secretadguard-dot-tls)で渡していて、PVC はどの Pod もマウントしていない(Traefik の acme-watcher の頃の残り)。Argo CD の prune で PVC と PV が消え、通知は restic の/data/adguardhome-sslについて 8 日鳴る。要らなければ最後のコミットだけ落とせるhost=main)はもう誰も forget しない(保持を回していたのはホストのスクリプト自身)。消すかどうかを ROADMAP の Phase 3 に置いた。消すまで denpa の forget なども効かないbootstrap/argocd/helmchart.yaml(SOPS)のコメントが消したdocs/restore-drill.mdを指したまま。SOPS ファイルは触らない約束なので ROADMAP に残したapps/pt3/rebind.yamlの「移行当日」の 1 語は、触らない約束なので残した--talosconfig・-n/-e・kubeconfig の取り直しを外した。talosctl upgrade-k8sは既定でクラスタの endpoint(10.0.0.2)に行くので--endpoint https://10.10.0.4:6443を書いた(ここは未確認)🤖 Generated with Claude Code
https://claude.ai/code/session_01JbmWyUB9jcBcYCnNyiGBSV