This test suite runs basic CSI driver functionality tests across multiple Kubernetes distributions to ensure compatibility. Unlike the full integration test suite, these tests are lightweight and focus on verifying core functionality works on different distros.
| Distribution | Description | Setup Action |
|---|---|---|
| K3s | Lightweight Kubernetes by Rancher | fenio/setup-k3s |
| K0s | Zero-friction Kubernetes by Mirantis | fenio/setup-k0s |
| KubeSolo | Single-node Kubernetes | fenio/setup-kubesolo |
| Minikube | Local Kubernetes for development | fenio/setup-minikube |
| Talos | Secure, immutable Kubernetes OS | fenio/setup-talos |
| MicroK8s | Lightweight Kubernetes by Canonical | fenio/setup-microk8s |
All 6 distributions are tested with NFS, NVMe-oF, and iSCSI protocols:
| Distribution | NFS | NVMe-oF | iSCSI |
|---|---|---|---|
| K3s | ✅ | ✅ | ✅ |
| K0s | ✅ | ✅ | ✅ |
| KubeSolo | ✅ | ✅ | ✅ |
| Minikube | ✅ | ✅ | ✅ |
| Talos | ✅ | ✅ | ✅ |
| MicroK8s | ✅ | ✅ | ✅ |
Each distribution runs basic tests for NFS, NVMe-oF, and iSCSI protocols:
- Driver Deployment - Helm installation and pod startup
- PVC Creation - Volume provisioning
- Pod Creation - Volume mounting
- Basic I/O - Read/write operations
- Cleanup - Resource deletion
- Navigate to Actions → Distro Compatibility Tests
- Click Run workflow
- Select options:
- Distribution:
all(default) or specific distro - Protocol:
both(default),nfs, ornvmeof
- Distribution:
- Click Run workflow
# Set environment variables
export TRUENAS_HOST="your-truenas-host"
export TRUENAS_API_KEY="your-api-key"
export TRUENAS_POOL="your-pool"
export CSI_IMAGE_TAG="latest"
# Choose protocol
export TEST_PROTOCOL="nfs" # or "nvmeof"
# Setup Kubernetes distribution (example with K3s)
curl -sfL https://get.k3s.io | sh -
# Run the test
./tests/integration/test-distro-basic.sh- Manual: Trigger anytime via GitHub Actions UI
- Scheduled: Runs automatically every Sunday at 3 AM UTC
- Per distro/protocol: ~3-5 minutes
- Full suite (all distros, both protocols): ~20 minutes
| Feature | Distro Tests | Full Integration Tests |
|---|---|---|
| Distributions | 6 distros | K3s only |
| Protocols | NFS, NVMe-oF | NFS, NVMe-oF |
| Test Coverage | Basic functionality | Comprehensive (snapshots, expansion, etc.) |
| Duration | 3-5 min per distro | 60+ min total |
| Purpose | Verify compatibility | Validate features |
| Frequency | Weekly + on demand | On demand |
Test results are available in:
- GitHub Actions Summary - Matrix view of distro/protocol results
- Job Logs - Detailed logs for each test run
- Test Summary - Consolidated pass/fail report
- Check the job logs for that specific distro
- Look for driver deployment issues (most common)
- Verify the distro supports NFS/NVMe-oF kernel modules
This is expected if:
- NVMe-oF ports are not configured in TrueNAS
- The test automatically detects this and skips gracefully
Check:
- TrueNAS connectivity from runner
- API key validity
- Storage pool availability
- Create a setup action (e.g.,
setup-k8s-distro) - Add a new job in
.github/workflows/distro-compatibility.yml:
distro-name-basic:
name: "DistroName: Basic Tests"
runs-on: new
timeout-minutes: 20
needs: compute-tag
strategy:
matrix:
protocol: ['nfs', 'nvmeof']
steps:
- uses: actions/checkout@v6
- uses: your-org/setup-distro@v1
- name: Run Basic Test
env:
TRUENAS_HOST: ${{ secrets.TRUENAS_HOST }}
TRUENAS_API_KEY: ${{ secrets.TRUENAS_API_KEY }}
TRUENAS_POOL: ${{ secrets.TRUENAS_POOL }}
CSI_IMAGE_TAG: ${{ needs.compute-tag.outputs.image_tag }}
TEST_PROTOCOL: ${{ matrix.protocol }}
run: ./tests/integration/test-distro-basic.sh- Update the summary job to include the new distro
To add more test steps to the basic test:
- Edit
tests/integration/test-distro-basic.sh - Increment
set_test_stepscount - Add test function calls before cleanup
- Keep tests lightweight (avoid long-running operations)