Skip to main content

Quick Start

This guide walks you through creating your first infrastructure environment with OpenPrime.

Prerequisites​

Gather these before you start — the wizard does not block you on them, but the last step will fail without them:

You needWhyWhere it goes
AWS access key + secretCreating the Terraform state backend, then provisioningSettings → Cloud Credentials
An IAM policy covering S3 and DynamoDB, not just EKS/EC2The state backend is created before Terraform runssee Cloud Credentials
A Git repository for the generated codeOpenPrime pushes the infrastructure it generateswizard, Basic Configuration
A deploy key with WRITE access to that repositoryThe push is a real git pushwizard, Basic Configuration
CI secrets in that repositoryThe generated pipeline applies the Terraformyour Git provider's settings

The last one is easy to miss: OpenPrime generates and pushes the code, but your own pipeline is what applies it. It needs AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY configured as repository secrets.

Step 1: Access OpenPrime​

Open app.openprime.io in your browser.

You'll be redirected to Keycloak for authentication.

Running locally instead?

If you are running the stack yourself, use http://localhost:3000 — see Installation.

Step 2: Log In or Register​

If this is your first time:

  1. Click Register on the Keycloak login page
  2. Fill in your details
  3. Complete registration

Your user account is automatically created in OpenPrime on first login.

Step 3: Create Your First Environment​

  1. Click Environments in the sidebar
  2. Click Create Environment

Configure Basic Settings​

Name: my-first-env
Provider: AWS
Region: us-east-1

Add Services​

Enable the services you need:

ServiceDescription
Kubernetes (EKS)Managed Kubernetes cluster
Database (RDS)Managed PostgreSQL/MySQL
Storage (S3)Object storage buckets

Configure Kubernetes (Example)​

kubernetes:
enabled: true
clusterName: my-cluster
version: "1.28"
nodeGroups:
- name: general
instanceType: t3.medium
desiredSize: 2
minSize: 1
maxSize: 5

Step 4: Add Helm Charts (Optional)​

Navigate to the Helm Charts tab to add applications:

Common Selections​

  • nginx-ingress - Ingress controller
  • cert-manager - TLS certificate automation
  • prometheus-stack - Monitoring and alerting

Configure each chart or use defaults:

nginx-ingress:
enabled: true
customValues: false

cert-manager:
enabled: true
customValues: true
values: |
installCRDs: true
prometheus:
enabled: true

Step 5: Review and Save​

  1. Click Review to see your configuration summary
  2. Verify all settings are correct
  3. Click Save Environment

Step 6: Generate Infrastructure Code​

Once saved, you can generate deployment artifacts:

Terraform Files​

# Generated structure
environments/
└── my-first-env/
├── main.tf
├── variables.tf
├── outputs.tf
└── terraform.tfvars

Helm Values​

# Generated Helm configurations
helm/
└── my-first-env/
├── nginx-ingress-values.yaml
└── cert-manager-values.yaml

ArgoCD Applications (Optional)​

# GitOps manifests
argocd/
└── my-first-env/
├── application.yaml
└── appproject.yaml

Step 7: Deploy (Optional)​

Using Terraform​

cd environments/my-first-env

# Initialize
terraform init

# Plan
terraform plan

# Apply (requires cloud credentials)
terraform apply

What the Generated Repository Contains​

.github/workflows/     GitHub Actions pipeline (fmt, validate, plan, apply)
.gitlab-ci.yml GitLab CI equivalent
terraform/aws/ Cloud infrastructure (VPC, EKS, RDS, ...)
terraform/kubernetes/ In-cluster resources and Helm releases
argocd/ Application manifests and Helm values

There is no deployment script — the pipeline in .github/workflows/ is what applies the Terraform. Run it from your repository, or use the terraform commands above locally.

What's Next?​

Example Configurations​

Minimal Development Environment​

name: dev-env
provider: aws
region: us-west-2
services:
kubernetes:
enabled: true
nodeGroups:
- name: dev
instanceType: t3.small
desiredSize: 1

Production-Ready Setup​

name: prod-env
provider: aws
region: us-east-1
services:
kubernetes:
enabled: true
version: "1.28"
nodeGroups:
- name: system
instanceType: t3.medium
desiredSize: 3
- name: workload
instanceType: t3.large
desiredSize: 5
maxSize: 20
database:
enabled: true
engine: postgresql
version: "15"
instanceClass: db.r5.large
multiAZ: true
helmCharts:
prometheus-stack:
enabled: true
cert-manager:
enabled: true
external-secrets:
enabled: true