我有一个 GKE 集群并在 GCP 上添加了一个私有 SQL-postgres 实例,为了建立正确的连接,我必须在 VPC 对等连接上导出自定义路由以使其工作。但是,我无法通过 terraform 更新 VPC 对等连接。SQL 实例和 GKE 集群都在同一个 VPC 网络上
这是地形代码
resource "google_compute_global_address" "private_ip_range" {
provider = google-beta
name = "google-managed-services-sql-instance"
purpose = "VPC_PEERING"
address_type = "INTERNAL"
prefix_length = 16
network = var.network_id
depends_on = [var.network_id]
}
resource "google_service_networking_connection" "private_vpc_connection" {
provider = google-beta
network = var.network_id
service = "servicenetworking.googleapis.com"
reserved_peering_ranges = [google_compute_global_address.private_ip_range.name]
}
resource "google_compute_network_peering_routes_config" "my_postgres_instance" {
depends_on = [google_service_networking_connection.private_vpc_connection]
provider = google-beta
peering = "cloudsql-postgres-googleapis-com" # Hardcoded name given by GCP
network = var.network_id
import_custom_routes = false
export_custom_routes = true # We change this from the default to export our custom routes for SQL-proxy to connect
}
这是我得到的错误代码,除了它是 400 错误之外,我无法完全理解
module.api-service.google_compute_network_peering_routes_config.my_postgres_instance: Creating...
Error: Error creating NetworkPeeringRoutesConfig: googleapi: got HTTP response code 404 with body: <!DOCTYPE html>
<html lang=en>
<meta charset=utf-8>
<meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
<title>Error 404 (Not Found)!!1</title>
<style>
*{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}
</style>
<a href=//www.google.com/><span id=logo aria-label=Google></span></a>
<p><b>404.</b> <ins>That’s an error.</ins>
<p>The requested URL <code>/compute/v1/projects/cysiv-dev-shoaib/global/networks/https://www.googleapis.com/compute/v1/projects/cysiv-dev-shoaib/global/networks/shoaib-test-network/updatePeering?alt=json</code> was not found on this server. <ins>That’s all we know.</ins>
我不得不使用 gcloud 导出自定义路由,所以我想知道 terraform 无法找到 Peering_project 的问题,这是我不拥有或创建的一些谷歌网络项目
gcloud compute networks peerings list --project cysiv-dev-shoaib
NAME NETWORK PEER_PROJECT PEER_NETWORK PEER_MTU IMPORT_CUSTOM_ROUTES EXPORT_CUSTOM_ROUTES STATE STATE_DETAILS
cloudsql-postgres-googleapis-com shoaib-test-network speckle-umbrella-pg-19 cloud-sql-network-255553946038-5e53861ee5915b6c False True ACTIVE [2021-03-30T08:40:04.410-07:00]: Connected.
redis-peer-756881020370 shoaib-test-network b4353badb6a010f5c-tp shoaib-test-network False False ACTIVE [2021-03-29T14:26:23.713-07:00]: Connected.
servicenetworking-googleapis-com shoaib-test-network z27aeccc62016f9b1p-tp servicenetworking False False ACTIVE [2021-03-29T14:25:36.135-07:00]: Connected.
该命令运行良好
gcloud compute networks peerings update cloudsql-postgres-googleapis-com --network shoaib-test-network --export-custom-routes
我如何使用 terraform 做到这一点?Terraform 版本:0.12.30 Google Provider 版本:3.60