Type object
File match ksail-*.yaml ksail-*.yml ksail_*.yaml ksail_*.yml ksail.*.yaml ksail.*.yml *-ksail.yaml *-ksail.yml *_ksail.yaml *_ksail.yml *.ksail.yaml *.ksail.yml ksail.yaml ksail.yml
Schema URL https://catalog.lintel.tools/schemas/schemastore/ksail/latest.json
Source https://raw.githubusercontent.com/devantler-tech/ksail/refs/heads/main/schemas/ksail-config.schema.json

Validate with Lintel

npx @lintel/lintel check
Type: object

JSON schema for KSail cluster configuration (ksail.yaml)

Properties

spec object required
5 nested properties
editor string

Editor command for interactive workflows (e.g. code --wait)

cluster object
21 nested properties
distributionConfig string
connection object
3 nested properties
kubeconfig string
context string
timeout string
pattern=^[0-9]+(ns|us|µs|ms|s|m|h)$
distribution string
Values: "Vanilla" "K3s" "Talos" "VCluster" "KWOK" "EKS"
provider string
Values: "Docker" "Hetzner" "Omni" "AWS"
cni string
Values: "Default" "Cilium" "Calico"
csi string
Values: "Default" "Enabled" "Disabled"
cdi string
Values: "Default" "Enabled" "Disabled"
metricsServer string
Values: "Default" "Enabled" "Disabled"
loadBalancer string
Values: "Default" "Enabled" "Disabled"
certManager string
Values: "Enabled" "Disabled"
policyEngine string
Values: "None" "Kyverno" "Gatekeeper"
localRegistry object
1 nested properties
registry string
gitOpsEngine string
Values: "None" "Flux" "ArgoCD"
sops object
4 nested properties
ageKeyEnvVar string
enabled boolean
env object
extract object
nodeAutoscaling string

Deprecated. Use autoscaler.node.enabled instead. Do not set both nodeAutoscaling and autoscaler.

Values: "Enabled" "Disabled"
autoscaler object

Pod and node autoscaling configuration (supersedes deprecated nodeAutoscaling)

2 nested properties
pod object
node object
importImages string

Path to tar archive with container images to import after cluster creation but before component installation

controlPlanes integer

Number of control-plane nodes to create for the cluster (provider/distribution-agnostic)

min=0
workers integer

Number of worker nodes to create for the cluster (provider/distribution-agnostic)

min=0
vanilla object
1 nested properties
mirrorsDir string
talos object
8 nested properties
version string
controlPlanes integer

DEPRECATED: use spec.cluster.controlPlanes instead

min=0
workers integer

DEPRECATED: use spec.cluster.workers instead

min=0
config string
iso integer
schematicId string
extraPortMappings object[]
imageVerification string
Values: "Enabled" "Disabled"
provider object
3 nested properties
hetzner object
14 nested properties
controlPlaneServerType string
workerServerType string
location string
networkName string
networkCidr string
sshKeyName string
tokenEnvVar string
placementGroupStrategy string
Values: "None" "Spread"
placementGroup string
fallbackLocations string[]
placementGroupFallbackToNone boolean
ingressFirewall string
Values: "Enabled" "Disabled"
serverLimit integer

Maximum total Hetzner servers allowed for this cluster (control-planes + workers + autoscaler pool capacity). Set to 0 to use the default limit of 10

min=0
autoscalerNodePoolNames string[]
omni object
7 nested properties
endpoint string
endpointEnvVar string
serviceAccountKeyEnvVar string
talosVersion string
kubernetesVersion string
machineClass string
machines string[]
aws object
5 nested properties
profileEnvVar string
regionEnvVar string
accessKeyIdEnvVar string
secretAccessKeyEnvVar string
sessionTokenEnvVar string
workload object
4 nested properties
sourceDirectory string

Path to the directory containing Kubernetes manifests. Used as the default path by validate, watch, and push when no explicit path argument is given.

validateOnPush boolean

Validate manifests against schemas before pushing (validation disabled by default)

tag string

OCI artifact tag used for workload push and GitOps reconciliation (Flux OCIRepository and ArgoCD Application). Push priority: CLI oci:// ref > this field > registry-embedded tag > dev. Reconciliation priority: this field > registry-embedded tag > dev

kustomizationFile string

Path to the kustomization directory relative to sourceDirectory. When set, Flux Sync.Path is configured to this path so Flux uses the specified kustomization as the entry point instead of requiring a root kustomization.yaml.

chat object
2 nested properties
model string

Chat model (empty or 'auto' for API default)

reasoningEffort string

Reasoning effort level for chat responses (low, medium, or high)

Values: "low" "medium" "high"
kind string
Values: "Cluster"
apiVersion string
Values: "ksail.io/v1alpha1"
metadata object
1 nested properties
name string

Cluster name (DNS-1123 compliant)