不久前我开始使用 Terraform,我一直在开发一个 AWS 开发环境,我需要在其中放置 EKS 和 aurora-mysql 无服务器 RDS,并让它们相互交谈。
我在这里使用了很好的例子:
https://github.com/terraform-aws-modules/terraform-aws-eks/tree/master/examples/managed_node_groups
和这里:
https://github.com/terraform-aws-modules/terraform-aws-rds-aurora/tree/master/examples/serverless(这实际上是设置为建立一个 aurora-mysql 无服务器数据库,而不是宣传的 postgres,但是mysql 是我正在寻找的东西,干杯)。
到目前为止一切顺利,无服务器示例使用默认 VPC,这对于游戏来说很好。但我想:
1. 在与 EKS 相同的 VPC 中创建 RDS 以简化组网:
为此,我将 ....terraform-aws-rds-aurora/examples/serverless/main.tf 的内容添加到 ....terraform-aws-eks/examples/managed_node_groups/main.tf 并设置 tf将文件从 ....terraform-aws-rds-aurora 复制到一个文件夹,并将其设置为:
module "aurora" {
source = "../../modules/aurora"
并替换:
data.aws_vpc.default.id
和
module.vpc.vpc_id
我得到了:
错误:创建 RDS 集群时出错:InvalidParameterValue:Aurora Serverless 不支持子网位于同一可用区的数据库子网组。选择具有不同可用区中子网的数据库子网组。状态码:400,请求 id:7d2e359f-6609-4dde-b63e-11a16d1efaf2 在 ../../modules/aurora/main.tf 第 33 行,资源“aws_rds_cluster”“this”:33:资源“aws_rds_cluster”“这个” {
公平是公平的,我阅读了一些内容并意识到我可能更喜欢 EKS 和 RDS 的不同 VPC,以便每个 VPC 都在 us-west-2 中的所有 AZ 上具有冗余。所以现在我尝试了-
- 为 RDS 创建新的 VPC:
我回到 ..../terraform-aws-rds-aurora/tree/master/examples/serverless/main.tf ,并设置:
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "~> 2.6"
name = "${var.env}-mysql-vpc"
cidr = "172.16.0.0/16"
azs = data.aws_availability_zones.available.names
private_subnets = ["172.16.7.0/24", "172.16.8.0/24", "172.16.9.0/24"]
public_subnets = ["172.16.10.0/24", "172.16.11.0/24", "172.16.12.0/24"]
enable_nat_gateway = true
single_nat_gateway = true
enable_dns_hostnames = true
}
data "aws_vpc" "created" {
id = module.vpc.vpc_id
}
data "aws_subnet_ids" "all" {
vpc_id = data.aws_vpc.created.id
}
并得到了同样的信息!
我难住了。我不想为 RDS 使用默认 VPC,最终我想为安全/配置编辑 VPC。
我的问题是:
EKS 和 RDS 在同一个 VPC 中同时存在是否可行且可行?
看到该示例在默认 VPC 上运行良好,我在为 RDS 创建 VPC 时缺少什么?
Terraform 能否创建一个“空”VPC,然后极光模块将在其中创建子网?或者我有没有一种简单的方法来创建缺少的子网(同时为每个子网指定可用区)以及无服务器的其余 VPC 要求?
我意识到这介于 AWS 和 Terraform 之间,但会感谢您的帮助。