A GitHub Action for installing and configuring KubeSolo - an ultra-lightweight, single-node Kubernetes distribution perfect for CI/CD pipelines, testing, and development workflows.
- ✅ Automatic installation of KubeSolo
- ✅ Waits for cluster readiness (checks systemd service and API server port)
- ✅ Outputs kubeconfig path for easy integration
- ✅ Support for shared local storage (ReadWriteMany PVCs)
- ✅ No cleanup required - designed for ephemeral GitHub Actions runners
name: Test with KubeSolo
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup KubeSolo
id: kubesolo
uses: fenio/setup-kubesolo@v5
- name: Deploy and test
env:
KUBECONFIG: ${{ steps.kubesolo.outputs.kubeconfig }}
run: |
kubectl apply -f k8s/
kubectl wait --for=condition=available --timeout=60s deployment/my-app| Input | Description | Default |
|---|---|---|
version |
KubeSolo version to install (e.g., v0.1.7-beta) or latest |
latest |
wait-for-ready |
Wait for cluster to be ready before completing | true |
timeout |
Timeout in seconds to wait for cluster readiness | 120 |
dns-readiness |
Wait for CoreDNS to be ready and verify DNS resolution works | true |
local-storage-shared-path |
Path for shared local storage (enables ReadWriteMany PVCs) | (disabled) |
| Output | Description |
|---|---|
kubeconfig |
Path to the kubeconfig file (/var/lib/kubesolo/pki/admin/admin.kubeconfig) |
- name: Setup KubeSolo
uses: fenio/setup-kubesolo@v5If you need to use ReadWriteMany (RWX) PersistentVolumeClaims, enable the shared storage path:
- name: Setup KubeSolo with shared storage
uses: fenio/setup-kubesolo@v5
with:
local-storage-shared-path: '/opt/local-path-provisioner'This configures the local-path-provisioner to support both ReadWriteOnce (RWO) and ReadWriteMany (RWX) access modes.
This action runs a simple bash script that:
- Downloads and installs KubeSolo binary
- Creates a systemd service for KubeSolo
- Waits for the cluster to become ready
- Exports the kubeconfig path for use in subsequent steps
No cleanup needed - GitHub Actions runners are ephemeral and destroyed after each workflow run, so there's no need to restore system state.
- Runs on
ubuntu-latest(or any Linux-based runner) - Requires
sudoaccess (provided by default in GitHub Actions)
If the cluster doesn't become ready in time, increase the timeout:
- name: Setup KubeSolo
uses: fenio/setup-kubesolo@v5
with:
timeout: '600' # 10 minutesThis action uses a simple bash script (setup.sh) with no compilation required.
To test locally on a Linux VM:
export INPUT_VERSION="latest"
export INPUT_WAIT_FOR_READY="true"
export INPUT_TIMEOUT="60"
export INPUT_LOCAL_STORAGE_SHARED_PATH=""
export GITHUB_ENV=/tmp/github_env
export GITHUB_OUTPUT=/tmp/github_output
bash setup.shMIT License - see LICENSE file for details.
- setup-k0s - Zero friction Kubernetes (k0s)
- setup-k3s - Lightweight Kubernetes (k3s)
- setup-microk8s - Lightweight Kubernetes by Canonical
- setup-minikube - Local Kubernetes (Minikube)
- setup-talos - Secure, immutable Kubernetes OS (Talos)