LogoLogo
  • Welcome to Release
  • Getting started
    • Quickstart
    • Create an account
    • Prepare to use Release
    • Create an application
      • Create custom application
      • Create from template
      • Servers vs runnables
    • Create an environment
  • Guides and examples
    • Domains and DNS
      • Manage domains
      • DNS and nameservers
        • Configure GoDaddy
        • Configure Cloudflare
        • Configure Namecheap
        • Other DNS hosts
      • Routing traffic
    • Example applications
      • Full stack voting app
      • Flask and RDS counter app
      • Static site with Gatsby
      • Golang with Postgres and Nginx
      • WordPress with MySQL
      • Spring and PostgreSQL
      • Terraform and Flask
      • OpenTelemetry demo
      • Load balancer with hostname
      • Static JavaScript service
      • SSH bastion access to services
      • ngrok and OAuth for private tunnels
      • Using OAuth Proxy
      • Hybrid Docker and static site
      • App Imports: Connecting two applications
      • Example library
    • Running instances
      • Cron jobs
      • Jobs
      • Using Helm charts
      • Using terminal
      • Viewing logs
      • Troubleshooting
        • ImagePullBackoff error
        • CrashLoopBackoff error
        • Exit codes
        • OOM: out of memory
    • Advanced guides
      • Containers guide
      • Application guide
      • Kubernetes guide
      • Create a cluster
      • Upgrade a cluster
      • Managing node groups
      • Patch node groups
      • Hostnames and rules
      • Serve traffic on multiple ports
      • Configure access to your K8s cluster
      • Designing for multiple environments
      • Microservices architecture
      • Monitoring your clusters
      • Performance tuning
      • Visibility and monitoring
      • Working with data
        • Container-based data
        • Seeding and migration
        • Cloud-provided data
        • Golden images
        • Third party
      • Pausing Instant Datasets
        • Application pausing schedules
        • Pause/resume environments
      • Infrastructure as code
        • Terraform
  • Reference documentation
    • Account settings
      • Account info
      • Managing users
      • Build settings
        • Build arguments
        • Build SSH keys
      • Add integrations
      • View clusters and cloud integrations
      • Add datasets
      • Environment handles
    • Workflows in Release
      • Stages of workflows
      • Serial deployments
      • Parallel deployments
      • Rolling deployments
      • Rainbow deployments
    • Networking
      • Network architecture (AWS)
      • Network architecture (GCP)
      • Ingresses
      • IP addresses
      • Cloud-provided services
      • Third-party services
    • Release environment versioning
    • Application settings
      • Application Template
        • Schema definition
      • Default environment variables
      • GitHub
      • Pull requests
      • GitOps
      • Just-in-time file mounts
      • Primary App Link
      • Create application FAQ
      • App-level build arguments
      • Parameters
      • Workspaces
    • End-to-end testing
    • Environment settings
      • Environment configuration
      • Environment variables
        • Environment variable mappings
        • Secrets vaults
        • Using Secrets with GitOps
        • Kubernetes Secrets as environment variables
        • Managing legacy Release Secrets
    • Environment expiration
    • Environment presets
    • Instant datasets on AWS
    • Instant datasets on GCP
    • Instant dataset tasks
      • Tonic Cloud
      • Tonic On-Premise
    • Cloud resources
    • Static service deployment
    • Helm
      • Getting started
      • Version-controlled Helm charts
      • Open-source charts
      • Building Docker images
      • Ingress and networking
      • Configuration
    • GitOps
    • The .release.yaml file
    • Docker Compose conversion support
    • Reference examples
      • Adding and removing services
      • Managing service resources
      • Adding database containers to the Application Template
      • Stock Off-The-Shelf Examples
    • Release API
      • Account Authentication
      • Environments API
        • Create
        • Get
        • Setup
        • Patch
      • User Authentication
      • Environment Presets API
        • Get Environment Preset List
        • Get Environment Preset
        • Put Environment Preset
  • Background concepts
    • How Release works
  • Frequently asked questions
    • Release FAQ
    • AWS FAQ
    • Docker FAQ
    • JavaScript FAQ
  • Integrations
    • Integrations overview
      • Artifactory integration
      • Cloud integrations (AWS)
        • AWS guides
        • Grant access to AWS resources
        • AWS how to increase EIP quota
        • Control your EKS fleet with systems manager
        • Managing STS access
        • AWS Permissions Boundaries
        • Private ECR Repositories
        • Using an Existing AWS VPC
        • Using an Existing EKS Cluster
      • Docker Hub integration
      • LaunchDarkly integration
      • Private registries
      • Slack integration
      • Cloud integrations (GCP)
        • GCP Permissions Boundary
      • Datadog Agent
      • Doppler Secrets Manager
      • AWS Secrets Management
    • Source control integrations
      • GitHub
        • Pull request comments
        • Pull request labels
        • GitHub deployments
        • GitHub statuses
        • Remove GitHub integration
      • Bitbucket
      • GitLab
    • Monitoring and logging add-ons
      • Datadog
      • New Relic
      • ELK (Elasticsearch, Logstash, and Kibana)
  • Release Delivery
    • Create new customer integration
    • Delivery guide
    • Release to customer account access controls
    • Delivery FAQs
  • Release Instant Datasets
    • Introduction
    • Quickstart
    • Security
      • AWS Instant Dataset security
    • FAQ
    • API
  • CLI
    • Getting started
    • Installation
    • Configuration
    • CLI usage example
    • Remote development environments
    • Command reference
      • release accounts
        • release accounts list
        • release accounts select
      • release ai
        • release ai chat
        • release ai config-delete
        • release ai config-init
        • release ai config-select
        • release ai config-upsert
      • release apps
        • release apps list
        • release apps select
      • release auth
        • release auth login
        • release auth logout
      • release builds
        • release builds create
      • release clusters
        • release clusters exec
        • release clusters kubeconfig
        • release clusters shell
      • release datasets
        • release datasets list
        • release datasets refresh
      • release deploys
        • release deploys create
        • release deploys list
      • release development
        • release development logs
        • release development start
      • release environments
        • release environments config-get
        • release environments config-set
        • release environments create
        • release environments delete
        • release environments get
        • release environments list
        • release environments vars-get
      • release gitops
        • release gitops init
        • release gitops validate
      • release instances
        • release instances exec
        • release instances logs
        • release instances terminal
  • Release.ai
    • Release.ai Introduction
    • Getting Started
    • Release.ai Templates
    • Template Configuration Basics
    • Using GPU Resources
    • Custom Workflows
    • Fine Tuning LlamaX
    • Serving Inference
Powered by GitBook
On this page
  • Summary of requirements
  • Tagging
  • VPC tags
  • Subnet tags
  • Gather the information required

Was this helpful?

  1. Integrations
  2. Integrations overview
  3. Cloud integrations (AWS)

Using an Existing AWS VPC

PreviousPrivate ECR RepositoriesNextUsing an Existing EKS Cluster

Last updated 11 months ago

Was this helpful?

By default, Release creates a new, dedicated VPC when you create an EKS cluster, but you can create an EKS cluster in an existing VPC.

It's important to follow the steps carefully to successfully create an EKS cluster in an existing VPC.

Begin by reviewing the and ensuring the requirements listed there are in place.

Summary of requirements

To create an EKS cluster in an existing VPC, you will need:

  • An existing VPC with security, networking, and IP ranges configured.

  • At least two private subnets and usually two public subnets with all the matching route tables, security groups, and necessary gateways.

  • Several tags added to the VPC and subnets so that Release and EKS can pick the correct ones to attach to.

Tagging

Although tagging is not strictly necessary to create a functional cluster, we recommend you use the following tagging scheme when using Release to ensure your setup is stable and straightforward.

Tag keys and values are flexible; Release will detect the correct tags by key or value if they contain the name of the cluster you are creating. However, for best results and supported use cases, we encourage you to follow our recommended tagging scheme.

VPC tags

You need to set several tags on the VPC BEFORE you create the cluster so that Release knows which VPC to deploy to.

Ensure that the name of the cluster you are going to create matches the variable <cluster_name> wherever it is used.

Tag Key
Tag Value
Example
Notes

kubernetes.io/cluster/<cluster_name>

shared

kubernetes.io/cluster/production: shared

In our testing, it didn't matter if "owned" or "shared" was used.

Subnet tags

You need to apply several tags to each subnet BEFORE you create the cluster so that Release knows which subnets to deploy to and what the function of each subnet is, private or public.

Ensure that the name of the cluster you are going to create matches the variable <cluster_name> wherever it is used.

Note that you should tag private and public subnets differently and you should have at least two of each, although public subnets are optional.

Tag Key
Tag Value
Example
Notes

kubernetes.io/cluster/<cluster_name>

shared

kubernetes.io/cluster/production: "shared"

In our testing, it didn't matter if "owned" or "shared" was used.

kubernetes.io/role/internal-elb

1

kubernetes.io/role/internal-elb: "1"

This tag should only be applied to each PRIVATE subnet.

kubernetes.io/role/elb

1

kubernetes.io/role/elb: "1"

This tag should only be applied to each PUBLIC subnet.

Gather the information required

Now that your VPC and subnets are tagged, gather the required information to fill in the fields in the Create New Cluster form EXACTLY as you have created and entered them in the dialog box:

Name of Field
Required Information
Example
Notes

Cloud Provider Integration

The cloud integration tied to your AWS account

my-AWS-integration

This is a drop-down that you cannot edit, so you need to create it beforehand and make sure it is attached to the same account with the existing resources.

Region

The region where the existing resources exist

us-west-2

This is a drop-down and must match the exact region where the existing resources are created.

IP Address Range

The VPC CIDR from the existing VPC

10.7.0.0/16

Note that the drop-down will not show the existing VPC CIDR, you must type it in exactly.

Kubernetes Engine Version

Choose a supported version

1.29

This is a drop-down showing supported versions. Compatibility between Kubernetes versions is usually plus or minus one minor version number.

Cluster Name

The name for the new cluster

my-new-cluster

This must match the tags you added previously.

Domain

The subdomain to use

release.example.com

This is the domain created as part of the cluster requirements or choose a Release-supplied domain name.

eksctl documentation