Skip to content

Finstrap a Production Ready Kubernetes Cluster Using Terraform and Vault and Argo CD

License

Notifications You must be signed in to change notification settings

asastech/finstrap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

6286fb3 · Nov 4, 2023

History

58 Commits
Sep 17, 2023
Nov 4, 2023
Sep 18, 2023
Sep 18, 2023
Sep 17, 2023
Oct 9, 2023
Sep 17, 2023

Repository files navigation

Kubernetes Bootstrapper: An Extendable Framework to Set Up Production Grade Clusters

Introduction

"Production-grade" is a loaded term. What constitutes production readiness will vary according to your use case. While a Kubernetes cluster is production-ready the moment it is ready to serve traffic, there is a commonly agreed set of minimum requirements, as shown in the infographic below.

k8s-prod

Kubernetes Finstrap

The k8s-finstrap project is a customizable and extendable framework that aims to solve this problem by leveraging

  • Terraform: Compose a production ready infrastructure on Kubernetes
  • Vault: Kubernetes clusters with the power of Vault and dynamic secrets
  • Argo CD: Application configuration management and delivery using GitOps

This project integrates popular battle-tested open-source software and solutions that provide a production-grade out-of-box Kubernetes experience.

 Overview

├── LICENSE
├── README.md 
├── argocd # Argo CD configurations (optional)
├── finstrap # cluster finstrap using Argo CD
├── docs # documents and assets
├── infrastructure # infrastructure automation using Terraform
  

Using Terraform to Provision Infrastructure on Kubernetes

Follow the below steps to get started:

optional deployment Kubernetes single-node

 ./install-script.sh
  1. Clone this repo and change the directory to infrastructure

  2. Initialize Terraform backend:

    export KUBE_CONFIG_PATH=~/.kube/config
    
    cd infrastructure
    
    terraform init
  3. Copy and rename the finstrap.tfvars.backup file to finstrap.tfvars:

    cp finstrap.tfvars.backup finstrap.tfvars
  4. Open the finstrap.tfvars file and adjust settings according to your needs using a text editor of your choice (preferably with HCL lint support).

  5. Use terraform plan to inspect infra changes before applying:

    terraform plan -var-file=finstrap.tfvars -out tf-finstrap.out
  6. If you're happy with the changes, issue terraform apply:

 Tear down the finstrap Cluster

Had fun trying out the k8s-finstrap? Time to say goodbye!

# Run
cd infrastructure
terraform destroy --var-file=finstrap.tfvars --auto-approve
# Bye Bye!

Next steps »