こんにちわ
がじぇったー (@hackmylife7) | Twitter
です。
今日はサービスを外部に公開する際に必須のコンポーネントになるIngressについて学んでいきます。
はじめに
サービスをexpose(外部からのトラフィックを受ける)方法はいくつかあるが、Ingressはより高度な機能を提供する
ちなみに外部からのトラフィックを受け付けるコンポーネントは以下の通り
- NodePort Service
- LoadBalancer Service
- Ingress Controller
Ingressとは
外部からサービスを受け付けるために用いられるコンポーネントであり、
アクセス先のURLに応じてどのサービスにトラフィック送るのかルーティングを行うことができる
また、ロードバランシングやSSL通信の機能も備わっている。
イメージはロードバランサ。
構成は外部からのトラフィックをIngressがうけ、
そのロードバランス先にNodePortやLoadBalancer等外部とやりとりできるサービスリソースが必要
トラフィックのイメージ
internet
|
[ Ingress ]
--|-----|--
[ Services ]
Ingressを構成する要素
yamlファイルの例
下記の例だとfoo.bar.comへのトラフィックを受けたらパスが/fooだったらport4200へ、パスが/barだったらport8080に送るよう定義されている.
rules配下がResouce(ルール)のイメージ。
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: simple-fanout-example
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: foo.bar.com
http:
paths:
- path: /foo
backend:
serviceName: service1
servicePort: 4200
- path: /bar
backend:
serviceName: service2
servicePort: 8080
Default Backend
URLやhostが定義されていない宛先に対してデフォルトでどこにトラフィックを送るのか、定義することができる機能
基本的に、デフォルトのバックエンドは2つのURLを公開する。
/healthz that returns 200(死活監視)
/ that returns 404
参考(Kubernetesの最強参考書)
- 作者: 青山真也
- 出版社/メーカー: インプレス
- 発売日: 2018/09/21
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
Kubernetesの他の記事へは下記の一覧から飛べるようにしているので参照ください。