$30 off During Our Annual Pro Sale. View Details »

NixOSでもご自宅k8sがしたい!

 NixOSでもご自宅k8sがしたい!

Yuto Takamune

July 30, 2023
Tweet

More Decks by Yuto Takamune

Other Decks in Technology

Transcript

  1. NixOSでもご自宅k8sがしたい!
    seccamp2023 LT
    しんぶんぶん

    View Slide

  2. 自己紹介
    ● 名前: しんぶんぶん
    ● 所属: 会津大学学部3年
    ● Twitter: @shinbunbun_, @4fa19623
    ● Rustいっぱいちゅき
    ● LINE API Expert / seccamp ’23 / Cybozu labyouth 13th

    View Slide

  3. みなさん、NixOS使ってますよね?

    View Slide

  4. NixOSとは
    ● 純粋関数型パッケージマネージャであるNixをベースとしたLinuxディストリビュー
    ション
    ● 環境を全て宣言的に記述できる
    ● 設定を記述する→ビルドするで適用
    ○ ビルドするたびにバージョンが発行されて、起動する際にブートローダーから任意のバージョンを選
    択できる
    ○ →ロールバックが容易

    View Slide

  5. みなさん、おうちにk8s立てたいですよね?

    View Slide

  6. NixOSでk8sを立てる
    ● 当たり前の様にkubeadmは使えない
    ○ NixOSはシステムに関する大部分が Read-Only File Systemになっており、Nix経由でしか書き換
    えできない
    ● configuration.nixに全部書きます
    ● 逆にいえば、nix書くだけでk8sが立ち上がる
    ● 今回はmaster1台でお試ししてみる

    View Slide

  7. View Slide

  8. はい、これでクラスタ立ちました

    View Slide

  9. NixOS最高!!!

    View Slide

  10. せっかくだからNodeをもう一つ立ててみる

    View Slide

  11. View Slide

  12. これで完成

    View Slide

  13. せっかくだから最近流行りのMisskey立ててみよう

    View Slide

  14. Misskeyを立てる
    ● 公式のHelmはボリューム周りの問題でなぜか動かなかったので、自分でマニフェ
    ストを書く
    ● 参考: https://4nm1tsu.com/posts/4pdgkbc/
    ● Nodeが1台なので、ローカルのストレージを使用

    View Slide

  15. まずはDB

    View Slide

  16. ● Secret, SVC, PV, PVC,
    Podを作成

    View Slide

  17. 次にredis

    View Slide

  18. ● SVC, PV, PVC, Podを作成

    View Slide

  19. 最後にWebサーバ

    View Slide

  20. ● PV, PVC, SVC, Deploymentを作

    View Slide

  21. 最後にCloudflare Tunnel

    View Slide

  22. View Slide

  23. applyすれば完成!

    View Slide

  24. が、ここで1つ問題が...

    View Slide

  25. なぜかsvcが名前解決できない
    ● 原因を調べてみると、Kubernetes API Serviceへのアクセスが失敗している
    ● iptablesとか色々見たりして無限時間溶かした

    View Slide

  26. 結局原因は...
    ● Firewallでした
    ● Kubernetes APIサーバは普通Podとしてクラスター内に立っているらしいが、
    NixOSで構築するとクラスター外部にAPI Serverが立つ
    ● Podからローカルネットワークへのアクセスは、すなわち外部ネットワークからロー
    カルネットワークへのアクセスと同じ
    ● ということは、API Serverが立っているポートへの外部からのアクセスをFirewallで
    許可しないといけなかった

    View Slide

  27. これで終わり

    View Slide

  28. まとめ
    ● NixOSだと超簡単にk8sクラスタを構築できる
    ● Misskeyも割と簡単に立つ

    View Slide