AWS CloudFormation (EKS)
The deployment consists of a few docker containers, a database for storing metadata, and persistent file storage for storing files.
This document contains instructions to deploy Datagrok using CloudFormation on AWS EKS with AWS RDS (PostgreSQL) and AWS S3. The template provisions the EKS cluster (or uses yours), RDS instance, S3 bucket, Application Load Balancer, IAM roles with IRSA, and installs the Datagrok Helm chart on the cluster automatically.
We considered a lot of typical security nuances during the CloudFormation template development. As a result, you will create a Datagrok infrastructure in AWS that applies to all standard security policies.
More information about Datagrok design and components:
The EKS templates share the database, bucket, secrets, and load balancer with the ECS templates. Replacing an ECS stack's template with the matching EKS template keeps your data and your URL. See Migrate from ECS.
Prerequisites
- Check that you have the required permissions on the AWS account to perform CloudFormation deployment to EKS.
- The private subnets need outbound internet access (NAT gateway). The cluster pulls Datagrok images from Docker Hub, and the installer downloads Helm and the chart.
New or existing cluster
By default, the stack creates an EKS cluster with a managed node group (NodeInstanceType, NodeGroupDesiredSize)
in the private subnets. Set GpuRequired to true to add a GPU node group for GPU plugins.
To install Datagrok on a cluster you already run, set ExistingEksClusterName to its name and use one of the
vpc-eks-* templates with the cluster's VPC. The stack then skips the cluster and node groups, and:
- adds the cluster's IAM OIDC provider if it has none;
- opens RDS and the load balancer to the cluster security group;
- installs the AWS Load Balancer Controller only when the cluster does not run one;
- installs Datagrok into the
HelmNamespacenamespace (datagrokby default).
The existing cluster must meet these requirements:
- Its authentication mode is
APIorAPI_AND_CONFIG_MAP. The stack grants its installer access with an EKS access entry. - Its nodes use the cluster security group (the default for managed node groups) and have enough free capacity for Datagrok (about 4 vCPU and 8 GiB).
- Its API endpoint is reachable from the private subnets.
The stack installs Datagrok with a CodeBuild project. If an install or an update fails, open the build log from the DatagrokInstallerLogs stack output.
Deploy Datagrok components
We prepared a specific template for every need of our customers. Answer the simple questions below to use the right one for you.
Would you like to use an existing VPC in your AWS account?
- Yes
- No
Datagrok stand will be put in an existing VPC you choose upon creation.
Do you use Route53 as your DNS provider? (existing VPC)
- Yes
- No
Requirements
- Create a Route53 public hosted zone.
How to deploy
-
Use the link to open the CloudFormation template and fill in all required parameters.
- Specify stack name. To meet AWS naming requirements, the name must be shorter than 10 symbols and correspond to S3 Bucket naming rules. We use 'datagrok' by default, but you may prefer to also specify the env in the stack name.
-
Wait until AWS completes the deployment. The stack status will be
CREATE_COMPLETE. The script created a datagrok stand inside your existing VPC using the existing Route53 hosted zone. Your Datagrok instance is now ready to use.If you see one of the following statuses then something went wrong:
CREATE_FAILED,ROLLBACK_IN_PROGRESS,ROLLBACK_COMPLETE,ROLLBACK_FAILED. Check the stack events for more information about the error. -
Enter the platform at
datagrok.<subdomain>using theadminuser. To get the password:- Go to stack Outputs. Find DatagrokAdminPassword and click on the link to open AWS Secrets Manager.
- Click Retrieve secret value and copy password. It is a generated password for the first admin login.
- To increase security, change the password for the admin user on first login. Datagrok will ignore the admin password from secrets on subsequent restarts.
-
Complete the initial setup in the platform and you are ready to use Datagrok.
Our CloudFormation scripts support external DNS providers, however, it will require a few manual steps to configure the endpoint.
Requirements
-
Datagrok requires an endpoint:
DATAGROK_DNS. Users will use it to access Datagrok's Web UI. -
Create an RSA SSL certificate for
DATAGROK_DNS.- If you use AWS ACM for SSL certificates:
- Generate an ACM certificate
valid for
DATAGROK_DNS. - Copy the AWS ARN for the certificate. It should look like
arn:aws:acm:<region>:<account_id>:certificate/<certificate_id>.
- Generate an ACM certificate
valid for
- If you don't use AWS ACM: create a certificate for
DATAGROK_DNSany way you are already using. A wildcard certificate also suffices.- Upload the certificate to AWS ACM.
- Copy the AWS ARN for the imported certificate.
- If you use AWS ACM for SSL certificates:
How to deploy
-
Use the link to open the CloudFormation template and fill in all required parameters.
- Specify stack name.
DatagrokArnSSLCertificate: specify AWS ACM ARN forDATAGROK_DNSfrom the prerequisites.
-
Wait until AWS completes the deployment. The stack status will be
CREATE_COMPLETE. -
As you chose the fulfillment option with external DNS, you need to create a CNAME record for Datagrok's Load Balancer. To get the Load Balancer endpoint for the DNS record:
- Go to stack Outputs. Copy the value for DatagrokLoadBalancerDNSName.
- Use the copied DNS name to create a CNAME DNS record. For example:
- Host:
DATAGROK_DNS, Target: DatagrokLoadBalancerDNSName.
- Host:
-
Enter the platform at
DATAGROK_DNSusing theadminuser. Retrieve the password from DatagrokAdminPassword in stack Outputs as described in the Route53 tab above. -
Complete the initial setup in the platform and you are ready to use Datagrok.
The template will create a new VPC and all required network resources for you.
Do you use Route53 as your DNS provider? (new VPC)
- Yes
- No
Requirements
- Create a Route53 public hosted zone.
How to deploy
-
Use the link to open the CloudFormation template and fill in all required parameters.
-
Wait until AWS completes the deployment. The stack status will be
CREATE_COMPLETE. -
Enter the platform at
datagrok.<subdomain>using theadminuser. Retrieve the password from DatagrokAdminPassword in stack Outputs. -
Complete the initial setup in the platform and you are ready to use Datagrok.
Our CloudFormation scripts support external DNS providers, however, it will require a few manual steps to configure the endpoint.
Requirements
-
Come up with an endpoint:
DATAGROK_DNS. Users will useDATAGROK_DNSto access Datagrok's Web UI. -
Create an RSA SSL certificate for
DATAGROK_DNS(see theUse existing VPC → External DNStab above for details).
How to deploy
-
Use the link to open the CloudFormation template and fill in all required parameters.
- Specify stack name.
DatagrokArnSSLCertificate: specify AWS ACM ARN forDATAGROK_DNS.
-
Wait until AWS completes the deployment. The stack status will be
CREATE_COMPLETE. -
As you chose the fulfillment option with external DNS, you need to create a CNAME record for Datagrok's Load Balancer. To get the Load Balancer endpoint for the DNS record:
- Go to stack Outputs. Copy the value for DatagrokLoadBalancerDNSName.
- Use the copied DNS name to create a CNAME DNS record, for example:
- Host:
DATAGROK_DNS, Target: DatagrokLoadBalancerDNSName.
- Host:
-
Enter the platform at
DATAGROK_DNSusing theadminuser. Retrieve the password from DatagrokAdminPassword in stack Outputs. -
Complete the initial setup in the platform and you are ready to use Datagrok.
Service versions
Every service has a dedicated CloudFormation parameter (DatagrokVersion, GrokPipeVersion,
GrokSpawnerVersion, GrokConnectVersion, JKGVersion, GrokRegistryProxyVersion,
RabbitmqVersion) for picking the container image tag. Defaults track the most recent
Datagrok release and are tested together — see Images and versions for the
current set and pinning conventions across deployment paths. HelmChartVersion defaults to
DatagrokVersion; the template appends -helm automatically (e.g. 1.27.3 → chart tag
1.27.3-helm).
Update Datagrok components
You can update your Datagrok deployment without re-creating infrastructure. Before updating, we recommend backing up the database and persistent storage. Refer to your internal backup procedures.
How to update
Use the same deployment script and an updated version of the deployment profile:
- Click Update > Replace current template, and provide the new template URL corresponding to your deployment configuration.
- Specify new versions for image tags (see the release history).
HelmChartVersiondefaults to the same value asDatagrokVersion. - Click Next, skip optional settings, and proceed to Review.
- If the stack enters a failed state (e.g.,
UPDATE_ROLLBACK_IN_PROGRESS), check events for details.
- CloudFormation will not replace the database or file storage during update.
- Your platform URL, admin credentials, and uploaded files will remain unchanged.
- Database schema migrations run automatically on the first start of the new app version.
- If you previously customized your deployment with environment variables, they will persist unless explicitly modified in parameters.
Migrate from ECS
If you run Datagrok on the ECS CloudFormation template, you can move it to EKS by updating the stack. The ECS and EKS templates define the database, the bucket, the generated secrets, and the load balancer identically, so CloudFormation keeps them. Your users, files, settings, admin password, and URL stay the same, and external DNS records keep pointing at the same load balancer.
- Back up the RDS database and the S3 bucket.
- In the existing stack, click Update > Replace current template and point at the EKS template with the same
VPC and DNS options:
vpc-fargate-r53-basic.ymlbecomesvpc-eks-r53-basic.yml, and so on. - Keep all parameter values, including the service versions. Change versions in a separate update.
- Review the change set before you execute it.
DatagrokDB,DatagrokS3, andDatagrokLoadBalancermust not appear in it with Replacement set toTrue. ECS services, task definitions, and the internal load balancer are removed, and the EKS cluster and the installer are added. - Execute the change set. The update takes about 30 minutes. ECS keeps serving until the Datagrok pods are ready. The pods then take over the load balancer target group, and CloudFormation removes the ECS services. Expect up to a minute of downtime during the switch.
If the change set replaces DatagrokDB or DatagrokS3, do not execute it. Contact
support@datagrok.ai.
See also
- Install Datagrok with Helm — manual Helm-only install for any Kubernetes cluster
- AWS CloudFormation (ECS) — supported alternative for existing ECS stacks; targeted for deprecation in a future release
- Terraform