RHabereder / zero-to-k8s

A simple project to get a minimal k8s cluster up and running. Includes additional useful tools for the everyday devops.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Zero-To-k8s

This project tries to ease the creation of a local Kubernetes environment, including all the awesome devops tools you can possibly need. It should be as easy as a "./startup.sh" to get you up and running and a "k3d delete --name dev" to clean up again.

If anything you like is missing, hit me up! I love learning new awesome tools!

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

What things you need to install the software and how to install them:

Docker
Dialog (If you are lazy, like me)

What this script was tested on:

WSL (Frequently, since this is my main driver for development-stuff)
Ubuntu
MacOS 10.15

What it hopefully runs on one day:

Git Bash/MinGW (This one is pretty hard to work with actually. It randomly dislikes rm'ing stuff and borks the permissions so a relog is needed)

Installing

Edit startup.sh and add/remove stuff you need/want in

#Possible Single Values: tekton|rio|drone|concourse|argocd
CI="tekton"

#Possible Single Values: traefik|traefik2|nginx|istio|none
INGRESS="traefik2"

#Possible values: (Spaced-Delimited Multiple possible): prometheus grafana jaeger registry k8s-dashboard rio-dashboard istio
TOOLS="prometheus grafana jaeger registry k8s-dashboard"

And fire it up with

./startup.sh

For new-comers to linux, or just lazy people like me, install dialog with the package-manager of your choice and run

./startup_dialog.sh

After the installation your console should tell you the different URLs you should know about, if I didn't miss anything.

What doesn't work yet / is incomplete or a todo

  • Istio Gateway Stuff To be honest, I don't fully understand how the Istio Ingress works yet, it just seems much more complicated than traefik/nginx (it's still envoy) which would explain it's brutal amounts of configuration/documentation. I will try to fix the istio ingresses as soon as I get a grasp on how it works
  • Concourse I want to blame it on concourse, since they don't have an explicit option to configure a proxypath/context-path, but that could be on me too. Documentation get's tough to read after a few hours of struggling and I could have easily missed it too.
  • Sample Pipelines for the CD Tools Not really a priority as of now, but it would be a nice to have if there were easy to copy files/descriptors for the various CD tools

Built With

  • Base:
    • k3d - The Tool used to deploy kubernetes
    • rancher - Run Kubernetes Everywhere with Rancher
  • CD:
    • TektonCD - The preferred tool to run your ci/cd
    • Tekton Dashboard - Dashboard for Tekton Pipelines
    • Concourse CI - An amazing Open Source continuous Thing-Doer
    • rancher rio - The Application Deployment Engine for Kubernetes
    • argocd - Declarative GitOps CD for Kubernetes
  • Ingress:
    • NGINX - Production-Grade Ingress Controller for Kubernetes
    • Traefik - My favorite Ingress Controller and proxy
    • Istio - The defacto standard in terms of Service-Mesh
  • Tools:
    • Grafana - Awesome Visualization of Prometheus Data
    • Prometheus - The Standard Metric Collector
    • Jaeger - An open source, end-to-end distributed tracing tool
    • k8s-dashboard - A general purpose, web-based UI for Kubernetes clusters
    • MinIO - High Performance, Kubernetes Native Object Storage
  • DBs:
  • Hopefully even more in the future!

Authors

License

This project is licensed under the Unlicense - see the LICENSE file for details

Acknowledgments

  • Rancher for being awesome and developing awesome software
  • The k8s ecosystem
  • People that build Helm Charts
  • Everyone that asked the questions I look up on stackoverflow
  • Anyone whose code I reused/changed/used as inspiration!

About

A simple project to get a minimal k8s cluster up and running. Includes additional useful tools for the everyday devops.

License:The Unlicense


Languages

Language:Shell 100.0%