田籠0211(HN)インフラエンジニア / SRE 志望 · 北九州市

観測し、判断し、改善する。

自宅ラボで FUJITSU PRIMERGY TX2540 M1 と自作 PC を運用しながら、IaC・監視・CI/CD を実践的に習得しました。Terraform・Ansible・Kubernetes を基軸に、VictoriaMetrics・Grafana の監視基盤を個人運用しています。

自己紹介

現場で培った観察力と、独学で得たインフラ技術。

専門学校(ゲームクリエータ科)を卒業後、ゲームデバッグや物流倉庫など多様な現場を経験してきました。2025 年 11 月に独学を開始し、Terraform・Ansible・k3s を用いた小規模クラスタ環境の構築に到達しています。

「自宅ラボ=実務のシミュレーション環境」という方針のもと、FUJITSU PRIMERGY TX2540 M1、Ryzen 5700G マシン上に Proxmox VE を基盤としたクラスタ環境を構築・運用。IaC・監視・CI/CD の一連のパイプラインを個人で設計・構築・運用しています。

現場で身につけた「数字を並べ、判断し、改善する」サイクルと独学で得たインフラ技術を武器に、Web / 通信系のインフラエンジニア・SRE ポジションを志望しています。

GKE を廃止し、関連コストを約 75% 削減

Minecraft ワークロード向けに積み上げた構成が、月間の電気代・回線費を含む運用コストを予想のおよそ 4.5 倍に押し上げていた。観測データと制約を並べ直し、「維持するより廃止する」と判断した記録。

BEFORE

GKE

マネージド Kubernetes 上の Minecraft プロキシ

×4.5

月間の運用コスト(電気代・回線費を含む)が予想のおよそ 4.5 倍

AFTER

GCE + Docker Compose

GKE を廃止し、余剰を削った構成

−75%

月間の関連コスト

  1. 観測

    数字を並べる

    月間の電気代・回線費・稼働率・実際に使われた時間を同じ表に置いた。VictoriaMetrics のデータと GCP 課金データを突き合わせ、感覚ではなく「何に、いくら、どれだけ使ったか」を把握した。

  2. 判断

    維持より廃止

    GKE を使用してマネージドサービスの恩恵を受けていたが、Minecraft プロキシには過剰であり、コストが高すぎた。そのため GCE での Docker Compose 運用に切り替え、GKE を廃止する判断を下した。

  3. 改善

    −75% と基準の文書化

    余剰を削り、月間の関連コストはおよそ 75% 減。Blameless な振り返りで「次に同じ判断を迫られたときの基準」を文書化し、再発防止策をリポジトリに残した。

公開サイト・デプロイ・物理ネットワーク

訪問者がこのページに届くまでの「公開サイト」、変更が本番に届くまでの「デプロイ」、パケットが実際に流れる「物理ネットワーク」。

公開サイト — 論理パス

  1. INTERNET訪問者BrowserHTTPS
  2. PUBLIC EDGECloudflareEdge / TunnelTunnelINBOUND 0
  3. HOMELABcloudflaredPod · homepage nsService
  4. HOMELABhomepage-webnginx:alpineon
  5. HOMELABk3s nodeRyzen 5700G
インバウンドポートは開けない。cloudflared がアウトバウンドで Tunnel を張り、Service 経由で nginx の静的ファイルを返す構成。

デプロイ — CI/CD パイプライン

  1. GITHUBgit pushmain · paths filter
  2. GITHUBBuildnpm ci → next build
  3. GITHUBGHCRdocker push :<sha>
  4. GITHUBTailscaleephemeral · MagicDNStailnetPRIVATE
  5. HOMELABk3sset image → rollout
イメージは commit SHA でタグ付けし、rollout status で反映を確認する。秘密は GitHub Secrets だけに置き、リポジトリやイメージには含めない。

物理ネットワーク — 要約

  1. ONU / 10G Router上流
    次のノードへ 10GbE
  2. TX2540 M1bridge · ストレージ
    次のノードへ 10GbE
  3. Ryzen 5700Gbridge · k3s worker
    次のノードへ 10GbE
  4. メイン PC端末
    1G 側: AP / Printer / ほか

10GbE はスイッチレスのデイジーチェーン(ブリッジ)。PoE スイッチはコスト・設置制約から不採用。単一障害点が増えるのは承知の上で、コスト優先で受容したリスクです。

配線図・コスト試算・ノード選定理由の詳細は tagomori-homelab の README。ここは要約のみ。

プロジェクト

GitHub で公開しているリポジトリ。インフラ寄りのものを先頭に。

GitHub で全部見る

技術スタック

TAK Stack — Terraform (IaC) → Ansible (Config) → Kubernetes (Orchestration) を基軸に、監視・CI/CD を含むモダンな DevOps 環境を個人運用。

  1. TerraformIaC
  2. AnsibleConfig
  3. Kubernetes (k3s)Orchestration
IaC / 構成管理
  • Terraform (HCL)
  • Ansible
コンテナ / オーケストレーション
  • Docker
  • Kubernetes (k3s)
  • Helm
監視 / 可観測性
  • VictoriaMetrics
  • Grafana
CI/CD / デリバリ
  • GitHub Actions
  • GHCR
  • Cloudflare Tunnel
ネットワーク
  • 10GbE デイジーチェーン
  • Tailscale (WireGuard)
  • nginx
仮想化 / OS
  • Proxmox VE
  • Linux (Ubuntu/Debian)
クラウド
  • Google Cloud Platform
言語 / フレームワーク
  • Python
  • Dart
  • Flutter
  • HCL

学習の軌跡

2025 年 11 月の学習開始から、約 2 週間でクラスタ環境構築に到達。以降も継続的に技術領域を拡張。

  1. 改訂 A2025.11

    インフラ学習開始

    完全未経験から Terraform・Ansible・Kubernetes の学習に着手。複数の LLM を並列活用し、検証とバイアス補正を行う「敵対的デバッグ」手法を確立。

  2. 改訂 B約 2 週間後

    k3s 環境をデプロイ

    Terraform → Ansible → k3s の一貫(TAK Stack)で設計・構築。VictoriaMetrics / Grafana による監視基盤を含む環境を自宅ラボ上に展開。

  3. 改訂 C2025.12

    Minecraft サーバーを k3s へ移行・運用

    コミュニティ向け Minecraft サーバーを k3s 上に移行し、HCL による IaC 管理を確立。運用を開始。

  4. 改訂 D2026.06

    監視ダッシュボード基盤を設計

    Flutter を用いたクロスプラットフォーム監視ダッシュボード基盤(cloud-observability-gateway)を設計・開発。

  5. 改訂 E2026.09

    ポートフォリオサイト公開

    Next.js 静的エクスポート → nginx → k3s → Cloudflare Tunnel の配信鎖を構築。GitHub Actions と Tailscale 経由のデプロイを自動化し、このサイト自体をインフラ実績として公開。

障害・運用の原則

短く、blameless に。

  1. 「誰が」ではなく「どの前提が」崩れたか

    障害は人ではなく前提を疑う。観測ログ・制約・判断の記録だけを残し、個人攻撃は書かない。

  2. 受容したリスクは明文化する

    デイジーチェーンは単一障害点が多い。コスト優先で意図的に受け入れたと書いておく。故障時は差し替えと下流の短時間影響を想定する。

  3. フェイルオーバーは最も単純な経路で

    必要ならルーターと端末の Wi‑Fi 直結に落とす。復旧の速さを、構成の美しさより優先する。

  4. 捨ててよい複雑さを文書化する

    同じ失敗を繰り返さない手順と同じくらい、「もう要らないもの」のリストに価値がある。

障害事例

  1. Tailscale ノードキー失効による Bedrock 接続不能

    影響
    Bedrock サーバーへの外部接続がすべて不可。オンプレ k3s から監視基盤へのメトリクス・ログ送信も途絶。(約 4 時間 37 分)
    原因
    半年前の障害対応で k3s-worker をタグなし・手動承認で tailnet に再参加させていたため、ノードキーに既定の 180 日期限が付き、その日に失効した。
    検知
    Pod は Running・再起動 0 回で kubectl からは正常に見えた。「オンプレ沈黙」アラートは 11 分後に発火したが、Tailscale 断を示すアラート種別が抜けていたため原因に直結せず、実際の対応開始は人の指摘からになった。
    再発防止
    ノードキーの期限を無効化しタグ付きノードへ移行。Tailscale 断を別経路で検知して通知する仕組みを追加。

    ポストモーテム全文(GitHub)

当サイトのデプロイ手順

このサイトは静的エクスポート。秘密・証明書・トンネル資格情報はリポジトリに含まれません。

  1. Node.js 20+ を用意する(推奨: nvm)
  2. npm install
  3. npm run build → out/ に静的ファイルが生成される
  4. npx serve out または Docker で配信を確認
  5. push すると GitHub Actions が GHCR にイメージを積み、Tailscale 経由で k3s に apply
REPRODUCE — shell
# ローカル
npm install
npm run build          # → out/

# コンテナ(multi-stage: next build → nginx:alpine)
docker build -t tagomori-homepage .
docker run --rm -p 8080:80 tagomori-homepage
# → http://localhost:8080/

# クラスタ(CI が実行)
kubectl apply -f k8s/homepage/

連絡

ご連絡はメールでお気軽にどうぞ。GitHub・X からでも構いません。

メールを送る