0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

k8sでゲートウェイPodを介して複数のserviceへ一度にport-forwardする方法

Last updated at Posted at 2024-08-02

kubectl port-forwardは指定したpodのポートをローカルマシンに開いてくれる便利な機能なのですが、例えばpostgres:5432とmemcache:11211を一緒に開けたい場合には二つのpodに別々にport-forwardしなければならず、さらにこれを増やそうとすると面倒な事になります。

そこで、望みのサービスのポートを転送してくれるゲートウェイとなるPodを作ってそれを踏み台にしてport-forwardすることで任意の数の転送を一回のport-forwardで済ませてしまいましょう。

apiVersion: v1
kind: Pod
metadata:
  name: gw
spec:
  terminationGracePeriodSeconds: 0
  containers:
  - name: alpine
    image: alpine:latest
    command: ["sh", "-c", "while true; do sleep 3600; done"]
  restartPolicy: Never

例えばこんな感じにゲートウェイとなるPodを作成して kubectl exec -it gw -- shsocatをインストールします。

apk add socat

続いて socatを使って望みのserviceにポートを転送します

socat TCP-LISTEN:5432,fork TCP:postgres:5432 &
socat TCP-LISTEN:11211,fork TCP:memcached:11211 &
exit

あとはローカル環境から

kubectl port-forward gw 5432:5432 11211:11211

とやれば一度にポートフォワードできます。

転送するサービスを増やしたい時には kubectl exec -it gw -- shsocat ...を足してやればokです。

まあ最初から kubectl port-forward が sshのように

kubectl port-forward gw 5432:postgres:5432 11211:memcached:11211

みたいに書けたら良かったんですけどね

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?