Skip to main content

bootstrap simple projects on kubernetes with kind and k3s

Project description

☁️ smol k8s lab 🧸

This is aimed at getting up and running quickly with mostly smaller k8s distros in one small command line script.

Output of smol-k8s-lab --help after cloning the directory and installing the prerequisites.

Docs

Quickstart guide for you to jump right in!

There's also full tutorials to manually set up different distros in the docs we maintain as well as BASH scripts for basic automation of each k8s distro in:

./distro/[NAME OF K8S DISTRO]/bash_full_quickstart.sh

Under the hood

Currently supported k8s distros

We tend to test first on k3s and then kind.

We're working on cluster api next :)

Stack We Install on K8s

Application What is it?
 🐄  Local Path Provisioner Default simple local file storage for persistent data
metallb logo, blue arrow pointing up, with small line on one leg of arrow to show balance  metallb loadbalancer for metal, since we're mostly selfhosting
nginx logo, white letter N with green background  nginx-ingress The ingress controller allows access to the cluster remotely, needed for web traffic
cert manager logo  cert-manager For SSL/TLS certificates
k9s logo, outline of dog with ship wheels for eyes  k9s Terminal based dashboard for kubernetes

Optionally installed

Application/Tool What is it?
ESO logo, outline of robot with astricks in a screen in it's belly  ESO external-secrets-operator integrates external secret management systems like GitLab
argo CD logo, an organer squid wearing a fishbowl helmet  Argo CD Gitops - Continuous Deployment
kyvero logo  Kyverno Kubernetes native policy management to enforce policies on k8s resources

If you install argocd, and you use bitwarden, we'll generate an admin password and automatically place it in your vault if you pass in the -p option. Curently only works with Bitwarden.

Want to get started with argocd? If you've installed it via smol_k8s_lab, then you can jump here. Otherwise, if you want to start from scratch, start here

Tooling Used for the script itself and interface

made-with-python

  • rich (this is what makes all the pretty formatted text)
  • PyYAML (to handle the k8s yamls and configs)
  • bcrypt (to pass a password to argocd and automatically update your bitwarden)
  • click (handles arguments for the script)

Troubleshooting

If you're stuck, checkout the Notes to see if we also got stuck on the same thing at some point :) Under each app or tool, we'll have notes on how to learn more about it, as well as any errors we've already battled.

Other Notes

Check out the optional directory for quick examples on apps this script does not default install.

e.g. for postgres, go to ./optional/postgres

Status

This is still in beta, as we figure out all the distros we want to support, and pin all the versions, but if you'd like to contribute or just found a :bug:, feel free to open an issue (or pull request), and we'll take a look! We'll try to get back to you asap!

Collaborators

TODO

  • Configure base policies for Kyverno
  • bitwarden: check local env vars for password or api key
  • look into https://kubesec.io/

Project details


Release history Release notifications | RSS feed

This version

0.9.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

smol_k8s_lab-0.9.0.tar.gz (31.6 kB view hashes)

Uploaded Source

Built Distribution

smol_k8s_lab-0.9.0-py3-none-any.whl (32.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page