LoginSignup
7
1

More than 1 year has passed since last update.

Telepresence 2 を試してみる part.1

Posted at

概要

ローカル環境でKubernetes用のマイクロサービスを開発する際に便利なツール Telepresence がV2にアップデートされていたので試してみました。
たくさんの機能がありますが、今回は最も基礎的な使い方である Telepresence Connect を利用してみます。

なぜTelepresenceを使いたいか?

kubernetesによるマイクロサービス環境を運用する中で課題の1つとなるのが、ローカル環境にてマイクロサービス間通信が必要な箇所の検証があります。
マイクロサービスAと通信を行うマイクロサービスBをローカル環境で開発する際に動作テスト等を行うためにローカルにある開発中のアプリとマイクロサービスAを通信させてテストしたいと思う事があります。
マイクロサービスAのmockにあたるdockerコンテナをローカル環境に稼働させる方法もありますが、DBを別途用意する必要やアプリバージョンの問題等で安定した開発環境にはなっておりません。

この問題を解決するためにTelepresenceが有効に利用できます。
Telepresenceを使うことでローカル環境からKubernetes内部のエンドポイントに対して疎通する事ができるため、アプリ開発を行う際の動作確認が手軽に実施できます。

ちなみに、Kubernetes内部のエンドポイントとは my-svc.my-namespace.svc.cluster.local にて定義されるkubernetesのServiceに対するエンドポイントです。
基本的にはKubernetes内部間の通信に使われるKubernetes内のDNSに定義されている名前なので外部から疎通する事はできません。

Telepresence2を利用する前提条件

Telepresence2の内部にてkubectlコマンドでクラスターに接続を行います。
Telepresence2実行前にローカル環境のkubectlコマンドにて接続したいクラスターに接続できる状態になっている事を確認してください。

また、自身の利用できるアカウントが必要な権限を付与されている必要があります。
Telepresence2を利用するためには各リソースに対して下記の権限が必要となります。

対象リソース 必要権限
pods get, list, create, watch, delete
servuces get, list, watch, update
pods/portforward create
deployments get, list, update
replicasets get, list, update
statefulsets get, list, update
hosts *
mappings *
endpoints get, list, watch
namespaces get, list, watch

ref.https://www.getambassador.io/docs/telepresence/latest/reference/rbac/

TelepresenceConnectを試してみる

Telepresence2 のインストール

ローカル環境にてTelepresence2のインストールを行います。
brewを使ってインストールする事が可能です

$ brew install datawire/blackbird/telepresence

brewが無い環境であれば直接バイナリファイルをダウンロードして利用する事も可能です。

$ curl -fL https://app.getambassador.io/download/tel2/darwin/amd64/latest/telepresence -o /usr/local/bin/telepresence
$ chmod a+x /usr/local/bin/telepresence

ローカル環境とk8sを接続する

connectコマンドを使ってローカル環境とk8s環境を接続する事ができます。

$ telepresence connect

telepresence connectを行うとローカル環境にてDaemonが起動します。

ローカルからk8s上のエンドポイントを叩いてみる

$ curl "http://my-svc.my-namespace.svc.cluster.local/helth-check"

レスポンスが帰ってくれば成功です。
非常に簡単ですね。

ローカル環境とk8sを接続を切る

quitコマンドを使ってローカル環境とk8s環境の接続を切る事ができます。

$ telepresence quit

感想

TelepresenceConnectとローカルからk8s上のエンドポイントを簡単に叩く事ができました。
アプリケーションの開発やマイクロサービス間の動作確認を行う上でとても便利になりそうです。

ただし、必要な権限が多いので注意が必要な印象を受けました。

Telepresence2は他にも様々な機能があるので調査次第part2を書きたいと思います。

7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1