Kubernetes 上でアプリを開発するときに、ローカル環境から service に手軽にアクセスできると便利です。わざわざロードバランサや ingress リソースを使ってサービスを公開するのは煩雑ですから。そういうときに使えるのが port forwarding です。
app を作成しましょう。これは deployment と、 simpleservice
という名前の service から構成され、ポート 80
でサービス提供します。
$ kubectl apply -f https://raw.githubusercontent.com/openshift-evangelists/kbe/master/specs/pf/app.yaml
ローカル環境、たとえばあなたのラップトップから、simpleservice
service にポート番号 8080
でアクセスしたいとしましょう。そのためにトラフィックを次のように転送します。
$ kubectl port-forward service/simpleservice 8080:80
Forwarding from 127.0.0.1:8080 -> 9876
Forwarding from [::1]:8080 -> 9876
上記から、トラフィックは service を介してポート番号 9876
でサービス提供する pod にルーティングされていることがわかります。
これで、以下のように service をローカルから呼び出すことができます。(別のターミナルセッションで実行します)
$ curl localhost:8080/info
{"host": "localhost:8080", "version": "0.5.0", "from": "127.0.0.1"}
ポートフォワーディングは本番運用のトラフィックに使うべきではなく、開発用また実験用であることを覚えておいてください。