我が家のおうちKubernetesの成長記録
2021年12月16日 木曜日
CONTENTS
【IIJ 2021 TECHアドベントカレンダー 12/16(木)の記事です】
IIJ Raptorサービス部のエンジニア、RyuSAです。普段はアプリケーションの実装やアーキテクチャ、最近はKubernetesを使った業務を担当しています。
私事ですが、先日IIJの制度として発表された「セレクトジョブ」に参加し、SRE推進部という部署に兼務するようになりました!> IIJ、社員の自律的なキャリア形成を支援する公募型兼務制度「セレクトジョブ」を開始 | IIJについて | IIJ
さて本題に入りますが……自分は今年の春に「おうちKubernetes」を植え、自宅で育ててきました。 > おうちKubernetesを構築した話 – メモ – RyuSA (hatenablog.com)
残念ながら自分の家庭はサーバラックがあるような、俗に言う「逸般の誤家庭」ではないためできることはかなり限られてます。この半年間、このおうちKubernetesがどのように育ったのかを紹介していこうかと思います。
半月経過… PrometheusとGrafanaでの監視基盤が生えてきた!
おうちKubernetesの内部でどんなことが起きているのかを見たいな〜と願っていた結果、Prometheusが生えてきてくれました!さらに取得したメトリクスでいい感じの可視化もしたいな〜と思っていたところ、Grafanaも降ってきました。これはありがたい🥰
これにより、各ServiceMonitor/PodMonitorを通じてミドルウェアのメトリクスを収集してダッシュボードにできるようになりました。
1ヶ月経過… スピードテストのメトリクスが生えてきた!
おうちKubernetesも安定してきて、そろそろダッシュボードに変化が欲しいな〜と思っていたところ、スピードテストを実施するコンテナイメージとそのメトリクスが生えてきました!
Kubernetes 1.21で新しくなったCronJobでスピードテストを実施、Pushgatewayに各種メトリクスが投げ込まれることでGrafanaから速度計測結果を眺めることができるようになりました👏
これでスピードテストの結果がメトリクスとして可視化できていい感じですね!
2ヶ月経過… Wi-Fiのアクセスポイントが実ってきた!
おうちKubernetesでなにか面白いものやりたいな〜と思いを募らせていたところ、気がつくとWi-FiのアクセスポイントをデプロイできるAccessPoint Operatorが実っていました!
※ AccessPoint Operator > メッシュっぽいWi-Fi APをKubernetesのラズパイ包みで構築した件 | IIJ Engineers Blog
なお、配線の都合上、現在は家中でローミング……というのはやめて、ノード1台の上で稼働させています。主にIoT機器のWi-Fiアクセスポイントとして利用しています👏 ※ 諸事情により後述のGitOpsに含まれていないです
4ヶ月後… x86なサーバが芽吹いてた!
x86な計算資源が欲しいよ〜〜と、短冊に願いを込めていると……
なんと、生えてきました(※ 中古で買いました)
おうちKubernetesは元々Raspberry Piで構成、つまり全ノードarm64な環境でした。運用しているとarm64なコンテナイメージを提供していないコンテナなどにぶち当たることも増え、その度に自分でビルドしてメンテナンスしていく手間がなかなか面倒になりまして……
x86な計算資源が増えたことで、おうちKubernetesに気軽にコンテナを生やすことができるようになりました👏
6ヶ月後… 仮想KubernetesのGitOpsを植えてきた
サクッと建てられるKubernetesが欲しいと思いを募らせる日々……そんな中、vclusterというLoft Labs社の開発/メンテナンスしているOSSに出会いました。
これによりKubernetesに仮想的なKubernetesをデプロイし、サクッとマルチノードな仮想Kubernetesを得られました。
……が、その結果生まれたのは無秩序に伸びる枝葉のような仮想Kubernetesの数々🤔ポンポン仮想Kubernetesをデプロイしたため、どの仮想Kubernetesにどのアプリケーションが載っているのかわかりにくくなくなってしまいました。
これではあかんと、ArgoCDによるGitOpsでおうちKubernetesの剪定作業を行いました👏
RyuSA/seagull-project (github.com)
これによりGit上に登録されたマニフェストに従って仮想Kubernetesがデプロイされ、Gitリポジトリに何があるのかが一目でわかるようになりました🎉
また、副産物として「Kubernetesの設定(=vclusterのHelmのテンプレート)をリモートのGitリポジトリに登録 → 自動的に仮想Kubernetesがデプロイ」の流れを得ました。
まさに「おうちKubernetesで Kubernetes as a Service」ですね🎉
まとめ
以上が、この半年間でおうちKubernetesで試してみたことでした👏
- 気温や湿度などの家庭環境のメトリクス取得&可視化
- code-server as a Service on Kubernetesで簡単IDE払いだし
- Github Actionsのセルフホストランナーのデプロイ
などなど、これからもおうちKubernetesで色々やってみたいことがあるので継続して改善していこうかと思います。