如何解决Terraform:ExpressJS 和 SQL - 如何使用 VPC?
我有一个想要在 Google Cloud 中运行的 Express API。我使用 terraform 进行了所有配置,但我很难将我的 express 应用程序与配置的数据库连接起来。我有几个问题:
- 我为 sql 实例创建了一个带有私有 ip 的私有网络,因此公众无法与之交谈,而只能使用我的 google 计算/应用程序实例,其中运行 express 应用程序。
- 我需要将这个 express 应用推送到同一个网络中,还是可以在内部与私有 ip 通信?
这里是配置:
## Private network
resource "google_compute_network" "private_network" {
provider = google-beta
name = local.private_network_name
}
# Reserve global internal address range for the peering
resource "google_compute_global_address" "private_ip_address" {
provider = google-beta
name = local.private_ip_name
purpose = "VPC_PEERING"
address_type = "INTERNAL"
prefix_length = 16
network = google_compute_network.private_network.self_link
}
resource "google_service_networking_connection" "private_vpc_connection" {
provider = google-beta
network = google_compute_network.private_network.self_link
service = "servicenetworking.googleapis.com"
reserved_peering_ranges = [google_compute_global_address.private_ip_address.name]
}
然后我让数据库依赖于它,也就是将它附加到网络:
resource "google_sql_database_instance" "db_instance" {
...
depends_on = [google_service_networking_connection.private_vpc_connection]
settings {
...
ip_configuration {
ipv4_enabled = false
private_network = google_compute_network.private_network.self_link
}
}
}
我的计算实例有一个私有网络,允许通过 0.0.0.0/0 来自外部的流量:
# PUBLIC NETWORK
data "google_compute_network" "default" {
project = var.gcp_project_id
name = "default"
}
# FIREWALL RULE
resource "google_compute_firewall" "allow_http" {
project = var.gcp_project_id
name = "allow-http-${terraform.workspace}"
network = data.google_compute_network.default.name
allow {
protocol = "tcp"
ports = ["80"]
}
source_ranges = ["0.0.0.0/0"]
target_tags = ["allow-http-${terraform.workspace}"]
}
现在私有网络只是附加到我正在运行的计算实例。
# COMPUTE ENGINE INSTANCE
resource "google_compute_instance" "instance" {
....
tags = google_compute_firewall.allow_http.target_tags
network_interface {
network = data.google_compute_network.default.name
access_config {
nat_ip = google_compute_address.ip_address.address
}
}
}
我真的很难把这些点放在一起。也是我第一次使用 VPC。我假设我需要数据库的专用网络,因此它不能在外部访问,而是在 GCP 内部访问。我也看过https://cloud.google.com/sql/docs/mysql/private-ip,但它并没有真正点击。也许有人有 ELI5
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。