Learn what inlineManifests and extraManifests are, how they differ, and why they matter.
inlineManifests
and extraManifests
allow you to automatically apply Kubernetes resources to your cluster during initial bootstrap.
Both are designed to automate the provisioning of components like CNIs and other static infrastructure, but they differ in how the manifest content is sourced and applied.
They are not meant for deploying applications or frequently changing services.
For those, it’s better to use a GitOps or CI/CD tool.
inlineManifests
are defined directly within the machine configuration file.
The YAML content is embedded inside the inlineManifests
section, making it ideal for tightly coupled resources that need to be provisioned as soon as the node boots up.
Here’s an example of how to configure a cluster using an inlineManifest
:
extraManifests
are Kubernetes manifests fetched from external, unauthenticated HTTP sources such as GitHub, raw file servers, or gists.
You define them in the extraManifests
section of the machine configuration.
They’re best suited for shared, versioned, or centrally managed resources.
These manifests are pulled directly by the node during configuration.
If the node doesn’t have network access to the HTTP endpoint hosting the manifest the installation will fail.
Similarly, if the endpoint is down or returns an error, the manifest will not be applied, and the machine configuration will fail as a result.
Here’s how to reference extraManifests
:
inlineManifests
, extraManifests
, and built-in manifests (such as the kubelet bootstrap token and CoreDNS), before applying them in the following order:
Namespace
resourcesmetadata.name
propertyinlineManifests
or extraManifests
is to install a GitOps controller like Flux or ArgoCD.
Once the controller is running, it connects to your Git repository and automatically applies the rest of your Kubernetes configuration.
Here’s how to install the Flux GitOps controller using an extraManifest
:
flux-extra-manifest.yaml
that automatically downloads and applies the Flux installation manifest from GitHub:
CP_IPS
variable that contains the IP addresses of your control plane nodes:
TALOSCONFIG
variable.
You can skip this step if you’ve already done it:
flux-extra-manifest.yaml
patch to your control plane nodes:
inlineManifests
or extraManifests
patches to Talos clusters managed by Omni.
Refer to Create a Patch For Cluster Machines to learn how to create and apply the patches.
inlineManifests
and extraManifests
:
inlineManifests | extraManifests | |
---|---|---|
Source | Defined directly in the machine configuration | Pulled from external URLs (GitHub gists, web servers, gists) |
Configuration Location | Under the inlineManifests section. | Under the extraManifests section |
Usecase | Early bootstrapping of critical resources | For reusable, version-controlled, or shared manifests |
Benefits | No external dependencies | Centrally managed |
Disadvantages | Difficult to maintain and format embedded YAML | Requires external HTTP server |
inlineManifests
and extraManifests
, Talos follows a conservative, additive-only approach.
Here’s what that means in practice: