
前回に引き続き、今月もRaspberry Pi 4を複数台とRADXA ROCK 5A*¹で構成したミニPCクラスタについて紹介します。前回の記事では、使用した機器の詳細やLAN内での構成についてご紹介しました。今回は外部からのアクセス方法に焦点を当てます。
このミニPCクラスタでは、外部アクセスを可能にすることで、リモートからの管理や活用範囲の拡大を実現しました。具体的な方法や設定については、セキュリティ対策を重視しつつ、以下のステップで実施しました。
このKubernetesクラスタ上で稼働している各サービスは、Cloudflare Tunnel*²を通じてインターネットに公開されています。これにより、場所を問わず外部からサービスにアクセスでき、リモート環境でも管理や閲覧が可能です。特に、Webサーバや閲覧専用のサービスは公開してもセキュリティ上問題がないため、制限を設けずにアクセスを可能にしています。しかし、管理者用のダッシュボードや特定の内部ツールに対して誰でもアクセスできる状況は、重大なセキュリティリスクを生む可能性があります。そのため、これらの特権機能へのアクセスにはAzure ADを使った認証を導入し、権限を持つユーザのみが利用できるようにすることで機密性と安全性を確保しています。
GitOpsの手法を採用し、GitHubで管理しているアプリケーションのマニフェストを基に、Argo CDがKubernetesクラスタへ自動的に継続的デプロイを行っています。Argo CDとGitHubは外部からセキュアにアクセス可能であるため、リモート環境からでも各アプリケーションに変更を反映することができます。
図3 Argo CDのアプリケーション一覧
コンテナログやノードの状態を可視化できる環境を整備しています。コンテナログの収集にはPromtailを使用し、Lokiに保存しています。また、クラスタおよびノードのメトリクス収集にはPrometheusを採用しています。収集したログとメトリクスはGrafanaを使って可視化し、複数のダッシュボードを通じてクラスタのパフォーマンスと状態をリアルタイムで把握することができます。Grafanaは認証を設定した上で外部に公開しているため、どこからでもセキュアにアクセス可能です。
図4 各ノードの状態を確認するGrafanaダッシュボード
自宅サーバを始めたきっかけは、クラウドサービスの利用で発生した従量課金が想定よりも膨れ上がってしまったことでした。放置してしまうと金銭的な大惨事に繋がりかねないマネージドサービスよりも、安心して自由に使える環境を自宅に持ちたいという思いからこの趣味を始めました。しかし、初期投資にはそれなりの出費があり、電気代も徐々に上がってきているようです。
クラウドでも自宅サーバでも、性能と可用性を追求すると、どうしてもコストはかかってしまうものです。それでも、この環境を使いながら過ごす毎日はとても楽しいです。一度頑張って構築すれば、さまざまなことができるようになるので、興味のある方はぜひチャレンジしてみてください。
今回記事を作成するにあたり、参考にした記事や製品のサイトをご紹介します。
使用した製品の詳細や補足情報について知りたい方は、ご参照ください。