first commit
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
data "aws_availability_zones" "available" {
|
||||
state = "available"
|
||||
}
|
||||
|
||||
locals {
|
||||
availability_zone = coalesce(var.availability_zone, data.aws_availability_zones.available.names[0])
|
||||
}
|
||||
|
||||
resource "aws_vpc" "cluster" {
|
||||
cidr_block = "10.42.0.0/16"
|
||||
enable_dns_hostnames = true
|
||||
enable_dns_support = true
|
||||
|
||||
tags = { Name = "k8s-security-baseline" }
|
||||
}
|
||||
|
||||
resource "aws_subnet" "cluster" {
|
||||
vpc_id = aws_vpc.cluster.id
|
||||
cidr_block = "10.42.1.0/24"
|
||||
availability_zone = local.availability_zone
|
||||
|
||||
tags = { Name = "k8s-security-baseline" }
|
||||
}
|
||||
|
||||
resource "aws_internet_gateway" "cluster" {
|
||||
vpc_id = aws_vpc.cluster.id
|
||||
}
|
||||
|
||||
resource "aws_route_table" "cluster" {
|
||||
vpc_id = aws_vpc.cluster.id
|
||||
|
||||
route {
|
||||
cidr_block = "0.0.0.0/0"
|
||||
gateway_id = aws_internet_gateway.cluster.id
|
||||
}
|
||||
}
|
||||
|
||||
resource "aws_route_table_association" "cluster" {
|
||||
subnet_id = aws_subnet.cluster.id
|
||||
route_table_id = aws_route_table.cluster.id
|
||||
}
|
||||
|
||||
resource "aws_security_group" "cluster" {
|
||||
name = "k8s-security-baseline"
|
||||
description = "Minimal access for the optional single-node K3s lab host"
|
||||
vpc_id = aws_vpc.cluster.id
|
||||
|
||||
ingress {
|
||||
description = "SSH from the administrator CIDR"
|
||||
from_port = 22
|
||||
to_port = 22
|
||||
protocol = "tcp"
|
||||
cidr_blocks = [var.admin_cidr]
|
||||
}
|
||||
|
||||
ingress {
|
||||
description = "Kubernetes API from the administrator CIDR"
|
||||
from_port = 6443
|
||||
to_port = 6443
|
||||
protocol = "tcp"
|
||||
cidr_blocks = [var.admin_cidr]
|
||||
}
|
||||
|
||||
egress {
|
||||
from_port = 0
|
||||
to_port = 0
|
||||
protocol = "-1"
|
||||
cidr_blocks = ["0.0.0.0/0"]
|
||||
}
|
||||
}
|
||||
|
||||
resource "aws_instance" "k3s" {
|
||||
ami = var.ami_id
|
||||
instance_type = var.instance_type
|
||||
subnet_id = aws_subnet.cluster.id
|
||||
vpc_security_group_ids = [aws_security_group.cluster.id]
|
||||
key_name = var.ssh_key_name
|
||||
associate_public_ip_address = true
|
||||
|
||||
root_block_device {
|
||||
volume_size = 30
|
||||
volume_type = "gp3"
|
||||
encrypted = true
|
||||
}
|
||||
|
||||
tags = { Name = "k8s-security-baseline" }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user