Recommendations for setting up a Talos Linux cluster in production.
This guide explains things to consider to create a production quality Talos Linux cluster for bare metal.
Check out the Reference Architecture documentation for architectural diagrams and guidance on creating production-grade clusters in other environments.This guide assumes that you’ve already created a development cluster and are familiar with the Getting Started documentation.
If not, please refer to the Getting Started guide for more information.When moving from a learning environment to a production-ready Talos Linux cluster, you have to consider several critical factors:
High availability for your control plane nodes.
Secure configuration management.
Reliability for continuous service and minimal downtime.
Authentication for access control.
Follow the steps below to build a production-grade Talos cluster that is highly available, reliable, and secure.Note: Check out Omni for managing large-scale Talos Linux clusters automatically.
Follow these steps to boot your machines using the Talos ISO image:
Download the latest ISO for your infrastructure depending on the hardware type from the Talos Image factory.Note: For network booting and self-built media using published kernel there are a number of required kernel parameters.
Please see the kernel documentation for more information.
Boot three control planes using the ISO image you just downloaded.
If your nodes are behind a firewall, in a private network, or otherwise not directly reachable, you would need to configure a load balancer to forward TCP port 50000 to reach the nodes for Talos API access.Note: Because the Talos Linux API uses gRPC and mutual TLS, it cannot be proxied by a HTTP/S proxy, but only by a TCP load balancer.With your control plane and worker nodes booted, next configure your Kubernetes endpoint.
To store variables for your machines’ IP addresses:
Copy the IP address displayed on each machine console, including the control plane and any worker nodes you’ve created.If you don’t have a display connected, retrieve the IP addresses from your DHCP server.
Create a Bash array for your control plane node IP addresses, replacing each <control-plane-ip> placeholder with the IP address of a control plane node.
You can include as many IP addresses as needed:
If you have worker nodes, store their IP addresses in a Bash array.
Replace each <worker-ip> placeholder with the actual IP address of a worker node.
You can include as many IP addresses as needed:
You’ve set up multiple control planes for high availability, but they only provide true high availability if the Kubernetes API server endpoint can reach all control plane nodes.Here are two common ways to configure this:
Dedicated load balancer: Set a dedicated load balancer that routes to your control plane nodes.
DNS records: Create multiple DNS records that point to all your control plane nodes
With these, you can pass in one IP address or DNS name during setup that routes to all your control plane nodes.Here is how you can configure each option:
If you’re using a cloud provider or have your own load balancer (such as HAProxy, an NGINX reverse proxy, or an F5 load balancer), setting up a dedicated load balancer is a natural choice.It is also important to note that if you created the cluster with Omni, Omni will automatically be a load balancer for your Kubernetes endpoint.Configure a frontend to listen on TCP port 6443 and direct traffic to the addresses of your Talos control plane nodes.Your Kubernetes endpoint will be the IP address or DNS name of the load balancer’s frontend, with the port appended, for example, https://myK8s.mydomain.io:6443.Note: You cannot use a HTTP load balancer, because the Kubernetes API server handles TLS termination and mutual TLS authentication.
Additionally, you can configure your Kubernetes endpoint using DNS records.
Simply, add multiple A or AAAA records, one for each control plane, to a DNS name.For example, you can add:
kube.cluster1.mydomain.com IN A 192.168.0.10kube.cluster1.mydomain.com IN A 192.168.0.11kube.cluster1.mydomain.com IN A 192.168.0.12
Then your endpoint would be:
https://kube.cluster1.mydomain.com:6443
Note: This endpoint serves as a fallback if KubePrism becomes unavailable, for example, after a reboot. It also ensures that Talos nodes can still locate and communicate with the control plane if other discovery services are not available.
The secrets bundle is a file that contains all the cryptographic keys, certificates, and tokens needed to secure your Talos Linux cluster.To generate the secrets bundle, run:
Follow these steps to generate machine configuration:
Set a variable for your cluster name by running the following command.
Replace <your_cluster_name> with the name you want to give your cluster:
export CLUSTER_NAME=<your_cluster_name>
Run this command to generate your machine configuration files using your secrets bundle:
talosctl gen config --with-secrets secrets.yaml $CLUSTER_NAME https://$YOUR_ENDPOINT:6443
The talosctl version (talosctl version --client) should match the Talos OS version installed on your nodes.
If you are using a newer version of talosctl to generate configurations for an older Talos OS, use the --talos-version flag to ensure compatibility.
For example, to generate a configuration compatible with Talos v1.13:
talosctl gen config --with-secrets secrets.yaml --talos-version v1.13 $CLUSTER_NAME https://$YOUR_ENDPOINT:6443
Even when using --talos-version, review the generated configuration files to verify that the Kubernetes version is supported by your target Talos OS.
Refer to the support matrix to check which Kubernetes versions are compatible with your Talos version.
This command will generate three files:
controlplane.yaml: Configuration for your control plane.
worker.yaml: Configuration for your worker nodes.
talosconfig: The talosctl configuration file used to connect to and authenticate with your cluster.
Unplug your installation USB drive or unmount the ISO from all your control plane and worker nodes.
This prevents you from accidentally installing to the USB drive and makes it clearer which disk to select for installation.
The default machine configurations for control plane and worker nodes are typically sufficient to get your cluster running.
However, you may need to customize certain settings such as network interfaces and disk configurations depending on your specific environment.Follow these steps to verify that your machine configurations are set up correctly:
Check network interfaces: Run this command to view all network interfaces on any node, whether control plane or worker.Replace <node-ip-address> with the IP of the node you want to inspect.Note: Copy the network ID with an Operational state (OPER) value of up.
talosctl --nodes <node-ip-address> get links --insecure
Check Available Disks: Run this command to check all available disks on any node.
Replace <node-ip-address> with the IP address of the node you want to inspect:
talosctl get disks --insecure --nodes <node-ip-address>
Verify Configuration Files: Open your worker.yaml and controlplane.yaml configuration files in your preferred editor.
Check that the values match your worker and control plane node’s network and disk settings.
If the values don’t match, you’ll need to update your machine configuration.Note: Refer to the Talos CLI reference for additional commands to gather more information about your nodes and cluster.
Step 9: Patch your machine configuration (optional)
You can patch your worker and control plane machine configuration to reflect the correct network interface and disk of your control plane nodes.Follow these steps to patch your machine configuration:
Create patch files for the configurations you want to modify:
touch controlplane-patch-1.yaml # For patching the control plane nodes configurationtouch worker-patch-1.yaml # For patching the worker nodes configuration
Note: You don’t have to create both patch files, only create patches for the configurations you actually need to modify.You can also create multiple patch files (e.g., controlplane-patch-2.yaml, controlplane-patch-3.yaml) if you want to make multiple subsequent patches to the same machine configuration.
Copy and paste this YAML block of code and add the correct hardware values to each patch file.For example, for controlplane-patch-1 use the network interface and disk information you gathered from your control plane nodes:
# controlplane-patch-1 filemachine: network: interfaces: - interface: <control-plane-network-interface> # From control plane node dhcp: true install: disk: /dev/<control-plane-disk-name> # From control plane node
For worker-patch-1.yaml, use network interface and disk information from your worker nodes:
If your machines are multihomed, i.e., they have more than one IPv4 and/or IPv6 addresses other than loopback, then additional configuration is required.
Refer to Multihoming for more information.
Run this command to apply the controlplane.yaml configuration to your control plane nodes:
for ip in "${CONTROL_PLANE_IP[@]}"; do echo "=== Applying configuration to node $ip ===" talosctl apply-config --insecure \ --nodes $ip \ --file controlplane.yaml echo "Configuration applied to $ip" echo ""done
Run this command to apply the worker.yamlconfiguration to your worker node:
for ip in "${WORKER_IP[@]}"; do echo "=== Applying configuration to node $ip ===" talosctl apply-config --insecure \ --nodes $ip \ --file worker.yaml echo "Configuration applied to $ip" echo ""done
The talosconfig is your key to managing the Talos Linux cluster, without it, you cannot authenticate or communicate with your cluster nodes using talosctl.You have two options for managing your talosconfig:
Merge your new talosconfig into the default configuration file located at ~/.talos/config:
talosctl config merge ./talosconfig
Copy the configuration file to your ~/.talos directory and set the TALOSCONFIG environment variable:
Step 13: Set endpoints of your control plane nodes
Configure your endpoints to enable talosctl to automatically load balance requests and fail over between control plane nodes when individual nodes become unavailable.Run this command to configure your endpoints:
Wait for your control plane nodes to finish booting, then bootstrap your etcd cluster by running the command below.Bootstrap using any one of the IP addresses in your CONTROL_PLANE_IP array, the example below uses the first (index 0), but any index works:
Download your kubeconfig file to start using kubectl with your cluster.
These commands must be run against a single control plane node.You have two options for managing your kubeconfig:
{"docsConfig":{"theme":"aspen","$schema":"https://leaves.mintlify.com/schema/docs.json","name":"Sidero Documentation","colors":{"primary":"#D41A3B","light":"#E48E96","dark":"#E12D46"},"logo":{"light":"https://mintcdn.com/siderolabs-fe86397c/G9H15xhTYrTLoHZE/images/sidero-light.svg?fit=max\u0026auto=format\u0026n=G9H15xhTYrTLoHZE\u0026q=85\u0026s=111c3a81dfd33536a250355ab70d5b5f","dark":"https://mintcdn.com/siderolabs-fe86397c/G9H15xhTYrTLoHZE/images/sidero-dark.svg?fit=max\u0026auto=format\u0026n=G9H15xhTYrTLoHZE\u0026q=85\u0026s=4dc8f324935c0a940a3b4640b7b999ec"},"favicon":"https://mintcdn.com/siderolabs-fe86397c/G9H15xhTYrTLoHZE/images/favicon.svg?fit=max\u0026auto=format\u0026n=G9H15xhTYrTLoHZE\u0026q=85\u0026s=b1780d5f545130db050cb89f1b2ac8a1","navbar":{"links":[{"href":"https://www.siderolabs.com/support/","label":"Enterprise Support"}],"primary":{"type":"button","label":"Try Talos Omni","href":"https://www.siderolabs.com/omni-signup"}},"footer":{"socials":{"bluesky":"https://bsky.app/profile/siderolabs.com","github":"https://github.com/siderolabs","linkedin":"https://linkedin.com/company/sidero-labs","reddit":"https://reddit.com/r/taloslinux","x":"https://x.com/siderolabs"}},"seo":{"metatags":{"canonical":"https://docs.siderolabs.com"}},"integrations":{"ga4":{"measurementId":"G-PT2W5NT93B"},"posthog":{"apiKey":"phc_D44Y76lThvZBf8s7lpVpPjJm9fNLvCRMluHXtF7bQXT"},"cookies":{"key":"sidero-analytics-consent","value":"granted"}},"banner":{"content":"Join us at [TalosCon](https://www.taloscon.com/) in Santa Barbara, Jan 26-27, 2027. Share the announcement and your ticket is free!","dismissible":true},"errors":{"404":{"redirect":false,"title":"Page not found","description":"The page you're looking for doesn't exist. [Go home](/)."}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"thumbnails":{"background":"https://mintcdn.com/siderolabs-fe86397c/OiJI5OX0Yyg1HXae/images/og-background.png?fit=max\u0026auto=format\u0026n=OiJI5OX0Yyg1HXae\u0026q=85\u0026s=a9873e2ecf3f86f33e8406f597a69095"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"siderolabs-fe86397c","hasAudioNarration":false,"actualSubdomain":"siderolabs-fe86397c","customDomains":["docs.siderolabs.com"],"gitSource":{"type":"github","owner":"siderolabs","repo":"docs","deployBranch":"main","contentDirectory":"public","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae52a84fd2c0867a0e98ddd","collectionId":"328fb81c-59a4-4b29-b24c-3d421d4ad3e1","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae52a84fd2c0867a0e98ddd"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae52a84fd2c0867a0e98ddd","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"Talos Linux","count":1318},{"language":"default","tag":"Platform specific installation","count":358},{"language":"default","tag":"Reference","count":267},{"language":"default","tag":"Configure your Talos cluster","count":197},{"language":"default","tag":"Configuration","count":133},{"language":"default","tag":"Networking","count":129},{"language":"default","tag":"Cloud Platforms","count":107},{"language":"default","tag":"Single Board Computers","count":103},{"language":"default","tag":"Talos Omni","count":98},{"language":"default","tag":"Learn more","count":97}],"searchSettings":{"maxResults":10,"isFiltersEnabled":true}},"assistantConfig":{"enableAskAiButton":true,"enableStarterQuestions":true,"enableAskAiSearchBar":false,"deflection":{"enabled":false,"email":"support@siderolabs.com"}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"starterQuestions":[{"_id":"6933179bb8c4c689533e99c1","deploymentId":"688d3353fc3ba50464ce8ee7","questionText":"What is the architecture of Talos disk layout?","status":"active","generatedBy":"manual","createdAt":"2025-12-05T17:34:19.159Z","updatedAt":"2025-12-05T17:34:19.159Z","__v":0},{"_id":"6933178db8c4c689533e97ca","deploymentId":"688d3353fc3ba50464ce8ee7","questionText":"Generate a machine config for a UserVolume","status":"active","generatedBy":"manual","createdAt":"2025-12-05T17:34:05.515Z","updatedAt":"2025-12-05T17:34:05.515Z","__v":0},{"_id":"69331771b8c4c689533e9371","deploymentId":"688d3353fc3ba50464ce8ee7","questionText":"How do I upgrade Talos?","status":"active","generatedBy":"manual","createdAt":"2025-12-05T17:33:37.847Z","updatedAt":"2025-12-05T17:33:37.847Z","__v":0}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".nav-logo{height:auto!important;max-height:40px!important;width:auto!important}.nav-tabs-item .nav-logo,.nav-tabs-item img{background:0 0!important;background-color:transparent!important}html[data-sidero-search-filter] [data-component-part=search-filter-content]{opacity:0!important;pointer-events:none!important}table{border-color:var(--talos-border-default);table-layout:auto;border-collapse:collapse;width:100%;margin:var(--talos-space-compact) 0}.prose table td,.prose table th{padding:var(--talos-space-tight) var(--talos-space-compact) var(--talos-space-tight) var(--talos-space-base)}table:not([class]) td:nth-child(1) code{white-space:nowrap}@media (min-width:1024px){table:not([class]){display:table;width:100%}}#body-content,#content-container,.prose{max-width:none}"},{"filePath":"talos-tokens.css","content":"@font-face{font-family:'Manrope';font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/manrope-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Manrope';font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/manrope-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/jetbrains-mono-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/jetbrains-mono-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--talos-ink-0:#060606;--talos-ink-1:#0B0B0B;--talos-ink-2:#1A1A1E;--talos-ink-3:#1E1E22;--talos-ink-4:#26262B;--talos-ink-5:#2E2E33;--talos-ink-6:#5A5A58;--talos-ink-7:#8A8A88;--talos-ink-8:#A8A8A6;--talos-ink-9:#C8C8C6;--talos-ink-10:#F5F5F4;--talos-cream-0:#F2EDE8;--talos-cream-1:#F5F0EB;--talos-cream-2:#FFFFFF;--talos-cream-3:#F0EBE5;--talos-cream-4:#E6E1DC;--talos-cream-5:#D8D2CB;--talos-cream-6:#8A8A88;--talos-cream-7:#686866;--talos-cream-8:#4F4F4D;--talos-cream-9:#3A3A38;--talos-cream-10:#1A1A18;--talos-red-1:#E48E96;--talos-red-2:#DB6973;--talos-red-3:#E12D46;--talos-red-4:#D41A3B;--talos-red-5:#B93B46;--talos-red-6:#A83640;--talos-red-7:#8F2D36;--talos-gradient-display-1:#E8312C;--talos-gradient-display-2:#E2335A;--talos-gradient-display-3:#F77216;--talos-green-1:#E6F0E7;--talos-green-2:#C0DAC4;--talos-green-3:#A0C8A7;--talos-green-4:#6FD087;--talos-green-5:#1B8641;--talos-green-6:#046E31;--talos-green-7:#23432E;--talos-green-8:#213428;--talos-amber-1:#FEEED9;--talos-amber-2:#FDE8CB;--talos-amber-3:#FCDCB0;--talos-amber-4:#F5AE39;--talos-amber-5:#E6AC3D;--talos-amber-6:#7E5905;--talos-amber-7:#695132;--talos-amber-8:#403529;--talos-scarlet-1:#FFECEA;--talos-scarlet-2:#FDC7C0;--talos-scarlet-3:#FAABA1;--talos-scarlet-4:#FF5B5B;--talos-scarlet-5:#DE2F2E;--talos-scarlet-6:#BB081F;--talos-scarlet-7:#642A29;--talos-scarlet-8:#3E2324;--talos-stone-1:#BAB7B3;--talos-stone-2:#75726F;--talos-stone-3:#5D5B58;--talos-paper:#E2D2A8;--talos-white:#FFFFFF;--talos-black:#000000;--talos-space-micro:4px;--talos-space-tight:8px;--talos-space-snug:12px;--talos-space-compact:16px;--talos-space-base:24px;--talos-space-section:32px;--talos-space-major:64px;--talos-radius-sm:4px;--talos-radius-base:6px;--talos-radius-lg:8px;--talos-radius-xl:12px;--talos-radius-pill:9999px;--talos-border-hairline:1px;--talos-border-edge:3px;--talos-font-sans:Manrope, system-ui, -apple-system, 'Segoe UI', sans-serif;--talos-font-mono:'JetBrains Mono', 'SF Mono', Consolas, 'Liberation Mono', monospace;--talos-text-2xs:10px;--talos-text-xs:11px;--talos-text-sm:12px;--talos-text-base:14px;--talos-text-md:16px;--talos-text-lg:20px;--talos-text-xl:24px;--talos-text-2xl:30px;--talos-weight-regular:400;--talos-weight-medium:500;--talos-weight-semibold:600;--talos-weight-bold:700;--talos-leading-tight:1.25;--talos-leading-base:1.5;--talos-leading-relaxed:1.65;--talos-tracking-normal:0;--talos-tracking-eyebrow:0.10em;--talos-tracking-machine:0.16em;--talos-surface-page:var(--talos-cream-0);--talos-surface-chrome:var(--talos-cream-1);--talos-surface-card:var(--talos-cream-2);--talos-surface-inset:var(--talos-cream-3);--talos-surface-raised:var(--talos-cream-2);--talos-surface-hover:var(--talos-cream-4);--talos-surface-inert:var(--talos-cream-5);--talos-surface-subtle:rgba(0, 0, 0, 0.04);--talos-surface-inverse:var(--talos-cream-10);--talos-surface-paper:var(--talos-paper);--talos-content-emphasis:var(--talos-cream-10);--talos-content-default:var(--talos-cream-9);--talos-content-secondary:var(--talos-cream-8);--talos-content-muted:var(--talos-cream-7);--talos-content-disabled:var(--talos-cream-6);--talos-content-inverse:var(--talos-cream-2);--talos-content-on-accent:var(--talos-white);--talos-border-subtle:rgba(0, 0, 0, 0.06);--talos-border-default:rgba(0, 0, 0, 0.08);--talos-border-strong:rgba(0, 0, 0, 0.16);--talos-border-accent:var(--talos-red-3);--talos-accent-default:var(--talos-red-3);--talos-accent-hover:var(--talos-red-5);--talos-accent-text:var(--talos-red-4);--talos-accent-fill:var(--talos-red-3);--talos-accent-fill-hover:rgba(225, 45, 70, 0.9);--talos-accent-fill-active:var(--talos-red-7);--talos-accent-subtle:rgba(212, 26, 59, 0.08);--talos-accent-gradient:linear-gradient(90deg, var(--talos-gradient-display-1) 0%, var(--talos-gradient-display-2) 51%, var(--talos-gradient-display-3) 100%);--talos-accent-gradient-fill:linear-gradient(270deg, var(--talos-gradient-display-3) 0%, var(--talos-red-3) 30%, var(--talos-red-3) 70%, var(--talos-gradient-display-1) 100%);--talos-status-success-default:var(--talos-green-6);--talos-status-success-text:var(--talos-green-6);--talos-status-success-fill:var(--talos-green-5);--talos-status-success-on-fill:var(--talos-white);--talos-status-success-subtle:var(--talos-green-1);--talos-status-success-subtle-border:var(--talos-green-2);--talos-status-success-surface:var(--talos-green-1);--talos-status-success-border:var(--talos-green-3);--talos-status-warning-default:var(--talos-amber-6);--talos-status-warning-text:var(--talos-amber-6);--talos-status-warning-fill:var(--talos-amber-4);--talos-status-warning-on-fill:var(--talos-cream-10);--talos-status-warning-subtle:var(--talos-amber-1);--talos-status-warning-subtle-border:var(--talos-amber-2);--talos-status-warning-surface:var(--talos-amber-1);--talos-status-warning-border:var(--talos-amber-3);--talos-status-danger-default:var(--talos-scarlet-6);--talos-status-danger-text:var(--talos-scarlet-6);--talos-status-danger-fill:var(--talos-scarlet-5);--talos-status-danger-on-fill:var(--talos-white);--talos-status-danger-subtle:var(--talos-scarlet-1);--talos-status-danger-subtle-border:var(--talos-scarlet-2);--talos-status-danger-surface:var(--talos-scarlet-1);--talos-status-danger-border:var(--talos-scarlet-3);--talos-status-info-default:var(--talos-stone-3);--talos-status-info-text:var(--talos-stone-3);--talos-status-info-fill:var(--talos-stone-2);--talos-status-info-on-fill:var(--talos-white);--talos-status-info-subtle:var(--talos-surface-hover);--talos-status-info-subtle-border:rgba(0, 0, 0, 0);--talos-status-info-surface:var(--talos-surface-card);--talos-status-info-border:var(--talos-surface-inert);--talos-shadow-card:0 1px 3px rgba(26, 26, 24, 0.06), 0 0 0 1px rgba(0, 0, 0, 0.02);--talos-shadow-dropdown:0 4px 16px rgba(26, 26, 24, 0.12);--talos-shadow-modal:0 8px 32px rgba(26, 26, 24, 0.16);--talos-shadow-focus:0 0 0 3px rgba(224, 75, 69, 0.30)}.dark{--talos-surface-page:var(--talos-ink-0);--talos-surface-chrome:var(--talos-ink-1);--talos-surface-card:var(--talos-ink-2);--talos-surface-inset:var(--talos-ink-3);--talos-surface-raised:var(--talos-ink-3);--talos-surface-hover:var(--talos-ink-4);--talos-surface-inert:var(--talos-ink-5);--talos-surface-subtle:rgba(255, 255, 255, 0.05);--talos-surface-inverse:var(--talos-ink-10);--talos-surface-paper:var(--talos-paper);--talos-content-emphasis:var(--talos-ink-10);--talos-content-default:var(--talos-ink-9);--talos-content-secondary:var(--talos-ink-8);--talos-content-muted:var(--talos-ink-7);--talos-content-disabled:var(--talos-ink-6);--talos-content-inverse:var(--talos-ink-1);--talos-content-on-accent:var(--talos-white);--talos-border-subtle:rgba(255, 255, 255, 0.06);--talos-border-default:rgba(255, 255, 255, 0.08);--talos-border-strong:rgba(255, 255, 255, 0.14);--talos-border-accent:var(--talos-red-3);--talos-accent-default:var(--talos-red-3);--talos-accent-hover:var(--talos-red-2);--talos-accent-text:var(--talos-red-1);--talos-accent-fill:var(--talos-red-3);--talos-accent-fill-hover:rgba(225, 45, 70, 0.9);--talos-accent-fill-active:var(--talos-red-7);--talos-accent-subtle:rgba(228, 142, 150, 0.20);--talos-accent-gradient:linear-gradient(90deg, var(--talos-gradient-display-1) 0%, var(--talos-gradient-display-2) 51%, var(--talos-gradient-display-3) 100%);--talos-accent-gradient-fill:linear-gradient(270deg, var(--talos-gradient-display-3) 0%, var(--talos-red-3) 30%, var(--talos-red-3) 70%, var(--talos-gradient-display-1) 100%);--talos-status-success-default:var(--talos-green-4);--talos-status-success-text:var(--talos-green-4);--talos-status-success-fill:var(--talos-green-5);--talos-status-success-on-fill:var(--talos-white);--talos-status-success-subtle:var(--talos-green-8);--talos-status-success-subtle-border:var(--talos-green-7);--talos-status-success-surface:var(--talos-surface-card);--talos-status-success-border:var(--talos-surface-inert);--talos-status-warning-default:var(--talos-amber-5);--talos-status-warning-text:var(--talos-amber-5);--talos-status-warning-fill:var(--talos-amber-4);--talos-status-warning-on-fill:var(--talos-cream-10);--talos-status-warning-subtle:var(--talos-amber-8);--talos-status-warning-subtle-border:var(--talos-amber-7);--talos-status-warning-surface:var(--talos-surface-card);--talos-status-warning-border:var(--talos-surface-inert);--talos-status-danger-default:var(--talos-scarlet-4);--talos-status-danger-text:var(--talos-scarlet-4);--talos-status-danger-fill:var(--talos-scarlet-5);--talos-status-danger-on-fill:var(--talos-white);--talos-status-danger-subtle:var(--talos-scarlet-8);--talos-status-danger-subtle-border:var(--talos-scarlet-7);--talos-status-danger-surface:var(--talos-surface-card);--talos-status-danger-border:var(--talos-surface-inert);--talos-status-info-default:var(--talos-stone-1);--talos-status-info-text:var(--talos-stone-1);--talos-status-info-fill:var(--talos-stone-2);--talos-status-info-on-fill:var(--talos-white);--talos-status-info-subtle:var(--talos-surface-hover);--talos-status-info-subtle-border:rgba(0, 0, 0, 0);--talos-status-info-surface:var(--talos-surface-card);--talos-status-info-border:var(--talos-surface-inert);--talos-shadow-card:0 1px 3px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.04);--talos-shadow-dropdown:0 4px 16px rgba(0, 0, 0, 0.5);--talos-shadow-modal:0 8px 32px rgba(0, 0, 0, 0.6);--talos-shadow-focus:0 0 0 3px rgba(224, 75, 69, 0.35)}:root{--primary:212 26 59;--primary-light:228 142 150;--primary-dark:225 45 70;--background-light:245 240 235;--background-dark:11 11 11;--gray-50:245 240 235;--gray-100:240 235 229;--gray-200:230 225 220;--gray-300:216 210 203;--gray-400:138 138 136;--gray-500:104 104 102;--gray-600:79 79 77;--gray-700:58 58 56;--gray-800:46 46 51;--gray-900:26 26 30;--gray-950:11 11 11;--font-inter:var(--talos-font-sans);--font-paper-mono:var(--talos-font-mono)}html #banner{background:var(--talos-accent-gradient-fill)}html #banner,html #banner *{color:var(--talos-content-on-accent)!important}html #banner a{text-decoration-color:var(--talos-red-1)!important}html #topbar-cta-button a>span:first-child{background:var(--talos-accent-fill)}html #topbar-cta-button a:hover>span:first-child{opacity:.9}html #topbar-cta-button a,html #topbar-cta-button a *{color:var(--talos-content-on-accent)!important}html:not(.dark) a[aria-current=page].bg-primary\\/10{background-color:var(--talos-accent-subtle)!important;color:var(--talos-content-emphasis)!important;position:relative}html:not(.dark) a[aria-current=page].bg-primary\\/10::before{content:\"\";position:absolute;left:6px;top:25%;bottom:25%;width:var(--talos-border-edge);border-radius:2px;background:var(--talos-accent-text)}html.dark a[aria-current=page].dark\\:bg-primary-light\\/10{background-color:var(--talos-accent-subtle)!important;color:var(--talos-content-emphasis)!important;position:relative}html.dark a[aria-current=page].dark\\:bg-primary-light\\/10::before{content:\"\";position:absolute;left:6px;top:25%;bottom:25%;width:var(--talos-border-edge);border-radius:2px;background:var(--talos-accent-text)}html:root [data-callout-type=danger]{background-color:var(--talos-status-danger-surface);border-color:var(--talos-status-danger-border)}html:root [data-callout-type=danger] [class*=prose] strong,html:root [data-callout-type=danger] svg{color:var(--talos-status-danger-text)!important}html:root [data-callout-type=check] [class*=prose],html:root [data-callout-type=danger] [class*=prose],html:root [data-callout-type=info] [class*=prose],html:root [data-callout-type=note] [class*=prose],html:root [data-callout-type=tip] [class*=prose],html:root [data-callout-type=warning] [class*=prose]{color:var(--talos-content-default)!important}html.dark [data-callout-type=danger]{border-left:var(--talos-border-edge) solid var(--talos-status-danger-fill)}html:root [data-callout-type=warning]{background-color:var(--talos-status-warning-surface);border-color:var(--talos-status-warning-border)}html:root [data-callout-type=warning] [class*=prose] strong,html:root [data-callout-type=warning] svg{color:var(--talos-status-warning-text)!important}html.dark [data-callout-type=warning]{border-left:var(--talos-border-edge) solid var(--talos-status-warning-fill)}html:root [data-callout-type=tip]{background-color:var(--talos-status-success-surface);border-color:var(--talos-status-success-border)}html:root [data-callout-type=check] [class*=prose] strong,html:root [data-callout-type=check] svg,html:root [data-callout-type=tip] [class*=prose] strong,html:root [data-callout-type=tip] svg{color:var(--talos-status-success-text)!important}html.dark [data-callout-type=tip]{border-left:var(--talos-border-edge) solid var(--talos-status-success-fill)}html:root [data-callout-type=check]{background-color:var(--talos-status-success-surface);border-color:var(--talos-status-success-border)}html.dark [data-callout-type=check]{border-left:var(--talos-border-edge) solid var(--talos-status-success-fill)}html:root [data-callout-type=info],html:root [data-callout-type=note]{background-color:var(--talos-status-info-surface);border-color:var(--talos-status-info-border)}html:root [data-callout-type=info] svg{color:var(--talos-status-info-text)!important}html:root [data-callout-type=info] [class*=prose] strong,html:root [data-callout-type=note] [class*=prose] strong{color:var(--talos-content-emphasis)!important}html:root [data-callout-type=note] svg{color:var(--talos-content-secondary)!important}html #footer a[href*=\"mintlify.com\"]:not(:hover){color:var(--talos-content-muted)!important}"},{"filePath":"home.css","content":"#docs-home{max-width:1040px;margin:0 auto;padding:0 var(--talos-space-base) var(--talos-space-major);font-family:var(--talos-font-sans);font-size:16px;line-height:var(--talos-leading-base);color:var(--talos-content-default)}#docs-home .home-hero{padding:var(--talos-space-major) 0 var(--talos-space-section);text-align:center}#docs-home .home-hero h1{margin:0 0 var(--talos-space-snug);font-size:var(--talos-text-2xl);line-height:var(--talos-leading-tight);font-weight:var(--talos-weight-bold);color:var(--talos-content-emphasis);letter-spacing:-.01em}#docs-home .home-promise{margin:0 auto var(--talos-space-section);max-width:34em;color:var(--talos-content-secondary)}#docs-home .home-search{display:flex;align-items:center;width:100%;max-width:540px;margin:0 auto;background:var(--talos-surface-card);border:1px solid var(--talos-border-default);border-radius:var(--talos-radius-base);box-shadow:var(--talos-shadow-card);padding:0;font:inherit;cursor:pointer;text-align:left}#docs-home .home-search:focus-visible,#docs-home .home-search:hover{box-shadow:var(--talos-shadow-focus);border-color:var(--talos-border-accent);outline:0}#docs-home .home-search-icon{display:flex;align-items:center;padding-left:var(--talos-space-compact);color:var(--talos-content-muted)}#docs-home .home-search-label{flex:1;padding:var(--talos-space-snug);font-size:var(--talos-text-base);color:var(--talos-content-muted)}#docs-home .home-kbd{display:flex;align-items:center;padding-right:var(--talos-space-snug);font-family:var(--talos-font-mono);font-size:var(--talos-text-xs);color:var(--talos-content-muted)}#docs-home .home-domain{margin-bottom:var(--talos-space-major)}#docs-home .home-domain-head{margin-bottom:var(--talos-space-base)}#docs-home .home-card h3,#docs-home .home-domain-head h2{margin:0 0 var(--talos-space-tight);line-height:var(--talos-leading-tight);font-weight:var(--talos-weight-semibold);color:var(--talos-content-emphasis)}#docs-home .home-domain-head h2{font-size:var(--talos-text-lg);display:flex;align-items:center;gap:var(--talos-space-snug)}#docs-home .home-domain-head h2::after{content:'';flex:1;height:1px;background:var(--talos-border-subtle)}#docs-home .home-domain-head p{margin:0;color:var(--talos-content-secondary);font-size:var(--talos-text-base)}#docs-home .home-grid{display:grid;gap:var(--talos-space-base);grid-template-columns:repeat(auto-fill,minmax(248px,1fr))}#docs-home .home-card{display:flex;flex-direction:column;background:var(--talos-surface-card);border:1px solid var(--talos-border-default);border-radius:var(--talos-radius-lg);padding:var(--talos-space-base);text-decoration:none;transition:border-color .12s,box-shadow .12s,transform .12s}#docs-home .home-card--live:hover{border-color:var(--talos-border-strong);box-shadow:var(--talos-shadow-card);transform:translateY(-1px)}#docs-home .home-card--soon{background:var(--talos-surface-subtle);border-style:dashed;cursor:default}#docs-home .home-eyebrow{font-size:var(--talos-text-2xs);letter-spacing:var(--talos-tracking-eyebrow);text-transform:uppercase;font-weight:var(--talos-weight-semibold);color:var(--talos-content-muted);margin-bottom:var(--talos-space-snug);display:flex;align-items:center;gap:var(--talos-space-tight)}#docs-home .home-card h3{font-size:var(--talos-text-md)}#docs-home .home-card p,#docs-home .home-card--soon h3{color:var(--talos-content-secondary)}#docs-home .home-card h3{display:flex;flex-wrap:wrap;align-items:center;column-gap:var(--talos-space-tight);row-gap:var(--talos-space-micro)}#docs-home .home-card p{margin:0 0 var(--talos-space-base);font-size:var(--talos-text-base)}#docs-home .home-card--soon p,#docs-home .home-sep{color:var(--talos-content-muted)}#docs-home .home-card>:last-child{margin-bottom:0}#docs-home .home-cover em,#docs-home .home-meta{font-family:var(--talos-font-mono);font-size:var(--talos-text-xs);letter-spacing:var(--talos-tracking-machine)}#docs-home .home-meta{margin-top:auto;display:flex;align-items:center;gap:var(--talos-space-snug);color:var(--talos-content-muted)}#docs-home .home-pill{border-radius:var(--talos-radius-pill);padding:2px var(--talos-space-tight);font-size:var(--talos-text-2xs);font-family:var(--talos-font-sans);letter-spacing:var(--talos-tracking-normal);font-weight:var(--talos-weight-medium);text-transform:uppercase;background:var(--talos-status-info-subtle);color:var(--talos-status-info-text)}#docs-home .home-covers{display:flex;flex-wrap:wrap;gap:var(--talos-space-tight);margin-bottom:var(--talos-space-base)}#docs-home .home-cover{display:inline-flex;align-items:baseline;gap:var(--talos-space-tight);border:1px solid var(--talos-border-default);border-radius:var(--talos-radius-pill);padding:2px var(--talos-space-snug);font-size:var(--talos-text-xs);font-weight:var(--talos-weight-medium);color:var(--talos-content-default)}#docs-home .home-cover--soon{border-style:dashed;color:var(--talos-content-muted)}#docs-home .home-cover em{font-style:normal;font-weight:var(--talos-weight-regular, 400)}#docs-home .home-columns{display:grid;gap:var(--talos-space-base);grid-template-columns:repeat(4,minmax(0,1fr));row-gap:var(--talos-space-snug)}@media (max-width:960px){#docs-home .home-columns{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:560px){#docs-home .home-columns{grid-template-columns:1fr}}#docs-home .home-column{display:grid;grid-template-rows:subgrid;gap:var(--talos-space-snug)}#docs-home .home-columns--rows-1 .home-column{grid-row:span 2}#docs-home .home-columns--rows-2 .home-column{grid-row:span 3}#docs-home .home-columns--rows-3 .home-column{grid-row:span 4}#docs-home .home-columns--rows-4 .home-column{grid-row:span 5}#docs-home .home-column-head{border-top:2px solid var(--talos-border-strong);padding-top:var(--talos-space-snug);margin-bottom:var(--talos-space-tight)}#docs-home .home-column-head h3{margin:0 0 var(--talos-space-tight);font-size:var(--talos-text-base);font-weight:var(--talos-weight-semibold);color:var(--talos-content-emphasis)}#docs-home .home-column-head p{margin:0;font-size:var(--talos-text-sm);color:var(--talos-content-secondary)}#docs-home .home-grid--tools{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}#docs-home .home-card--tool{padding:var(--talos-space-compact) var(--talos-space-base)}#docs-home .home-card--tool p{margin-bottom:0}#docs-home .home-aside{border-top:1px solid var(--talos-border-subtle);padding-top:var(--talos-space-base);display:flex;flex-wrap:wrap;gap:var(--talos-space-base);align-items:baseline}#docs-home .home-lbl{font-size:var(--talos-text-2xs);text-transform:uppercase;letter-spacing:var(--talos-tracking-eyebrow);font-weight:var(--talos-weight-semibold);color:var(--talos-content-muted)}#docs-home .home-aside a{color:var(--talos-content-default);font-size:var(--talos-text-base);text-decoration:none}#docs-home .home-aside a:hover{color:var(--talos-accent-text);text-decoration:underline}"},{"filePath":"product-chrome.css","content":"html[data-current-path=\"/changelog\"] #sidebar-content{display:none}html[data-current-path=\"/changelog\"] #content-area{width:100%;max-width:60rem}"}],"page":{"pagePath":"talos/v1.13/getting-started/prodnotes","slug":"/talos/v1.13/getting-started/prodnotes","pageMetadata":{"title":"Production Clusters","weight":30,"description":"Recommendations for setting up a Talos Linux cluster in production.","canonical":"https://docs.siderolabs.com/talos/v1.14/getting-started/prodnotes","href":"/talos/v1.13/getting-started/prodnotes"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Recommendations for setting up a Talos Linux cluster in production.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];const VersionWarningBanner=()=>{const _components={a:`a`,..._provideComponents()};const latestVersion=`v1.14`;const[latestUrl,setLatestUrl]=useState(null);const[currentVersion,setCurrentVersion]=useState(null);const[isBeta,setIsBeta]=useState(false);const parseVersion=v=>v.replace(`v`,``).split(`.`).map(Number);const isGreaterVersion=(a,b)=>{const[aMajor,aMinor]=parseVersion(a);const[bMajor,bMinor]=parseVersion(b);if(aMajor>bMajor)return true;if(aMajor===bMajor\u0026\u0026aMinor>bMinor)return true;return false};useEffect(()=>{if(typeof window===`undefined`)return;const{pathname,hash,search}=window.location;const match=pathname.match(/\\/talos\\/(v\\d+\\.\\d+)\\//);if(!match)return;const detectedVersion=match[1];if(detectedVersion===latestVersion)return;setCurrentVersion(detectedVersion);if(isGreaterVersion(detectedVersion,latestVersion)){setIsBeta(true)}const newPath=pathname.replace(`/talos/${detectedVersion}/`,`/talos/${latestVersion}/`);setLatestUrl(`${newPath}${search}${hash}`)},[]);if(!latestUrl||!currentVersion)return null;return _jsx(`div`,{className:`not-prose mint-sticky mint-top-6 mint-z-50 mint-my-6`,children:_jsx(`div`,{className:`mint-border mint-border-yellow-500/30 mint-bg-yellow-500/10 mint-px-4 mint-py-3 mint-rounded-xl`,children:_jsx(`div`,{className:`mint-text-sm`,children:isBeta?_jsxs(_Fragment,{children:[`⚠️ You are viewing a `,_jsx(`strong`,{children:`beta version`}),` of Talos (`,currentVersion,`). This version may be unstable.`,_jsxs(_components.a,{href:latestUrl,className:`mint-ml-2 mint-underline mint-text-yellow-400 hover:mint-text-yellow-300 mint-font-medium`,children:[`View latest stable version `,latestVersion,` →`]})]}):_jsxs(_Fragment,{children:[`⚠️ You are viewing an older version of Talos (`,currentVersion,`).`,_jsxs(_components.a,{href:latestUrl,className:`mint-ml-2 mint-underline mint-text-yellow-400 hover:mint-text-yellow-300 mint-font-medium`,children:[`View the latest version `,latestVersion,` →`]})]})})})})};function _createMdxContent(props){const _components={a:`a`,blockquote:`blockquote`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,Warning,_MdxComponentBoundary}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Warning)_missingMdxReference(`Warning`,true);if(!_MdxComponentBoundary)_missingMdxReference(`_MdxComponentBoundary`,true);return _jsxs(_Fragment,{children:[_jsx(_MdxComponentBoundary,{name:`VersionWarningBanner`,children:_jsx(VersionWarningBanner,{})}),`\n`,_jsxs(_components.p,{children:[`This guide explains things to consider to create a production quality Talos Linux cluster for bare metal.\nCheck out the `,_jsx(_components.a,{href:`https://www.siderolabs.com/resources/`,children:`Reference Architecture documentation`}),` for architectural diagrams and guidance on creating production-grade clusters in other environments.`]}),`\n`,_jsxs(_components.p,{children:[`This guide assumes that you’ve already created a development cluster and are familiar with the `,_jsx(_components.strong,{children:`Getting Started`}),` documentation.\nIf not, please refer to the `,_jsx(_components.a,{href:`/talos/v1.13/getting-started/getting-started`,children:`Getting Started`}),` guide for more information.`]}),`\n`,_jsx(_components.p,{children:`When moving from a learning environment to a production-ready Talos Linux cluster, you have to consider several critical factors:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`High availability for your control plane nodes.`}),`\n`,_jsx(_components.li,{children:`Secure configuration management.`}),`\n`,_jsx(_components.li,{children:`Reliability for continuous service and minimal downtime.`}),`\n`,_jsx(_components.li,{children:`Authentication for access control.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Follow the steps below to build a production-grade Talos cluster that is highly available, reliable, and secure.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Note`}),`: Check out `,_jsx(_components.a,{href:`https://www.siderolabs.com/omni-signup/`,children:`Omni`}),` for managing large-scale Talos Linux clusters automatically.`]}),`\n`,_jsx(Heading,{level:`2`,id:`step-1-prepare-your-infrastructure`,children:`Step 1: Prepare your infrastructure`}),`\n`,_jsx(_components.p,{children:`To create your production cluster infrastructure:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Boot your machines using the Talos ISO image`}),`\n`,_jsx(_components.li,{children:`Ensure network access on your nodes.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Here is how to do each step:`}),`\n`,_jsx(Heading,{level:`3`,id:`boot-your-machines-using-the-talos-iso-image`,children:`Boot your machines using the Talos ISO image`}),`\n`,_jsx(_components.p,{children:`Follow these steps to boot your machines using the Talos ISO image:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Download the latest ISO for your infrastructure depending on the hardware type from the `,_jsx(_components.a,{href:`https://factory.talos.dev/`,children:`Talos Image factory`}),`.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Note`}),`: For network booting and self-built media using published kernel there are a number of required kernel parameters.\nPlease see the `,_jsx(_components.a,{href:`/talos/v1.13/reference/kernel`,children:`kernel`}),` documentation for more information.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Boot three control planes using the ISO image you just downloaded.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Boot additional machines as worker nodes.`}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`ensure-network-access`,children:`Ensure network access`}),`\n`,_jsx(_components.p,{children:`If your nodes are behind a firewall, in a private network, or otherwise not directly reachable, you would need to configure a load balancer to forward TCP port 50000 to reach the nodes for Talos API access.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Note`}),`: Because the Talos Linux API uses gRPC and mutual TLS, it cannot be proxied by a HTTP/S proxy, but only by a TCP load balancer.`]}),`\n`,_jsx(_components.p,{children:`With your control plane and worker nodes booted, next configure your Kubernetes endpoint.`}),`\n`,_jsx(Heading,{level:`2`,id:`step-2-store-your-ip-addresses-in-a-variable`,children:`Step 2: Store your IP addresses in a variable`}),`\n`,_jsx(_components.p,{children:`To store variables for your machines’ IP addresses:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Copy the IP address displayed on each machine console, including the control plane and any worker nodes you’ve created.`}),`\n`,_jsx(_components.p,{children:`If you don’t have a display connected, retrieve the IP addresses from your DHCP server.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Create a Bash array for your control plane node IP addresses, replacing each `,_jsx(_components.code,{children:`\u003ccontrol-plane-ip>`}),` placeholder with the IP address of a control plane node.\nYou can include as many IP addresses as needed:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`CONTROL_PLANE_IP`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003ccontrol-plane-ip-1>\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"\u003ccontrol-plane-ip-2>\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"\u003ccontrol-plane-ip-3>\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`For example`}),`:`]}),`\n`,_jsxs(_components.p,{children:[`If your control plane nodes IP addresses are `,_jsx(_components.code,{children:`192.168.0.2`}),`, `,_jsx(_components.code,{children:`192.168.0.3`}),`, `,_jsx(_components.code,{children:`192.168.0.4`}),`, your command would be:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`CONTROL_PLANE_IP`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"192.168.0.2\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"192.168.0.3\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"192.168.0.4\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`If you have worker nodes, store their IP addresses in a Bash array.\nReplace each `,_jsx(_components.code,{children:`\u003cworker-ip>`}),` placeholder with the actual IP address of a worker node.\nYou can include as many IP addresses as needed:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`WORKER_IP`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"\u003cworker-ip-1>\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"\u003cworker-ip-2>\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"\u003cworker-ip-3>\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`step-3-decide-your-kubernetes-endpoint`,children:`Step 3: Decide your Kubernetes endpoint`}),`\n`,_jsx(_components.p,{children:`You’ve set up multiple control planes for high availability, but they only provide true high availability if the Kubernetes API server endpoint can reach all control plane nodes.`}),`\n`,_jsx(_components.p,{children:`Here are two common ways to configure this:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Dedicated load balancer`}),`: Set a dedicated load balancer that routes to your control plane nodes.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`DNS records`}),`: Create multiple DNS records that point to all your control plane nodes`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`With these, you can pass in one IP address or DNS name during setup that routes to all your control plane nodes.`}),`\n`,_jsx(_components.p,{children:`Here is how you can configure each option:`}),`\n`,_jsx(Heading,{level:`3`,id:`dedicated-load-balancer`,children:`Dedicated load balancer`}),`\n`,_jsx(_components.p,{children:`If you’re using a cloud provider or have your own load balancer (such as HAProxy, an NGINX reverse proxy, or an F5 load balancer), setting up a dedicated load balancer is a natural choice.`}),`\n`,_jsxs(_components.p,{children:[`It is also important to note that if you `,_jsx(_components.a,{href:`https://omni.siderolabs.com/tutorials/getting_started`,children:`created the cluster with Omni`}),`, Omni will automatically be a load balancer for your Kubernetes endpoint.`]}),`\n`,_jsx(_components.p,{children:`Configure a frontend to listen on TCP port 6443 and direct traffic to the addresses of your Talos control plane nodes.`}),`\n`,_jsxs(_components.p,{children:[`Your Kubernetes endpoint will be the IP address or DNS name of the load balancer’s frontend, with the port appended, for example, `,_jsx(_components.code,{children:`https://myK8s.mydomain.io:6443`}),`.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Note`}),`: You cannot use a HTTP load balancer, because the Kubernetes API server handles TLS termination and mutual TLS authentication.`]}),`\n`,_jsx(Heading,{level:`3`,id:`dns-records`,children:`DNS records`}),`\n`,_jsx(_components.p,{children:`Additionally, you can configure your Kubernetes endpoint using DNS records.\nSimply, add multiple A or AAAA records, one for each control plane, to a DNS name.`}),`\n`,_jsx(_components.p,{children:`For example, you can add:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`kube.cluster1.mydomain.com IN A 192.168.0.10`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`kube.cluster1.mydomain.com IN A 192.168.0.11`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`kube.cluster1.mydomain.com IN A 192.168.0.12`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Then your endpoint would be:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://kube.cluster1.mydomain.com:6443`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.blockquote,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Note`}),`: This endpoint serves as a fallback if `,_jsx(_components.a,{href:`/talos/v1.13/configure-your-talos-cluster/system-configuration/kubeprism`,children:`KubePrism`}),` becomes unavailable, for example, after a reboot. It also ensures that Talos nodes can still locate and communicate with the control plane if other discovery services are not available.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`step-4-save-your-endpoint-in-a-variable`,children:`Step 4: Save your endpoint in a variable`}),`\n`,_jsxs(_components.p,{children:[`Set a variable to store the endpoint you chose in Step 3.\nReplace `,_jsx(_components.code,{children:`\u003cyour_endpoint>`}),` placeholder with your actual endpoint:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` YOUR_ENDPOINT`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=\u003c`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`your_endpoint`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`step-5-generate-secrets-bundle`,children:`Step 5: Generate secrets bundle`}),`\n`,_jsx(_components.p,{children:`The secrets bundle is a file that contains all the cryptographic keys, certificates, and tokens needed to secure your Talos Linux cluster.`}),`\n`,_jsx(_components.p,{children:`To generate the secrets bundle, run:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`talosctl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` gen`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` secrets`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -o`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` secrets.yaml`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`step-6-generate-machine-configurations`,children:`Step 6: Generate machine configurations`}),`\n`,_jsx(_components.p,{children:`Follow these steps to generate machine configuration:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Set a variable for your cluster name by running the following command.\nReplace `,_jsx(_components.code,{children:`\u003cyour_cluster_name>`}),` with the name you want to give your cluster:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` CLUSTER_NAME`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=\u003c`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`your_cluster_name`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Run this command to generate your machine configuration files using your secrets bundle:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`talosctl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` gen`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --with-secrets`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` secrets.yaml`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $CLUSTER_NAME`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$YOUR_ENDPOINT`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`:6443`})]}),`\n`]})})}),`\n`,_jsxs(Note,{children:[_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`talosctl`}),` version (`,_jsx(_components.code,{children:`talosctl version --client`}),`) should match the Talos OS version installed on your nodes.\nIf you are using a newer version of `,_jsx(_components.code,{children:`talosctl`}),` to generate configurations for an older Talos OS, use the `,_jsx(_components.code,{children:`--talos-version`}),` flag to ensure compatibility.\nFor example, to generate a configuration compatible with Talos v1.13:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`talosctl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` gen`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --with-secrets`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` secrets.yaml`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --talos-version`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` v1.13`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $CLUSTER_NAME`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$YOUR_ENDPOINT`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`:6443`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`Even when using `,_jsx(_components.code,{children:`--talos-version`}),`, review the generated configuration files to verify that the Kubernetes version is supported by your target Talos OS.\nRefer to the `,_jsx(_components.a,{href:`/talos/v1.13/getting-started/support-matrix`,children:`support matrix`}),` to check which Kubernetes versions are compatible with your Talos version.`]})]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`This command will generate three files:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`controlplane.yaml`}),`: Configuration for your control plane.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`worker.yaml`}),`: Configuration for your worker nodes.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`talosconfig`}),`: The `,_jsx(_components.code,{children:`talosctl`}),` configuration file used to connect to and authenticate with your cluster.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`step-7-unmount-the-iso`,children:`Step 7: Unmount the ISO`}),`\n`,_jsx(_components.p,{children:`Unplug your installation USB drive or unmount the ISO from all your control plane and worker nodes.\nThis prevents you from accidentally installing to the USB drive and makes it clearer which disk to select for installation.`}),`\n`,_jsx(Heading,{level:`2`,id:`step-8-understand-your-nodes`,children:`Step 8: Understand your nodes`}),`\n`,_jsx(_components.p,{children:`The default machine configurations for control plane and worker nodes are typically sufficient to get your cluster running.\nHowever, you may need to customize certain settings such as network interfaces and disk configurations depending on your specific environment.`}),`\n`,_jsx(_components.p,{children:`Follow these steps to verify that your machine configurations are set up correctly:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Check network interfaces`}),`: Run this command to view all network interfaces on any node, whether control plane or worker.`]}),`\n`,_jsxs(_components.p,{children:[`Replace `,_jsx(_components.code,{children:`\u003cnode-ip-address>`}),` with the IP of the node you want to inspect.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Note`}),`: Copy the network ID with an Operational state (OPER) value of `,_jsx(_components.strong,{children:`up`}),`.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`talosctl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --nodes`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`node-ip-addres`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`s`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` get`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` links`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --insecure`})]}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Check Available Disks:`}),` Run this command to check all available disks on any node.\nReplace `,_jsx(_components.code,{children:`\u003cnode-ip-address>`}),` with the IP address of the node you want to inspect:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`talosctl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` get`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` disks`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --insecure`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --nodes`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`node-ip-addres`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`s`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Verify Configuration Files:`}),` Open your `,_jsx(_components.code,{children:`worker.yaml`}),` and `,_jsx(_components.code,{children:`controlplane.yaml`}),` configuration files in your preferred editor.\nCheck that the values match your worker and control plane node’s network and disk settings.\nIf the values don’t match, you’ll need to update your machine configuration.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Note`}),`: Refer to the `,_jsx(_components.a,{href:`/talos/v1.13/reference/cli`,children:`Talos CLI reference`}),` for additional commands to gather more information about your nodes and cluster.`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`step-9-patch-your-machine-configuration-optional`,children:`Step 9: Patch your machine configuration (optional)`}),`\n`,_jsx(_components.p,{children:`You can patch your worker and control plane machine configuration to reflect the correct network interface and disk of your control plane nodes.`}),`\n`,_jsx(_components.p,{children:`Follow these steps to patch your machine configuration:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Create patch files for the configurations you want to modify:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`touch`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` controlplane-patch-1.yaml`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # For patching the control plane nodes configuration`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`touch`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` worker-patch-1.yaml`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # For patching the worker nodes configuration`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Note`}),`: You don’t have to create both patch files, only create patches for the configurations you actually need to modify.`]}),`\n`,_jsxs(_components.p,{children:[`You can also create multiple patch files (e.g., `,_jsx(_components.code,{children:`controlplane-patch-2.yaml`}),`, `,_jsx(_components.code,{children:`controlplane-patch-3.yaml`}),`) if you want to make multiple subsequent patches to the same machine configuration.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Copy and paste this YAML block of code and add the correct hardware values to each patch file.`}),`\n`,_jsxs(_components.p,{children:[`For example, for `,_jsx(_components.code,{children:`controlplane-patch-1`}),` use the network interface and disk information you gathered from your control plane nodes:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# controlplane-patch-1 file`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`machine`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` network`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` interfaces`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`interface`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\u003ccontrol-plane-network-interface>`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # From control plane node`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` dhcp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` install`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` disk`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/dev/\u003ccontrol-plane-disk-name>`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # From control plane node`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`For `,_jsx(_components.code,{children:`worker-patch-1.yaml`}),`, use network interface and disk information from your worker nodes:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`9`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# worker-patch-1.yaml file`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`machine`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` network`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` interfaces`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` - `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`interface`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\u003cworker-network-interface>`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # From worker node`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` dhcp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` install`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` disk`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/dev/\u003cworker-disk-name>`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # From worker node`})]}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Apply the different patch files for the different machine configuration:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`For control plane`}),`:`]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`talosctl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` machineconfig`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` patch`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` controlplane.yaml`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --patch`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` @controlplane-patch-1.yaml`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --output`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` controlplane.yaml`})]}),`\n`]})})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`For worker`}),`:`]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`talosctl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` machineconfig`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` patch`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` worker.yaml`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --patch`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` @worker-patch-1.yaml`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --output`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` worker.yaml`})]}),`\n`]})})}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Additionally, you can learn more about `,_jsx(_components.a,{href:`/talos/v1.13/configure-your-talos-cluster/system-configuration/patching`,children:`patches`}),` from the configuration patches documentation.`]}),`\n`,_jsx(Heading,{level:`2`,id:`step-10-configure-your-multihomed-machines`,children:`Step 10: Configure your multihomed machines`}),`\n`,_jsxs(_components.p,{children:[`If your machines are multihomed, i.e., they have more than one IPv4 and/or IPv6 addresses other than loopback, then additional configuration is required.\nRefer to `,_jsx(_components.a,{href:`/talos/v1.13/networking/multihoming`,children:`Multihoming`}),` for more information.`]}),`\n`,_jsx(Heading,{level:`2`,id:`step-11-apply-the-machine-configuration`,children:`Step 11: Apply the machine configuration`}),`\n`,_jsx(_components.p,{children:`To apply your machine configuration:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Run this command to apply the `,_jsx(_components.code,{children:`controlplane.yaml`}),` configuration to your control plane nodes:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`for`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` ip`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` in`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:' \"${'}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`CONTROL_PLANE_IP`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`[`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`@`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`]}\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`; `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`do`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` echo`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"=== Applying configuration to node `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$ip`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ===\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` talosctl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` apply-config`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --insecure`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --nodes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $ip`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --file`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` controlplane.yaml`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` echo`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Configuration applied to `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$ip`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` echo`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`done`})}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Run this command to apply the `,_jsx(_components.code,{children:`worker.yaml`}),`configuration to your worker node:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`for`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` ip`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` in`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:' \"${'}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`WORKER_IP`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`[`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`@`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`]}\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`; `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`do`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` echo`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"=== Applying configuration to node `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$ip`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ===\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` talosctl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` apply-config`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --insecure`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --nodes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` $ip`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --file`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` worker.yaml`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` echo`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Configuration applied to `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$ip`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` echo`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`done`})}),`\n`]})})}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`step-12-manage-your-talos-configuration-file`,children:`Step 12: Manage your Talos configuration file`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`talosconfig`}),` is your key to managing the Talos Linux cluster, without it, you cannot authenticate or communicate with your cluster nodes using `,_jsx(_components.code,{children:`talosctl`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`You have two options for managing your `,_jsx(_components.code,{children:`talosconfig`}),`:`]}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Merge your new `,_jsx(_components.code,{children:`talosconfig`}),` into the default configuration file located at `,_jsx(_components.code,{children:`~/.talos/config`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`talosctl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` merge`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ./talosconfig`})]}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Copy the configuration file to your `,_jsx(_components.code,{children:`~/.talos`}),` directory and set the `,_jsx(_components.code,{children:`TALOSCONFIG`}),` environment variable:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`mkdir`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -p`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ~/.talos`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`cp`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ./talosconfig`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ~/.talos/config`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` TALOSCONFIG`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=~`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`/.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`talos`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`config`})]}),`\n`]})})}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`step-13-set-endpoints-of-your-control-plane-nodes`,children:`Step 13: Set endpoints of your control plane nodes`}),`\n`,_jsx(_components.p,{children:`Configure your endpoints to enable talosctl to automatically load balance requests and fail over between control plane nodes when individual nodes become unavailable.`}),`\n`,_jsx(_components.p,{children:`Run this command to configure your endpoints:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`talosctl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` endpoint`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:' \"${'}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`CONTROL_PLANE_IP`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`[`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`@`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`]}\"`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`step-14-bootstrap-your-kubernetes-cluster`,children:`Step 14: Bootstrap your Kubernetes cluster`}),`\n`,_jsx(_components.p,{children:`Wait for your control plane nodes to finish booting, then bootstrap your etcd cluster by running the command below.`}),`\n`,_jsxs(_components.p,{children:[`Bootstrap using any one of the IP addresses in your `,_jsx(_components.code,{children:`CONTROL_PLANE_IP`}),` array, the example below uses the first (index `,_jsx(_components.code,{children:`0`}),`), but any index works:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`BOOTSTRAP_NODE`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:'\"${'}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`CONTROL_PLANE_IP`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`[0]}\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`talosctl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` bootstrap`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --nodes`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$BOOTSTRAP_NODE`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`})]}),`\n`]})})}),`\n`,_jsx(Warning,{children:`Run this command ONCE on a SINGLE control plane node.`}),`\n`,_jsx(Heading,{level:`2`,id:`step-15-get-kubernetes-access`,children:`Step 15: Get Kubernetes access`}),`\n`,_jsxs(_components.p,{children:[`Download your `,_jsx(_components.code,{children:`kubeconfig`}),` file to start using `,_jsx(_components.code,{children:`kubectl`}),` with your cluster.\nThese commands must be run against a single control plane node.`]}),`\n`,_jsxs(_components.p,{children:[`You have two options for managing your `,_jsx(_components.code,{children:`kubeconfig`}),`:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Merge into your default `,_jsx(_components.code,{children:`kubeconfig`}),`:`]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`talosctl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` kubeconfig`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --nodes`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$BOOTSTRAP_NODE`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`})]}),`\n`]})})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Create a separate `,_jsx(_components.code,{children:`kubeconfig`}),` file:`]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`talosctl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` kubeconfig`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` alternative-kubeconfig`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --nodes`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$BOOTSTRAP_NODE`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` KUBECONFIG`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`./`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`alternative-kubeconfig`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`step-16-verify-your-nodes-are-running`,children:`Step 16: Verify your nodes are running`}),`\n`,_jsx(_components.p,{children:`Run the command to ensure that your nodes are running:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`kubectl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` get`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` nodes`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next steps`}),`\n`,_jsx(_components.p,{children:`Congratulations!\nYou now have a working production grade Talos Linux Kubernetes cluster.`}),`\n`,_jsx(Heading,{level:`3`,id:`what’s-next`,children:`What’s next?`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/kubernetes-guides/csi/storage`,children:`Set up persistent storage`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/kubernetes-guides/monitoring-and-observability/deploy-metrics-server`,children:`Deploy a Metrics Server`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/talos/v1.13/reference/cli`,children:`Explore the talosctl CLI reference`})}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{VersionWarningBanner,default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Production Clusters","weight":30,"description":"Recommendations for setting up a Talos Linux cluster in production.","canonical":"https://docs.siderolabs.com/talos/v1.14/getting-started/prodnotes","href":"/talos/v1.13/getting-started/prodnotes"}}},"mdxSourceWithNoJs":null,"noJsSplices":[[159,2109,"null;function _creat"]]},"mdxExtracts":{"tableOfContents":[{"title":"Step 1: Prepare your infrastructure","slug":"step-1-prepare-your-infrastructure","depth":2,"children":[{"title":"Boot your machines using the Talos ISO image","slug":"boot-your-machines-using-the-talos-iso-image","depth":3,"children":[]},{"title":"Ensure network access","slug":"ensure-network-access","depth":3,"children":[]}]},{"title":"Step 2: Store your IP addresses in a variable","slug":"step-2-store-your-ip-addresses-in-a-variable","depth":2,"children":[]},{"title":"Step 3: Decide your Kubernetes endpoint","slug":"step-3-decide-your-kubernetes-endpoint","depth":2,"children":[{"title":"Dedicated load balancer","slug":"dedicated-load-balancer","depth":3,"children":[]},{"title":"DNS records","slug":"dns-records","depth":3,"children":[]}]},{"title":"Step 4: Save your endpoint in a variable","slug":"step-4-save-your-endpoint-in-a-variable","depth":2,"children":[]},{"title":"Step 5: Generate secrets bundle","slug":"step-5-generate-secrets-bundle","depth":2,"children":[]},{"title":"Step 6: Generate machine configurations","slug":"step-6-generate-machine-configurations","depth":2,"children":[]},{"title":"Step 7: Unmount the ISO","slug":"step-7-unmount-the-iso","depth":2,"children":[]},{"title":"Step 8: Understand your nodes","slug":"step-8-understand-your-nodes","depth":2,"children":[]},{"title":"Step 9: Patch your machine configuration (optional)","slug":"step-9-patch-your-machine-configuration-optional","depth":2,"children":[]},{"title":"Step 10: Configure your multihomed machines","slug":"step-10-configure-your-multihomed-machines","depth":2,"children":[]},{"title":"Step 11: Apply the machine configuration","slug":"step-11-apply-the-machine-configuration","depth":2,"children":[]},{"title":"Step 12: Manage your Talos configuration file","slug":"step-12-manage-your-talos-configuration-file","depth":2,"children":[]},{"title":"Step 13: Set endpoints of your control plane nodes","slug":"step-13-set-endpoints-of-your-control-plane-nodes","depth":2,"children":[]},{"title":"Step 14: Bootstrap your Kubernetes cluster","slug":"step-14-bootstrap-your-kubernetes-cluster","depth":2,"children":[]},{"title":"Step 15: Get Kubernetes access","slug":"step-15-get-kubernetes-access","depth":2,"children":[]},{"title":"Step 16: Verify your nodes are running","slug":"step-16-verify-your-nodes-are-running","depth":2,"children":[]},{"title":"Next steps","slug":"next-steps","depth":2,"children":[{"title":"What’s next?","slug":"what’s-next","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/siderolabs-fe86397c/35f5b79d0f96f08e/script/cookie.js","/_mintlify/custom/siderolabs-fe86397c/3cbe4d3646b78d4f/home.js","/_mintlify/custom/siderolabs-fe86397c/d57b1e900c03bdac/script/contextual-chrome.js","/_mintlify/custom/siderolabs-fe86397c/8e8b7fbcff2dadcd/script/product-nav.js"],"dynamicCss":".mint-sticky {\n position: sticky\n}\n.mint-top-6 {\n top: 1.5rem\n}\n.mint-z-50 {\n z-index: 50\n}\n.mint-my-6 {\n margin-top: 1.5rem;\n margin-bottom: 1.5rem\n}\n.mint-ml-2 {\n margin-left: 0.5rem\n}\n.mint-rounded-xl {\n border-radius: 0.75rem\n}\n.mint-border {\n border-width: 1px\n}\n.mint-border-yellow-500\\/30 {\n border-color: rgb(234 179 8 / 0.3)\n}\n.mint-bg-yellow-500\\/10 {\n background-color: rgb(234 179 8 / 0.1)\n}\n.mint-px-4 {\n padding-left: 1rem;\n padding-right: 1rem\n}\n.mint-py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem\n}\n.mint-text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem\n}\n.mint-font-medium {\n font-weight: 500\n}\n.mint-text-yellow-400 {\n --tw-text-opacity: 1;\n color: rgb(250 204 21 / var(--tw-text-opacity, 1))\n}\n.mint-underline {\n text-decoration-line: underline\n}\n.hover\\:mint-text-yellow-300:hover {\n --tw-text-opacity: 1;\n color: rgb(253 224 71 / var(--tw-text-opacity, 1))\n}","subdomain":"siderolabs-fe86397c","siteName":"Sidero Documentation","title":"Production Clusters - Sidero Documentation","navMaps":{"firstHrefInVersion":{"v1.14":{"href":"/talos/v1.14/getting-started/prodnotes","matchLevel":1,"canonicalOverride":true},"v1.13":{"href":"/talos/v1.13/getting-started/prodnotes","matchLevel":0},"v1.12":{"href":"/talos/v1.12/getting-started/prodnotes","matchLevel":1,"canonicalOverride":true},"v1.11":{"href":"/talos/v1.11/getting-started/prodnotes","matchLevel":1,"canonicalOverride":true},"v1.10":{"href":"/talos/v1.10/getting-started/prodnotes","matchLevel":1,"canonicalOverride":true},"v1.9":{"href":"/talos/v1.9/getting-started/prodnotes","matchLevel":1,"canonicalOverride":true},"v1.8":{"href":"/talos/v1.8/getting-started/prodnotes","matchLevel":1,"canonicalOverride":true}},"firstHrefInLanguage":{}},"lastModified":"2026-09-03T08:42:23.157Z","originalFileLocation":"talos/v1.13/getting-started/prodnotes.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Recommendations for setting up a Talos Linux cluster in production.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Sidero Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/siderolabs-fe86397c/3so3sf5kkBQmhola/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/siderolabs-fe86397c/3so3sf5kkBQmhola/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/siderolabs-fe86397c/3so3sf5kkBQmhola/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/siderolabs-fe86397c/3so3sf5kkBQmhola/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/siderolabs-fe86397c/3so3sf5kkBQmhola/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/siderolabs-fe86397c/3so3sf5kkBQmhola/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/siderolabs-fe86397c/3so3sf5kkBQmhola/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/siderolabs-fe86397c/3so3sf5kkBQmhola/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/siderolabs-fe86397c/3so3sf5kkBQmhola/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Production Clusters - Sidero Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Recommendations for setting up a Talos Linux cluster in production.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Sidero Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.siderolabs.com/talos/v1.14/getting-started/prodnotes\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://siderolabs-fe86397c.mintlify.app/_mintlify/api/og/v2?division=Getting+Started\u0026amp;title=Production+Clusters\u0026amp;description=Recommendations+for+setting+up+a+Talos+Linux+cluster+in+production.\u0026amp;theme=5b4a3f49513fdcc9466113ef\u0026amp;signature=f38745919a19a01668ca1cbd24d5820aa69c63e9d2c1d297ff54211d637b2894\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Production Clusters - Sidero Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Recommendations for setting up a Talos Linux cluster in production.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://siderolabs-fe86397c.mintlify.app/_mintlify/api/og/v2?division=Getting+Started\u0026amp;title=Production+Clusters\u0026amp;description=Recommendations+for+setting+up+a+Talos+Linux+cluster+in+production.\u0026amp;theme=5b4a3f49513fdcc9466113ef\u0026amp;signature=f38745919a19a01668ca1cbd24d5820aa69c63e9d2c1d297ff54211d637b2894\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/siderolabs-fe86397c/3so3sf5kkBQmhola/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Sidero Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#D41A3B\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.siderolabs.com/talos/v1.14/getting-started/prodnotes\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/talos/v1.13/getting-started/prodnotes.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.siderolabs.com/#organization\",\"name\":\"Sidero Documentation\",\"url\":\"https://docs.siderolabs.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/siderolabs-fe86397c/G9H15xhTYrTLoHZE/images/sidero-light.svg?fit=max\u0026auto=format\u0026n=G9H15xhTYrTLoHZE\u0026q=85\u0026s=111c3a81dfd33536a250355ab70d5b5f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.siderolabs.com#website\",\"name\":\"Sidero Documentation\",\"url\":\"https://docs.siderolabs.com\",\"publisher\":{\"@id\":\"https://docs.siderolabs.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.siderolabs.com/talos/v1.14/getting-started/prodnotes#webpage\",\"url\":\"https://docs.siderolabs.com/talos/v1.14/getting-started/prodnotes\",\"name\":\"Production Clusters\",\"description\":\"Recommendations for setting up a Talos Linux cluster in production.\",\"dateModified\":\"2026-09-03T08:42:23.157Z\",\"isPartOf\":{\"@id\":\"https://docs.siderolabs.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.siderolabs.com/talos/v1.14/getting-started/prodnotes#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.siderolabs.com/talos/v1.14/getting-started/prodnotes#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Getting Started\",\"item\":\"https://docs.siderolabs.com/talos/v1.13/getting-started/system-requirements\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Production Clusters\",\"item\":\"https://docs.siderolabs.com/talos/v1.14/getting-started/prodnotes\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.siderolabs.com/talos/v1.14/getting-started/prodnotes#article\",\"headline\":\"Production Clusters\",\"name\":\"Production Clusters\",\"description\":\"Recommendations for setting up a Talos Linux cluster in production.\",\"url\":\"https://docs.siderolabs.com/talos/v1.14/getting-started/prodnotes\",\"mainEntityOfPage\":{\"@id\":\"https://docs.siderolabs.com/talos/v1.14/getting-started/prodnotes#webpage\"},\"dateModified\":\"2026-09-03T08:42:23.157Z\",\"publisher\":{\"@id\":\"https://docs.siderolabs.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.siderolabs.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Sidero Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Sidero Documentation","nav":{"global":null,"products":[{"product":"Talos Linux","icon":"https://mintlify.s3.us-west-1.amazonaws.com/siderolabs-fe86397c/images/talos.svg","description":"Bring up a Kubernetes cluster on Talos Linux and operate it day to day.","versions":[{"version":"v1.14","pages":[{"title":"v1.14","href":"/talos/v1.14/getting-started/prodnotes"}]},{"version":"v1.13","groups":[{"group":"Overview","pages":[{"title":"What is Talos Linux?","href":"/talos/v1.13/overview/what-is-talos"}]},{"group":"Getting Started","pages":[{"title":"System Requirements","href":"/talos/v1.13/getting-started/system-requirements"},{"title":"talosctl","href":"/talos/v1.13/getting-started/talosctl"},{"title":"Quickstart","href":"/talos/v1.13/getting-started/quickstart"},{"title":"Getting Started","description":"A guide to setting up a Talos cluster","href":"/talos/v1.13/getting-started/getting-started"},{"title":"Production Clusters","href":"/talos/v1.13/getting-started/prodnotes"},{"title":"Deploy Your First Workload","description":"Deploy a sample workload to get started.","href":"/talos/v1.13/getting-started/deploy-first-workload"},{"title":"What's New in Talos 1.13.0","href":"/talos/v1.13/getting-started/what's-new-in-talos"},{"title":"Support Matrix","href":"/talos/v1.13/getting-started/support-matrix"}]},{"group":"Platform specific installation","pages":[{"group":"Bare Metal Platforms","pages":[{"title":"Boot Loader","href":"/talos/v1.13/platform-specific-installations/bare-metal-platforms/bootloader"},{"title":"Equinix Metal","href":"/talos/v1.13/platform-specific-installations/bare-metal-platforms/equinix-metal"},{"title":"ISO","href":"/talos/v1.13/platform-specific-installations/bare-metal-platforms/iso"},{"title":"Matchbox","href":"/talos/v1.13/platform-specific-installations/bare-metal-platforms/matchbox"},{"title":"Network Configuration","href":"/talos/v1.13/platform-specific-installations/bare-metal-platforms/network-config"},{"title":"Metal Network Configuration","href":"/talos/v1.13/platform-specific-installations/bare-metal-platforms/metal-network-configuration"},{"title":"PXE","href":"/talos/v1.13/platform-specific-installations/bare-metal-platforms/pxe"},{"title":"SecureBoot","href":"/talos/v1.13/platform-specific-installations/bare-metal-platforms/secureboot"}]},{"group":"Virtualized Platforms","pages":[{"title":"Hyper-V","href":"/talos/v1.13/platform-specific-installations/virtualized-platforms/hyper-v"},{"title":"KVM","href":"/talos/v1.13/platform-specific-installations/virtualized-platforms/kvm"},{"title":"OpenNebula","href":"/talos/v1.13/platform-specific-installations/virtualized-platforms/opennebula"},{"title":"Proxmox","href":"/talos/v1.13/platform-specific-installations/virtualized-platforms/proxmox"},{"title":"Vagrant \u0026 Libvirt","href":"/talos/v1.13/platform-specific-installations/virtualized-platforms/vagrant-libvirt"},{"title":"VMware","href":"/talos/v1.13/platform-specific-installations/virtualized-platforms/vmware"},{"title":"Xen","href":"/talos/v1.13/platform-specific-installations/virtualized-platforms/xen"},{"title":"Xen Orchestra","href":"/talos/v1.13/platform-specific-installations/virtualized-platforms/xenorchestra"}]},{"group":"Cloud Platforms","pages":[{"title":"Akamai","href":"/talos/v1.13/platform-specific-installations/cloud-platforms/akamai"},{"title":"AWS","href":"/talos/v1.13/platform-specific-installations/cloud-platforms/aws"},{"title":"Azure","href":"/talos/v1.13/platform-specific-installations/cloud-platforms/azure"},{"title":"CloudStack","href":"/talos/v1.13/platform-specific-installations/cloud-platforms/cloudstack"},{"title":"DigitalOcean","href":"/talos/v1.13/platform-specific-installations/cloud-platforms/digitalocean"},{"title":"Exoscale","href":"/talos/v1.13/platform-specific-installations/cloud-platforms/exoscale"},{"title":"GCP","href":"/talos/v1.13/platform-specific-installations/cloud-platforms/gcp"},{"title":"Hetzner","href":"/talos/v1.13/platform-specific-installations/cloud-platforms/hetzner"},{"title":"Kubernetes","href":"/talos/v1.13/platform-specific-installations/cloud-platforms/kubernetes"},{"title":"Nocloud","href":"/talos/v1.13/platform-specific-installations/cloud-platforms/nocloud"},{"title":"OpenStack","href":"/talos/v1.13/platform-specific-installations/cloud-platforms/openstack"},{"title":"Oracle","href":"/talos/v1.13/platform-specific-installations/cloud-platforms/oracle"},{"title":"OVHcloud","href":"/talos/v1.13/platform-specific-installations/cloud-platforms/ovhcloud"},{"title":"Scaleway","href":"/talos/v1.13/platform-specific-installations/cloud-platforms/scaleway"},{"title":"UpCloud","href":"/talos/v1.13/platform-specific-installations/cloud-platforms/upcloud"},{"title":"Vultr","href":"/talos/v1.13/platform-specific-installations/cloud-platforms/vultr"}]},{"group":"Local Platforms","pages":[{"title":"Docker","href":"/talos/v1.13/platform-specific-installations/local-platforms/docker"},{"title":"QEMU","href":"/talos/v1.13/platform-specific-installations/local-platforms/qemu"},{"title":"VirtualBox","href":"/talos/v1.13/platform-specific-installations/local-platforms/virtualbox"}]},{"group":"Single Board Computers","pages":[{"title":"Banana Pi M64","href":"/talos/v1.13/platform-specific-installations/single-board-computers/bananapi_m64"},{"title":"Friendlyelec Nano PI R4S","href":"/talos/v1.13/platform-specific-installations/single-board-computers/nanopi_r4s"},{"title":"Jetson Nano","href":"/talos/v1.13/platform-specific-installations/single-board-computers/jetson_nano"},{"title":"Libre Computer Board ALL-H3-CC","href":"/talos/v1.13/platform-specific-installations/single-board-computers/libretech_all_h3_cc_h5"},{"title":"Orange Pi 5","href":"/talos/v1.13/platform-specific-installations/single-board-computers/orangepi_5"},{"title":"Orange Pi R1 Plus LTS","href":"/talos/v1.13/platform-specific-installations/single-board-computers/orangepi_r1_plus_lts"},{"title":"Pine64","href":"/talos/v1.13/platform-specific-installations/single-board-computers/pine64"},{"title":"Pine64 Rock64","href":"/talos/v1.13/platform-specific-installations/single-board-computers/rock64"},{"title":"Radxa ROCK 4C Plus","href":"/talos/v1.13/platform-specific-installations/single-board-computers/rock4cplus"},{"title":"Radxa ROCK 5B","href":"/talos/v1.13/platform-specific-installations/single-board-computers/rock5b"},{"title":"Radxa ROCK PI 4","href":"/talos/v1.13/platform-specific-installations/single-board-computers/rockpi_4"},{"title":"Radxa ROCK PI 4C","href":"/talos/v1.13/platform-specific-installations/single-board-computers/rockpi_4c"},{"title":"Raspberry Pi Series","href":"/talos/v1.13/platform-specific-installations/single-board-computers/rpi_generic"},{"title":"Turing RK1","href":"/talos/v1.13/platform-specific-installations/single-board-computers/turing_rk1"},{"title":"Unofficial Ports","href":"/talos/v1.13/platform-specific-installations/single-board-computers/unofficial"}]},{"title":"Boot Assets","href":"/talos/v1.13/platform-specific-installations/boot-assets"},{"title":"Air-gapped Environments","href":"/talos/v1.13/platform-specific-installations/air-gapped"},{"title":"Omni SaaS","href":"/talos/v1.13/platform-specific-installations/omni"}]},{"group":"Deploying and managing workloads","pages":[{"title":"Interactive Dashboard","href":"/talos/v1.13/deploy-and-manage-workloads/interactive-dashboard"},{"title":"Scale up a Talos cluster","href":"/talos/v1.13/deploy-and-manage-workloads/scaling-up"},{"title":"Scale down a Talos cluster","href":"/talos/v1.13/deploy-and-manage-workloads/scaling-down"},{"title":"Enable workloads on your control plane nodes","href":"/talos/v1.13/deploy-and-manage-workloads/workloads-on-controlplane"}]},{"group":"Networking","pages":[{"group":"Network Configuration","pages":[{"title":"Overview","href":"/talos/v1.13/networking/configuration/overview"},{"title":"Link Aliases","href":"/talos/v1.13/networking/configuration/aliases"},{"title":"Physical Links","href":"/talos/v1.13/networking/configuration/physical"},{"title":"Static Addressing","href":"/talos/v1.13/networking/configuration/static"},{"title":"Dynamic Addressing (DHCP)","href":"/talos/v1.13/networking/configuration/dynamic"},{"title":"Hostname","href":"/talos/v1.13/networking/configuration/hostname"},{"title":"Resolvers","href":"/talos/v1.13/networking/configuration/resolvers"},{"title":"Time Servers","href":"/talos/v1.13/networking/configuration/time"}]},{"group":"Logical Links","pages":[{"title":"VLAN","href":"/talos/v1.13/networking/logical/vlan"},{"title":"Bond","href":"/talos/v1.13/networking/logical/bond"},{"title":"Bridge","href":"/talos/v1.13/networking/logical/bridge"}]},{"group":"Advanced Configuration","pages":[{"title":"Blackhole Routes","href":"/talos/v1.13/networking/advanced/blackhole"},{"title":"Ethernet Configuration","href":"/talos/v1.13/networking/advanced/ethernet-config"},{"title":"Routing Rules","href":"/talos/v1.13/networking/advanced/routing-rules"},{"title":"Virtual (shared) IP","href":"/talos/v1.13/networking/advanced/vip"},{"title":"VRF","href":"/talos/v1.13/networking/advanced/vrf"},{"title":"Wireguard","href":"/talos/v1.13/networking/advanced/wireguard"}]},{"title":"Corporate Proxies","href":"/talos/v1.13/networking/corporate-proxies"},{"title":"Egress Domains","href":"/talos/v1.13/networking/egress-domains"},{"title":"Host DNS","href":"/talos/v1.13/networking/host-dns"},{"title":"Ingress Firewall","href":"/talos/v1.13/networking/ingress-firewall"},{"title":"KubeSpan","href":"/talos/v1.13/networking/kubespan"},{"title":"Multihoming","href":"/talos/v1.13/networking/multihoming"},{"title":"Predictable Interface Names","href":"/talos/v1.13/networking/predictable-interface-names"},{"title":"SideroLink","href":"/talos/v1.13/networking/siderolink"}]},{"group":"Security","pages":[{"title":"Verifying Image Signatures","href":"/talos/v1.13/security/verifying-image-signatures"},{"title":"CA Rotation","href":"/talos/v1.13/security/ca-rotation"},{"title":"How to manage PKI and certificate lifetimes with Talos Linux","href":"/talos/v1.13/security/cert-management"},{"title":"Custom Certificate Authorities","href":"/talos/v1.13/security/certificate-authorities"},{"title":"IRSA with Talos Linux","href":"/talos/v1.13/security/iam-roles-for-service-accounts"},{"title":"Machine Configuration OAuth2 Authentication","href":"/talos/v1.13/security/machine-config-oauth"},{"title":"Role-based access control (RBAC)","href":"/talos/v1.13/security/rbac"},{"title":"SELinux","href":"/talos/v1.13/security/selinux"},{"title":"Source Talos Images","href":"/talos/v1.13/security/source-talos-images"},{"title":"Talos Default Hardening and CIS Compliance","href":"/talos/v1.13/security/talos-default-hardening-and-cis-compliance"},{"title":"Talos Security Checklist","href":"/talos/v1.13/security/talos-security-checklist"},{"title":"Subscribe to Security Advisories","href":"/talos/v1.13/security/subscribe-to-security-advisories"}]},{"group":"Build and extend Talos","pages":[{"group":"Custom Images \u0026 Development","pages":[{"title":"Building Custom Talos Images","href":"/talos/v1.13/build-and-extend-talos/custom-images-and-development/building-images"},{"title":"Customizing the Kernel","href":"/talos/v1.13/build-and-extend-talos/custom-images-and-development/customizing-the-kernel"},{"title":"Developing Talos","href":"/talos/v1.13/build-and-extend-talos/custom-images-and-development/developing-talos"},{"title":"Extension Services","href":"/talos/v1.13/build-and-extend-talos/custom-images-and-development/extension-services"},{"title":"Adding a Kernel Module","href":"/talos/v1.13/build-and-extend-talos/custom-images-and-development/kernel-module"},{"title":"OCI Base Runtime Specification","href":"/talos/v1.13/build-and-extend-talos/custom-images-and-development/oci-base-spec"},{"title":"Overlays","href":"/talos/v1.13/build-and-extend-talos/custom-images-and-development/overlays"},{"title":"System Extensions","href":"/talos/v1.13/build-and-extend-talos/custom-images-and-development/system-extensions"},{"title":"Talos Development Tools","href":"/talos/v1.13/build-and-extend-talos/custom-images-and-development/talos-development-tools"}]},{"group":"Cluster Operations \u0026 Maintenance","pages":[{"title":"Disaster Recovery","href":"/talos/v1.13/build-and-extend-talos/cluster-operations-and-maintenance/disaster-recovery"},{"title":"Cgroups Resource Analysis","href":"/talos/v1.13/build-and-extend-talos/cluster-operations-and-maintenance/cgroups-analysis"},{"title":"etcd Maintenance","href":"/talos/v1.13/build-and-extend-talos/cluster-operations-and-maintenance/etcd-maintenance"},{"title":"Watchdog Timers","href":"/talos/v1.13/build-and-extend-talos/cluster-operations-and-maintenance/watchdog"}]}]},{"group":"Configure your Talos cluster","pages":[{"group":"System Configuration","pages":[{"title":"Acquiring Machine Configuration","href":"/talos/v1.13/configure-your-talos-cluster/system-configuration/acquire"},{"title":"Configuration Patches","href":"/talos/v1.13/configure-your-talos-cluster/system-configuration/patching"},{"title":"Edit Machine Configuration","href":"/talos/v1.13/configure-your-talos-cluster/system-configuration/editing-machine-configuration"},{"title":"Performance Tuning","href":"/talos/v1.13/configure-your-talos-cluster/system-configuration/performance-tuning"},{"title":"Time Synchronization","href":"/talos/v1.13/configure-your-talos-cluster/system-configuration/time-sync"},{"title":"Discovery Service","href":"/talos/v1.13/configure-your-talos-cluster/system-configuration/discovery"},{"title":"KubePrism","href":"/talos/v1.13/configure-your-talos-cluster/system-configuration/kubeprism"},{"title":"Reproducible Machine Configuration","href":"/talos/v1.13/configure-your-talos-cluster/system-configuration/reproducible-machine-configuration"},{"title":"The insecure flag","href":"/talos/v1.13/configure-your-talos-cluster/system-configuration/insecure"},{"title":"OOM handler","href":"/talos/v1.13/configure-your-talos-cluster/system-configuration/oom"}]},{"group":"Images \u0026 Container Runtime","pages":[{"title":"Containerd","href":"/talos/v1.13/configure-your-talos-cluster/images-container-runtime/containerd"},{"title":"Image Cache","href":"/talos/v1.13/configure-your-talos-cluster/images-container-runtime/image-cache"},{"title":"Pull Through Image Cache","href":"/talos/v1.13/configure-your-talos-cluster/images-container-runtime/pull-through-cache"},{"title":"Use Image Cache as a Registry Mirror","href":"/talos/v1.13/configure-your-talos-cluster/images-container-runtime/image-cache-registry-mirror"},{"title":"Static Pods","href":"/talos/v1.13/configure-your-talos-cluster/images-container-runtime/static-pods"}]},{"group":"Storage \u0026 Disk Management","pages":[{"group":"Disk Management","pages":[{"title":"Overview","href":"/talos/v1.13/configure-your-talos-cluster/storage-and-disk-management/disk-management/overview"},{"title":"Common Configuration","href":"/talos/v1.13/configure-your-talos-cluster/storage-and-disk-management/disk-management/common"},{"title":"Existing Volumes","href":"/talos/v1.13/configure-your-talos-cluster/storage-and-disk-management/disk-management/existing"},{"title":"External Volumes","href":"/talos/v1.13/configure-your-talos-cluster/storage-and-disk-management/disk-management/external"},{"title":"Disk Layout","href":"/talos/v1.13/configure-your-talos-cluster/storage-and-disk-management/disk-management/layout"},{"title":"Raw Volumes","href":"/talos/v1.13/configure-your-talos-cluster/storage-and-disk-management/disk-management/raw"},{"title":"Resources","href":"/talos/v1.13/configure-your-talos-cluster/storage-and-disk-management/disk-management/resources"},{"title":"System Volumes","href":"/talos/v1.13/configure-your-talos-cluster/storage-and-disk-management/disk-management/system"},{"title":"User Volumes","href":"/talos/v1.13/configure-your-talos-cluster/storage-and-disk-management/disk-management/user"}]},{"title":"Disk Encryption","href":"/talos/v1.13/configure-your-talos-cluster/storage-and-disk-management/disk-encryption"},{"title":"Swap","href":"/talos/v1.13/configure-your-talos-cluster/storage-and-disk-management/swap"}]},{"group":"Logging \u0026 Telemetry","pages":[{"title":"Logging","href":"/talos/v1.13/configure-your-talos-cluster/logging-and-telemetry/logging"}]},{"group":"Hardware \u0026 Drivers","pages":[{"title":"AMD GPU Support (ROCm)","href":"/talos/v1.13/configure-your-talos-cluster/hardware-and-drivers/amd-gpu"},{"title":"Hailo AI Accelerators","href":"/talos/v1.13/configure-your-talos-cluster/hardware-and-drivers/hailo"},{"title":"NVIDIA Fabric Manager","href":"/talos/v1.13/configure-your-talos-cluster/hardware-and-drivers/nvidia-fabricmanager"},{"title":"NVIDIA GPU (OSS drivers)","href":"/talos/v1.13/configure-your-talos-cluster/hardware-and-drivers/nvidia-gpu"},{"title":"NVIDIA GPU (Proprietary drivers)","href":"/talos/v1.13/configure-your-talos-cluster/hardware-and-drivers/nvidia-gpu-proprietary"},{"title":"Tenstorrent AI Accelerators","href":"/talos/v1.13/configure-your-talos-cluster/hardware-and-drivers/tenstorrent"}]},{"group":"Lifecycle Management","pages":[{"title":"Upgrading Talos Linux","href":"/talos/v1.13/configure-your-talos-cluster/lifecycle-management/upgrading-talos"},{"title":"Resetting a Machine","href":"/talos/v1.13/configure-your-talos-cluster/lifecycle-management/resetting-a-machine"}]}]},{"group":"Advanced guides","pages":[{"title":"Install KubeVirt on Talos","href":"/talos/v1.13/advanced-guides/install-kubevirt"},{"title":"Migrating from Kubeadm","href":"/talos/v1.13/advanced-guides/migrating-from-kubeadm"},{"title":"SBOMs","href":"/talos/v1.13/advanced-guides/SBOM"}]},{"group":"Reference","pages":[{"title":"Overview","href":"/talos/v1.13/reference/configuration/overview"},{"title":"MachineConfig","href":"/talos/v1.13/reference/configuration/v1alpha1/config"},{"title":"Kernel","href":"/talos/v1.13/reference/kernel"},{"title":"talosctl","href":"/talos/v1.13/reference/cli"},{"title":"talosconfig","href":"/talos/v1.13/reference/talosconfig"},{"title":"API","href":"/talos/v1.13/reference/api"},{"group":"Configuration","pages":[{"group":"Block","pages":[{"title":"ExistingVolumeConfig","href":"/talos/v1.13/reference/configuration/block/existingvolumeconfig"},{"title":"ExternalVolumeConfig","href":"/talos/v1.13/reference/configuration/block/externalvolumeconfig"},{"title":"RawVolumeConfig","href":"/talos/v1.13/reference/configuration/block/rawvolumeconfig"},{"title":"SwapVolumeConfig","href":"/talos/v1.13/reference/configuration/block/swapvolumeconfig"},{"title":"UserVolumeConfig","href":"/talos/v1.13/reference/configuration/block/uservolumeconfig"},{"title":"VolumeConfig","href":"/talos/v1.13/reference/configuration/block/volumeconfig"},{"title":"ZswapConfig","href":"/talos/v1.13/reference/configuration/block/zswapconfig"}]},{"group":"CRI","pages":[{"title":"RegistryAuthConfig","href":"/talos/v1.13/reference/configuration/cri/registryauthconfig"},{"title":"RegistryMirrorConfig","href":"/talos/v1.13/reference/configuration/cri/registrymirrorconfig"},{"title":"RegistryTLSConfig","href":"/talos/v1.13/reference/configuration/cri/registrytlsconfig"}]},{"group":"Extensions","pages":[{"title":"ExtensionServiceConfig","href":"/talos/v1.13/reference/configuration/extensions/extensionserviceconfig"}]},{"group":"Hardware","pages":[{"title":"PCIDriverRebindConfig","href":"/talos/v1.13/reference/configuration/hardware/pcidriverrebindconfig"}]},{"group":"Network","pages":[{"title":"BlackholeRouteConfig","href":"/talos/v1.13/reference/configuration/network/blackholerouteconfig"},{"title":"BondConfig","href":"/talos/v1.13/reference/configuration/network/bondconfig"},{"title":"BridgeConfig","href":"/talos/v1.13/reference/configuration/network/bridgeconfig"},{"title":"DHCPv4Config","href":"/talos/v1.13/reference/configuration/network/dhcpv4config"},{"title":"DHCPv6Config","href":"/talos/v1.13/reference/configuration/network/dhcpv6config"},{"title":"DummyLinkConfig","href":"/talos/v1.13/reference/configuration/network/dummylinkconfig"},{"title":"EthernetConfig","href":"/talos/v1.13/reference/configuration/network/ethernetconfig"},{"title":"HCloudVIPConfig","href":"/talos/v1.13/reference/configuration/network/hcloudvipconfig"},{"title":"HostnameConfig","href":"/talos/v1.13/reference/configuration/network/hostnameconfig"},{"title":"KubeSpanConfig","href":"/talos/v1.13/reference/configuration/network/kubespanconfig"},{"title":"KubeSpanEndpointsConfig","href":"/talos/v1.13/reference/configuration/network/kubespanendpointsconfig"},{"title":"Layer2VIPConfig","href":"/talos/v1.13/reference/configuration/network/layer2vipconfig"},{"title":"LinkAliasConfig","href":"/talos/v1.13/reference/configuration/network/linkaliasconfig"},{"title":"LinkConfig","href":"/talos/v1.13/reference/configuration/network/linkconfig"},{"title":"NetworkDefaultActionConfig","href":"/talos/v1.13/reference/configuration/network/networkdefaultactionconfig"},{"title":"NetworkRuleConfig","href":"/talos/v1.13/reference/configuration/network/networkruleconfig"},{"title":"ResolverConfig","href":"/talos/v1.13/reference/configuration/network/resolverconfig"},{"title":"RoutingRuleConfig","href":"/talos/v1.13/reference/configuration/network/routingruleconfig"},{"title":"StaticHostConfig","href":"/talos/v1.13/reference/configuration/network/statichostconfig"},{"title":"TCPProbeConfig","href":"/talos/v1.13/reference/configuration/network/tcpprobeconfig"},{"title":"TimeSyncConfig","href":"/talos/v1.13/reference/configuration/network/timesyncconfig"},{"title":"VLANConfig","href":"/talos/v1.13/reference/configuration/network/vlanconfig"},{"title":"VRFConfig","href":"/talos/v1.13/reference/configuration/network/vrfconfig"},{"title":"WireguardConfig","href":"/talos/v1.13/reference/configuration/network/wireguardconfig"}]},{"group":"Runtime","pages":[{"title":"EnvironmentConfig","href":"/talos/v1.13/reference/configuration/runtime/environmentconfig"},{"title":"EventSinkConfig","href":"/talos/v1.13/reference/configuration/runtime/eventsinkconfig"},{"title":"KmsgLogConfig","href":"/talos/v1.13/reference/configuration/runtime/kmsglogconfig"},{"title":"OOMConfig","href":"/talos/v1.13/reference/configuration/runtime/oomconfig"},{"title":"WatchdogTimerConfig","href":"/talos/v1.13/reference/configuration/runtime/watchdogtimerconfig"}]},{"group":"Security","pages":[{"title":"ImageVerificationConfig","href":"/talos/v1.13/reference/configuration/security/imageverificationconfig"},{"title":"TrustedRootsConfig","href":"/talos/v1.13/reference/configuration/security/trustedrootsconfig"}]},{"group":"SideroLink","pages":[{"title":"SideroLinkConfig","href":"/talos/v1.13/reference/configuration/siderolink/siderolinkconfig"}]}]}]},{"group":"Troubleshooting and support","pages":[{"title":"Troubleshooting","href":"/talos/v1.13/troubleshooting/troubleshooting"},{"title":"Debug Shell","href":"/talos/v1.13/troubleshooting/talosctl-debug"},{"title":"FAQs","href":"/talos/v1.13/troubleshooting/faqs"}]},{"group":"Learn more","pages":[{"title":"Architecture","href":"/talos/v1.13/learn-more/architecture"},{"title":"Components","href":"/talos/v1.13/learn-more/components"},{"title":"Control Plane","href":"/talos/v1.13/learn-more/control-plane"},{"title":"Controllers and Resources","href":"/talos/v1.13/learn-more/controllers-resources"},{"title":"Enterprise Image Factory","href":"/talos/v1.13/learn-more/enterprise-image-factory"},{"title":"Image Factory","href":"/talos/v1.13/learn-more/image-factory"},{"title":"Knowledge Base","href":"/talos/v1.13/learn-more/knowledge-base"},{"title":"KubeSpan","href":"/talos/v1.13/learn-more/kubespan"},{"title":"Networking Resources","href":"/talos/v1.13/learn-more/networking-resources"},{"title":"Philosophy","href":"/talos/v1.13/learn-more/philosophy"},{"title":"Process Capabilities","href":"/talos/v1.13/learn-more/process-capabilities"},{"title":"Talos for Linux Admins","href":"/talos/v1.13/learn-more/talos-for-linux-admins"},{"title":"Network Connectivity","href":"/talos/v1.13/learn-more/talos-network-connectivity"},{"title":"Talos platform configuration","href":"/talos/v1.13/learn-more/talos-platform-configuration"},{"title":"talosctl","href":"/talos/v1.13/learn-more/talosctl"},{"title":"AI Agent Integration","href":"/talos/v1.13/learn-more/ai-agent-integration"}]}]},{"version":"v1.12","pages":[{"title":"v1.12","href":"/talos/v1.12/getting-started/prodnotes"}]},{"version":"v1.11","pages":[{"title":"v1.11","href":"/talos/v1.11/getting-started/prodnotes"}]},{"version":"v1.10","pages":[{"title":"v1.10","href":"/talos/v1.10/getting-started/prodnotes"}]},{"version":"v1.9","pages":[{"title":"v1.9","href":"/talos/v1.9/getting-started/prodnotes"}]},{"version":"v1.8","pages":[{"title":"v1.8","href":"/talos/v1.8/getting-started/prodnotes"}]}]},{"product":"Talos Enterprise Linux","icon":"https://mintlify.s3.us-west-1.amazonaws.com/siderolabs-fe86397c/images/talos.svg","description":"FIPS-enabled builds, SBOMs, VEX, and signed images from the Enterprise Image Factory.","pages":[{"title":"Talos Enterprise Linux","href":"/talos-enterprise-linux/overview/introducing-talos-enterprise-linux"}]},{"product":"Talos Omni","icon":"https://mintlify.s3.us-west-1.amazonaws.com/siderolabs-fe86397c/images/omni.svg","description":"Provision, upgrade, and manage Talos machines across sites from one place.","pages":[{"title":"Talos Omni","href":"/omni/overview/what-is-omni"}]},{"product":"Talos Director","icon":"gauge","description":"Manage virtual machines, Kubernetes clusters, storage, and networking across the data center.","pages":[{"title":"Talos Director","href":"/director/overview/what-is-talos-director"}]},{"product":"Talos Hypervisor","icon":"server","description":"Run virtual machines on a Talos host through native Talos APIs and talosctl.","pages":[{"title":"Talos Hypervisor","href":"/hypervisor/overview/what-is-talos-hypervisor"}]},{"product":"Kubernetes Guides","icon":"https://mintlify.s3.us-west-1.amazonaws.com/siderolabs-fe86397c/images/kubernetes.svg","pages":[{"title":"Kubernetes Guides","href":"/kubernetes-guides/overview/kubernetes-guides-overview"}]},{"product":"Changelog","hidden":true,"pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Production Clusters - Sidero Documentation","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":["10e4515597"],"chunks":["BannerMarkdown-CXEEkV6J.js","dist-lvhuD9Du.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-D1Z-ELXV.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js"]}