quick-k8s
GitHub Action that deploys Kubernetes clusters on GitHub Actions runners for testing and development. Supports KinD (default) and Minikube as cluster providers.
Requirements
| Runner | Architecture | Status |
|---|---|---|
ubuntu-22.04 | x86_64 | Fully supported |
ubuntu-22.04-arm | ARM64 | Fully supported |
ubuntu-24.04 | x86_64 | Fully supported |
ubuntu-24.04-arm | ARM64 | Fully supported |
ubuntu-26.04 | x86_64 | Fully supported |
Quick Start
steps:
- name: Set up Quick-K8s
uses: palmsoftware/quick-k8s@v0
This creates a 1 control-plane + 1 worker cluster with Calico CNI. To use Minikube instead:
steps:
- name: Set up Quick-K8s with Minikube
uses: palmsoftware/quick-k8s@v0
with:
clusterProvider: minikube
minikubeVersion: v1.38.1
minikubeDriver: docker
All inputs have sensible defaults. See the Configuration Reference for the complete list.
Features
| Feature | Enable | Details |
|---|---|---|
| Istio service mesh | installIstio: true | Guide |
| cert-manager TLS | installCertManager: true | Guide |
| ingress-nginx controller | installIngressNginx: true | Guide |
| metrics-server (HPA) | installMetricsServer: true | Guide |
| operator-sdk CLI | installOperatorSdk: true | Guide |
| MetalLB load balancer | installMetalLB: true | Guide |
| Monitoring (Prometheus/Thanos/Grafana) | enableClusterMonitoring: true | Guide |
| CNI selection (Calico/Cilium/none) | cniPlugin: cilium | Guide |
| Custom KinD config | kindConfigPath: path | Guide |
| Local Docker registry | installLocalRegistry: true | Guide |
Using the Cluster
The action configures kubectl (and oc on Linux) automatically. No extra setup needed:
- name: Verify cluster
run: |
kubectl get nodes
kubectl cluster-info
See the Downstream Usage Guide for kubeconfig details, context names, and storage classes.
Guides
| Guide | Description |
|---|---|
| Configuration Reference | All inputs with defaults for KinD and Minikube |
| Optional Features | Istio, cert-manager, ingress-nginx, monitoring, and more |
| Cluster Providers | KinD vs Minikube comparison and recommendations |
| Networking | IP family configuration (dual-stack, IPv4, IPv6) |
| Resource Management | Adaptive disk and memory optimization |
| Downstream Usage | Using kubectl/oc, kubeconfig, storage classes |
| Resource Requirements | RAM, disk, and timing for each component |
| Troubleshooting | Common issues and solutions |
| Version Compatibility | Component version matrix and known issues |
Examples
The examples/ directory contains copy-paste-ready workflow recipes:
| Example | Description |
|---|---|
| basic-cluster.yml | Minimal cluster for CI testing |
| istio-service-mesh.yml | Cluster with Istio and sidecar injection |
| monitoring-stack.yml | Full Prometheus/Thanos/Grafana stack |
| multi-node-cluster.yml | Multi-node with labels and topology spread |
| custom-cni.yml | Cilium CNI example |
| local-registry.yml | Local Docker registry for image builds |
| operator-development.yml | OLM + operator-sdk + cert-manager |
| full-stack.yml | All components combined |
History
Originally built upon KinD and tuned as part of certsuite-sample-workload, the project now supports KinD and Minikube as cluster providers.
This action is essentially a wrapper around best practices for deploying Kubernetes environments that run well on GitHub Actions free-tier Ubuntu runners, with intelligent resource management and optimizations for CI/CD workflows.
References
- install-oc-tools.sh was a script copied from install-oc-tools and slightly modified for
aarch64.