Skip to content

Pulumi AWS IaC groundwork (EKS)#4

Closed
ryanntannn wants to merge 1 commit into
masterfrom
pulumi-eks-iac
Closed

Pulumi AWS IaC groundwork (EKS)#4
ryanntannn wants to merge 1 commit into
masterfrom
pulumi-eks-iac

Conversation

@ryanntannn

Copy link
Copy Markdown
Contributor

What

Pulumi (TypeScript) groundwork to deploy SynergyPlus on AWS, under infra/pulumi/. EKS-based (per your go-ahead), keeping the rest self-managed per the "avoid managed services except S3" stance.

  • EKS (@pulumi/eks) + managed node group + EBS CSI + OIDC provider
  • IRSA roles for the apiserver + runner ServiceAccounts, scoped to the S3 bucket ARNs — no static S3 keys (pairs with the presigned-URL PR; the apiserver mints presigned URLs using its IRSA role)
  • S3 buckets (models/weather/results) with lifecycle TTL, SSE, versioning, public-access block
  • Self-managed: in-cluster Postgres on a gp3 EBS PV (not RDS), GHCR pull secret (not ECR), ingress-nginx (ALB noted as option), k8s Secrets, KEDA
  • VPC/subnets/NAT, the synergyplus-env Secret + SAs, deploy runbook + an honest managed-vs-self-managed decision table

Status

Groundwork — typechecks clean (tsc --noEmit); pulumi up not run (no AWS spend). Honest liabilities documented: single-replica Postgres / you own backups, HA, and k8s patching.

Decision table

EKS = managed (with IRSA + EBS CSI as the EKS-native companions used); everything else self-managed. Full table in infra/pulumi/README.md.

🤖 Generated with Claude Code

Lays the IaC foundation under infra/pulumi/. EKS-based (user is OK with EKS),
keeping the rest self-managed per the 'avoid managed services except S3' stance.

- EKS cluster (@pulumi/eks) + managed node group + EBS CSI + OIDC provider
- IRSA roles for the apiserver + runner SAs scoped to the S3 bucket ARNs (no static
  S3 keys — the keyless path that pairs with presigned URLs)
- S3 buckets (models/weather/results) with lifecycle TTL, SSE, versioning
- Self-managed: in-cluster Postgres on a gp3 EBS PV (not RDS), GHCR pull secret
  (not ECR), ingress-nginx (ALB documented as option), k8s Secrets, KEDA
- VPC/subnets/NAT, synergyplus-env Secret + SAs, deploy runbook + honest
  managed-vs-self-managed trade-offs (you own Postgres HA/backups, k8s patching)

Groundwork only: typechecks (tsc --noEmit); no pulumi up.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019p51SPdbrjmGXJVeZnwTrD
ryanntannn pushed a commit that referenced this pull request Jun 25, 2026
A cloud-native counterpart to the self-managed infra/pulumi (PR #4): EKS + Karpenter,
Aurora PostgreSQL Serverless v2 (replaces in-cluster Postgres), ECR, AWS LB
Controller + ALB + ACM + Route53/ExternalDNS, Secrets Manager + External Secrets,
AMP + Managed Grafana + CloudWatch, SES, IRSA, KMS. KEDA stays. Groundwork only —
tsc --noEmit clean; no pulumi up. README carries the flipped decision table + an
honest self-managed-vs-cloud-native comparison.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019p51SPdbrjmGXJVeZnwTrD
@ryanntannn

Copy link
Copy Markdown
Contributor Author

will do this in a private repo

@ryanntannn ryanntannn closed this Jun 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant