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
  • Step 1: Choose a base domain
  • Step 2: Spin up a Kubernetes cluster
  • Step 3: Deploy an application
  • Step 4: Request SSL Certificates
  • Step 5: Configure access to your datastores and services
  • Step 6: Monitor and maintain your applications
  • Step 7: Customise your DNS entries

Was this helpful?

  1. Background concepts

How Release works

PreviousPut Environment PresetNextRelease FAQ

Last updated 1 year ago

Was this helpful?

This is a technical discussion of how Release environments as a service work (EaaS) when deployed into your cloud account. These examples generally refer to AWS, but Release offers full support for other cloud service providers.

Step 1: Choose a base domain

Release environments are deployed underneath a subdomain for ease and isolation. For example, the subdomain release.example.com may have multiple environments that are reachable as serviceA-envA.release.example.com or serviceB-envA.release.example.com, and so on.

You can use wildcard domains for preproduction and production environments, so that for example, both *.service-A-envA.release.example.com and *.staging.example.com can be used. Wildcard domains can be used to accommodate different languages: us.staging.example.com or categories: shoes.staging.example.com.

A shopping website shopping.com may have an application called shoes and a customer called buyer. The customer's private application URL would be shoes-buyer.release.shopping.com. Custom domains, such as shoes.buyer.com, need .

In advanced configurations, preproduction applications can be deployed into one subdomain (*.release.example.com) and production or staging environments deployed directly as, for example, www.example.com or staging.example.com.

Configuration of your domain is handled in the hostname field of the .

Step 2: Spin up a Kubernetes cluster

With Release, you can deploy environments and applications without in-depth knowledge of the infrastructure needed to run your application code.

When Release is integrated with your cloud service provider, it is given credentials and authorization to build infrastructure and deploy applications to your cluster.

  • For AWS and GovCloud, a CloudFormation template creates an IAM role for Release.

  • With GCP, a project credential file allows Release to build and deploy code to projects.

For EaaS customers, cloud integration is configured for each cloud provider account, so you can deploy across clouds and regions.

For private application customers, a landing page is designed for each installation that has access to your cloud account.

Given secure access to your cloud account, Release spins up all the necessary buckets, Kubernetes clusters, and supporting infrastructure. AWS uses several services including EKS, ECR, S3, Route53, VPC, RDS, DynamoDB, RDS, CloudFront, and ALB. GCP uses Container Engine, Container Registry, Google Cloud Virtual Network, Cloud Load Balancing, Cloud DNS, Cloud Storage, and Cloud SQL.

Step 3: Deploy an application

Release environments are built from an Application Template that runs many versions of your application simultaneously in a complete stack so you can test and view multiple branches of code and ideas in parallel.

The production deployment of applications is straightforward because the development Application Templates vary only slightly in terms of Environment variables. Since multiple production environments differ only slightly for individual customer needs, private application customers can run their own version of an application in their accounts for privacy, security, or regulatory requirements.

Step 4: Request SSL Certificates

Release uses AWS Certificate Manager (ACM) with DNS validation enabled to issue secure SSL Certificates for applications. This process is clear if the subdomain is configured in Route53 in the same account and the zone is publicly available. In some cases, exceptions need to be made to validate the certificates manually:

  • For AWS GovCloud accounts, Route53 has private-zone-only support. The Release UI generates the validation records to be inserted into the public zone to validate the certificate request. A DNS CNAME record is created and ACM then validates the certificate.

  • Similarly, AWS or GCP accounts with private zones need to copy the validation records from the Release UI and create a DNS CNAME record in the public zone.

  • In cases where public DNS zones do not exist, a fake public zone can be created to validate CNAME records. This is not recommended, but will work if the DNS domain is registered, owned by the end user, and valid. Release provides detailed support in these situations.

Step 5: Configure access to your datastores and services

Release applications and environments deployed into your cloud account can be granted secure access to resources. The table below shows different ways to do this in AWS and GCP.

AWS Access Resource
Method
Release Support

VPN

VPN Gateway

Manually configured

VPN/VPC Networking

Transit Gateway

Automatic

VPC Networking

VPC Peering

Manually configured

RDS Instances

VPC Peering

Manually configured

AWS Services

Role Sessions

Terraform, Pulumi, etc.

GCP Access Resource
Release Support

VPC Networking

VPC Network Peering

Manually configured

Cloud DB

Instance Level Access

Manually configured

VPN

Cloud VPN

Manually configured

Step 6: Monitor and maintain your applications

Release handles administration, support, and upgrades, and ensures smooth functioning of the infrastructure dedicated to running your applications. If you want more visibility into infrastructure for cost analysis, auditing, performance, or reliability reasons, there are several options available:

Visibility Required
Vendors or Technologies
Release Support

Application Performance Monitoring (APM)

Datadog, New Relic

Kubernetes Agents

Metrics Collection

Datadog, Cloudwatch, Stackdriver

Kubernetes Agents and Integrations

Log Collection and Analysis

Datadog, ELK, JournalD, Release UI

Kubernetes Agents and Integrations

Kubernetes drivers

Lens, K9s, Kubectl, Eksctl, Cloudshell

CLI and API

Shell access to Pods and Containers

Lens, K9s, Kubectl, Cloudshell, Release UI

CLI and API

Alerting and Reporting

Datadog, New Relic

Kubernetes Agents

Network Traffic Analysis and Reporting

Datadog, Thousand Eyes

Kubernetes Agents

Step 7: Customise your DNS entries

Release environments can be run on any valid zone if certificates and DNS records exist.

external DNS configuration
Application Template
An example diagram of an AWS Cloudformation template for an EKS cluster in Release