Sign inSign up

brakmic/devops

By brakmic

Updated about 2 months ago

a DevOps toolbox running in Docker

Image
Developer tools
Monitoring & observability
0

4.7K

brakmic/devops repository overview

miniDevOps

A Docker image that bundles 20+ Kubernetes and infrastructure tools on Debian Linux. Pull it, start a container, and you have a working cluster in minutes.

shell_welcome_msg

Docker Pulls Docker Image Size

Quick Start

docker pull brakmic/devops:latest

Linux / macOS:

docker run --rm -it \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v ${PWD}:/home/minidevops/local \
  --network=host \
  brakmic/devops:latest

Windows (PowerShell):

docker run --rm -it `
  -v //var/run/docker.sock:/var/run/docker.sock `
  -v ${PWD}:/home/minidevops/local `
  --network=host `
  brakmic/devops:latest
Windows: Cgroup v2 Requirement

Kubernetes 1.35+ requires cgroup v2. Docker Desktop on Windows must use the WSL 2 backend with the unified cgroup hierarchy enabled. Without this, Kind clusters fail during kubelet startup with a health check timeout.

  1. Enable the WSL 2 engine in Docker Desktop under Settings > General.
  2. Create or edit %USERPROFILE%\.wslconfig:
[wsl2]
kernelCommandLine = cgroup_no_v1=all systemd.unified_cgroup_hierarchy=1
  1. Restart WSL and Docker Desktop:
wsl --shutdown

Verify the change by running docker info --format '{{.CgroupVersion}}'. The output should be 2.

Once inside the container, create a cluster:

./create_cluster.sh my-cluster

The socket mount lets the container talk to the host Docker daemon. The local volume mount at /home/minidevops/local persists files across container restarts. The cluster script creates a Kind cluster and deploys the NGINX Ingress Controller.

Included Tools

ToolVersionPurpose
kubectl1.32.3Kubernetes CLI, aliased to kubecolor
helm4.2.3Kubernetes package manager
terraform1.15.8Infrastructure as code
kind0.32.0Local Kubernetes clusters in Docker
k9s0.51.0Terminal UI for Kubernetes
stern1.34.0Multi-pod log tailing
kubecolor0.6.0Colorized kubectl output
skaffold2.24.0Continuous development for Kubernetes
flux2.9.3GitOps toolkit
kubeseal0.38.4Encrypt secrets for Git storage
operator-sdk1.42.3Build Kubernetes operators
kubelogin0.2.19Microsoft Entra authentication for Kubernetes and AKS
lazydocker0.25.2Terminal UI for Docker
popeye0.22.1Cluster sanitizer and linter
krew0.5.0kubectl plugin manager
kubectx0.11.0Switch between clusters
kubens0.11.0Switch between namespaces
usql0.21.4Universal SQL client
docker composev2Multi-container orchestration

Additional Packages

The image includes bash with completions, nano with syntax highlighting, vim, git, gcc, make, python3, pip3, pipenv, curl, htop, tree, openssl, iputils-ping, dnsutils, and hping3.

Python 3 and Pipenv are pre-configured with a virtual environment. Run pipenv install <package> to add dependencies and pipenv run python my_script.py to execute scripts.

Setup

The config.yml file contains a Kind cluster configuration you can adjust. The included create_cluster.sh script reads this config, creates the cluster, and deploys NGINX Ingress.

./create_cluster.sh my-cluster

mini_devops

On Windows, use the PowerShell equivalent:

.\create_cluster.ps1 -ClusterName MyClusterName

create_cluster_script

Persisting Cluster State

To keep your cluster across container restarts, copy .kube/config to the local volume before exiting:

cp ~/.kube/config ~/local/kubeconfig-backup

On the next run, restore it:

cp ~/local/kubeconfig-backup ~/.kube/config

Docker Image

Available on Docker Hub.

HOWTOs

Command Reference

kubectl
kubectl get pods -n kube-system

Kubernetes docs

helm
helm install prometheus prometheus-community/prometheus

Helm docs

terraform
terraform init && terraform apply

Terraform docs

operator-sdk
operator-sdk init --domain=example.com --repo=github.com/example-inc/my-operator
operator-sdk create api --group cache --version v1alpha1 --kind Memcached --resource --controller

Operator SDK docs

flux
flux bootstrap github \
  --owner=<your-user> \
  --repository=<your-repo> \
  --branch=main \
  --path=./clusters/my-cluster \
  --personal

Flux docs

docker compose
docker compose up -d

Compose docs

kind
kind create cluster --name my-cluster

kind docs

lazydocker

lazydocker

lazydocker

lazydocker repo

popeye
popeye -n kube-system -o yaml

Popeye docs

kubeseal
kubeseal --cert=publicCert.pem --format=yaml < secret.yaml > sealedsecret.yaml

kubeseal docs

stern
stern -n dev app=myapp

stern repo

skaffold
skaffold dev

Skaffold docs

kubelogin
kubelogin convert-kubeconfig -l azurecli

kubelogin repo

krew
kubectl krew install ctx

krew repo

kubectx / kubens
kubectx my-cluster
kubens dev

kubectx repo

usql
usql postgres://user:pass@localhost/mydb -c "SELECT count(*) FROM orders"

usql repo

License

MIT

Tag summary

Content type

Image

Digest

sha256:91fe22a0a

Size

703.6 MB

Last updated

about 2 months ago

docker pull brakmic/devops