-ip_address_types=PRIVATE
参数来运行它。用于重现令我困惑的状态的略简化的Terraform代码在这里: https://github.com/hallvors/gcp-network-issue-demo 要对此进行测试,请执行以下操作:
./local-secrets/google-project-credentials.json
terraform workspace new staging
terraform init
terraform apply
完成Terraform后,您应该在项目中设置一个数据库和一个VM。
sudo apt install postgresql-client-common postgresql-client
psql --host 10.167.0.3 -U gcp-network-issue-demo-staging-db-user gcp-network-issue-demo-staging-database
我想念什么?
答案 0 :(得分:1)
此问题的原因是我无法理解网络接口可以具有 公用IP和专用IP /网络。因此,我的代码为google_compute_instance设置了一个公共接口,为私有网络设置了一个接口:
# Update VM needs a public IP
network_interface {
network = "default"
access_config {
}
}
network_interface {
network = var.network
subnetwork = var.subnetwork
}
现在,我仍然还不完全了解网络,但是您似乎无法(轻松地)指定数据库连接尝试应使用的接口,并且它不会自动选择正确的接口。此提交中的解决方法是,将访问专用网络和公用网络的功能配置为一个网络接口:
https://github.com/hallvors/gcp-network-issue-demo/commit/ea14174c1087c89b92310b5b4913e12a4e17130d