Мы зарезервировали статические (в белом списке) IP-адреса, которые должны быть назначены CloudNAT в GCP с помощью terraform. IP-адреса зарезервированы и зарегистрированы у поставщика услуг, а для их утверждения и добавления в брандмауэры требуются недели, поэтому динамическое распределение не вариант.
Основная проблема для нас состоит в том, что раздел google_compute_router_nat требует nat_ip_allocate_option, но в этом случае IP-адрес уже был выделен, поэтому он завершается ошибкой с указанием именно этого. Единственными вариантами выделения являются AUTO_ONLY и MANUAL_ONLY, но, возможно, может потребоваться EXISTING или RESERVED, если я не пропущу что-то очевидное.
Вот ошибочная конфигурация:
resource "google_compute_address" "static_ip" {
name = "whitelisted-static-ip"
region = "${var.project_region}"
}
resource "google_compute_router_nat" "cluster-nat" {
name = "cluster-stg-nat"
router = "${google_compute_router.router.name}"
region = "${google_compute_router.router.region}"
nat_ip_allocate_option = "MANUAL_ONLY"
nat_ips = ["${google_compute_address.static_ip.self_link}"]
source_subnetwork_ip_ranges_to_nat = "LIST_OF_SUBNETWORKS"
subnetwork {
name = "${google_compute_subnetwork.service.self_link}"
source_ip_ranges_to_nat = ["ALL_IP_RANGES"]
}
}
Приводит к следующей ошибке:
Error: Error creating Address: googleapi: Error 409: The resource 'projects/staging-cluster/regions/us-central1/addresses/whitelisted-static-ip' already exists, alreadyExists
, поскольку статический IP-ресурс уже зарезервирован во внешних IP-адресах GCP и зарегистрирован у поставщика услуг.