I used terraformer to reverse-terraform my compute engine instance instance-container that runs Nginx container.
Here's the result terraform file
resource "google_compute_instance" "tfer--instance-002D-container" {
boot_disk {
auto_delete = "true"
device_name = "instance-container"
initialize_params {
image = "https://www.googleapis.com/compute/v1/projects/cos-cloud/global/images/cos-stable-80-12739-91-0"
size = "10"
type = "pd-standard"
}
mode = "READ_WRITE"
source = "https://www.googleapis.com/compute/v1/projects/your-project-id/zones/asia-east1-b/disks/instance-container"
}
can_ip_forward = "false"
deletion_protection = "false"
enable_display = "false"
labels = {
container-vm = "cos-stable-80-12739-91-0"
}
machine_type = "g1-small"
metadata = {
gce-container-declaration = "spec:\n containers:\n - name: instance-container\n image: nginx\n stdin: false\n tty: false\n restartPolicy: Always\n\n# This container declaration format is not public API and may change without notice. Please\n# use gcloud command-line tool or Google Cloud Console to run Containers on Google Compute Engine."
google-logging-enabled = "true"
}
name = "instance-container"
network_interface {
access_config {
nat_ip = "104.199.164.22"
network_tier = "PREMIUM"
}
name = "nic0"
network = "https://www.googleapis.com/compute/v1/projects/your-project-id/global/networks/default"
network_ip = "10.140.15.223"
subnetwork = "https://www.googleapis.com/compute/v1/projects/your-project-id/regions/asia-east1/subnetworks/default"
subnetwork_project = "your-project-id"
}
project = "your-project-id"
scheduling {
automatic_restart = "true"
on_host_maintenance = "MIGRATE"
preemptible = "false"
}
service_account {
email = "your-project-id-compute@developer.gserviceaccount.com"
scopes = ["https://www.googleapis.com/auth/monitoring.write", "https://www.googleapis.com/auth/service.management.readonly", "https://www.googleapis.com/auth/logging.write", "https://www.googleapis.com/auth/servicecontrol", "https://www.googleapis.com/auth/trace.append", "https://www.googleapis.com/auth/devstorage.read_only"]
}
shielded_instance_config {
enable_integrity_monitoring = "true"
enable_secure_boot = "false"
enable_vtpm = "true"
}
zone = "asia-east1-b"
}
After comparing with normal instance resources, it looks like relies on the metadata gce-container-declaration and labels to do this job.
However, as the comments in the metadata said,
This container declaration format is not public API and may change without notice.
Please use gcloud command-line tool or Google Cloud Console to run Containers on Google Compute Engine.
It's more reliable to use gcloud command at this time before your issue be solved by Terraform Google Cloud Platform provider.