8/14 (木)
Kong Gateway のバージョンアップトラブル
Kong Gateway を久しぶりに使っているのだが、バージョンが 3.10 まで上がっている。
もともと DB-less モードが導入された Kong Gateway 1.1 ぐらいから使っていた(2019年11月23日の日記)が、しばらくは nginx を直接使う機会の方が多かった。 この度、放置されていた Kong Gatway を 2系から 3系にアップデートしたのだが、一ヶ所へんな動作に遭遇した。
Web サーバーの仮想ホストによってルーティングを実施するのだが、一般のアクセスは app に、web.host.example.com としてホストにアクセスがあったものは webdav に、*.host.example.com としてホストにアクセスがあったものは proxy にアクセスを期待していた。 2 系ではこれが期待通り動いていたのだが、3系で動かすと web.host.example.com は webdav へ振り分けられるが、任意の xxx.host.example.com は proxy ではなく app へ振り分けられる。
_format_version: "1.1" services: - name: app host: app.internal port: 8888 protocol: http routes: - name: app-root paths: - / - name: proxy host: proxy.internal port: 8888 protocol: http routes: - name: proxy hosts: - '*.host.example.com' - name: webdav host: webdav.internal port: 8888 protocol: http routes: - name: webdav hosts: - 'webdav.host.example.com'
このワイルドカード指定自体は 3 系でも残っている(Kong Gateway のドキュメント)。
理由はいまいち分からなかったのだが、全てのルーターに hosts を設定すると期待通りの動作に戻った。
_format_version: "1.1" services: - name: app host: app.internal port: 8888 protocol: http routes: - name: app-root paths: - / hosts: - 'host.example.com' - name: proxy host: proxy.internal port: 8888 protocol: http routes: - name: proxy hosts: - '*.host.example.com' - name: webdav host: webdav.internal port: 8888 protocol: http routes: - name: webdav hosts: - 'webdav.host.example.com'
コメントを書き込む