Kubernetesクラスターの遠隔操作による開発を支援するTelepresence[2ページ目]

そこで登場したのがTelepresenceだ。

Telepresenceがその問題を解決する

Telepresenceがその問題を解決する

Telepresenceは「開発のためのカッコいいKubernetes VPN」「超強力なポートフォワードされたkubectl」「開発用PCとKubernetesクラスターのネットワークブリッジ」などと称されていることを紹介し、デベロッパーがどのようにTelepresenceを認識しているのかを紹介した。

「Telepresenceとは何か?」を紹介

「Telepresenceとは何か?」を紹介

その動作原理を簡単に紹介したのが次のスライドだ。ここではクラウド側にA、B、Cというマイクロサービスが存在するアプリケーションを想定した時に、そのAというサービスだけを開発用PC側で実行されるサービスに置き換えて通信を行うことで、A以外の設定や環境を変えずにテストができると解説している。

本番環境のサービスを開発用PCと置き換えて通信するTelepresence

本番環境のサービスを開発用PCと置き換えて通信するTelepresence

次のスライドでは具体的な例、ここでは3つのサービスで構成されるショッピングカートアプリケーションを使って解説を行った。Shopfront、Productcatalogue、Stockmanagerという3つのサービスが存在する典型的なECサイトを模したデモによってTelepresenceの機能を紹介している。図の中央上部に書かれたShopfrontというSpring Bootのアプリケーションを、開発用PCの中のアプリケーションと入れ替えて通信を行うというのがデモの主旨だ。

ECサイトを使ってTelepresenceのデモを実行

ECサイトを使ってTelepresenceのデモを実行

このデモでは画面を3つに分割して解説を行っている。左側はShopfrontのWebページ、右上はkubectlのコマンドを投入するターミナル画面、右下はKubernetesのPodのモニター画面だ。

ECサイトのデモ画面

ECサイトのデモ画面

デモの中ではnslookupコマンドでネットワーク環境を確認したり、実行中のプロセスにブレークポイントを設けて、値を変更してWebページに表示させたりするなど、開発中に必要な操作を実施してみせており、デベロッパーが欲しいと思われる機能を見せた形になった。

TelepresenceのデモでIntelliJから変数の値を変更しているところ

TelepresenceのデモでIntelliJから変数の値を変更しているところ

次のスライドではTelepresenceによる効果、利点を紹介している。特に開発用PCで使われているツールには制限はない。つまりどのようなツールであってもTelepresenceを使うことで、実行環境(開発環境もしくはステージング、本番環境)に開発用PCを置き換えて実行できるという部分を強調した形になった。必要要件としては当然ながら、ネットワーク接続、実行するデベロッパーがkubectlを実行できる特権を持っていること、MacもしくはLinux環境が必要であることが明記されている。Windowsを開発用PCとして使っている場合は、Windows 10(Version 1709より正式版)で導入されたWindows Subsystem for Linuxを使うことがドキュメントサイトに記載されている。

Telepresenceの利点を解説

Telepresenceの利点を解説

参考:Windows support - Telepresence: Fast, realistic local development for Kubernetes and OpenShift Origin microservices

またTelepresenceを使わないでリモートの開発環境に開発用PCを置き換えて実行することの難しさを「Don’t Try This at Home」というコピーとともに紹介している。

Telepresenceを使わないで同じことをやるのは難しいと訴求

Telepresenceを使わないで同じことをやるのは難しいと訴求

そして開発の規模、つまり開発環境、ステージング環境、本番環境などの違いによってどのようなワークフローになるのか? を紹介するスライドでは、本番環境しかないシンプルな組織、中規模組織で開発環境と本番環境が分かれている組織、本番環境に複数のnamespace(つまり複数のアプリケーション)が存在するような大規模な組織に分けて解説を行った。

シンプルな組織の場合は本番環境でTelepresenceを利用

シンプルな組織の場合は本番環境でTelepresenceを利用

この例では開発環境を兼ねた本番環境においてTelepresenceを実行し、リアルなトランザクションが開発用PCを通過していくというユースケースになる。しかしこれはあくまでも利用例として挙げたもので、実際には止めたほうが良いとコメントしていたことが印象的だった。

この例では開発環境と本番環境が分離されている

この例では開発環境と本番環境が分離されている

これが大部分の企業での開発環境及び本番環境だろう。開発環境で開発用PCがTelepresenceのProxy経由でコードを実行しテスト、それが上手くいけばCircleCIなどを使って本番環境に実装するという流れだ。

より大規模な例を紹介。これはドイツの不動産仲介企業Engel&Volkersの例

より大規模な例を紹介。これはドイツの不動産仲介企業Engel&Volkersの例

この例では、ドイツの不動産仲介企業Engel&VolkersのエンジニアChristian Goggia氏が、KubeCon EU 2019にて行ったセッションを元に解説を行った。この例はBazelというビルドツールと組み合わせて利用しているという。Roggia氏のプレゼンテーションは以下から参照して欲しい。

参考:Reproducible Development and Deployment with Bazel and Telepresence - Christian Roggia

Telepresenceのコンポーネント。ClientとProxy Server

Telepresenceのコンポーネント。ClientとProxy Server

Telepresence Proxy ServerをPersistentに

Telepresence Proxy ServerをPersistentに

現在のアーキテクチャーでは、Telepresenceが実行されるたびにProxy Serverが起動され、実行が終わると消去される仕組みだが、永続的に起動し続けるというモードも検討されていることを解説した。

マルチユーザーのサポートを検討中

マルチユーザーのサポートを検討中

現在のTelepresenceのアーキテクチャーは、開発用PCの上で実行されるClientと、ターゲットとなるシステムの中で実行されるProxy Serverとで構成されている。この構成は1ユーザーが1コンポーネント/サービスだけをスワップして実行するというやり方には適しているが、複数のコンポーネントを置き換えて実行するには適していない。

現状ではnamespaceを分けて利用するという形になるが、理想的とは言えないようだ。そしてマルチユーザーでのTelepresenceをイメージするために、例としてクリストファー・ノーランが監督した「インセプション」からの画像を使っているのは興味深い。「夢の中でさらに夢を見る」というややこしい入れ子状態を、マルチユーザーの環境でスワップするTelepresenceに模しているというわけだ。

特定のトランザクションだけをスワップする方式も検討中

特定のトランザクションだけをスワップする方式も検討中

このスライドでは、特定のクッキーを持つトランザクションだけを開発用PCにスワップする方式を検討していることを解説した。ヘッダーを読んで特定のトランザクションだけを間引きしてスワップするという発想らしい。

コンタクト先やリソースへのリンクを紹介

コンタクト先やリソースへのリンクを紹介

Telepresenceは開発用PCと実行環境のプロセスを置き換えて実行することで、実行環境の違いによるエラーなどを抑制するソリューションである。シンプルな発想から産まれたソリューションではあるが、利用例が上手く当てはまれば効果は大きいだろう。サンドボックスプロジェクトからインキュベーションに昇格するためには、さらに多様な使われ方とそれを可能にする機能拡張が求められるだろう。将来の動向に注目したい。

オープンソースプロジェクト:https://www.telepresence.io/

Ambassador Labsの提供する商用サービス:Ambassador Cloud | powered by Telepresence

この記事のキーワード :

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30