Provides an application development stack on Kubernetes
Can be used to develop and run your app on kubernetes
Requirements:
- must run for local development or CI
- simple to use
- start and destroy quickly
- developers working on machines with limited resources or need to conserve system resources for other tasks.
- low memory requirements and low resources consumption
- dev/prod parity
- support common kubernetes features
- makes it easy to create single or multi-node cluster
- backed on already known docker
Work on:
- Linux
- Mac (and M1 too)
The stack is based on:
- docker (must be installed)
- kubectl
- k3d
- k3s a lightweight wrapper to run k3s kubernetes cluster
- helmfile
- helm
- helm-diff: Preview helm upgrade changes as a diff
- helm-git: Get non-packaged Charts directly from Git.
- helm-s3: Provides S3 protocol support for charts and repos.
- helm-secrets: This plugin provides secrets values encryption for Helm charts secure storing
Steps:
- install dependencies
- Create local kubernetes cluster
- Deploy your applications
Requirements: must be installed
- Internet access
- curl
- docker > v20.10.5 (see https://k3d.io/v5.6.0/#requirements)
- First, use the script to install all requirements (k3d,helmfile,helm,kubectl..):
scripts/install_prereq.sh
- Then, deploy local dev cluster and all ressources, with the script :
scripts/deploy_all.sh
- Develop your app, test, have fun !
helmfile apply
- At the end, destroy all ressources and local cluster. That's all folks
scripts/destroy_all.sh
Default versions:
- docker: > v20.10.5
- kubectl: 1.29.2
- k3d : v5.6.0 - k3d release
- k3s: 1.27.4-k3s1
- See Embedded Component Versions section in k3s release
- kubernetes: v1.27.4
- k3s: 1.27.4-k3s1
- helmfile: 0.162.0 - helmfile release
- See version in helmfile version
- helm: v3.14.1
- helm-diff: v3.9.4
- helm-git: v0.12.0
- helm-s3: v0.14.0
- helm-secrets: v4.1.1
To override versions , set following env variables before running scripts/install_prereq.sh
# example
export KUBECTL_VERSION="v1.29.2"
export K3D_VERSION="v5.6.0"
export HELMFILE_VERSION="0.162.0"
export FORCE_INSTALL=true
scripts/install_prereq.sh
In following directories:
- scripts: script to install prereq, deploy/destroy all ressources
- clusters/k3d: configuration file to create/use/destroy local kubernetes cluster
- helmfile.yaml: applications configurations inventory to deploy
- applications: helmfile application to deploy on kube cluster
- addons files:
- charts: local helm charts
- manifests: to install simple manifests (for demo)