Terraform - GCP - связать IP-адрес с балансировщиком нагрузки, связанным с хранилищем облачного хранилища - PullRequest
2 голосов
/ 06 мая 2019

Что я хочу:

Я хотел бы иметь 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 для «конфигурации внешнего интерфейса» при создании балансировщика нагрузки из веб-консоли

1 Ответ

1 голос
/ 20 мая 2019

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

Документы terraform на google_compute_global_forwarding_rule имеют хороший пример.

Например:

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

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

...