A Talis library of CDK8s constructs for Kubernetes-orchestrated apps, implemented in Typescript.
This project follows conventional commits, and enforces this choice during the build and release cycle.
Builds are conducted by CircleCI, and upon successful build of the main
branch, semantic-release
will generate a new release, an appropriate version (based on commits), and release-notes to cover the content of the commit log.
For tests, this project uses vitest
.
-
BackgroundWorker
- Represents a background worker that runs continuously, reads messages from a queue, and processes them.
- Applied as a simple Deployment.
- Supports setting a custom stop signal to allow for graceful termination.
- Details in an example.
-
ConfigMap
- Represents a Kubernetes ConfigMap.
- Supports setting a key/value from a file.
- Supports loading keys/values from a .env file.
- Supports setting binary data.
- Example use can be found in WebService advanced example.
-
CronJob
- Represents a Cron Job that is run based on a schedule.
- Supports setting the Schedule.
- The command to run is defined as part of the container spec.
- Details in an example.
-
Job
- Represents a single run Job.
- The command to run is defined as part of the container spec.
- Details in an example.
-
Memcached
- Represents a standalone singe node Memcached server.
- Supports setting the version of Memcached you wish to run.
- Details in an example.
-
Mongo
- Represents a standalone single node Mongo server.
- The command to run is defined as part of the container spec.
- Supports setting the version of Mongo you wish to run.
- Supports setting the storageEngine.
- Details in an example.
-
Postgres
- Represents a standalone single node Postgres server.
- Supports setting the version of Postgres you wish to run.
- Supports setting initContainers and volumes to run init scripts.
- Details in an example.
-
Redis
- Represents a standalone singe node Redis server.
- The command to run is defined as part of the container spec.
- Supports setting the version of redis you wish to run.
- Uses the default redis-server config.
- Details in an example.
-
Secret
- Represents a Kubernetes Secret.
- Encodes data in base64.
- Supports setting a key/value from a file.
- Supports loading keys/values from a .env file.
- Supports setting string data, allowing Kubernetes API to encode on write.
-
TalisChart
- A convenience class for creating a Chart and ensuring standard Talis labels are added.
- Creates a namespace based on the app name.
- Supports watermarks, e.g. for on-demand environments.
- Showcased in AdvancedWebServiceChart and BackgroundWorkerChart.
-
WebService
- Represents a web application exposed via an AWS Application Load Balancer.
- Supports autoscaling.
- Supports adding Nginx reverse proxy.
- Supports canary releases with a separate canary deployment and load balancer, allowing to test the new version via host hack.
- Details in a simple and advanced examples.
convertToStringList
- Stringify given list as stringList:s1,s2,s3
to be used as Ingress annotation.convertToStringMap
- Stringify given object as stringMap:k1=v1,k2=v2
to be used as Ingress annotation.convertToJsonContent
- Stringify given object as JSON:{"k1":"v1","k2":"v2"}
to be used as Ingress annotation.createDockerHubSecretFromEnv
- Creates a secret with auth credentials for pulling images from Docker Hub.createImagePullSecret
- Creates a secret with auth credentials for pulling images from a private registry.getCanaryStage
- Gets the stage of a canary deployment from an environment variable, and validates its value.getDockerTag
- Gets the Docker tag from an environment variable, and validates its value.getWatermark
- Gets the watermark from an environment variable.getTtlTimestamp
- Gets the TTL timestamp from an environment variable.getEksDashboardUrl
- Builds the URL of the Kubernetes dashboard for a given cluster and namespace.getGraphsUrl
- Builds the URL of the Grafana workload dashboard for a given cluster and namespace.getLogsUrl
- Builds the URL of the Grafana logs dashboard for a given cluster and app.nginxUtil.createConfigMap
- Creates a ConfigMap for Nginx reverse proxy, with optional default configuration; The ConfigMap can be used withWebService
'snginx.configMap
property.nginxUtil.getDefaultConfig
- Returns the default Nginx reverse proxy configuration to expose the application on the specified port; Output of this function is used withcreateConfigMap
withincludeDefaultConfig
enabled.nginxUtil.getSameSiteCookiesConfig
- Return the Nginx configuration that patchesSet-Cookie
headers to use theSameSite
attribute; Output of this function is used withcreateConfigMap
withincludeSameSiteCookiesConfig
enabled.
npm run build
compile typescript to jsnpm run watch
watch for changes and compilenpm run lint
will check code quality and style guidelines (using ESlint and Prettier)npm run format
will format the code (using Prettier)npm run test
run testsnpm run test -- --update
update the test snapshotsnpm run coverage
run tests and calculate coverage