
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
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
Internetas
Vieši klientai ir kontroliuojami išoriniai adresatai.
Įėjimas prasideda čia. Kelio Internetas → NAT nėra.
Trys realios GitHub Actions darbo eigos — validacija, saugumo skenavimas ir žmogaus tvirtinamas OIDC planas.
fmt · init · validate across every module and environment root.
Etapai
Checkout
Pinned actions/checkout — contents read only.
Terraform fmt
Recursive format check fails the PR on drift.
Validate roots
Explicit ROOTS list: modules, environments, and examples/full-stack.
Failure logs
Upload per-root logs when validation fails.
.github/workflows/terraform-validate.yml
1- name: Terraform fmt2 run: terraform fmt -check -recursive3 4- name: Validate roots5 run: |6 ROOTS=(7 modules/networking modules/security modules/storage8 modules/database modules/eks modules/alb modules/observability9 environments/dev environments/staging environments/prod10 examples/full-stack11 )12 for dir in "${ROOTS[@]}"; do13 (cd "$dir" && terraform init -backend=false && terraform validate)14 doneKiekvienas teiginys remiasi failu viešoje repozitorijoje — ne skaidrėmis.
Private EKS API
Control plane endpoint is private-only — reach via VPN or SSM after apply.
Šaltinis · modules/eks/main.tfIRSA for add-ons
OIDC-federated roles for EBS CSI, Load Balancer Controller, and app service accounts.
Šaltinis · modules/eks/irsa.tfPer-service KMS CMKs
Separate keys for S3, RDS, EKS secrets, logs, CloudTrail, SNS, and Backup.
Šaltinis · modules/security/main.tfIsolated DB subnets
Database route tables have no IGW and no NAT — private only.
Šaltinis · modules/networking/main.tfPolicy-as-code CI
PR gates: fmt, TFLint, Trivy, Checkov, Conftest, OPA, and Gitleaks.
Šaltinis · .github/workflows/terraform-security.ymlManual OIDC plan
Human-gated terraform plan via GitHub OIDC — no long-lived AWS keys in CI.
Šaltinis · .github/workflows/terraform-plan.ymlPasirinkite 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.
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.id4 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.Šifravimas, paslaptys, tapatybė, aptikimas ir atkūrimas — numatytieji nustatymai realioms aplinkoms.
Per-service KMS CMKs across S3, RDS, EKS, logs, and more
Šaltinis · modules/security/main.tfRDS master password in Secrets Manager — never in tfvars
Šaltinis · modules/database/main.tfOIDC provider + IRSA roles + EKS access entries
Šaltinis · modules/eks/irsa.tfCloudTrail + Config (observability) and GuardDuty (security) — flag-gated in prod examples
Šaltinis · environments/prod/main.tfAWS Backup vault with daily RDS selection
Šaltinis · modules/observability/main.tfPapasakokite, ką kuriate — kelią sudėliosime kartu.