Data Plane
Self-hosting a DevZero Data Plane on AWS EKS.
By following this guide, you'll set up a DevZero Data Plane hosted on AWS EKS, enabling you to:
- Deploy an EKS cluster configured for seamless DevZero integration.
- Launch self-hosted DevZero Workspaces and Kubernetes Clusters to kickstart your development projects.
- Manage and scale your infrastructure directly on AWS with ease.
This step-by-step guide will walk you through creating an AWS EKS cluster, deploying DevZero Helm charts, and integrating your setup with the DevZero dashboard allowing your team to quickly start building in a production-like environment.
Let's get started!
Hosting the DevZero Data Plane on AWS EKS
For a detailed overview of the DevZero Data Plane, click here
Prerequisites
The following tools are needed to setup a DevZero region hosted on EKS:
Permissions Needed
Check out the Required Permissions on AWS
Also see Control Plane Permissions
Setting up the infrastructure
AWS CLI configuration and IAM setup
If you have an AWS account, use the AWS CLI to connect with it locally. Or, log in to your AWS console.
Configuring AWS CLI to interact with your AWS account locally
First, create aws_access_key
and aws_secret_access_key
from IAM Console.
Select Security Credentials of your user and click on 'Create Access Key'
Set the usecase as CLI and give it a description in the next panel.
After creating the keys, copy them to configure your AWS CLI locally.
Run this AWS command to configure your account:
You will have to enter your aws_access_key
and aws_secret_access_key
in the input:
You are now logged in to your AWS acount.
Setting up an EKS cluster
Deploying the Data Plane
Update your kube-config file to connect to the EKS cluster:
Install the dependencies which are prerequisites to set up a DevZero data plane on the EKS cluster.
If you are using private subnets and all of your traffic is routed through the VPN (private network). You should modify the values/devzero-data-ingress_overrides.yaml
to reflect your configuration, but usually it should be something like this:
Run make install
after the changes.
Install the helm charts to set up the DevZero data plane. Contact the DevZero team at support@devzero.io to get your credentials to install and set up the DevZero data plane.
Make sure to update the values.yaml
in dz-data-plane
directory with your registry
, email
, username
and password
in the credentials
section.
To track progress:
Verify that everything works:
Create new Records in Route 53
Create a CNAME record and add the address of your Nginx ingress service in the value. Set the record name as *
:
Create an A record with an alias. Keep Subdomain empty, route traffic to Alias to Application and Classic Load Balancer
. Set dualstack.<your-ingress-service-address>
as the load balancer:
Connecting to DevZero
Connect this Data Plane to DevZero
Visit the regions page on the DevZero
dashboard and click Add New
.
Use the retrieved values (token, URL, and CA certificate) to connect the self-hosted DevZero region to your team:
Fetching Cluster Configuration
After deploying the Helm chart, retrieve the following values for integration with the DevZero dashboard:
Cluster Name
Enter something meaningful and unique.
Examples: Frankfurt (eu-central-1), Mumbai (ap-south-1), N. California (us-west-1), SÃŖo Paulo (sa-east-1)
Region ID
Enter a cloud-friendly region name (does not necessarily have to be unique).
To preserve familiarility, feel free to reuse existing GCP terms. For a list of AWS Region Names, click here.
Examples: ap-south-1 (Mumbai), eu-central-1 (Frankfurt), sa-east-1 (SÃŖo Paulo), us-west-1 (N. California)
Cluster URL
To get the Cluster URL/IP:
For example,
Add the string as is, without leading or trailing whitespaces.
Cluster CA Certificate
To get the Cluster CA certificate:
For example,
Add the string as is, without leading or trailing whitespaces.
Service Account Name
To get the name of the Service Account:
Usually, this should be devzero-sa-token
.
Add the string as is, without leading or trailing whitespaces.
Service Account Token
To get the Service Account Token:
For example,
Add the string as is, without leading or trailing whitespaces.
Slug
Set any memorable value for the slug (ideally the same name you see in the AWS Dashboard).
For example: test-cluster, dev-cluster-1