Google Cloud: проблема terraform/gcloud с google_service_networking_connection
Я попытался создать «google_service_networking_connection» с помощью инструмента terraform или gcloud. Но оба варианта не работают из-за проблем с аутентификацией. Что я не понимаю, зачем мне нужен REST API проекта 681255809395. Каждый ресурс должен быть создан в моем собственном пространстве проекта.
Я следовал описанию этой статьи https://cloud.google.com/vpc/docs/configure-private-services-access?hl=de.
Если я настраиваю частное соединение через пользовательский интерфейс, оно работает нормально.
введите сюда описание изображения
Версии:Terraform v1.6.1 на windows_amd64.
- реестр провайдера.terraform.io/hashicorp/google v4.84.0
- реестр провайдера.terraform.io/hashicorp/google-beta v4.84.0
- реестр провайдера.terraform.io/hashicorp/null v3.2.1
- реестр провайдера.terraform.io/hashicorp/random v3.5.1
Я попробовал следующую конфигурацию терраформа в пространстве проекта chrism-test.
переменные.tf
variable "project_id" {
type = string
description = "Project id"
default = "chrism-test"
}
variable "region" {
type = string
description = "Default Google Region"
default = "europe-west3"
}
variable "zone" {
type = string
description = "Default Zone"
default = "europe-west3-a"
}
variable "subnetwork-cidr" {
type = string
default = "192.168.0.0/20"
}
variable "pods-cidr" {
type = string
default = "10.0.0.0/20"
}
variable "services-cidr" {
type = string
default = "10.0.16.0/20"
}
main.tf
provider "google" {
project = var.project_id // chrism-test
region = var.region
zone = var.zone
}
resource "google_compute_network" "vpc_test" {
auto_create_subnetworks = false
mtu = 1460
name = "vpc-test"
routing_mode = "REGIONAL"
}
resource "google_compute_subnetwork" "private_subnet" {
ip_cidr_range = var.subnetwork-cidr
name = "private-subnet"
network = google_compute_network.vpc_test.name
private_ip_google_access = true
private_ipv6_google_access = "DISABLE_GOOGLE_ACCESS"
purpose = "PRIVATE"
secondary_ip_range {
ip_cidr_range = var.pods-cidr
range_name = "my-pods"
}
secondary_ip_range {
ip_cidr_range = var.services-cidr
range_name = "my-services"
}
stack_type = "IPV4_ONLY"
}
resource "google_service_networking_connection" "private_vpc_connection" {
network = google_compute_network.vpc_test.self_link
service = "servicenetworking.googleapis.com"
reserved_peering_ranges = [google_compute_global_address.private_ip_range.name]
}
resource "google_compute_global_address" "private_ip_range" {
name = "private-ip-range"
purpose = "VPC_PEERING"
address_type = "INTERNAL"
prefix_length = 16
network = google_compute_network.vpc_test.name
}
Если я попытаюсь применить конфигурацию, я получаю следующую ошибку
╷
│ Error: Error waiting for Create Service Networking Connection: error while ret
rieving operation: googleapi: Error 403: Service Networking API has not been use
d in project 681255809395 before or it is disabled. Enable it by visiting https:
//console.developers.google.com/apis/api/servicenetworking.googleapis.com/overvi
ew?project=681255809395 then retry. If you enabled this API recently, wait a few
minutes for the action to propagate to our systems and retry.
│ Details:
│ [
│ {
│ "@type": "type.googleapis.com/google.rpc.Help",
│ "links": [
│ {
│ "description": "Google developers console API activation",
│ "url": "https://console.developers.google.com/apis/api/servicenetworki
ng.googleapis.com/overview?project=681255809395"
│ }
│ ]
│ },
│ {
│ "@type": "type.googleapis.com/google.rpc.ErrorInfo",
│ "domain": "googleapis.com",
│ "metadata": {
│ "consumer": "projects/681255809395",
│ "service": "servicenetworking.googleapis.com"
│ },
│ "reason": "SERVICE_DISABLED"
│ }
│ ]
│ , accessNotConfigured
│
│ with module.network.google_service_networking_connection.private_vpc_connect
ion,
│ on modules\network\main.tf line 31, in resource "google_service_networking_c
onnection" "private_vpc_connection":
│ 31: resource "google_service_networking_connection" "private_vpc_connection"
{
│
Проблема: Terraform перестает применять причину ошибки.
Ожидаемое поведение: Terraform успешно создает сетевое соединение с частной службой.