LoginSignup
2
2

More than 5 years have passed since last update.

Ingressを使ってみよう

Last updated at Posted at 2018-09-15

devopsに入門した肉体派エンジニアです(・∀・)
今はGKEのingressを使っていろいろやってみようということで勉強中です!
今回はここまでわかったことをまとめていこうと思います

ingressってなんぞ?

ざっくりL7ロードバランサーって理解でOKかなと。
k8sではインターネットとサービスの間に置かれてアクセスを捌いてくれます

          internet
              |
   [       Ingress        ]
   ------|-----------|--
   [ Service ] [ Service ]
     |     |      |     |
   [Pod] [Pod]  [Pod] [Pod]

早速書いてみよう!

apiVersion: extensions/v1beta1
kind: Ingress # Ingressであるとわかるようにする
metadata:
  name: ingress-experimental
  # annotations:
  #  kubernetes.io/ingress.global-static-ip-name: 詳しくはここを参照のこと [https://github.com/kubernetes/ingress-gce/tree/master/examples/static-ip](https://github.com/kubernetes/ingress-gce/tree/master/examples/static-ip)
spec:
  rules:
  - http:
      paths:
      - path: /* # ここにルールを追加する。下にいくつも追加できるが上限は50らしい
        backend:
          serviceName: nginx # ここにサービス名
          servicePort: 80 # ここはtargetPort

この記述だとNginxというmetadata.nameのサービスに転送してくれる。
転送のルールは /*としたのでとりあえずIPアドレスにアクセスしてきたらNginx側のルートにどんどん転送される。階層構造にも正しく転送されるので IP_ADDRESS/path/to/fileでもきちんと表示される。

よくありそうな設定パターン

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-experimental
spec:
  rules:
  - http:
      paths:
      - path: /v-1/* # ここにルールを追加する。下にいくつも追加できるが上限は50らしい
        backend:
          serviceName: nginx-v1
          servicePort: 80 # ここはtargetPort
      - path: /v-2/* # ここにルールを追加する。下にいくつも追加できるが上限は50らしい
        backend:
          serviceName: nginx-v2
          servicePort: 80 # ここはtargetPort

この場合は IP_ADDRES/v1/と IP_ADDRES/v2/以下に転送される。
このとき気をつけないといけないのは転送先のPodでも Pod/v1/以下に転送されること。これはNginxなんかだとrewriteなどで適切なパスに飛べるようにして上げる必要がある。
私はここでかなりハマった(´・ω・`)

参考にしたやつ

kubernetes.io
https://qiita.com/ryodocx/items/008fdaf5c68678656749

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