A GitHub Action that deploys Kubernetes clusters on GitHub Actions runners for testing and development. Supports KinD (default) and Minikube as cluster providers.
| 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 |
ubuntu-26.04-arm |
ARM64 | Fully supported |
steps:
- name: Set up Quick-K8s
uses: palmsoftware/quick-k8s@v0This 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.39.0
minikubeDriver: dockerAll inputs have sensible defaults. See the Configuration Reference for the complete list.
| 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 |
| TLS Compliance Operator | installTLSComplianceOperator: true (default: false) |
Guide |
| Image Cert Info Operator | installImageCertInfoOperator: true (default: false) |
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 |
The action configures kubectl (and oc on Linux) automatically. No extra setup needed:
- name: Verify cluster
run: |
kubectl get nodes
kubectl cluster-infoSee the Downstream Usage Guide for kubeconfig details, context names, and storage classes.
| 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 |
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 |
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.
- install-oc-tools.sh was a script copied from install-oc-tools and slightly modified for
aarch64.