Skip to content
AWS EKS Foundation — private EKS and RDS behind a public ALB

AWS EKS Foundation

Vienos AWS paskyros programų platforma: privatus EKS ir RDS už viešo ALB — su IRSA, KMS, atsarginėmis kopijomis ir politikos patikromis CI.

Terraform · EKS · IRSA · Policy-as-code · OIDC

Vykdymo kelias

Internetas → IGW → viešas ALB → privatus EKS → RDS. Išeinantis srautas grįžta per NAT — niekada Internetas → NAT.

01/06

VPC · 2–3 prieinamumo zonos

Išeinančio srauto juosta (NAT)

Internetas

Vieši klientai ir kontroliuojami išoriniai adresatai.

Įėjimas prasideda čia. Kelio Internetas → NAT nėra.

CI darbo eigos

Trys realios GitHub Actions darbo eigos — validacija, saugumo skenavimas ir žmogaus tvirtinamas OIDC planas.

fmt · init · validate across every module and environment root.

Atidaryti darbo eigą

Etapai

  1. Checkout

    Pinned actions/checkout — contents read only.

  2. Terraform fmt

    Recursive format check fails the PR on drift.

  3. Validate roots

    Explicit ROOTS list: modules, environments, and examples/full-stack.

  4. Failure logs

    Upload per-root logs when validation fails.

.github/workflows/terraform-validate.yml

1- name: Terraform fmt
2 run: terraform fmt -check -recursive
3
4- name: Validate roots
5 run: |
6 ROOTS=(
7 modules/networking modules/security modules/storage
8 modules/database modules/eks modules/alb modules/observability
9 environments/dev environments/staging environments/prod
10 examples/full-stack
11 )
12 for dir in "${ROOTS[@]}"; do
13 (cd "$dir" && terraform init -backend=false && terraform validate)
14 done

Sukurta realioms komandoms

Kiekvienas teiginys remiasi failu viešoje repozitorijoje — ne skaidrėmis.

Tyrinėkite modulius

Pasirinkite modulį ir failą. Kur yra parengtų fragmentų, jie parodomi; kitu atveju atidarykite failą GitHub.

Moduliai

Failai

Multi-AZ VPC with public, private application, and isolated database subnet tiers.

  • modules
    • networking

Kodėl tai svarbu: Database route tables intentionally omit 0.0.0.0/0 — no IGW, no NAT.

1resource "aws_route_table" "database" {
2 count = length(aws_subnet.database)
3 vpc_id = aws_vpc.this.id
4
5 tags = merge(var.tags, {
6 Name = "${var.name_prefix}-database-rt-${count.index}"
7 })
8}
9
10# Database subnets intentionally have no default route to NAT/IGW.

Apsaugų matrica

Šifravimas, paslaptys, tapatybė, aptikimas ir atkūrimas — numatytieji nustatymai realioms aplinkoms.

Encryption

Per-service KMS CMKs across S3, RDS, EKS, logs, and more

Šaltinis · modules/security/main.tf
Secrets

RDS master password in Secrets Manager — never in tfvars

Šaltinis · modules/database/main.tf
Identity

OIDC provider + IRSA roles + EKS access entries

Šaltinis · modules/eks/irsa.tf
Detection

CloudTrail + Config (observability) and GuardDuty (security) — flag-gated in prod examples

Šaltinis · environments/prod/main.tf
Recovery

AWS Backup vault with daily RDS selection

Šaltinis · modules/observability/main.tf

Norite tokio lygio?

Papasakokite, ką kuriate — kelią sudėliosime kartu.