Маршрут 53 - Изменение типа A на AAAA - PullRequest
0 голосов
/ 18 июня 2019

У меня есть скрипт terraform, который хорошо работает для type=A записи DNS. Поэтому, когда я выполняю это:

data "aws_acm_certificate" "this" {
  domain = "*.${var.CERTIFICATE_DOMAIN}"
}

resource "aws_security_group" "this" {
  name        = "${var.SERVICE}-${var.ENV}-${var.REGION}-allow_all"
  description = "Allow all inbound traffic"
  vpc_id      = "${data.aws_vpc.this.id}"

  ingress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }

  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

data "aws_subnet_ids" "this" {
  vpc_id = "${data.aws_vpc.this.id}"

  tags {
    Service = "external"
  }
}

data "aws_security_groups" "ecs" {
  tags {
    Environment = "${var.VPC_ENV}"
    Region      = "${var.REGION}"
  }

  filter {
    name   = "vpc-id"
    values = ["${data.aws_vpc.this.id}"]
  }

  filter {
    name   = "group-name"
    values = ["${var.ENV}-api-internal-ecs-host*-sg"]
  }
}

resource "aws_security_group_rule" "lb2ecs" {
  from_port                = 32768
  to_port                  = 65535
  protocol                 = "tcp"
  security_group_id        = "${data.aws_security_groups.ecs.ids[0]}"
  source_security_group_id = "${aws_security_group.this.id}"
  type                     = "ingress"
}

resource "aws_alb" "https" {
  name               = "${var.SERVICE}-${var.ENV}-alb"
  internal           = false
  load_balancer_type = "application"
  security_groups    = ["${aws_security_group.this.id}"]
  subnets            = ["${data.aws_subnet_ids.this.ids}"]
}

data "aws_route53_zone" "this" {
  name         = "${var.CERTIFICATE_DOMAIN}."
  private_zone = false
}

resource "aws_route53_record" "www" {
  zone_id = "${data.aws_route53_zone.this.zone_id}"
  name    = "${var.SERVICE}-${var.ENV}-${var.REGION}.${var.CERTIFICATE_DOMAIN}"
  type    = "A"

  alias {
    name                   = "${aws_alb.https.dns_name}"
    zone_id                = "${aws_alb.https.zone_id}"
    evaluate_target_health = true
  }
}

resource "aws_alb_target_group" "https" {
  name     = "${var.SERVICE}-${var.ENV}-https"
  port     = 3000
  protocol = "HTTP"
  vpc_id   = "${data.aws_vpc.this.id}"

  health_check {
    path = "/health"
  }
}

resource "aws_alb_listener" "https" {
  load_balancer_arn = "${aws_alb.https.arn}"
  port              = "443"
  protocol          = "HTTPS"
  ssl_policy        = "ELBSecurityPolicy-2015-05"
  certificate_arn   = "${data.aws_acm_certificate.this.arn}"

  default_action {
    type             = "forward"
    target_group_arn = "${aws_alb_target_group.https.arn}"
  }
}

Он правильно создает новую конечную точку HTTPS, и я могу легко поставить службу за ней (связав aws_alb_target_group.https со службой ECS)

Мне нужно добавить поддержку IPv6, поэтому я подумал - а как насчет простого изменения типа A на AAAA в resource "aws_route53_record" "www". Терраформа была выполнена хорошо, заявив, что она была изменена, в Маршруте 53 я вижу, что запись выглядит точно так же, как и раньше, но она имеет тип AAAA, но служба больше недоступна.

На маршруте 53 я вижу, что существует ALIAS, который выглядит следующим образом: someservice-test-alb-1395527311.eu-central-1.elb.amazonaws.com. И я могу подключиться к услуге по HTTPS из общедоступного интернета. Однако «хорошая» конечная точка, которая работала раньше, больше не работает. Кроме того, ping с URL больше не получают IP.

Я что-то упустил?

1 Ответ

0 голосов
/ 18 июня 2019

AAAA-записи, вам нужно сначала включить VPC с поддержкой IPV6. По умолчанию он не включен. Как только вы закончите, вы можете следовать инструкциям в блоге ниже, чтобы включить IPV6 для тераформ.

https://medium.com/@mattias.holmlund/setting-up-ipv6-on-amazon-with-terraform-e14b3bfef577

...