概要
ローカル環境で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を書きたいと思います。