Telepresence2でAWS ElastiCacheエンドポイントのようなプライベートIPアドレスに接続する
以前、Kubernetesクラスターと同期する、マイクロサービスのためのローカル開発環境という題でブログを書きました。
それからしばらく経ち、Telepresence2が登場し、無印のTelepresenceはサポート対象外になり、今後はTelepresence2を利用することが推奨されるようになっています。
ということでTelepresence2に移行しようとしているのですが、まだ解決すべき問題が残っていて移行しきれていません。 問題はAWS ElastiCacheエンドポイントのようなプライベートIPアドレスに接続するための設定です。 喜ばしいことに、接続自体は2021年6月14日にリリースされたvesion 2.3.1のアップデートで追加されたAlsoProxyできるようになりました。
AlsoProxy設定でプライベートIPアドレスに接続する
以前の無印のtelepresenceではコマンドのalso-proxyオプションがありましたが、2の設定は以下のようにkubernetesのconfigファイルで設定します。
~/.kube/config
- cluster:
certificate-authority-data: *********************************
server: https://*******.ap-northeast-1.eks.amazonaws.com
extensions:
- name: telepresence.io
extension:
also-proxy:
- 172.29.0.0/16
name: arn:aws:eks:ap-northeast-1:******:cluster/my-cluster
AlsoProxyの設定は、extensionsの部分です。
extensions:
- name: telepresence.io
extension:
also-proxy:
- 172.29.0.0/16
このようにIPアドレスの範囲を指定することで、それに当てはまるアウトバウンドはTelepresenceによってプロキシされてクラスター内からの通信のように振る舞うので、クラスター内からの通信しかできないAWS ElastiCacheエンドポイントのような接続先とも通信できるようになります。
追記
(2021年7月28日追記)
2021年7月23日にリリースされたv2.3.7からtelepresence status
コマンドでAlsoProxyの設定状態を確認することができます。
INFO[0000] No config found. Using default
Root Daemon: Running
Version : v2.3.7 (api 3)
DNS :
Local IP : <nil>
Remote IP : <nil>
Exclude suffixes: [.arpa .com .io .net .org .ru]
Include suffixes: []
Timeout : 4s
Also Proxy: (1 subnets)
- 172.29.0.0/16
残された課題
これで機能としては実用的になったと思うのですが、この設定ファイルに設定するという方法だと
aws eks update-kubeconfig --name my-cluster
のようにconfigを更新するようなコマンドを叩くとextentions部分が消えてしまうので毎回更新のたびに追加しないといけないという面倒なことになっています。どうにかならないものか。。
開発環境だと夜は落としてたりするので認証情報を更新する必要があり、よくこれを叩いているのです。
またいい方法が見つかったらどこかで書きます。
もし何か質問やフィードバックがありましたら、 @biosugar0 までお願いします。
microserviceskubernetesTelepresence2
2021-07-17