API Reference¶
This page summarizes the user-facing fields. The generated CRDs under config/crd/bases are the source of truth for Kubernetes schema validation.
OmniConnection¶
Defines one Omni endpoint and the service account key used by the operator.
| Field | Required | Notes |
|---|---|---|
spec.endpoint |
Yes | Omni API URL. Must start with http://, https://, or grpc://. |
spec.auth.serviceAccountSecretRef.name |
Yes | Secret name in the same namespace. |
spec.auth.serviceAccountSecretRef.key |
Yes | Secret key. Defaults to serviceAccountKey. |
spec.insecureSkipTLSVerify |
No | Disables TLS verification. Use only for local development. |
Status includes Ready, Reachable, Stalled, endpoint, connectionRef, observedGeneration, and lastCheckTime.
OmniCluster¶
Owns remote Omni cluster lifecycle and cluster-level template settings.
| Field | Required | Notes |
|---|---|---|
spec.connectionRef.name |
Yes | OmniConnection in the same namespace. |
spec.clusterName |
No | Remote Omni cluster name. Defaults to metadata.name. |
spec.kubernetes.version |
Yes | Kubernetes version such as v1.35.0. |
spec.kubernetes.manifests |
No | Omni-managed Kubernetes manifests, either inline or file-backed. |
spec.talos.version |
Yes | Talos version such as v1.13.2. |
spec.features |
No | Optional workload proxy, embedded discovery, disk encryption, and backup settings. |
spec.patches |
No | Cluster-scope Talos machine configuration patches. |
spec.systemExtensions |
No | System extensions installed on every machine. |
spec.kernelArgs |
No | Kernel args for static machines. |
spec.templateRoot |
No | Directory inside the operator container for file-backed patches and manifests. |
spec.deletePolicy.orphan |
No | Leave the remote Omni cluster intact on Kubernetes deletion. |
spec.deletePolicy.destroyMachines |
No | Forcefully remove disconnected nodes while deleting template resources. |
spec.syncInterval |
No | Periodic reconciliation interval. Defaults to 5m. |
spec.suspend |
No | Stop remote Omni sync while keeping resources and finalizers. |
Status includes Ready, Validated, Synced, selected child references, rendered template hash, remote cluster phase, and observed generation.
OmniControlPlane¶
Defines the Omni ControlPlane template document. Exactly one OmniControlPlane should reference each OmniCluster.
| Field | Required | Notes |
|---|---|---|
spec.clusterRef.name |
Yes | OmniCluster in the same namespace. |
spec.machines |
Conditional | Explicit Omni machine IDs. Mutually exclusive with machineClass. |
spec.machineClass.name |
Conditional | Omni MachineClass name. Mutually exclusive with machines. |
spec.machineClass.size |
Conditional | Number of machines or an Omni size keyword such as unlimited. |
spec.patches |
No | Machine-set patches. |
spec.systemExtensions |
No | Extensions for every machine in the set. |
spec.kernelArgs |
No | Kernel args for static machines in the set. |
spec.bootstrapSpec |
No | Restore bootstrap settings. |
OmniWorkers¶
Defines one Omni Workers template document.
| Field | Required | Notes |
|---|---|---|
spec.clusterRef.name |
Yes | OmniCluster in the same namespace. |
spec.workerSetName |
No | Remote worker set name. Defaults to metadata.name; cannot be control-planes. |
spec.machines |
Conditional | Explicit Omni machine IDs. Mutually exclusive with machineClass. |
spec.machineClass.name |
Conditional | Omni MachineClass name. Mutually exclusive with machines. |
spec.machineClass.size |
Conditional | Number of machines or an Omni size keyword such as unlimited. |
spec.patches |
No | Machine-set patches. |
spec.systemExtensions |
No | Extensions for every machine in the set. |
spec.kernelArgs |
No | Kernel args for static machines in the set. |
spec.updateStrategy |
No | Config update behavior. |
spec.upgradeStrategy |
No | Version, extension, and kernel arg upgrade behavior. |
spec.deleteStrategy |
No | Machine removal behavior. |
OmniMachine¶
Defines optional per-machine settings for a static machine.
| Field | Required | Notes |
|---|---|---|
spec.clusterRef.name |
Yes | OmniCluster in the same namespace. |
spec.machineID |
No | Omni machine ID. Defaults to metadata.name. |
spec.locked |
No | Prevents config updates, upgrades, and downgrades. Omni allows locked machines only as workers. |
spec.install.disk |
No | Talos install disk path. |
spec.patches |
No | Machine-specific patches. |
spec.systemExtensions |
No | Machine-specific system extensions. |
spec.kernelArgs |
No | Machine-specific kernel args. |
OmniHelmRelease¶
Reconciles a Helm release directly in an Omni-created workload cluster using an explicit kubeconfig Secret.
| Field | Required | Notes |
|---|---|---|
spec.clusterRef.name |
Yes | OmniCluster in the same namespace. Used for attachment/status; it does not export credentials. |
spec.kubeconfigSecretRef.name |
Yes | Secret in the same namespace containing workload-cluster kubeconfig data. |
spec.kubeconfigSecretRef.key |
No | Secret data key. Defaults to kubeconfig. |
spec.releaseName |
No | Helm release name. Defaults to metadata.name. |
spec.namespace |
No | Workload-cluster release namespace. Defaults to default. |
spec.chart.repository |
Yes | Helm repository URL. |
spec.chart.chart |
Yes | Helm chart name to install or upgrade. |
spec.chart.version |
Yes | Helm chart version to install or upgrade. |
spec.chart.values |
No | Helm values object passed to install and upgrade. |
spec.createNamespace |
No | Ask Helm to create the release namespace during install. |
spec.wait |
No | Ask Helm to wait for reconciled resources to become ready. |
spec.waitForJobs |
No | Include Jobs in Helm wait behavior. |
spec.timeout |
No | Helm action timeout. Defaults to 5m. |
spec.atomic |
No | Roll back failed upgrades and uninstall failed installs when waiting. |
spec.disableHooks |
No | Disable Helm hooks. |
spec.skipCRDs |
No | Skip CRD installation. Helm does not upgrade CRDs. |
spec.maxHistory |
No | Maximum retained Helm release revisions. Zero uses Helm's default. |
spec.deletionPolicy |
No | Uninstall removes the workload-cluster release on CR deletion; Orphan leaves it behind. Defaults to Uninstall. |
Status includes Ready, Released, release name, namespace, chart, chart version, release revision, release status, last Helm action, timestamps, last error, and observed generation.
OmniKubeconfigExport¶
Exports a scoped workload-cluster service-account kubeconfig into a Secret only when explicitly requested.
| Field | Required | Notes |
|---|---|---|
spec.clusterRef.name |
Yes | OmniCluster in the same namespace. |
spec.targetSecretRef.name |
Yes | Target Secret in the same namespace. |
spec.targetSecretRef.key |
No | Secret data key. Defaults to kubeconfig. |
spec.serviceAccount.user |
Yes | Kubernetes username for the generated kubeconfig. |
spec.serviceAccount.groups |
Yes | Kubernetes groups for the generated kubeconfig. system:masters requires allowClusterAdmin: true. |
spec.serviceAccount.allowClusterAdmin |
No | Allows system:masters. Leave false for scoped automation credentials. |
spec.ttl |
Yes | Requested service-account kubeconfig lifetime, such as 24h. |
spec.renewBefore |
No | Rotate before expiration, such as 4h. Must be less than ttl. |
spec.deletionPolicy |
Yes | Delete removes the target Secret on deletion; Orphan leaves it behind. |
Status includes Ready, Accepted, Exported, target Secret name/key, kubeconfig hash, expiration time, next rotation time, and last rotation time.
The target Secret is created in the same namespace as the export. The default data key is kubeconfig. Secret labels and annotations include the owning export UID/name, remote cluster name, generated kubeconfig hash, export spec hash, expiration time, and last rotation time.
Changing the service-account user, groups, TTL, target key, or remote cluster name changes the export spec hash and causes a new kubeconfig request. renewBefore, target Secret name, and deletion policy affect rotation or cleanup behavior but do not change the generated kubeconfig identity.
OmniSecretSync¶
Copies a management-cluster Secret into an Omni-created workload cluster using an explicit workload-cluster kubeconfig Secret.
| Field | Required | Notes |
|---|---|---|
spec.clusterRef.name |
Yes | OmniCluster in the same namespace. Used for attachment/status; it does not export credentials. |
spec.kubeconfigSecretRef.name |
Yes | Secret in the same namespace containing workload-cluster kubeconfig data. |
spec.kubeconfigSecretRef.key |
No | Secret data key. Defaults to kubeconfig. |
spec.sourceSecretRef.name |
Yes | Source Secret in the same namespace as the OmniSecretSync. |
spec.targetSecretRef.name |
Yes | Target Secret name in the workload cluster. |
spec.targetSecretRef.namespace |
Yes | Target Secret namespace in the workload cluster. |
spec.type |
No | Target Secret type override. Defaults to the source Secret type. |
spec.labels |
No | Extra labels to write on the workload-cluster target Secret. |
spec.annotations |
No | Extra annotations to write on the workload-cluster target Secret. |
spec.createNamespace |
No | Create the workload-cluster target namespace if missing. |
spec.deletionPolicy |
Yes | Delete removes the target Secret on deletion; Orphan leaves it behind. |
Status includes Ready, Accepted, Synced, source Secret name, target Secret name/namespace, target Secret type, synced content hash, last attempt time, last sync time, last error, and observed generation.
OmniSecretSync copies data and Secret type only. It does not copy management-cluster owner references, resource versions, labels, or annotations from the source Secret. The target Secret receives operator ownership labels/annotations plus any spec.labels and spec.annotations.
Common nested fields¶
Patches¶
Each patch may use inline or file.
| Field | Notes |
|---|---|
file |
Path relative to OmniCluster.spec.templateRoot in the operator container. |
name |
Human-readable patch name. |
idOverride |
Overrides Omni's generated config patch ID. |
labels |
Labels applied to the generated config patch. |
annotations |
Annotations applied to the generated config patch. |
inline |
Talos strategic machine configuration patch. |
Update strategies¶
updateStrategy, upgradeStrategy, and deleteStrategy use the same shape:
type may be Rolling or Unset. When unset, Omni applies the operation at once.