resource "aws_security_group" "aws-elb" { name = "kubernetes-${var.aws_cluster_name}-securitygroup-elb" vpc_id = "${var.aws_vpc_id}" tags = "${merge(var.default_tags, map( "Name", "kubernetes-${var.aws_cluster_name}-securitygroup-elb" ))}" } resource "aws_security_group_rule" "aws-allow-api-access" { type = "ingress" from_port = "${var.aws_elb_api_port}" to_port = "${var.k8s_secure_api_port}" protocol = "TCP" cidr_blocks = ["0.0.0.0/0"] security_group_id = "${aws_security_group.aws-elb.id}" } resource "aws_security_group_rule" "aws-allow-api-egress" { type = "egress" from_port = 0 to_port = 65535 protocol = "TCP" cidr_blocks = ["0.0.0.0/0"] security_group_id = "${aws_security_group.aws-elb.id}" } # Create a new AWS ELB for K8S API resource "aws_elb" "aws-elb-api" { name = "kubernetes-elb-${var.aws_cluster_name}" subnets = var.aws_subnet_ids_public security_groups = ["${aws_security_group.aws-elb.id}"] listener { instance_port = "${var.k8s_secure_api_port}" instance_protocol = "tcp" lb_port = "${var.aws_elb_api_port}" lb_protocol = "tcp" } health_check { healthy_threshold = 2 unhealthy_threshold = 2 timeout = 3 target = "TCP:${var.k8s_secure_api_port}" interval = 30 } cross_zone_load_balancing = true idle_timeout = 400 connection_draining = true connection_draining_timeout = 400 tags = "${merge(var.default_tags, map( "Name", "kubernetes-${var.aws_cluster_name}-elb-api" ))}" }