Skip to content

Provision EKS cluster with microservices application#1

Merged
pulumi[bot] merged 1 commit into
mainfrom
neo-changes-1762734123165
Nov 10, 2025
Merged

Provision EKS cluster with microservices application#1
pulumi[bot] merged 1 commit into
mainfrom
neo-changes-1762734123165

Conversation

@pulumi

@pulumi pulumi Bot commented Nov 10, 2025

Copy link
Copy Markdown
Contributor

Summary

This PR provisions a complete EKS cluster with a microservices application stack including HTTPS ingress, autoscaling, and CI/CD pipeline.

Infrastructure Created

EKS Cluster

  • Cluster: 3 t3.small nodes in default VPC
  • Region: us-west-2
  • OIDC Provider: Enabled for IAM roles for service accounts

Microservices Application

  • Frontend: React app (nginx) with 2 replicas
  • Backend API: Node.js service with 2-10 replicas (HPA enabled)
  • Redis Cache: Single replica for caching

Networking & Security

  • NGINX Ingress Controller: LoadBalancer service for external access
  • cert-manager: Automated Let's Encrypt HTTPS certificates
  • Ingress Routes:
    • / → Frontend
    • /api → Backend API

Autoscaling

  • Horizontal Pod Autoscaler for backend:
    • Min replicas: 2
    • Max replicas: 10
    • Target CPU: 70%

CI/CD

  • GitHub Actions workflow configured:
    • Preview on pull requests
    • Deploy on merge to main
    • Uses AWS OIDC for secure authentication

Configuration Required

Before deploying, set these configuration values:

pulumi config set domain your-domain.com
pulumi config set letsencryptEmail your-email@example.com

And configure GitHub secrets:

  • PULUMI_ACCESS_TOKEN: Your Pulumi access token
  • AWS_ROLE_ARN: AWS IAM role ARN for OIDC

Deployment Status

✅ Successfully deployed with pulumi up

  • 42 resources created
  • Cluster name: eks-cluster-eksCluster-20a63c6
  • All services running

Next Steps

  1. Point your domain DNS to the load balancer (get hostname with the exported kubectl command)
  2. Wait 1-2 minutes for Let's Encrypt certificate issuance
  3. Access your application at https://your-domain.com
  4. Replace sample container images with your actual React and Node.js applications

Files Changed

  • index.ts: Complete infrastructure definition
  • package.json: Dependencies for EKS and Kubernetes
  • .github/workflows/pulumi.yml: CI/CD pipeline
  • README.md: Documentation and setup instructions
  • Pulumi.dev.yaml: Stack configuration with ESC environment

@pulumi pulumi Bot merged commit 2ad6413 into main Nov 10, 2025
1 of 2 checks passed
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