in cdk-eks/lib/cdk-eks-stack.ts [31:71]
constructor(scope: cdk.Construct, id: string, props: CdkEksStackProps) {
super(scope, id, props);
// cluster owner role
const ownerRole = new iam.Role(this, 'cluster-owner-role', {
assumedBy: new iam.AccountRootPrincipal(),
});
// Create a EKS cluster with a default managed worker node group.
const cluster = new eks.Cluster(this, 'my-cluster', {
version: eks.KubernetesVersion.V1_21,
mastersRole: ownerRole,
clusterName: props.clusterName,
outputClusterName: true,
endpointAccess: eks.EndpointAccess.PUBLIC,
vpc:
props.vpcId == undefined
? undefined
: ec2.Vpc.fromLookup(this, 'vpc', { vpcId: props?.vpcId! }),
vpcSubnets: [{ subnetType: ec2.SubnetType.PRIVATE_WITH_NAT }],
});
// Apply K8S manifest files under the ../../k8s-manifests folder.
const k8sManifestFileDir = path.resolve(__dirname, '..', '..', './k8s-manifests/');
// Get list of file names under the folder
const fileList = fs.readdirSync(k8sManifestFileDir);
console.log(fileList);
console.log(k8sManifestFileDir);
for (let fileName of fileList) {
if (fileName.includes('yaml')) {
let fileFullPath = `${k8sManifestFileDir}/${fileName}`;
let k8sYaml = fs.readFileSync(fileFullPath);
let k8sManifest = yaml.safeLoadAll(k8sYaml.toString());
let componentName = fileName.split('.')[0];
cluster.addManifest(`${componentName}`, ...k8sManifest);
}
};
}