Omni Provider
The Omni provider manages Talos Linux clusters through the Sidero Omni SaaS platform. Omni handles machine lifecycle, cluster orchestration, and configuration distribution â KSail connects to the Omni API to create, manage, and tear down clusters using machines youâve already registered in Omni.
When to Use the Omni Provider
Section titled âWhen to Use the Omni ProviderâThe Omni provider is ideal when you:
- Manage bare-metal or cloud machines through a centralized SaaS platform
- Want Omni to handle machine registration, health monitoring, and Talos upgrades
- Need enterprise-grade cluster orchestration without managing infrastructure directly
- Run Talos across heterogeneous hardware (bare-metal servers, VMs, edge devices)
Prerequisites
Section titled âPrerequisitesâ- Sidero Omni account â Sign up at siderolabs.com
- Registered machines â At least one machine must be registered and available in your Omni instance (see Omni docs: Register a Machine)
- Service account key â Create one in the Omni web UI under Settings â Service Accounts; the key is a base64-encoded string
- Omni API endpoint â Your account-specific URL, typically
https://<account>.omni.siderolabs.io:443 - Docker â Required locally for
ksailCLI operations
Configuration
Section titled âConfigurationâEnvironment Variable
Section titled âEnvironment VariableâExport the service account key so KSail can authenticate with the Omni API:
export OMNI_SERVICE_ACCOUNT_KEY=your-base64-encoded-service-account-keyBy default, KSail reads from OMNI_SERVICE_ACCOUNT_KEY. To use a different environment variable name, set spec.cluster.omni.serviceAccountKeyEnvVar in ksail.yaml.
ksail.yaml Reference
Section titled âksail.yaml ReferenceâThe Omni provider is configured through spec.cluster.omni in ksail.yaml:
apiVersion: ksail.io/v1alpha1kind: Clustermetadata: name: my-omni-clusterspec: cluster: distribution: Talos provider: Omni omni: # Required: your Omni API endpoint endpoint: "https://<account>.omni.siderolabs.io:443" # Optional: override the default env var name (default: OMNI_SERVICE_ACCOUNT_KEY) # serviceAccountKeyEnvVar: "MY_CUSTOM_OMNI_KEY" talos: controlPlanes: 1 workers: 2| Field | Type | Default | Description |
|---|---|---|---|
omni.endpoint | string | (required) | Omni API endpoint URL |
omni.serviceAccountKeyEnvVar | string | OMNI_SERVICE_ACCOUNT_KEY | Environment variable containing the service account key |
Quick Start
Section titled âQuick StartâStep 1: Configure Credentials
Section titled âStep 1: Configure Credentialsâexport OMNI_SERVICE_ACCOUNT_KEY=your-base64-encoded-service-account-keyStep 2: Initialize Project
Section titled âStep 2: Initialize Projectâksail cluster init \ --name my-omni-cluster \ --distribution Talos \ --provider Omni \ --control-planes 1 \ --workers 2This creates:
ksail.yamlâ KSail configurationtalos/directory â Talos configuration patches
Step 3: Add the Omni Endpoint
Section titled âStep 3: Add the Omni EndpointâThe scaffolder does not generate the omni: block automatically. Open ksail.yaml and add the endpoint:
spec: cluster: omni: endpoint: "https://<account>.omni.siderolabs.io:443"Step 4: Create Cluster
Section titled âStep 4: Create Clusterâksail cluster createKSail will:
- Connect to your Omni instance using the service account key
- Allocate registered machines to the cluster
- Apply Talos configuration patches via the Omni API
- Bootstrap the Kubernetes cluster
- Configure kubectl context
Step 5: Verify Cluster
Section titled âStep 5: Verify Clusterâ# Check cluster infoksail cluster info
# View nodeskubectl get nodes
# View all podskubectl get pods -AStep 6: Cleanup
Section titled âStep 6: Cleanupâ# Delete the cluster (deallocates machines in Omni, does not wipe them)ksail cluster deleteArchitecture
Section titled âArchitectureâKSail communicates with the Omni SaaS API to manage cluster resources. Omni owns the machine lifecycle â KSail never connects to nodes directly for provisioning.
graph TB
subgraph "Your Machine"
KSAIL["ksail CLI"]
end
subgraph "Sidero Omni SaaS"
API["Omni API"]
ORCH["Cluster Orchestrator"]
REG["Machine Registry"]
end
subgraph "Registered Machines"
CP["Control Plane Node"]
W1["Worker Node 1"]
W2["Worker Node 2"]
end
KSAIL -->|"service account key"| API
API --> ORCH
ORCH -->|"allocate & configure"| REG
REG -->|"Talos config patches"| CP
REG -->|"Talos config patches"| W1
REG -->|"Talos config patches"| W2
CP -.->|"kubeconfig"| KSAIL
Key characteristics:
- KSail authenticates via a service account key â no direct SSH or Talos API access needed for provisioning
- Omni allocates registered machines to the cluster and applies Talos configuration
- Machine lifecycle (registration, health, upgrades) is managed entirely by Omni
ksail cluster deletedeallocates machines without destroying them â they return to the available pool
Operations
Section titled âOperationsâList Clusters
Section titled âList Clustersâksail cluster listLists all clusters visible to your Omni account, including clusters created outside KSail, when both OMNI_SERVICE_ACCOUNT_KEY and OMNI_ENDPOINT are set in your environment. The list command does not read spec.cluster.omni.endpoint from ksail.yaml, so OMNI_ENDPOINT must be configured explicitly for listing.
Cluster Info
Section titled âCluster Infoâksail cluster infoDisplays Kubernetes control-plane and core service endpoints for the current context (thin wrapper around kubectl cluster-info). For Omni-specific machine stages and node roles, use the Omni web UI or Omni CLI.
Update Cluster
Section titled âUpdate Clusterâksail cluster updateApplies in-place changes to components (CNI, GitOps engine, cert-manager, etc.). Node scaling changes for Talos are applied in-place. See the Update Behavior table for details.
Troubleshooting
Section titled âTroubleshootingâAuthentication Failures
Section titled âAuthentication FailuresâSymptom: omni service account key is not set
Cause: The environment variable is missing or empty.
Fix:
# Verify the variable is setecho $OMNI_SERVICE_ACCOUNT_KEY
# Re-export if neededexport OMNI_SERVICE_ACCOUNT_KEY=your-base64-encoded-keyIf you use a custom variable name, ensure it matches spec.cluster.omni.serviceAccountKeyEnvVar in your ksail.yaml.
Endpoint Not Configured
Section titled âEndpoint Not ConfiguredâSymptom: omni endpoint is required
Cause: spec.cluster.omni.endpoint is missing from ksail.yaml.
Fix: Add the endpoint to your configuration:
spec: cluster: omni: endpoint: "https://<account>.omni.siderolabs.io:443"No Machines Available
Section titled âNo Machines AvailableâSymptom: Cluster creation hangs or reports no nodes.
Cause: No machines are registered and available in your Omni instance.
Fix:
- Log in to the Omni web UI
- Navigate to Machines and verify machines are registered
- Ensure machines are not already allocated to another cluster
- See Omni docs: Register a Machine
Connection Timeout
Section titled âConnection TimeoutâSymptom: context deadline exceeded or connection errors.
Cause: Network issues or incorrect endpoint URL.
Fix:
- Verify the endpoint URL is correct and includes the port (
:443) - Check network connectivity:
curl -I https://<account>.omni.siderolabs.io:443 - Ensure no firewall or proxy is blocking outbound HTTPS traffic
Next Steps
Section titled âNext Stepsâ- Getting Started with Talos â Complete Talos guide with Docker, Hetzner, and Omni tabs
- Support Matrix â Distribution Ă Provider compatibility
- Configuration â Full configuration reference
- Concepts â Providers â Provider concept overview
Resources
Section titled âResourcesâ- Sidero Omni: https://www.siderolabs.com/platform/saas-for-kubernetes/
- Omni Documentation: https://omni.siderolabs.com/docs/
- Omni â Register a Machine: https://omni.siderolabs.com/docs/how-to-guides/how-to-register-a-machine/
- Omni â Create a Cluster: https://omni.siderolabs.com/docs/how-to-guides/how-to-create-a-cluster/
- Talos Linux: https://www.talos.dev/