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

AccessPoint Operator on Raspberry Pi

928b1395afedebb5ee48d44ab917c5f1?s=47 RyuSA
July 21, 2021

AccessPoint Operator on Raspberry Pi

Wi-FiのアクセスポイントをCRDで管理できるようにしたKubernetes Operatorを実装した話です
Kubernetes Meetup Tokyo #43

@bell17 さんのKubebuilder資料:https://speakerdeck.com/bells17/kubebuilder-introduction
ブログ:https://ryusa.hatenablog.com/entry/ap-operator-on-raspberrypi
Gtihub:https://github.com/RyuSA/accesspoint-operator

928b1395afedebb5ee48d44ab917c5f1?s=128

RyuSA

July 21, 2021
Tweet

Transcript

  1. RyuSA Raspberry Pi上にWi-Fi APを⾃動構築︕ - してくれるKubernetes Operatorを作ったよって話 - Kubernetes Meetup

    Tokyo #43
  2. Financial Service Engineer Java & SpringBoot / TypeScript & React

    Docker / Kubernetes : ryusa_eng RyuSA : RyuSA
  3. 寝室にいるとWi-Fiの電波が弱い問題 • ブロードバンドルーターから寝室までの距離が遠いため減衰しやすい🥺 • さらにルーターと寝室の間にはキッチンと壁……もうこれはわからんな…… • 時折Wi-Fiが途切れることもあり、かなり困る • Wi-Fiルーターのグレードアップをすれば︖ •

    そんなお⾦がない︕︕︕︕ • せっかくなので、何か作りたい︕ キッチン ルーター 扉 ⽞関 寝室 扉 ここが︕遠い︕
  4. そこで、hostapd • hostapd = ワイヤレスネットワークインタフェースをAPモードとして管理してくれるソフトウェア • APモード ≒ Wi-Fiアクセスポイント稼働 •

    設定ファイルでSSIDやパスワード、バンド帯などを指定して起動できる • UNIX SocketでAPの状態を確認することができ、可観測性もGood • Raspberry Pi 4をWi-Fi APとして動かすことができる • ポータビリティ(物理)との相性抜群 • hostapd on ラズパイを寝室に配置して電波弱い問題を解決︕ • 先⼈たちの轍を踏んでいけ……︕
  5. こんな感じのストーリーを達成したい 1. 定義ファイルを投げつける 2. いい感じに計算する 4. Wi-Fi、⼤地に⽴つ︕ 3. 設定ファイルが分配される

  6. おぼろげながら、浮かんできたんです。このアーキテクチャが。 AccessPoint Operator eth0 wlan0 br0 hostapd eth0 wlan0 br0

    hostapd AccessPoint Resource (SSID / Password / etc.)
  7. Operatorの実装にはKubebuilderを採⽤ • Kubebuilderを使ってAccessPointリソースを監視するOperatorを実装 • KubebuilderはOperatorを実装するためのフレームワークのひとつ • @bells17 さんがHello worldデモをしてくださったのがきっかけ •

    https://speakerdeck.com/bells17/kubebuilder-introduction • 実際にはAccessPointとAccessPointDeviceの2種類のリソースを実装 • Wi-FiのAPには物理側の情報も必要(インタフェースなど)であるため責任を分離した • AccessPointにはSSIDやパスワード、Wi-Fi APのデプロイ先など「利⽤者」が責任を持つ情報を含ませる • AccessPointDeviceにはインタフェースやブリッジなど「管理者」が責任を持つ情報を含ませる • 正しくリソースを分離できてるか……だれか……
  8. 結論︓たのしかった • つまるところ、Kubernetesをhostapdデーモンのランチャーとして使ったサンプルでした • https://github.com/RyuSA/accesspoint-operator • 実運⽤するのであればk3sなどの軽量なディストリビューションを使う⽅がベター • 実はまだ課題⼭積み •

    エンハンスやバグがちょいちょい残ってる • AccessPointDeviceだけ削除しても対応しているDaemonSetが削除されない • Wi-Fiチップの制限を反映できていない(SSIDの数とか) • 特権PodをバラまくDaemonSetってどうなんだろう…… • 継続して適当に実装できたらなぁと👍
  9. Thank you