背景
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コンソール上から見てもコンポーネントの役割や関係が理解できるようになりました。