The Kubernetes CDK (k8s-cdk) is an open-source project that makes it easy to define and provision Kubernetes infrastructure on AWS using the AWS CDK. It provides constructs for core Kubernetes resources like Clusters, Nodes, and Services that simplify the deployment of Kubernetes applications to AWS.
So let's start to create:
To get started, install the k8s-cdk library:
npm install --save @kubernetes-cdk/cdk-core
Then create a new CDK app:
cdk init app --language=typescript
This will set up a basic CDK app structure with TypeScript support.
Defining a Cluster
To define a Kubernetes cluster, import the Cluster construct and provide configuration:
import { Cluster } from '@kubernetes-cdk/cdk-core';
//...
new Cluster(this, 'MyCluster', {
version: k8s.KubernetesVersion.V1_21,
subnets: [subnet1, subnet2]
});
This will provision a managed EKS cluster running Kubernetes across the specified subnets.
Deploying Resources
Additional Kubernetes resources like Pods, Services, etc. can then be defined and added to the cluster:
const nginxDeployment = new k8s.Deployment(this, 'NginxDeployment', {
cluster: cluster,
spec: {
selector: {
matchLabels: {
app: 'nginx',
},
},
//...
},
});
Deploying
Finally, synthesize and deploy the CDK app to provision the Kubernetes infrastructure and deploy the resources:
cdk deploy
The k8s-cdk makes it simple to define Kubernetes clusters and applications using familiar AWS CDK patterns. This allows for infrastructure as code deployments of Kubernetes on AWS.