/swiss-army-kube

This repository provides the minimal set of resources, which may be required for starting comfortably developing the process of new IaC project

Primary LanguageHCLApache License 2.0Apache-2.0

Maintenance Apache2 GitHub contributors GitHub release (latest SemVer)

QuickstartModulesConfigure DeploymentTroubleshootingContributingProvectus

Swiss Army Kube - Free IaC Tool for Easy EKS Kubernetes Cluster Deployment.

logo 

Swiss Army Kube (SAK) is an open-source IaC (Infrastructure as Code) collection of services for quick, easy, and controllable deployment of EKS Kubernetes clusters on Amazon for your projects. With Swiss Army Kube, cluster configuration and provisioning takes just a fraction of time normally spent on manual deployment via AWS management console. SAK automates deployments, making them repeatable, consistent, and less error-prone.

Swiss Army Kube uses Terraform to describe the desired state of your infrastructure (resources that need to be provisioned like IAM roles, ASG, Route 53, subnets, etc.) and build a Kubernetes cluster on AWS EC2 instances.

SAK provides example directories that you can use as easily modifiable templates to set up your cluster deployment configuration in minutes. All you need is to edit a couple of files to include modules and set variables. This way you can quickly configure and provision multiple dedicated EKS Kubernetes clusters with different configurations of modules, variables, networks, and Kubernetes versions.

We believe that any developer or organization should be able to focus on their applications without having to worry too much about the nitty-gritty of infrastructure deployment.

Currently, Swiss Army Kube is available for the Amazon EKS (Elastic Kubernetes Service) for Kubernetes cluster only. We plan to expand to other platforms soon.


Key Features

Deploy

  • Provision an AWS EKS cluster in minutes
  • Use existing project structure to set up your infrastructure
  • Configure your deployment in a single .tfvars file
  • Add and configure modules in a single .tf file
  • Deploy with a couple of Terraform commands

Manage

  • Manage your cluster with Terraform and Kubernetes CLI commands
  • Easily edit, reconfigure, rerun or destroy resources
  • Use handy scripts that make your work faster

Scale

  • Configure and deploy as many projects as you need fast and easy
  • Scale deployments by adding new modules
  • Reduce your cloud infrastructure spend with spot instances
  • Maximize your workload cost-efficiency

How it Works

Configure and deploy as many projects as you want.

  1. Sign up for Amazon account
    • Create and configure an IAM user
  2. Install Prerequisites
    • Clone this repository
    • Install prerequisites via script (MacOS users) or manually (other users)
  3. Configure your EKS cluster deployment using one of the examples/ directories as a project template
    • Configure modules and variables
  4. Deploy your EKS Kubernetes cluster with Terraform commands
  5. Configure kubectl to manage your Kubernetes cluster
  6. Manage your EKS Kubernetes cluster and deploy your containerized apps on it

Get Started

Visit our Quickstart to install and configure prerequisites, set up your project deployment with desired modules and configurations in *.tf files, and deploy your infrastructure with Terraform commands:

terraform init
terraform plan -out plan
terraform apply "plan"

After deployment, manage your cluster with Terraform and Kubernetes CLI commands or AWS management console.

Contributing

Contributing to Swiss Army Kube is very welcome. Currently, we're looking for contributions to the documentation of Modules. All you need is being comfortable with GitHub and Git. To get involved with documentation, please read our Contributing Guide.

License

Swiss Army Kube is licensed under the Apache 2.0 License.