Estou executando um cluster GKE privado e quero adicionar um NAT Gateway para que eu possa criar regras de firewall a partir de solicitações vindas do cluster (por padrão, os IPs públicos de todos os nós são efêmeros, portanto difíceis de controlar) .
Estou tentando seguir as instruções descritas aqui , e aqui (para criar um produto altamente disponível NAT, uma variação do primeiro link).
Eu posso instalar terraform
, criar terraform.tfvars
no meu diretório de trabalho e executar terraform init
. Quando eu executo terraform plan
, recebo muitos erros como:
Error: Unsupported attribute
on ../../main.tf line 51, in module "nat-gateway":
51: module_enabled = "${var.module_enabled}"
An attribute named "module_enabled" is not expected here.
Error: Unsupported attribute
on ../../main.tf line 52, in module "nat-gateway":
52: project = "${var.project}"
An attribute named "project" is not expected here.
Error: Unsupported attribute
on ../../main.tf line 53, in module "nat-gateway":
53: region = "${var.region}"
An attribute named "region" is not expected here.
Error: Unsupported attribute
on ../../main.tf line 54, in module "nat-gateway":
54: zone = "${local.zone}"
An attribute named "zone" is not expected here.
...
Recebo um erro para quase todas as entradas em este módulo (é para isso que ../../main.tf
aponta).
module "nat-gateway" {
source = "GoogleCloudPlatform/managed-instance-group/google"
version = "1.1.14"
module_enabled = "${var.module_enabled}"
project = "${var.project}"
region = "${var.region}"
zone = "${local.zone}"
network = "${var.network}"
subnetwork = "${var.subnetwork}"
target_tags = ["${local.instance_tags}"]
instance_labels = "${var.instance_labels}"
service_account_email = "${var.service_account_email}"
machine_type = "${var.machine_type}"
name = "${local.name}"
compute_image = "${var.compute_image}"
size = 1
network_ip = "${var.ip}"
can_ip_forward = "true"
service_port = "80"
service_port_name = "http"
startup_script = "${data.template_file.nat-startup-script.rendered}"
wait_for_instances = true
metadata = "${var.metadata}"
ssh_fw_rule = "${var.ssh_fw_rule}"
ssh_source_ranges = "${var.ssh_source_ranges}"
http_health_check = "${var.autohealing_enabled}"
update_strategy = "ROLLING_UPDATE"
rolling_update_policy = [
{
type = "PROACTIVE"
minimal_action = "REPLACE"
max_surge_fixed = 0
max_unavailable_fixed = 1
min_ready_sec = 30
},
]
access_config = [
{
nat_ip = "${element(concat(google_compute_address.default.*.address, data.google_compute_address.default.*.address, list("")), 0)}"
},
]
}
Também percebi que os erros que recebo são os campos declarados aqui mas não aqui , por isso parece algum tipo de falta de correspondência na versão.
Tentei alterar esta linha como segue, para obter o mais recente do github em vez do registro terraform, mas isso não resolveu o problema.
// before:
module "nat-gateway" {
source = "GoogleCloudPlatform/managed-instance-group/google"
version = "1.1.14"
// after:
module "nat-gateway" {
source = "github.com/GoogleCloudPlatform/terraform-google-managed-instance-group"
Meu diretório de trabalho é examples/gke-ha-nat-gateway/
, caso isso seja importante. Todo o ambiente é o mesmo que o recém clonado do github, com exceção de terraform.tfvars
.
Infelizmente, não tenho nenhuma experiência com o Terraform, então não sei como depurar esses erros.
Obrigado pela sua ajuda!