Setup with AWS CDK
You can automate the provisioning of your Union.ai data plane on AWS using AWS Cloud Development Kit (CDK) and EKS Blueprints.
The
@unionai/union-eks-blueprints-addon package provides CDK constructs that deploy the Union.ai data plane onto an EKS cluster, including all required IAM roles, Helm charts, and Kubernetes resources.
Prerequisites
- Node.js >= 18
- AWS CDK v2 installed and bootstrapped in your target account/region
- npm or another Node.js package manager
- A Union.ai organization with the following information (provided by the Union.ai team):
- Control plane host (e.g.
your-org.hosted.unionai.cloud) - Organization name
- Cluster name registered with Union.ai
- Client ID and Client Secret for authentication
- Control plane host (e.g.
Installation
Install the addon package in your CDK project:
npm install @unionai/union-eks-blueprints-addonStore your credentials in AWS Secrets Manager
The addon retrieves Union.ai credentials from AWS Secrets Manager. Create a secret containing both the client ID and client secret as a JSON object:
aws secretsmanager create-secret \
--name "union/credentials" \
--secret-string '{"clientId": "<YOUR_CLIENT_ID>", "clientSecret": "<YOUR_CLIENT_SECRET>"}'Create your CDK stack
The following example creates an EKS cluster with EKS Auto Mode enabled and deploys the Union.ai data plane onto it:
import * as cdk from 'aws-cdk-lib';
import * as blueprints from "@aws-quickstart/eks-blueprints"
import * as union from "@unionai/union-eks-blueprints-addon"
const app = new cdk.App();
const account = process.env.CDK_DEFAULT_ACCOUNT;
const region = process.env.CDK_DEFAULT_REGION;
let props = { env: { account, region } };
const unionBlueprint = blueprints.AutomodeBuilder.builder({})
.resourceProvider(
'union-bucket',
new blueprints.CreateS3BucketProvider({
id: 'my-union-bucket-123',
s3BucketProps: { bucketName: 'union-bucket' }
})
)
.addOns(
new blueprints.addons.MetricsServerAddOn(),
new union.UnionDataplaneCRDsAddOn(),
new union.UnionDataplaneAddOn({
s3BucketProviderName: 'union-bucket',
clusterName: "<YOUR_UNION_CLUSTER_NAME>",
unionSecretName: "<YOUR_UNION_SECRET_NAME>",
host: "<YOUR_UNION_CONTROL_PLANE_HOST>",
orgName: "<YOUR_ORG_NAME>"
})
)
.build(app, "union-blueprint", props);Replace the placeholder values:
| Parameter | Description |
|---|---|
s3BucketProviderName |
Name of the S3 bucket resource provider registered with the blueprint. Must match the name passed to resourceProvider(). |
clusterName |
Name of the cluster registered with Union.ai. Provided by the Union.ai team. |
unionSecretName |
Name of the AWS Secrets Manager secret containing your Union.ai credentials. |
host |
Your Union.ai control plane URL (without https://). |
orgName |
Your Union.ai organization name. |
Deploy
Once your CDK stack is defined, deploy it:
cdk deploy union-blueprintWhat gets provisioned
The addon deploys the following resources:
- UnionDataplaneCRDsAddOn: Installs the Union.ai Custom Resource Definitions (CRDs) required by the data plane operator.
- UnionDataplaneAddOn: Deploys the Union.ai data plane Helm chart, which includes:
- An IAM policy granting read/write access to the configured S3 bucket.
- An IAM role with OIDC federation for Kubernetes service accounts.
- The data plane operator and supporting services.
Using an existing S3 bucket
If you already have an S3 bucket, use ImportS3BucketProvider instead of CreateS3BucketProvider:
.resourceProvider(
'union-bucket',
new blueprints.ImportS3BucketProvider('my-existing-bucket-name')
)Additional configuration
The UnionDataplaneAddOn accepts additional Helm values through the values property, which are merged with the defaults. Refer to the Union.ai Helm chart documentation for available options.