NixOSでもご自宅k8sがしたい!seccamp2023 LTしんぶんぶん
View Slide
自己紹介● 名前: しんぶんぶん● 所属: 会津大学学部3年● Twitter: @shinbunbun_, @4fa19623● Rustいっぱいちゅき● LINE API Expert / seccamp ’23 / Cybozu labyouth 13th
みなさん、NixOS使ってますよね?
NixOSとは● 純粋関数型パッケージマネージャであるNixをベースとしたLinuxディストリビューション● 環境を全て宣言的に記述できる● 設定を記述する→ビルドするで適用○ ビルドするたびにバージョンが発行されて、起動する際にブートローダーから任意のバージョンを選択できる○ →ロールバックが容易
みなさん、おうちにk8s立てたいですよね?
NixOSでk8sを立てる● 当たり前の様にkubeadmは使えない○ NixOSはシステムに関する大部分が Read-Only File Systemになっており、Nix経由でしか書き換えできない● configuration.nixに全部書きます● 逆にいえば、nix書くだけでk8sが立ち上がる● 今回はmaster1台でお試ししてみる
はい、これでクラスタ立ちました
NixOS最高!!!
せっかくだからNodeをもう一つ立ててみる
これで完成
せっかくだから最近流行りのMisskey立ててみよう
Misskeyを立てる● 公式のHelmはボリューム周りの問題でなぜか動かなかったので、自分でマニフェストを書く● 参考: https://4nm1tsu.com/posts/4pdgkbc/● Nodeが1台なので、ローカルのストレージを使用
まずはDB
● Secret, SVC, PV, PVC,Podを作成
次にredis
● SVC, PV, PVC, Podを作成
最後にWebサーバ
● PV, PVC, SVC, Deploymentを作成
最後にCloudflare Tunnel
applyすれば完成!
が、ここで1つ問題が...
なぜかsvcが名前解決できない● 原因を調べてみると、Kubernetes API Serviceへのアクセスが失敗している● iptablesとか色々見たりして無限時間溶かした
結局原因は...● Firewallでした● Kubernetes APIサーバは普通Podとしてクラスター内に立っているらしいが、NixOSで構築するとクラスター外部にAPI Serverが立つ● Podからローカルネットワークへのアクセスは、すなわち外部ネットワークからローカルネットワークへのアクセスと同じ● ということは、API Serverが立っているポートへの外部からのアクセスをFirewallで許可しないといけなかった
これで終わり
まとめ● NixOSだと超簡単にk8sクラスタを構築できる● Misskeyも割と簡単に立つ