Carpe Diem

備忘録

IngressとGCPロードバランサーの命名規則

背景

Kubernetes Ingressで作成されたGCPロードバランサー周りのコンポーネント

  • k8s2-um-xxx
  • k8s2-rm-xxx
  • k8s2-tp-xxx
  • k8s-be-xxx

など色々あり、どれが何を表しているのか分かりづらかったのでまとめます。

命名規則コンポーネント

命名規則コンポーネントの関係を一覧化すると以下です。

命名規則 コンポーネント annotation
k8s2-um-xxx-{namespace}-{name}-yyy URL Map ingress.kubernetes.io/url-map
k8s2-rm-xxx-{namespace}-{name}-yyy Redirect URL Map ingress.kubernetes.io/redirect-url-map
k8s2-fr-xxx-{namespace}-{name}-yyy Forwarding Rule ingress.kubernetes.io/forwarding-rule
k8s2-fs-xxx-{namespace}-{name}-yyy HTTPS Forwarding Rule ingress.kubernetes.io/https-forwarding-rule
k8s2-tp-xxx-{namespace}-{name}-yyy Target HTTP Proxy ingress.kubernetes.io/target-proxy
k8s2-ts-xxx-{namespace}-{name}-yyy Target HTTPS Proxy ingress.kubernetes.io/https-target-proxy
k8s2-cr-xxx-yyy-zzz SSL Certificate ingress.kubernetes.io/ssl-cert
k8s-be-xxx--yyy Backend Service (Default) ingress.kubernetes.io/backends
k8s1-xxx-{namespace}-{name}-{port}-yyy Backend Service ingress.kubernetes.io/backends

コンポーネント

アーキテクチャ

前述のコンポーネントは次のアーキテクチャロードバランサーを実現しています。

ref: https://cloud.google.com/load-balancing/docs/https?hl=ja#component

役割

コンポーネントの役割は次のようになっています。

コンポーネント 説明
Forwarding Rule 外部 IP アドレスを持ち、特定のポート/プロトコルをListenする。
受け取ったトラフィックをTarget Proxyへ転送する
HTTPS Forwarding Rule ↑のHTTPS
Target HTTP Proxy クライアントからの HTTP接続を終端する。
下記のURL Mapを用いてルーティングを決定し、特定のBackend ServiceやBucketに転送する
Target HTTPS Proxy ↑のHTTPS
SSL Certificate TLS/SSL証明書の管理
URL Map HTTP 属性(リクエストパス、Cookie、ヘッダーなど)を使ってどのBackend Service/Bucketに渡すかのマッピング
Redirect URL Map HTTP→HTTPSのようなリダイレクトを設定した場合のURL Map。
Backend Serviceは持たない
Backend Service Ingressで設定したバックエンド
Backend Service (Default) Ingressで設定されなかったpathに対するデフォルトのバックエンド。
404を返したりする

カテゴリ

GCPのWebコンソールでは次のように

  • ロードバランサ
  • バックエンド
  • フロントエンド

と分かれています。

コンポーネントとカテゴリの関係は以下になっています。

命名規則 コンポーネント カテゴリ
k8s2-fr-xxx-{namespace}-{name}-yyy Forwarding Rule フロントエンド
k8s2-fs-xxx-{namespace}-{name}-yyy HTTPS Forwarding Rule フロントエンド
k8s2-tp-xxx-{namespace}-{name}-yyy Target HTTP Proxy 含まれない
k8s2-ts-xxx-{namespace}-{name}-yyy Target HTTPS Proxy 含まれない
k8s2-cr-xxx-yyy-zzz SSL Certificate 含まれない
k8s2-um-xxx-{namespace}-{name}-yyy URL Map ロードバランサ
k8s2-rm-xxx-{namespace}-{name}-yyy Redirect URL Map ロードバランサ
k8s1-xxx-{namespace}-{name}-{port}-yyy Backend Service バックエンド
k8s-be-xxx--yyy Backend Service (Default) バックエンド

なのでCtrl-Fによるブラウザ検索ではk8s2-fr-xxxロードバランサタブで検索しても出てこない、といったことが起きます。
ただしWebコンソールのフィルタ機能を使えば紐づくロードバランサ(URL Map)を表示してくれます。

まとめ

Ingressから生成されるコンポーネント命名GCPロードバランサーの関係をはっきりさせたことで、Webコンソール上から見てもコンポーネントの役割や関係が理解できるようになりました。

参考