FAQ
General Questions
Section titled âGeneral QuestionsâWhat is KSail?
Section titled âWhat is KSail?âKSail is a CLI tool that bundles common Kubernetes tooling into a single binary. It provides a unified interface to create clusters, deploy workloads, and operate cloud-native stacks across different Kubernetes distributions and infrastructure providers.
Why use KSail instead of kubectl/helm/kind/k3d directly?
Section titled âWhy use KSail instead of kubectl/helm/kind/k3d directly?âKSail eliminates tool sprawl by embedding kubectl, helm, kind, k3d, flux, and argocd into one binary. You get:
- Consistent workflow across distributions (Vanilla, K3s, Talos)
- Declarative configuration for reproducible environments
- Built-in best practices for CNI, CSI, observability, and security
- GitOps integration without manual setup
- One tool to learn instead of many
Is KSail production-ready?
Section titled âIs KSail production-ready?âKSail is designed for local development, CI/CD, and learning environments. For production Kubernetes clusters, we recommend using distribution-specific tools or managed Kubernetes services (EKS, GKE, AKS) with proper HA, backup, and security configurations.
The Hetzner provider for Talos is suitable for personal homelabs and development environments, but should be evaluated carefully for production use.
Installation & Setup
Section titled âInstallation & SetupâWhich operating systems does KSail support?
Section titled âWhich operating systems does KSail support?âKSail works on:
- Linux (amd64, arm64)
- macOS (arm64 - Apple Silicon)
- Windows (WSL2 recommended, native support untested)
See the Installation Guide for details.
Do I need to install Docker, kubectl, helm, etc.?
Section titled âDo I need to install Docker, kubectl, helm, etc.?âDocker is required for local cluster creation (the Docker provider). KSail embeds kubectl, helm, kind, k3d, flux, and argocd as Go libraries, so you donât need to install them separately.
For Hetzner cloud clusters (Talos only), you need a Hetzner account and API token, but Docker is still used for the KSail binary.
How do I update KSail?
Section titled âHow do I update KSail?âThe update method depends on how you installed it:
# Homebrewbrew upgrade devantler-tech/tap/ksail
# Go installgo install github.com/devantler-tech/ksail/v5@latest
# Binary download# Download latest from https://github.com/devantler-tech/ksail/releasesCluster Management
Section titled âCluster ManagementâWhich Kubernetes distributions does KSail support?
Section titled âWhich Kubernetes distributions does KSail support?âKSail supports three distributions:
- Vanilla (via Kind) - Upstream Kubernetes
- K3s (via K3d) - Lightweight Kubernetes
- Talos - Immutable Kubernetes OS
See the Support Matrix for provider compatibility.
Can I create multiple clusters?
Section titled âCan I create multiple clusters?âYes! Use the --name flag to create multiple clusters:
ksail cluster init --name dev-clusterksail cluster create
ksail cluster init --name staging-clusterksail cluster createList all clusters with ksail cluster list --all.
How do I switch between clusters?
Section titled âHow do I switch between clusters?âKSail automatically configures your kubeconfig with the appropriate context. Use standard kubectl context switching:
# List contextskubectl config get-contexts
# Switch contextkubectl config use-context <cluster-name>Can I use my own container registry?
Section titled âCan I use my own container registry?âYes! KSail supports:
- Local registry - Runs on localhost with optional authentication
- Mirror registries - Proxy to upstream registries (avoid rate limits)
- External registries - Use your own registry with authentication
See Registry Management for examples.
Workload Management
Section titled âWorkload ManagementâWhatâs the difference between ksail workload apply and ksail workload reconcile?
Section titled âWhatâs the difference between ksail workload apply and ksail workload reconcile?âksail workload apply- Direct kubectl-style deployment (no GitOps)ksail workload reconcile- GitOps workflow (requires Flux or ArgoCD)
Use apply for quick iteration, reconcile for Git-driven deployments.
Can I use Helm charts with KSail?
Section titled âCan I use Helm charts with KSail?âYes! KSail includes Helm v4 with kstatus:
# Install a Helm chartksail workload install <chart> --namespace <ns>
# Generate HelmRelease for GitOpsksail workload gen helmrelease <name> --source=oci://registry/chartHow do I debug failing pods?
Section titled âHow do I debug failing pods?âKSail wraps kubectl debugging commands:
# View logsksail workload logs deployment/my-app
# Describe resourceksail workload describe pod/my-pod
# Execute in containerksail workload exec deployment/my-app -- /bin/shWhich GitOps tools does KSail support?
Section titled âWhich GitOps tools does KSail support?âKSail supports both Flux and ArgoCD. Choose during initialization:
ksail cluster init --gitops-engine Flux# orksail cluster init --gitops-engine ArgoCDDo I need a Git repository for GitOps?
Section titled âDo I need a Git repository for GitOps?âNot necessarily! KSail can package manifests as OCI artifacts and push to a local registry:
ksail cluster init --gitops-engine Flux --local-registryksail cluster createksail workload push # Package and push to local registryksail workload reconcile # Sync to clusterThis enables GitOps workflows without Git (useful for local development).
Can I use my own Git repository?
Section titled âCan I use my own Git repository?âYes! After initialization, configure your GitOps engine to point to your Git repository. KSail scaffolds the initial CRs, but you customize them to use your repository.
Configuration
Section titled âConfigurationâWhatâs the difference between CLI flags and ksail.yaml?
Section titled âWhatâs the difference between CLI flags and ksail.yaml?âBoth configure KSail:
- CLI flags - Quick overrides, one-off changes, scripting
- ksail.yaml - Declarative config, version-controlled, team consistency
CLI flags override ksail.yaml values. See Configuration Overview.
Can I version control my cluster configuration?
Section titled âCan I version control my cluster configuration?âYes! The ksail.yaml file is designed for Git:
# Initialize projectksail cluster init --distribution Vanilla --cni Cilium
# Commit configurationgit add ksail.yaml kind.yaml k8s/git commit -m "chore: initial cluster configuration"Team members can recreate the same cluster from ksail.yaml.
How do I share configurations between environments?
Section titled âHow do I share configurations between environments?âUse environment-specific ksail.yaml files:
myproject/âââ ksail-dev.yamlâââ ksail-staging.yamlâââ ksail-prod.yamlOr use environment variables with placeholders in ksail.yaml.
Security & Secrets
Section titled âSecurity & SecretsâHow do I manage secrets with KSail?
Section titled âHow do I manage secrets with KSail?âKSail includes SOPS for secret encryption:
# Encrypt a fileksail cipher encrypt secret.yaml
# Decrypt a fileksail cipher decrypt secret.enc.yaml
# Edit encrypted fileksail cipher edit secret.enc.yamlSupports age, PGP, and cloud KMS providers. See Secret Management.
Are my credentials stored securely?
Section titled âAre my credentials stored securely?âKSail uses environment variables for sensitive data (${VAR} syntax in configuration). The values are expanded at runtime and never stored in config files.
# Set credentialexport REGISTRY_TOKEN="my-secret-token"
# Use in configurationksail cluster init \ --local-registry 'user:${REGISTRY_TOKEN}@registry.example.com'Troubleshooting
Section titled âTroubleshootingâMy cluster creation hangs - what should I do?
Section titled âMy cluster creation hangs - what should I do?âSee the Troubleshooting Guide for common solutions.
How do I clean up resources?
Section titled âHow do I clean up resources?â# Delete a cluster (removes containers/VMs and resources)ksail cluster delete
# Clean up Docker resourcesdocker system prune
# For Hetzner, deletion removes cloud resources automaticallyWhere can I get help?
Section titled âWhere can I get help?â- Documentation: ksail.devantler.tech
- Troubleshooting: Troubleshooting Guide
- Discussions: GitHub Discussions
- Issues: GitHub Issues