cdk-kaniko
Version:
CDK construct library that allows you to build docker images with kaniko in AWS Fargate
66 lines (44 loc) • 2.25 kB
Markdown
[](https://badge.fury.io/js/cdk-kaniko)
[](https://badge.fury.io/py/cdk-kaniko)
[](https://github.com/pahud/cdk-kaniko/actions/workflows/release.yml)
Build images with `kaniko` in **AWS Fargate**
`cdk-kaniko` is a CDK construct library that allows you to build images with [**kaniko**](https://github.com/GoogleContainerTools/kaniko) in **AWS Fargate**. Inspired from the blog post - [Building container images on Amazon ECS on AWS Fargate](https://aws.amazon.com/tw/blogs/containers/building-container-images-on-amazon-ecs-on-aws-fargate/) by _Re Alvarez-Parmar_ and _Olly Pomeroy_, this library aims to abstract away all the infrastructure provisioning and configuration with minimal IAM policies required and allow you to focus on the high level CDK constructs. Under the covers, `cdk-kaniko` leverages the [cdk-fargate-run-task](https://github.com/pahud/cdk-fargate-run-task) so you can build the image just once or schedule the building periodically.
Use the npm dist tag to opt in CDKv1 or CDKv2:
```sh
// for CDKv2
npm install cdk-kaniko
or
npm install cdk-kaniko@latest
// for CDKv1
npm install cdk-kaniko@cdkv1
```
```ts
const app = new cdk.App();
const stack = new cdk.Stack(app, 'my-stack-dev');
const kaniko = new Kaniko(stack, 'KanikoDemo', {
context: 'git://github.com/pahud/vscode.git',
contextSubPath: './.devcontainer',
});
// build it once
kaniko.buildImage('once');
// schedule the build every day 0:00AM
kaniko.buildImage('everyday', Schedule.cron({
minute: '0',
hour: '0',
}));
```
Use `fargateSpot` to enable the `FARGATE_SPOT` capacity provider to provision the fargate tasks.
```ts
new Kaniko(stack, 'KanikoDemo', {
context,
contextSubPath,
fargateSpot: true,
});
```
Please note the image building could take some minutes depending on the complexity of the provided `Dockerfile`. On deployment completed, you can check and tail the **AWS Fargate** task logs from the **AWS CloudWatch Logs** to view all the build output.