Upgrade to Pro — share decks privately, control downloads, hide ads and more …

NixOS + Kubernetesで構築する自宅サーバーのすべて

Avatar for ichi-h ichi-h
October 11, 2025

NixOS + Kubernetesで構築する自宅サーバーのすべて

Avatar for ichi-h

ichi-h

October 11, 2025
Tweet

Other Decks in Programming

Transcript

  1. Raspberry Pi 4 Model B(Yomogi/蓬) CPU: ARM Cortex-A72 RAM: 4

    GB Storage: 64 GB(SDカード) Node: Control Plane Mini PC(Tokiwa/常盤 & Hanaakari/花明かり) CPU: Intel N97 RAM: 16 GB Storage 1: 512 GB(M.2 SSD) Storage 2 (Hanaakari): 1 TB(外付けSSD) Node: Worker Server Spec 8
  2. Package Manager 11 特定のプログラミング言語におけるパッケージ管理 pip (Python) npm/yarn/pnpm (Node.js) cargo (Rust)

    etc. ユーザー権限下におけるパッケージ管理 Homebrew Root権限下におけるパッケージ管理 apt (Debian系) dnf (RHEL系) etc.
  3. Package Manager 12 特定のプログラミング言語におけるパッケージ管理 pip (Python) npm/yarn/pnpm (Node.js) cargo (Rust)

    etc. ユーザー権限下におけるパッケージ管理 Homebrew Root権限下におけるパッケージ管理 apt (Debian系) dnf (RHEL系) etc.
  4. Package Manager 13 特定のプログラミング言語におけるパッケージ管理 pip (Python) npm/yarn/pnpm (Node.js) cargo (Rust)

    etc. ユーザー権限下におけるパッケージ管理 Homebrew Root権限下におけるパッケージ管理 apt (Debian系) dnf (RHEL系) etc. グローバル環境を荒らさない パッケージ管理 ◎
  5. Reproducible / 再現性 16 Nix はパッケージを互いに隔離して構築します。これにより、パッケージ の再現性が保証され、宣言されていない依存関係が存在しないため、あ るマシンで動作するパッケージは、別のマシンでも動作します。 Nix builds

    packages in isolation from each other. This ensures that they are reproducible and don’t have undeclared dependencies, so if a package works on one machine, it will also work on another. 引用: https://nixos.org、2025年10月10日訪問
  6. Declarative / 宣言的 17 Nixを使えば、使用しているプログラミング言語やツールに関係なく、プ ロジェクトの開発環境やビルド環境を簡単に共有できます。 Nix makes it trivial

    to share development and build environments for your projects, regardless of what programming languages and tools you’re using. 引用: https://nixos.org、2025年10月10日訪問
  7. Reliable / 信頼性 18 Nixは、あるパッケージのインストールやアップグレードによって他のパ ッケージが破損しないことを保証します。以前のバージョンへのロール バックを可能にし、アップグレード中にどのパッケージも不整合な状態 にならないことを保証します。 Nix ensures

    that installing or upgrading one package cannot break other packages. It allows you to roll back to previous versions, and ensures that no package is in an inconsistent state during an upgrade. 引用: https://nixos.org、2025年10月10日訪問
  8. 特定のプログラミング言語におけるパッケージ管理 pip (Python) npm/yarn/pnpm (Node.js) cargo (Rust) etc. ユーザー権限下におけるパッケージ管理 Homebrew

    Root権限下におけるパッケージ管理 apt (Debian系) dnf (RHEL系) etc. NixOSとは? 21 + システム設定 etc.
  9. 特定のプログラミング言語におけるパッケージ管理 pip (Python) npm/yarn/pnpm (Node.js) cargo (Rust) etc. ユーザー権限下におけるパッケージ管理 Homebrew

    Root権限下におけるパッケージ管理 apt (Debian系) dnf (RHEL系) etc. NixOSとは? 22 + システム設定 etc.
  10. Kubernetesクラスター立ち上げ 32 基本的にはKubernetes - NixOS Wikiの通りに進めていけばOK https://nixos.wiki/wiki/Kubernetes services.kubernetes.roles kubeletやetcdといった立ち上がるコンポーネントのプリセットを 選択できる

    コンポーネントはホストOSのサービスとして稼働 easyCertsという機能が有効になる X509証明書による認証や証明書の自動更新ができる FlannelによるCNI自動設定 services.kubernetes.rolesを使わずに、1から設定することも可能
  11. NixOSについて - その2 51 一見 NixOS から完成されたパッケージが提供され、それを組み合 わせるだけで OS を構築できるかと思いきや、その中身で何が起き

    ているかはわからないという点において、実は意外にも、NixOS は Ubuntu のような完成された状態で提供されるディストリビューシ ョンと近い弱点を抱えているんじゃないかなと思いました。 引用: https://zenn.dev/ichi_h/articles/ff001e0005e33c、2025年10月11日訪問
  12. 環境の再現性が高い クラスターを爆破してしまっても数コマンドで元に戻せる Reconciliation Loopが強力 = Desired State(望ましい状態)と Current State(現在の状 態)に差異がある場合、その差分を継続的に解消するというコン

    セプト サーバーを再起動しても、エラーにならず勝手に望ましい状態へ 持っていってくれるのは楽 公式ドキュメントに使い物にならないページがある Kubernetesについて - その1 54
  13. 技術 = 道具 = 問題解決の手段 問題が紐づかない道具はあり得ない ドキュメントには、その道具が何の問題を対象として取っているのか を記述すべき(What, Why) その道具の意義や使いどころへと繋がる

    技術仕様 = どう問題を解決するのかを表現したもの(How) Howを抽象化して、WhatやWhyを読み手に解釈させるドキュメン トはリーダブルではない Kubernetesについて - その2 55 読み手が最速で理解できる、リーダブルなドキュメントを
  14. NixOS + Kubernetesで構築する自宅サーバーのすべて https://zenn.dev/ichi_h/articles/ff001e0005e33c Nix & NixOS | Declarative builds

    and deployments https://nixos.org Kubernetes - NixOS Wiki https://nixos.wiki/wiki/Kubernetes NixOSで最強のLinuxデスクトップを作ろう https://zenn.dev/asa1984/articles/nixos-is-the-best NixOSの使い方とArch Linux、Gentooとの比較 https://zenn.dev/nixos/articles/ff1cc62ff04de0 参考