Terselesaikan. Saya tidak sepenuhnya memahami apa yang terjadi di balik layar, tetapi solusi untuk ini memerlukan penggunaan "tag" yang mengaitkan aturan firewall di jaringan dengan instance VM. Sejauh yang saya lihat saat ini, ini hanya berlaku untuk http dan https. Port lain yang terbuka di jaringan dan VM tampaknya berfungsi tanpa bagian tambahan ini.
Jika Anda melihat aturan firewall, Anda mungkin akan melihat aturan port 80 dan 443 masing-masing memiliki tag "http-server" dan "https-server". Jika tidak, Anda harus menambahkannya (atau tag lain yang Anda pilih). Ternyata instance membutuhkan tag yang ditambahkan ke dalamnya juga.
Untuk menambahkan tag ke instance VM yang ada, gunakan perintah gcloud ini:
gcloud compute instances add-tags [YOUR_INSTANCE_NAME] --tags http-server,https-server
Untuk menambahkan tag pada saat pembuatan instance, sertakan tanda tersebut dalam pernyataan Anda:
gcloud compute instances create [YOUR_INSTANCE_NAME] --tags http-server,https-server
Jika Anda melihat di gui GCE, Anda akan melihat kotak centang "Izinkan lalu lintas http" dan "Izinkan lalu lintas https" dicentang setelah melakukan itu. Permintaan dan tanggapan kemudian mengalir melalui port 80 dan 443 seperti yang diharapkan.
Salah satu hal yang sangat membantu yang ditawarkan Google Cloud Console adalah tautan di bagian bawah pembuatan untuk sebagian besar sumber daya untuk REST API dan baris perintah untuk membuat sumber daya yang sama. Saya menantang diri sendiri untuk dapat melakukan semua yang dapat saya lakukan di konsol dari baris perintah SDK, jadi saya sering menggunakan ini saat memiliki pertanyaan seperti pertanyaan Anda.
Memiliki pertanyaan yang sama seperti di atas, di konsol saya membuat VM dan memilih "Izinkan lalu lintas HTTP". Melihat baris perintah untuk ini, Anda akan melihat dua perintah. Yang pertama adalah perintah buat dengan tag seperti yang disebutkan di atas (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
Yang kedua sebenarnya membuat aturan firewall (default-allow-http ) untuk Anda, dan menetapkan target untuk permintaan ke tag http-server (--target-tags=http-server ) pada tcp port 80 (--rules=tcp:80 ) dari permintaan masuk (--direction=INGRESS ) dari semua sumber (--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
Saya harap ini bermanfaat bagi orang lain.
CATATAN: Saya memang mengurangi output dari gcloud compute instance create
ke bit yang relevan untuk mengurangi kekacauan.