メッシュっぽいWi-Fi APをKubernetesのラズパイ包みで構築した件
2021年07月08日 木曜日
IIJ Raptorサービス部のエンジニア、RyuSAです。普段はアプリケーションの実装やアーキテクチャ、最近はKubernetesを使った業務を担当しています。
唐突ですが、こんなものが作りたいな〜と思いたちました。
複数のRaspberry Piを物理的に分散して配置、それぞれのPi上でWi-Fi APを起動し同一のSSIDとパスワードを設定……とすれば、クライアント側でローミングして途切れにくいWi-Fi環境を簡単にセットアップできそうだなと🤔
というのも、個人的な話で恐縮ですが今自分の住んでいる部屋がざっくりこのような形をしております。
ブロードバンドルータと寝室の間にリビングとキッチン、そして壁が挟まっています。このせいでか寝室にWi-Fiの電波が少し届きにくいのが現状です。
もちろん新しい”つよつよ”なWi-Fiルータを購入して敷設すれば良いだけの問題なのですが、わたくしこれでも一介のエンジニア……これを自作してみようかと思った次第。
そして今回の条件としてこんな感じのことを考えながら……
- 🤔 サーバにミドルウェアのインストールや細かい設定を手でやりたくない
- Raspberry Piをスケールした際の手間を減らしたい
- せいぜいRaspberry Piのcloud-initで済む範囲
- 👏 リモートでWi-Fiアクセスポイントの設定をしたい
- 急な来客の際もコマンドひとつでバチッと設定☆なんてやりたい
- 🥺 多少の開発は許す
- 🥰 なにか新しいことに挑戦して、たのしみたい
こんなものができました(唐突)
RyuSA/accesspoint-operator | Github
Wi-Fi APを自動化するKubernetesのOperatorとCRD(Custom Resource Definition)を開発しました🎉 Wi-Fi APのバックエンドとしてhostapdを使っており、そのhostapdをOperator側で設定できるように構成しました。
これによりKubernetesのリソースとしてSSIDやパスワードをデプロイすることで、複数のRaspberry Piに設定が行き渡り自動的にWi-Fi APが設定されるようになりました!😎
奇遇なことに我が家にはRaspberry Pi 4を利用したKubernetesクラスターが構築されているので、その上にデプロイするようにして動作確認してみました。
ブロードバンドルータの隣にAP化の済んだRaspberry Piを1台、寝室に同じものをもう1台置いてブロードバンドルータから寝室までゆっくり歩いてみます。AP名は”RASPBERRY”で統一してあります。
少しずつWi-Fiの受信強度が落ちていきましたが、14秒過ぎたあたりでWi-Fiの受信強度が復活しAPが入れ替わっているのが確認できました。思ったより「いい感じ」に動いてくれて良かったです。特に我が家のRaspberry PiはPoE Hat装備なのでイーサネットケーブル1本で起動できる点もキュートでした。🥰
……(新品のルータ買った方がメンテナンス楽なんじゃないか問題はさておき)とりあえず、たのしかったので万事OKということで!
今回実装したOperator周りの詳細についてはこちら > Raspberry Pi上にWi-Fi APを自動構築するKubernetes Operatorを作った話 – メモ – RyuSA