1. Infrastructure as Code dengan Terraform
InfrastructureA. Main Configuration
# Main Terraform Configuration
terraform {
required_version = ">= 1.0"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
kubernetes = {
source = "hashicorp/kubernetes"
version = "~> 2.0"
}
}
backend "s3" {
bucket = "multi-tier-tf-state"
key = "ecommerce-platform/terraform.tfstate"
region = "us-east-1"
}
}
# Provider Configuration
provider "aws" {
region = var.aws_region
default_tags {
tags = {
Environment = var.environment
Project = "multi-tier-app"
ManagedBy = "terraform"
}
}
}
B. Network Architecture
# VPC Configuration dengan Multi-AZ
resource "aws_vpc" "main" {
cidr_block = var.vpc_cidr
enable_dns_hostnames = true
enable_dns_support = true
tags = {
Name = "${var.cluster_name}-vpc"
}
}
# Public Subnets untuk Load Balancer
resource "aws_subnet" "public" {
count = length(var.public_subnet_cidrs)
vpc_id = aws_vpc.main.id
cidr_block = var.public_subnet_cidrs[count.index]
availability_zone = data.aws_availability_zones.available.names[count.index]
map_public_ip_on_launch = true
tags = {
Name = "${var.cluster_name}-public-${count.index + 1}"
"kubernetes.io/role/elb" = "1"
}
}