NEGは存在しないGAEサービスを指定してもエラーにならない!
PR

NEGは存在しないGAEサービスを指定してもエラーにならない!

ERROR 設定・構築・運用
記事内に広告が含まれています。
スポンサーリンク

GCPのNetwork Endpoint Groupでハマったので、メモ。

スポンサーリンク
スポンサーリンク

エラーにならない

gcloudのバージョン

$ gcloud version
Google Cloud SDK 367.0.0
app-engine-python 1.9.98
beta 2021.12.10
bq 2.0.72
cloud-datastore-emulator 2.1.0
core 2021.12.10
gsutil 5.5

GAEの状況

$ gcloud app services list
SERVICE  NUM_VERSIONS
default  1

App Engineのサービスはdefaultだけ存在。

NEGを作ってみる

$ gcloud compute network-endpoint-groups create no-target-gae --app-engine-service dummy --network-endpoint-type=serverless --region us-central1
Created [https://www.googleapis.com/compute/v1/projects/XXXXXXXX/regions/us-central1/networkEndpointGroups/no-target-gae].
Created network endpoint group [no-target-gae].

dummyという、存在していないApp Engineのサービスを指定したが、network-endpoint-groupsが作成された。

$ gcloud compute network-endpoint-groups list
NAME           LOCATION     ENDPOINT_TYPE  SIZE
no-target-gae  us-central1  SERVERLESS     0
スポンサーリンク

url-mapでpath matcherを使っていると、切り分けが大変

この、存在しないGAEサービスを指定したNEGにトラフィックを送ると、404エラーになる。存在していないのだから、当たり前と言えば当たり前。

これが、複数のNEGにトラフィックを振り分けるようなLoad Balancerだと、切り分けの難易度が上がる。url-mapのpath matcherに問題があるのではという可能性が出てくるから。

現象的には、トラフィックがLoad Balancerに吸い込まれてNEG(の先の最終的なバックエンド)に届いていないように見えてしまう。Load Balancerの中は見られないので、調査も手詰まりのように思えてしまう。

だが、NEGの作成時に指定したバックエンドが存在していない可能性があるということを知っていれば、意図通りにNEGが作成されているかというところへ、切り分けていけるだろう。

NEGの作成時にエラーになっていれば、こんな苦労もしなくて済むのだが…。

コメント

タイトルとURLをコピーしました