alt*_*-f4 2 amazon-web-services terraform
我的目标是能够将 EKS 集群部署到 aws(我正在使用 Terraform),同时保持它无法从互联网访问(我希望它是安全的)。
我尝试过的(片段)和工作原理:
module "eks_cluster" {
source = "terraform-aws-modules/eks/aws"
version = "13.2.1"
cluster_name = "${var.project_name}-foo-${var.environment}"
cluster_version = "1.18"
vpc_id = module.vpc.vpc_id
cluster_enabled_log_types = ["api", "audit", "authenticator", "controllerManager", "scheduler"]
enable_irsa = true
subnets = [module.vpc.subnet_a_private_id, module.vpc.subnet_b_private_id, module.vpc.subnet_a_public_id]
}
Run Code Online (Sandbox Code Playgroud)
我尝试过(片段)但没有成功:
module "eks_cluster" {
source = "terraform-aws-modules/eks/aws"
version = "13.2.1"
cluster_name = "${var.project_name}-foo-${var.environment}"
cluster_version = "1.18"
vpc_id = module.vpc.vpc_id
cluster_enabled_log_types = ["api", "audit", "authenticator", "controllerManager", "scheduler"]
enable_irsa = false
cluster_create_endpoint_private_access_sg_rule = false
cluster_endpoint_private_access = true
cluster_endpoint_private_access_cidrs = ["0.0.0.0/0"]
cluster_endpoint_public_access = false
subnets = [module.vpc.subnet_a_private_id, module.vpc.subnet_b_private_id]
}
Run Code Online (Sandbox Code Playgroud)
但是,创建集群后,进程在步骤:超时,module.eks_cluster.null_resource.wait_for_cluster[0]
并出现以下错误:
Error: Error running command 'for i in `seq 1 60`; do if `command -v wget > /dev/null`; then wget --no-check-certificate -O - -q $ENDPOINT/healthz >/dev/null && exit 0 || true; else curl -k -s $ENDPOINT/healthz >/dev/null && exit 0 || true;fi; sleep 5; done; echo TIMEOUT && exit 1': exit status 1. Output: TIMEOUT
Run Code Online (Sandbox Code Playgroud)
如果需要,我很乐意提供有关其他配置的更多详细信息。
在第二个片段中,您启用了私人访问并禁用了公共访问:
cluster_endpoint_private_access = true
cluster_endpoint_public_access = false
Run Code Online (Sandbox Code Playgroud)
如果您查看AWS 文档中的修改集群终端节点访问表,这种组合会导致:
集群 API 服务器的所有流量必须来自集群的 VPC或连接的网络内。
无法从互联网公开访问您的 API 服务器。任何 kubectl 命令都必须来自 VPC 或连接的网络内。有关连接选项,请参阅访问专用 API 服务器。
terraform-aws-modules/eks/aws
如果你检查这里的源代码,你可以发现module.eks_cluster.null_resource.wait_for_cluster[0]
你的错误是local-exec尝试访问你的集群。
这显然会失败,因为您的集群无法通过互联网访问。您要么必须在同一 VPC 中的某个堡垒 ec2 实例上运行 terraform,要么在家庭/工作网络和 VPC 之间使用 VPN。