k8sのIngress(サービスを外部に公開するための必須コンポーネント)について
こんにちわ
がじぇったー (@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の最強参考書)
Kubernetes完全ガイド (impress top gear)
- 作者: 青山真也
- 出版社/メーカー: インプレス
- 発売日: 2018/09/21
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
Kubernetesの他の記事へは下記の一覧から飛べるようにしているので参照ください。