解決しました。バックグラウンドで何が起こっているのか完全には理解できませんが、これを解決するには、ネットワーク上のファイアウォール ルールを VM インスタンスに関連付ける「タグ」を使用する必要があります。この時点でわかる限り、これは http と https にのみ関係します。ネットワーク上で開いている他のポートと VM は、この追加部分がなくても機能するようです。
ファイアウォール ルールを表示すると、ポート 80 と 443 のルールにそれぞれ「http-server」と「https-server」というタグが付いていることがわかります。そうでない場合は、それら (または選択した他のタグ) を追加する必要があります。インスタンスにもこれらのタグを追加する必要があることがわかりました.
タグを既存の VM インスタンスに追加するには、次の gcloud コマンドを使用します。
gcloud compute instances add-tags [YOUR_INSTANCE_NAME] --tags http-server,https-server
インスタンスの作成時にタグを追加するには、ステートメントにそのフラグを含めます:
gcloud compute instances create [YOUR_INSTANCE_NAME] --tags http-server,https-server
GCE GUI を見ると、「http トラフィックを許可する」チェックボックスと「https トラフィックを許可する」チェックボックスがオンになっていることがわかります。要求と応答は、期待どおりにポート 80 と 443 を通過します。
Google Cloud Console が提供する非常に便利なものの 1 つは、REST API のほとんどのリソースの作成の下部にあるリンクと、同じリソースを作成するためのコマンド ラインです。コンソールでできることはすべて SDK コマンド ラインから実行できるように自分自身に挑戦しているので、あなたのような質問があるときはこれをよく使用します。
上記と同じ質問があり、コンソールで VM を作成し、[HTTP トラフィックを許可する] を選択しました。このコマンド ラインを見ると、2 つのコマンドが表示されます。 1 つ目は、上記のタグを使用した create コマンドです (http-server):
gcloud beta compute --project=XXXX instances create cgapperi-vm1 \
--zone=XXXXX --machine-type=f1-micro --subnet=default \
--tags=http-server --image=debian-10-buster-v20200413 \
--image-project=debian-cloud --boot-disk-size=10GB \
--boot-disk-type=pd-standard --boot-disk-device-name=cgapperi-vm1 \
--no-shielded-secure-boot --shielded-vtpm --shielded-integrity-monitoring \
--reservation-affinity=any
2 つ目は実際にファイアウォール ルールを作成します (default-allow-http )、リクエストのターゲットを http-server タグに設定します (--target-tags=http-server ) tcp ポート 80 (--rules=tcp:80) ) 受信リクエストから (--direction=INGRESS ) すべてのソースから (--source-ranges=0.0.0.0/0 ):
gcloud compute --project=XXXX firewall-rules create default-allow-http \
--direction=INGRESS --priority=1000 --network=default --action=ALLOW \
--rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=http-server
これが他の人の役に立てば幸いです。
注: gcloud compute instance create
の出力を減らしました 混乱を減らすために関連するビットに。