はじめに
※QiitaEngineerFesta 2022 「remote.it を使って○○に接続してみた!」 に参加して記載しました。
タイトルにK8sとありますが、今回の内容にKubernetesはほとんど登場しません。
おうちのMacBookProに立てたローカルKubernetes環境に、カフェなどの外出先からリモート接続して使いたいというお話です。
今回はリモート接続にあたり、Remote.itというサービスを利用してみました。
なぜ Mac から Mac にリモート接続したいのか?
自宅では、開発および諸々の技術検証のためにローカルのK8s環境「おうちK8s」を運用しています。
クラウドのマネージドK8sを利用することも可能ですが、プライベートな環境で色々と細かい部分に手を入られるローカル環境はやはり便利です。
母艦となるMacBook Proには、無償かつ簡単に本格的なKubernetes運用が可能な「Tanzu Community Edition」をkind方式(Kubernetes in Docker)で使用しています。
※Tanzu Community Editionのインストールはこちらから
そして、カフェなど外で仕事をするときは、軽快な MacBook Air (M1)を持ち歩いています。
こちらにもローカルK8sを入れても良いのですが、コンテナ環境の二重管理は面倒ですし、できれば端末負荷をかけたくありません。そこで、カフェから自宅のMacにリモート接続したいニーズが出てきます。
そして何より、オサレなカフェでオサレMacbook Airでスマートにオサレ仕事するのは誰しもモチベーションが上がるものです。
なぜ Remote.it を使うのか?
カフェからおうちにリモート接続するためには、フリーWi-Fiにつなげて、フリーのVPNサービスを使ったりするわけですが、ご存知の通りセキュリティ的には非常に不安があります。Remote.itを使えばVPN無しでセキュアに接続ができるというメリットがあるとのことで、早速試してみました。
ここまでの超簡単なイメージ図は以下の通りです。
Remote.it の始め方
以下の簡単なステップでリモート接続が可能になるようです。
- Remote.it のアカウントを作成
- 接続先のデバイスにエージェントをインストール
- サービス(SSH, RDP等)の設定を追加
- Remote.it を経由してリモート接続
1. Remote.it のアカウントを作成
まずは、Remote.itのトップページの「はじめる」からアカウントを作成します。
登録したメールアドレスに送付されるメールのリンクをクリックして認証します。
登録したメールアドレスとパスワードでサインインします。
Googleアカウントでのログオンも対応しているようです。
ちなみに、初期サインイン時には、簡単なチュートリアルが実行されます。
AWS VPCに各種サービス(SSH, RDP, HTTP, SQL)でリモート接続する流れや雰囲気を簡単に掴むことができます。
2. 接続先のデバイスにエージェントをインストール
以下のページからエージェントをダウンロードします。
インストール手順は以下のドキュメントに従って進めます。
デスクトップアプリの起動後、「Settings」→「Set up this device」を選択することで、自身のマシンの登録作業が開始されます。
好きな名前(接続先を示す)を設定し、「REGISTER」を選択します。
3. サービス(SSH, RDP等)の設定を追加
Remote.itのサービス追加設定の前に、Mac自身の設定変更を実施します。
「システム環境設定」→「共有」から、以下を有効にします。
Remote.it でデバイスを選択し、Serviceの「+」マークからサービス設定を追加しています。
まずはSSHを追加します。
次にVNCを追加します。
ちなみに、このサービス追加ではデバイス側に有効になっているサービスを自動検出してくれるようです。
有効になっていないサービスを選ぶと「No service found running on port and host address.」と表示され追加することができません。
4. Remote.it を経由してリモート接続
ここからは外に出てカフェ作業です。
持ち出したMacBook Airからリモート接続を行なっていきます。こちらのマシンにはRemote.itのエージェントも何も入れていません。
Wi-Fiに接続後、ブラウザ(Chrome)からRemote.itのサイトにログオンします。
※以降全てブラウザとMac標準アプリで事足りています。
デバイスに先ほど登録したサービスが表示されているので、「ADD TO NETWORK」を押してしばらくすると、このようにRemote.it接続用のアドレスが払い出されます。
「Connect」を選択して接続を実施します。
sshの接続許可を求めるダイアログが表示されるので、「許可」を選択します。
はい、簡単にリモートSSH接続ができました。
ここからはkubectlを使って、自宅と同じようにローカルKubernetesの操作が可能です。やったね!
VNCも同様に、「ADD TO NETWORK」を押してアドレスを払い出してから、そのアドレスをコピーします。
MacのFinderから「移動」→「サーバへ接続」を選択し、vnc://〜の後ろにコピーしたアドレスをペーストして接続を実行します。
VNCも問題なく接続できました。
特にネットワークの遅延なども感じることなく、スムーズに操作が可能です。
デバイスステータスのSlack通知設定
リモート接続で考慮が必要な点といえば、接続先デバイスの死活監視です。
Slack連携の機能でデバイスのオンライン/オフラインステータスを通知することが可能なようなので、せっかくなので設定してみます。
Webhookに対応しているため、Slack APIから設定していきます。
「Create an App」を選択します。
適当なApp Nameを記入し、自身のSlack Workspaceと連携させてから「Create App」を選択します。
Slack Appの設定をしていきます。
「Incoming Webhooks」を選択します。
「Activate Incoming Webhooks」をOnにして、Webhookを有効化します。
少し下の方にスクロールして、「Add New Webhook to Workspace」というボタンを選択します。
Slack Appが連携するチャンネルを設定し、「許可する」を選択します。
ここで設定したチャンネルにRemote.itからのデバイスステータスの通知が届きます。
そうすると元の画面にWebhook用のURLが作成されますので、これをコピーします。
Remote.itの管理画面に戻ります。
「Settings」→「Notifications」から「Webhook」のトグルを有効化します。
URL ENDPOINTに先ほどコピーしたURLをペーストして「SAVE」を選択します。
これで設定は完了です。
通知テストのため、接続先デバイスのネットワークを切断してしばらく待ってみました・・・。
5分くらいするとオフラインになった旨のメッセージが届きます。
ネットワークが復活すると、こちらもメッセージを無事に受信しました。
これでどこでも通知が受け取れるので安心です。
まとめ
今回は、非常にシンプルなユースケースとして、Macへのリモートコンソール接続をご紹介しました。
自宅に母艦のMacやWindowsを置いて、カフェやコワーキングスペースからリモート接続するようなケースで、簡単かつ安全に接続することが可能なRemote.itは、個人利用であれば5台までフリーなこともあり、便利に使えるのではないでしょうか。