in resources/templates/eks/lib/eks-stack.ts [7:77]
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const vpc = ec2.Vpc.fromLookup(this, 'FisVpc', {
vpcName: 'FisStackVpc/FisVpc'
});
// The EKS cluster, without worker nodes as we'll add them later
const eksCluster = new eks.Cluster(this, 'Cluster', {
vpc: vpc,
version: eks.KubernetesVersion.V1_20,
defaultCapacity: 0,
clusterName: "FisWorkshop-EksCluster"
});
const eksNodeGroup = eksCluster.addNodegroupCapacity("ManagedNodeGroup", {
desiredSize: 1,
nodegroupName: "FisWorkshopNG",
tags: {
"Name": "FISTarget"
}
});
// Add SSM access policy to nodegroup
eksNodeGroup.role.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName("AmazonSSMManagedInstanceCore"));
const appLabel = { app: "hello-kubernetes" };
const deployment = {
apiVersion: "apps/v1",
kind: "Deployment",
metadata: { name: "hello-kubernetes" },
spec: {
replicas: 1,
selector: { matchLabels: appLabel },
template: {
metadata: { labels: appLabel },
spec: {
containers: [
{
name: "hello-kubernetes",
image: "paulbouwer/hello-kubernetes:1.5",
ports: [ { containerPort: 8080 } ]
}
]
}
}
}
};
const service = {
apiVersion: "v1",
kind: "Service",
metadata: { name: "hello-kubernetes" },
spec: {
type: "LoadBalancer",
ports: [ { port: 80, targetPort: 8080 } ],
selector: appLabel
}
};
eksCluster.addManifest('hello-kub', service, deployment);
const eksUrl = new cdk.CfnOutput(this, 'FisEksUrl', {
value: 'http://' + eksCluster.getServiceLoadBalancerAddress("hello-kubernetes")
});
const kubeCtlRole = new cdk.CfnOutput(this, 'FisEksKubectlRole', {
value: eksCluster.kubectlRole?.roleArn.toString() ? eksCluster.kubectlRole?.roleArn.toString() : "undefined"
});
}