Skip to main content
Deploy and manage your infrastructure on AWS using Ryvn’s automated provisioning system.

Prerequisites

Before you begin, make sure you have:

Configure your environment

  1. Go to the Environments tab in the Ryvn Dashboard
  2. Click Create Environment in the top-right corner
  3. Give your environment a name (e.g. production)
  4. Select a release channel (e.g. production)
    Release channels link services to environments. When you push code changes, services publish releases to release channels. Environments subscribed to those channels automatically deploy new releases.
  5. Click Create Environment

Provisioning steps

  1. From your environment in the Ryvn Dashboard, click View Environment
  2. Click Self Setup
  3. Click Start Provisioning
  4. Select AWS as your cloud provider
  5. Fill out the form with your AWS credentials
  6. Click Continue
  7. Click Create Permissions
  8. Follow the AWS-specific instructions shown in the dashboard
  9. Return to Ryvn and wait for provisioning to complete
The provisioning process is automated and typically takes 15-20 minutes. Ryvn will set up all necessary AWS resources including networking, security, and compute infrastructure.

Provisioning methods

Ryvn offers two methods for provisioning AWS infrastructure:

BYOC (Bring Your Own Cloud)

With BYOC, Ryvn creates a new VPC in your AWS account with the specified CIDR block.

Configuration interface

BYOC provisioning offers two configuration modes: Basic Mode A user-friendly form interface with the following options:
  • Region: Select your AWS region (e.g., US East, EU West)
  • VPC CIDR Block: Specify the IP range for your VPC (default: 10.42.0.0/16)
  • Application Node Group Configuration:
    • Instance Type: Choose from t3.medium (2 CPU, 4GB RAM), t3.large (2 CPU, 8GB RAM), or t3.xlarge (4 CPU, 16GB RAM)
    • Min Size: Minimum number of nodes (recommended: 2)
    • Max Size: Maximum number of nodes for scaling
Advanced Mode A YAML editor for more detailed configuration: Configuration Requirements:
  • You must specify a vpc_cidr value in the standard CIDR notation format (e.g., 10.0.0.0/16)
  • The CIDR block must be a valid IPv4 address range with a subnet mask between /0 and /32
Example configuration:

Custom Terraform executor policies

For cases where you need to deploy Terraform services with specific permissions, you can replace the Ryvn Agent role’s default policy with your own IAM policy statements by adding a terraform_executor_policies block to your configuration:
This configuration grants full access permissions to Terraform services running in your environment, allowing you to deploy any Terraform resources without restriction. You can also specify more granular permissions if needed; the statements you supply replace the default policy, so include everything the agent needs.
Policy conditions
Add IAM policy conditions to scope permissions for specific use cases. The optional condition field supports standard IAM condition operators like StringEquals, StringNotEquals, ArnLike, and others. For example, to restrict KMS access to requests coming through Secrets Manager in a specific region:
This lets you scope Secrets Manager and KMS access per environment, so Terraform can only use specific keys through designated services.
The terraform_executor_policies configuration is particularly useful when you need to deploy custom infrastructure using Terraform services. By default, Terraform services have restricted permissions.

BYOVPC (Bring Your Own VPC)

With BYOVPC, Ryvn uses an existing VPC in your AWS account. Configuration Requirements:
  • You must specify a vpc_id that starts with “vpc-”
  • You must provide at least 3 unique private subnet IDs, each starting with “subnet-”
  • All subnet IDs must be unique
Example configuration:
The provisioning button will be disabled until your configuration meets all the requirements for your selected method. A tooltip will display if there are any validation errors in your configuration.

EKS node pool configuration

Ryvn uses AWS EKS Managed Node Groups to provide scalable compute resources for your applications. You can configure node pools through the eks_managed_node_groups section in your YAML configuration.

Default node groups

Ryvn automatically creates two node groups by default:
  • application: For running your application workloads
  • system: For running system components and infrastructure services

Available configuration options

The following configuration options are available for each node group:

Basic configuration

Storage configuration

Default storage configuration:

Advanced configuration

Configuration examples

Basic node group configuration

Advanced node group with custom storage

Node group with taints

Define taints as a map of named objects. Ryvn passes this configuration to the Terraform EKS module. Each entry requires a key and an effect; value is optional. Use the AWS effect values NO_SCHEDULE, PREFER_NO_SCHEDULE, or NO_EXECUTE.
The name gpu under taints identifies the configuration entry. The key field sets the Kubernetes taint key (nvidia.com/gpu). This format applies to eks_managed_node_groups. Custom Karpenter NodePools use a list of taints with Kubernetes effect values such as NoSchedule; see the GPU workloads guide.

Custom node groups

You can create additional node groups beyond the default application and system groups:

Advanced configuration options

For advanced node group configurations not covered here, refer to the AWS EKS Managed Node Group Terraform module documentation. This upstream module provides comprehensive configuration options for specialized use cases.
Ryvn automatically adds the label ryvn.app/node-group-name to all nodes for identification and management purposes.

What gets created

Ryvn provisions a production-ready EKS cluster in your AWS account, complete with secure networking and IAM configuration. This includes a VPC with private subnets, load balancers for service exposure, and all necessary security groups and IAM roles.