Trong phần này, chúng ta sẽ triển khai EKS cluster đầu tiên của mình bằng cách sử dụng eks-blueprints package. Blueprints được xuất bản dưới dạng mô-đun npm
Bạn có thể tìm hiểu thêm về Amazon EKS Blueprints for CDK
Chúng ta thực hiện chỉnh sửa main file của lib/my-eks-blueprints-stack.ts:

// lib/my-eks-blueprints-stack.ts
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as blueprints from '@aws-quickstart/eks-blueprints';
import { KubernetesVersion } from 'aws-cdk-lib/aws-eks';
export default class ClusterConstruct extends Construct {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id);
const account = props?.env?.account!;
const region = props?.env?.region!;
const blueprint = blueprints.EksBlueprint.builder()
.account(account)
.region(region)
.clusterProvider(
new blueprints.GenericClusterProvider({
version: 'auto'
})
)
.addOns()
.teams()
.build(scope, id + "-stack");
}
}
3. Chúng ta mở file bin/my-eks-blueprints.ts để xem code mẫu.
4. Trong tệp này, chúng ta tạo CDK Construct là building block của CDK thể hiện những thứ cần thiết để tạo nên các thành phần của AWS Cloud.
Trong trường hợp của chúng ta, thành phần là EKS cluster blueprint đặt trong provided account, region, add-ons, teams (mà chúng ta chưa assign) và tất cả các tài nguyên khác cần thiết để tạo blueprint(ví dụ VPC, subnet,…). Lệnh build() ở cuối khởi tạo cluster blueprint.
Để thực sự làm cho một construct có thể sử dụng được trong CDK project, chúng ta cần thêm nó vào entrypoint của chúng ta.
Thay thế nội dung của bin/my-eks-blueprints.ts bằng code block sau.
// bin/my-eks-blueprints.ts
import * as cdk from 'aws-cdk-lib';
import ClusterConstruct from '../lib/my-eks-blueprints-stack';
import * as dotenv from 'dotenv';
const app = new cdk.App();
const account = process.env.CDK_DEFAULT_ACCOUNT!;
const region = process.env.CDK_DEFAULT_REGION;
const env = { account, region }
new ClusterConstruct(app, 'cluster', { env });

Chúng ta tạo mới một file .env

Thêm biên môi trường vào
CDK_DEFAULT_ACCOUNT=XXXXX
CDK_DEFAULT_REGION=XXXX
Hãy thay thế bằng CDK_DEFAULT_ACCOUNT và CDK_DEFAULT_REGION của bạn
cdk list
cluster-stack

Như bạn có thể thấy, chúng ta có thể tận dụng EksBlueprint để xác định cluster của chúng ta một cách dễ dàng bằng cách sử dụng CDK.
Thay vì triển khai single cluster, chúng ta sẽ tận dụng trình tạo blueprint để thêm deployment pipeline có thể xử lý tất cả các bản cập nhật cho cơ sở hạ tầng của chúng ta cho các môi trường khác nhau.