Giter VIP home page Giter VIP logo

kilo-poc's Introduction

Proof-of-Concept: Kilo

A Proof-of-concept for using K3s to create a Kubernetes cluster deployed on nodes from different public cloud providers (AWS, GCP, Azure) utilizing Kilo

Introduction

What’s possible with that?

  • Automatic failover even on AZ and cloud level
  • Cloud-agnostic setup to select the services and offers that suit the best (mix & match)

Setup

Run

SSH Key

# create RSA key
ssh-keygen -b 4096 -t rsa -f ~/.ssh/cloud-key

Copy the contents of the public key ~/.ssh/cloud-key.pub into .auto.tfvars as public_ssh_key (see .auto.tfvars.example). Terraform will automatically pick up this file.

You can also overwrite as follows

  • Using the CLI -var option: terraform apply -var="public_ssh_key=..."
  • Using an environment variable: export TF_VAR_public_ssh_key="..."

Infrastructure as Code

# init, plan, and apply infrastructure
# use `-target=module.gcp_us_central1` to target specific modules
terraform init
terraform plan
terraform apply

# show resources and details
terraform output
terraform state list
terraform state show module.aws_us_east_1.aws_instance.node

# destroy infrastructure
terraform destroy

Open tasks

  • Ensure all nodes use Debian 11
  • Open port UDP 51820 for WireGuard (inbound and outbound)
  • Install WireGuard on all nodes (docs)
  • Configure WireGuard network interface on all nodes (docs)
  • Install K3s on all nodes (Conceptual Overview, Quick Start)
  • Specify topology (annotating location and optionally region)
  • Deploy Kilo on all nodes
  • Figure out how to join the Azure node
  • Deploy traefik/whoami services to test connectivity

Optional tasks

  • Look into Cloud-init for cloud instance initialisation

Manual tasks

  • Enable cgroups v2 on the Azure node
  • Annotating location and force-endpoint in order to make kilo aware of the topology

kilo-poc's People

Contributors

m99coder avatar omegion avatar

Stargazers

 avatar  avatar

Watchers

 avatar

kilo-poc's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.