3

我想要的是:

我想要一个 static.example.com链接到 GCS 中包含我的静态图像的存储桶的 DNS 记录。

当我通过 Cloudflare 管理我的 DNS 时,我认为我需要利用 GCP 可以将我归为 anycast-IP 的事实,将该 IP 链接到 GCP 负载均衡器,该负载均衡器将链接到存储桶

我目前拥有的:

  • 已手动创建的存储桶,名为“静态图像”

  • 链接到所述存储桶的负载均衡器,使用

    resource "google_compute_backend_bucket" "image_backend" {
      name        = "example-static-images"
      bucket_name = "static-images"
      enable_cdn  = true
    }
    
  • 链接到我的存储桶的路由

    resource "google_compute_url_map" "urlmap" {
      name            = "urlmap"
      default_service = "${google_compute_backend_bucket.image_backend.self_link}"
    
      host_rule {
        hosts        = ["static.example.com"]
        path_matcher = "allpaths"
      }
    
      path_matcher {
        name            = "allpaths"
        default_service = "${google_compute_backend_bucket.image_backend.self_link}"
    
        path_rule {
          paths   = ["/static"]
          service = "${google_compute_backend_bucket.image_backend.self_link}"
        }
      }
    }
    
  • 使用以下命令创建的 ip:

    resource "google_compute_global_address" "my_ip" {
      name = "ip-for-static-example-com"
    }
    

我错过了什么:

  • 从 Web 控制台创建负载均衡器时,terraform 等效于“前端配置”
4

1 回答 1

2

看起来您只是缺少转发规则目标代理

google_compute_global_forwarding_rule上的 terraform 文档就是一个很好的例子。

例如:

resource "google_compute_global_forwarding_rule" "default" {
  name = "default-rule"
  target = "${google_compute_target_http_proxy.default.self_link}"
  port_range = 80     // or other e.g. for ssl

  ip_address = "${google_compute_global_address.my_ip.address}"
}

resource "google_compute_target_http_proxy" "default" {  // or https proxy
  name        = "default-proxy"
  description = "an HTTP proxy"
  url_map     = "${google_compute_url_map.urlmap.self_link}"
}

希望这可以帮助!

于 2019-05-20T15:11:01.843 回答