Terraform - GCP - привяжите IP-адрес к балансировщику нагрузки, связанному с корзиной облачного хранилища.

Что я хочу:

Я хотел бы иметь static.example.com записи DNS, которые ссылаются на корзину в GCS, содержащую мои статические изображения.

Поскольку я управляю своим DNS через Cloudflare, я думаю, что мне нужно использовать тот факт, что GCP может присвоить мне anycast-IP, чтобы связать этот IP-адрес с балансировщиком нагрузки GCP, который будет связан с корзиной

Что у меня сейчас есть:

  • сегмент, уже созданный вручную, с именем "static-images"

  • балансировщик нагрузки, связанный с указанным сегментом, созданный с помощью

    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"
    }
    

Что мне не хватает:

  • эквивалент terraform "конфигурации внешнего интерфейса" при создании балансировщика нагрузки из веб-консоли

person allan.simon    schedule 06.05.2019    source источник


Ответы (1)


Похоже, вам просто не хватает правила переадресации и целевой прокси.

Документы terraform на google_compute_global_forwarding_rule являются хорошим примером.

e.g.:

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}"
}

надеюсь это поможет!

person mg12    schedule 20.05.2019