Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
## いまここ

**2026-10-31 に HP Z440 へ移し、Talos(OpenEBS LVM)で全部のアプリが動いている。** 残りは下の Phase 2.5 の空いているところ
(AMT・受信の防火壁・VolSync)。
(AMT・VolSync)。

## Phase 2.5 — HP Z440 へ移す(Talos のまま)

Expand All @@ -18,11 +18,13 @@ bond0 の MAC は設定で固定してあるのでルーターは触らない。
- [x] Z440 用の schematic(`siderolabs/i915`)、NIC の別名(`LinkAliasConfig`。#649・#650)
- [x] 移して確かめる(2026-10-31)。途中で直したもの: Pod から PV を 2 つ同時に付ける(`shared: "yes"`。#655)、
xfs で作れない 128Mi の PVC(#653・denpa#1840)、pgload と復元の落とし穴(#651 ほか)
- [ ] **AMT を設定する**(10.0.0.5。MEBx は Ctrl+P。手順は [docs/z440-migration.md](docs/z440-migration.md)「3. リモート管理」)。
- [ ] **AMT を設定する**(MEBx は Ctrl+P。手順は [docs/z440-migration.md](docs/z440-migration.md)「3. リモート管理」)。
AMT は内蔵の I218-LM(`eno1`)でしか動かないので、`eno1` を 10.10 側(HUMAX)に挿し替え、361T の 2 ポートを bond0 に回して
**10.10.0.3** にする案(作業用 PC から NetBird なしで届く。`LinkAliasConfig` の MAC の入れ替えと `disable_ipv6` の名前を `eno1` に)。
済んだら SOL の `console=` を schematic に足し、docs の「iLO(10.0.0.3)」を AMT に直す
- [ ] **受信の防火壁を戻す**(#646 で入れ、#652 で外した)。Pod からノード自身の IPv6 の 443 番(fj.doany.io)が conntrack の invalid として
捨てられる。Cilium と両立する形を決める(経緯は [bootstrap/talos.md](bootstrap/talos.md))
- [ ] Arc の HuC が `timed out waiting for MEI GSC` で読めていない。AV1 / H.265 のエンコードに効くかを確かめる
- [x] **受信の防火壁を Cilium の Host Firewall で作る**(#658。Talos の防火壁は Pod からノードの IP の Gateway を捨てるので使わない。
経緯は [bootstrap/talos.md](bootstrap/talos.md))。外から 50000・10250・2379 が閉じ、Pod からの fj.doany.io が通るのを確かめた
- [x] Arc の HuC を読む(#659。`siderolabs/mei`)。QSV の ICQ が AV1・H.264 で通るようになった(H.265 の ICQ は DG2 では通らず、VA-API に回る)
- [ ] **ストレージとバックアップを入れ替える**(入れ直しのついでに。理由は [docs/decisions.md](docs/decisions.md)「Z440 で、ストレージを OpenEBS LVM LocalPV に…」)
- [x] ディスクの切り方: `u-local-path` をやめ、`RawVolumeConfig` + `LVMVolumeGroupConfig` で VG `data` にする。
thin プールは Talos で作れないので `bootstrap/storage.yaml` の DaemonSet が作る(書いてあるだけ。効くのは Z440 で入れ直したとき)
Expand Down
16 changes: 8 additions & 8 deletions bootstrap/talos.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,14 +65,14 @@ needle は `render.sh` の末尾の 1 か所だけに置く。
| `talos.sops.yaml` の先頭の Kubernetes の `# version:` | `render.sh` → `apply-config` → `talosctl upgrade-k8s --to <新しい版>` | 無し |
| `talos.sops.yaml` の本文と、`bootstrap/` の残りの全部(`*-values(.sops).yaml`(2 つめのドキュメントの Secret も)・`apiserver-rbac.yaml`・`storage.yaml`) | `render.sh` → `apply-config` → `talosctl upgrade-k8s --to <今の版>`(下の「inlineManifests を直したとき」) | 場合による |

**受信の防火壁(`NetworkDefaultActionConfig`・`NetworkRuleConfig`)は 2026-10-31 から外してある。**
#646 で入れたが、Pod からノード自身の IP の 443 番(Gateway。Pod は fj.doany.io の AAAA = ノードの公開 IPv6 で Forgejo に来る)が
conntrack の invalid として捨てられ、TCP はつながるが応答が来なかった(Argo CD が Forgejo の非公開リポジトリを読めず、runner も落ちる)。
`ingress: accept` にしても Talos は invalid を捨てる規則を残すので、文書ごと外した。`nf_conntrack_tcp_be_liberal` では直らない。
Cilium の BPF のホストルーティングで往復の片方が netfilter を通らないためと見ている(未確認)。戻すときは #646 の 5 つの文書と
`render.sh` の needle を戻し、Pod から `curl -6 https://fj.doany.io/api/v1/version` が通ることを確かめる。

**ネットワークと受信の防火壁(`BondConfig`・`LinkConfig`・`NetworkRuleConfig` など)を変えたら `--mode=try` で当てる。**
**ノードの受信の防火壁は Talos(`NetworkDefaultActionConfig`・`NetworkRuleConfig`)ではなく Cilium の Host Firewall**
(`cilium-values.yaml` の `hostFirewall` と `../deploy/cluster/host-firewall.yaml`)。Talos の防火壁は conntrack の invalid を捨てる規則を
必ず入れ(`ingress: accept` でも残る)、Cilium は Envoy から Pod への帰りを raw の OUTPUT で NOTRACK にするので、Pod からノード自身の IP の
Gateway(Pod は fj.doany.io の AAAA = ノードの公開 IPv6 で Forgejo に来る)の 2 つ目以降のパケットが invalid として捨てられた
(2026-10-31。#646 で入れ、#652 で外し、#658 で Cilium にした。`nf_conntrack_tcp_be_liberal` では直らない)。
talos-boot が「外から 10250 は通らない」「Pod からノードの IP の Gateway に届く」を見ている。

**ネットワーク(`BondConfig`・`LinkConfig`・`LinkAliasConfig` など)を変えたら `--mode=try` で当てる。**
間違えると Talos の API ごと届かなくなるが、`try` なら時間が来れば元に戻る:

```shell
Expand Down
5 changes: 3 additions & 2 deletions docs/router.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,12 @@ DMZ の向け先を変えると、下の全部と AdGuard の split-horizon が
| 6443 TCP | Kubernetes の API(`ks.doany.io:6443`。recovery/README.md) | 要る(認証つき) |

**ノード自身が受けるもの(Talos の API 50000・trustd 50001・etcd・kubelet 10250・Cilium の 4240 / 4244 / 9963 / 9964 など)は、
ノードの受信の防火壁で外から止めている**(`bootstrap/talos.sops.yaml` の `NetworkDefaultActionConfig` と `NetworkRuleConfig`。
ノードの受信の防火壁で外から止めている**(Cilium の Host Firewall。規則は `deploy/cluster/host-firewall.yaml`。
2026-10-31 に足すまでは DMZ と IPv6 ホスト公開で外から全部届いていた)。既定は捨て、外から通すのは上の表のポートだけ
(TCP 80・443・853・3129・6443・8443、UDP 8443・51820)、内側のアドレス(LAN と Pod・Service の 10/8・NetBird の 100.64/10・
fc00::/7・fe80::/10)からは全部。効くのはノード宛てだけで、hostPort(53・853・8443・3129・51820)は Cilium が Pod へ転送するので
通らない(なので 53 番は下の Cilium のポリシーで止めている)。表にポートを足すときは `public-tcp` / `public-udp` にも足す。
通らない(なので 53 番は下の Cilium のポリシーで止めている)。表にポートを足すときは `deploy/cluster/host-firewall.yaml` にも足す。
Talos の防火壁(`NetworkDefaultActionConfig`)は使わない(Pod からノードの IP の Gateway を捨てる。`bootstrap/talos.md`)。
家の LAN の IPv6 の GUA はプライベートに入れていないので、LAN からノードの管理の口へは IPv4 で繋ぐ。

## 53 番は外に出さない
Expand Down
2 changes: 1 addition & 1 deletion docs/talos.md
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ Talos の既定(Flannel + kube-proxy)を止めて **Cilium に替えてある**(
CNI の交換は構築時にやる ── 稼働中の差し替えは全 Pod 再起動が前提)。Cilium の値は [bootstrap/cilium-values.yaml](../bootstrap/cilium-values.yaml)。
LoadBalancer とクライアント IP も decisions.md「ルーティングの選定」。

- `NetworkDefaultActionConfig: block` を使うなら、`NetworkRuleConfig` で要るポートを明示的に開ける
- `NetworkDefaultActionConfig: block`(Talos の受信の防火壁)は Cilium の Gateway(hostNetwork)と噛み合わないので使わない。防火壁は Cilium の Host Firewall([../bootstrap/talos.md](../bootstrap/talos.md))

## 管理モデル(3 つのレイヤーを混同しない)

Expand Down
2 changes: 1 addition & 1 deletion recovery/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ talosconfig も管理者の kubeconfig も `bootstrap/talos-secrets.sops.yaml`

- **作業用 PC(J:COM 側の LAN)からは 10.10.0.4(eno4)にしか届かない**(10.0.0.2 は届かない)。t.ps1 の行き先はそこに固定してある
- iLO(10.0.0.3)の Remote Console(HTML5)で、ブートメニューも maintenance mode の IP も見える。USB だけ物理で挿す
- **GitHub Actions では代わりにならない。** Talos の API(50000)は machine config の受信の防火壁でプライベートのアドレスからしか通さず
- **GitHub Actions では代わりにならない。** Talos の API(50000)はノードの受信の防火壁(Cilium の Host Firewall)でプライベートのアドレスからしか通さず
([../docs/router.md](../docs/router.md)「外からの転送」。maintenance mode では防火壁が無い)、CI の OIDC の信頼も
machine config を当てて初めてできる

Expand Down
Loading