Create and manage Kubernetes clusters on AWS using Terraform.
kaws is not intended to support every possible deployment scenario for Kubernetes clusters. It follows a specific approach used by InQuicker, involving specific software, services, and conventions. Specifically, kaws creates Kubernetes clusters in AWS using CoreOS servers, all managed by declarative configuration files with Terraform.
kaws has not yet reached version 1.0, and is not recommended for production usage until it has. In accordance with Semantic Versioning, while kaws is < 1.0, backwards incompatible changes may occur. See the issues for details.
The CoreOS and Kubernetes teams have plans for Kubernetes to be "self-hosting" in the future. If and when this vision is complete, there won't need to be such tight coupling between infrastructure provisioning and Kubernetes tooling. At that point, kaws (and likely kube-aws, see the next section) may be retired. See Self-Hosted Kubernetes and bootkube for more information.
kaws has not been reviewed by security professionals. For information about the threat model of kaws, see the security document.
When kaws was originally created, none of the following tools existed, which is why we chose to develop it. Since then, these tools have been released publicly. They are each developed by larger teams and with broader use cases in mind. kaws is still used by InQuicker because it works the best with our particular configuration. However, you should consider these other tools instead, if they fit your needs:
USAGE: kaws [FLAGS] [SUBCOMMAND]
FLAGS: -h, --help Prints help information -V, --version Prints version information
SUBCOMMANDS: admin Commands for managing cluster administrators cluster Commands for managing a cluster's infrastructure help Prints this message or the help message of the given subcommand(s) init Initializes a new repository for managing Kubernetes clusters
Start by creating a new repository with the
At this time, kaws has only been developed for and tested on macOS.
kaws requires the following other programs to be available on your system:
go get -u github.com/cloudflare/cfssl. Make sure
$GOPATH/binis in your PATH. See https://github.com/InQuicker/kaws/issues/12.
All the dependencies can be installed with Homebrew:
brew install terraform cfssl kubernetes-cli
Once all the required dependencies are installed on your system, you can install kaws.
Signed precompiled binaries for tagged version numbers are available for download on the releases page.
git clone [email protected]:InQuicker/kaws.git.
cargo build --release.
target/release/kawsto a directory in your PATH, such as
To package the current release for distribution, update
TAGin the Makefile and then run
make. Release artifacts will be written to the
distdirectory. Your GPG secret key will be required to sign
Docker images for
inquicker/kaws:$TAGwill be created, but you must push them manually.
cargo publishmust be run manually to release to crates.io.
kaws is released under the MIT license. See