Skip to content

Commit bdb4d84

Browse files
Merge pull request #1 from antux18/talos-manager
feat(install): Documentation for automated OS installation using talos-operator and talos-manager.
2 parents f5e67fc + 589eb10 commit bdb4d84

2 files changed

Lines changed: 224 additions & 27 deletions

File tree

‎docs/installation/deployment-guide/installing-an-az/configuring-a-cluster.md‎

Lines changed: 148 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ spec:
1212
# -- Deployment and Topology
1313
# Defines whether the cluster is Hyperconverged or Decoupled.
1414
deploymentTopology: Decoupled
15-
15+
1616
# Specifies the cluster type (Storage or Virtualization) when deploymentTopology is Decoupled.
1717
type: Virtualization
1818

@@ -33,7 +33,7 @@ spec:
3333
version: v0.1.0
3434
repoURL: https://charts.superphenix.net
3535
chartName: superphenix-stack
36-
36+
3737
systemConfiguration:
3838
network:
3939
podCIDR: 10.244.0.0/16
@@ -42,10 +42,156 @@ spec:
4242
pauseSync: false
4343
manual: false
4444
cleanupOnDeletion: false
45+
46+
# -- Talos management mode
47+
# Specifies how Talos configuration should be managed.
48+
# Unmanaged - The Talos cluster is not managed by the operator. This requires an externally managed installation and configuration of Talos. PXE features and talos-operator are disabled.
49+
# Import - The operator imports an already installed Talos cluster and manages its configuration. PXE features are disabled.
50+
# Full - The Talos cluster is fully installed and configured by the operator.
51+
talosManagementMode: Unmanaged
4552
```
4653
4754
Set `connection.mode: Local` when the cluster being defined is the same Kubernetes cluster that hosts the operator (typical for management-on-AZ after bootstrap).
4855

56+
## talos-manager configuration
57+
58+
If you want to use the [:octicons-arrow-right-24: automated OS installation method](../installing-the-os/automated-os-installation.md), you need to specify the configuration for the talos-manager chart using the field `talosManagerConfiguration`, as well as set `talosManagementMode` to either `Full` or `Import` in your `Cluster`'s specs. Below are the values of this chart:
59+
60+
```yaml
61+
# Cluster specific variables:
62+
# Enable PXE features (optional, overrides the value set automatically by the operator depending on "talosManagementMode"):
63+
pxeEnabled: false
64+
# Network interface the DHCP server should listen to (optional if "talosManagementMode" set to "Import" or if "pxeEnabled" set to "false"):
65+
dhcpInterface: ""
66+
# IP address of the PXE server (the bootstrap server) (optional if "talosManagementMode" set to "Import" or if "pxeEnabled" set to "false"):
67+
pxeIpAddr: ""
68+
# Name of the Talos cluster:
69+
clusterName: ""
70+
# Cluster type (can be either "storage" or "virt"):
71+
clusterType: ""
72+
# Reconciliation mode of the Talos configuration, as defined by talos-operator ("Reconcile", "Disable" or "DryRun"):
73+
reconciliationMode: ""
74+
# Cluster network specifications:
75+
clusterNetwork:
76+
ipv4: ""
77+
ipv6: ""
78+
cidrIpv4: 0
79+
cidrIpv6: 0
80+
vlanId: 0
81+
gatewayIpv4: ""
82+
gatewayIpv6: ""
83+
linkMtu: 0
84+
# Public network specifications (optional if "clusterType" is not "storage"):
85+
publicNetwork:
86+
ipv4: ""
87+
ipv6: ""
88+
cidrIpv4: 0
89+
cidrIpv6: 0
90+
vlanId: 0
91+
linkMtu: 0
92+
# Storage network specifications (optional):
93+
storageNetwork:
94+
ipv4: ""
95+
ipv6: ""
96+
cidrIpv4: 0
97+
cidrIpv6: 0
98+
vlanId: 0
99+
linkMtu: 0
100+
# Kubernetes pod subnets specifications:
101+
podSubnets:
102+
ipv4: ""
103+
ipv6: ""
104+
cidrIpv4: 0
105+
cidrIpv6: 0
106+
# Kubernetes service subnets specifications:
107+
serviceSubnets:
108+
ipv4: ""
109+
ipv6: ""
110+
cidrIpv4: 0
111+
cidrIpv6: 0
112+
# IPv4 address of the Talos control plane node (optional if "controlplaneIpv6" is set):
113+
controlplaneIpv4: ""
114+
# IPv6 address of the Talos control plane node:
115+
controlplaneIpv6: ""
116+
# Port of the Talos control plane:
117+
controlplanePort: 0
118+
# ArgoCD token:
119+
argocdToken: ""
120+
# Version of Talos to install on nodes:
121+
talosVersion: ""
122+
# Version of Kubernetes to install on Talos:
123+
k8sVersion: ""
124+
# 'MachineConfig' overrides for all types of nodes (array, optional):
125+
machineGlobalOverrides: []
126+
# 'MachineConfig' overrides for control plane nodes (array, optional):
127+
machineOverridesControlPlane: []
128+
# 'MachineConfig' overrides for worker nodes (array, optional):
129+
machineOverridesWorker: []
130+
131+
# Nodes specific variables:
132+
nodes:
133+
- hostname: ""
134+
# Talos node type (can be either "controlplane" or "worker"):
135+
type: ""
136+
# CPU architecture of this node (optional if "talosManagementMode" set to "Import" or if "pxeEnabled" set to "false"):
137+
cpuArchitecture: ""
138+
# MAC address used by the PXE firmware (optional if "talosManagementMode" set to "Import" or if "pxeEnabled" set to "false"):
139+
pxeMacAddress: ""
140+
# Kernel command line arguments when booting in PXE (optional):
141+
kernelCmdlineArgs: ""
142+
# Specifies whether this machine should be set up for PXE:
143+
pxeSetup: false
144+
# IPv4 address of the node's IPMI (optional if "pxeSetup" set to "false"):
145+
ipmiIpv4: ""
146+
# Username of an administrator account on the IPMI (optional if "pxeSetup" set to "false"):
147+
ipmiUser: ""
148+
# Password of the aforementioned IPMI account (optional if "pxeSetup" set to "false"):
149+
ipmiPassword: ""
150+
# Name of the interface used by the PXE firmware, as given by the IPMI through Redfish (optional if "pxeSetup" set to "false"):
151+
pxeInterfaceName: ""
152+
# Specifications of the network interface:
153+
interface:
154+
# Name to give to the interface (avoid common names such as "ethX" or "enoXnpY"):
155+
name: ""
156+
# IP of this node on the cluster network (IPv6 is optional):
157+
clusterNetwork:
158+
ipv4: ""
159+
ipv6: ""
160+
# IP of this node on the public network (optional if "clusterType" is not "storage"):
161+
publicNetwork:
162+
ipv4: ""
163+
ipv6: ""
164+
# IP of this node on the storage network (optional):
165+
storageNetwork:
166+
ipv4: ""
167+
ipv6: ""
168+
# Specifies whether this interface should be connected to VLANs:
169+
useVlan: false
170+
# Specifications of the LACP bond, if applicable (setting "enabled" to "false" makes other sub-fields optional):
171+
lacpBond:
172+
enabled: false
173+
lacpRate: ""
174+
xmitHashPolicy: ""
175+
miimon: 0
176+
updelay: 0
177+
downdelay: 0
178+
linkMtu: 0
179+
# Physical interfaces to be aggregated:
180+
physicalInterfaces:
181+
- name: ""
182+
macAddress: ""
183+
# MAC address of the single physical interface, if bond is disabled:
184+
physicalMacAddress: ""
185+
# Specifications of the installation disk:
186+
installDisk:
187+
# Indicates whether the installation disk should be selected automatically ("true" makes other sub-fields optional):
188+
auto: false
189+
# Selector for the installation disk, if not selected automatically (this is the same as the "diskSelector" field from the Talos documentation : https://docs.siderolabs.com/talos/v1.13/reference/configuration/v1alpha1/config#diskselector):
190+
selector: ""
191+
# 'MachineConfig' overrides for this node (array, optional):
192+
machineOverrides: []
193+
```
194+
49195
## Related
50196

51197
- [Installing an AZ](index.md): overview of AZ installation.

‎docs/installation/deployment-guide/installing-the-os/automated-os-installation.md‎

Lines changed: 76 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Automated OS installation
22

3-
This guide covers using the **superphenix-operator** and the **talos-operator** it deploys to provision and lifecycle-manage **physical servers** as Talos Kubernetes clusters. Use this path when you want declarative, GitOps-driven installation from a management cluster instead of running `talosctl` on each node by hand.
3+
This guide covers using the **superphenix-operator**, the **talos-operator** and **talos-manager** to provision and lifecycle-manage **physical servers** as Talos Kubernetes clusters. Use this path when you want declarative, GitOps-driven installation from a management cluster instead of running `talosctl` on each node by hand.
44

55
Part of the [deployment guide](../index.md). For the manual alternative, see [Manual OS installation](manual-os-installation.md).
66

@@ -17,7 +17,8 @@ When you install the `superphenix-operator` Helm chart on the management cluster
1717

1818
- The **Superphenix web console**
1919
- **ArgoCD** for GitOps synchronization of the Superphenix system
20-
- The **talos-operator**, which manages physical nodes and Talos cluster lifecycle (optional, enabled when you use operator-driven provisioning)
20+
- The **talos-operator**, which deploys a server for PXE boot and manages physical nodes and Talos cluster lifecycle (optional, enabled when you use operator-driven provisioning)
21+
- **talos-manager**, which generates a `TalosCluster` resource for talos-operator to manage the cluster (optional, enabled when you use operator-driven provisioning).
2122

2223
The operator reads `Cluster` (and related) resources in the `superphenix-system` namespace and reconciles the Superphenix stack on each target cluster. When physical provisioning is enabled, the talos-operator layer handles server-level installation before or alongside that reconciliation.
2324

@@ -33,13 +34,19 @@ The operator reads `Cluster` (and related) resources in the `superphenix-system`
3334
!!! important
3435
If management runs **outside** every AZ, it only needs connectivity to cluster APIs and BMCs; it does not need to be a Talos cluster itself. If management runs **on an AZ**, that AZ must already exist, typically created via [Manual OS installation](manual-os-installation.md). See [Installing inside an AZ](../installing-management/management-inside-az.md).
3536

37+
!!! important
38+
Nodes must support PXE boot and EFI (make sure that the boot mode is UEFI and not "legacy" in the BIOS settings). If you want to make your nodes reboot into PXE automatically, they will need an IPMI with Redfish enabled.
39+
Setting up PXE automatically on the BIOS only works on DELL iDRAC and Lenovo XClarity, and setting up VLAN on the PXE interface only works on DELL iDRAC. Automatic reboot into PXE should work with all IPMI.
40+
41+
!!! important
42+
Make sure no DHCP server is running on the cluster VLAN, as it might conflict with the DHCP server deployed by talos-operator for PXE boot.
43+
3644
## Installation overview
3745

3846
1. Install the `superphenix-operator` on the management cluster.
39-
2. Register physical servers (BMC credentials, MAC addresses, desired role) with the talos-operator.
40-
3. Define `Cluster` resources that describe topology, geography, and connection mode.
41-
4. Let the operator provision Talos on the servers, bootstrap Kubernetes, and install the Superphenix stack.
42-
5. Connect decoupled storage and workload clusters as needed. See [Connecting a workload and storage cluster](../../../operations/storage/connecting-a-workload-and-storage-cluster.md).
47+
2. Define `Cluster` resources that describe topology, geography and connection mode, as well as BMC credentials, MAC addresses and desired role of each node for talos-manager.
48+
3. Let the operator boot and provision Talos on the servers, bootstrap Kubernetes, and install the Superphenix stack.
49+
4. Connect decoupled storage and workload clusters as needed. See [Connecting a workload and storage cluster](../../../operations/storage/connecting-a-workload-and-storage-cluster.md).
4350

4451
## Step 1: Install the operator
4552

@@ -49,26 +56,10 @@ On your management cluster:
4956
helm upgrade --install superphenix-operator \
5057
ghcr.io/super-phenix/charts/superphenix-operator \
5158
--namespace superphenix-system \
52-
--create-namespace
59+
--create-namespace --set "management.values.talos-operator.enabled=true"
5360
```
5461

55-
Enable talos-operator components and physical provisioning through the chart values for your environment.
56-
57-
*Coming soon: Helm values reference for talos-operator and BMC integration.*
58-
59-
## Step 2: Register physical servers
60-
61-
Provide the talos-operator with everything it needs to reach and install each server:
62-
63-
- **BMC endpoint** and credentials (stored in Kubernetes secrets).
64-
- **Network identity**: for example MAC address or serial number used to match a machine to its slot in the cluster design.
65-
- **Role**: control plane, worker, storage, or hypervisor tier depending on your [deployment topology](../../../architecture/deployment-topology.md).
66-
67-
The operator uses this inventory to apply the correct Talos machine configuration and join nodes into the target cluster.
68-
69-
*Coming soon: example `Machine` / server inventory resources and secret layout.*
70-
71-
## Step 3: Define cluster resources
62+
## Step 2: Define cluster resources
7263

7364
Create `Cluster` resources in `superphenix-system` that describe each Superphenix AZ. For operator-provisioned clusters, set connection details so the management plane can reach the cluster once bootstrap completes:
7465

@@ -92,13 +83,73 @@ spec:
9283
version: v0.1.0
9384
repoURL: https://charts.superphenix.net
9485
chartName: superphenix-stack
86+
talosManagementMode: Full
87+
talosManagerConfiguration:
88+
dhcpInterface: "enp0s1"
89+
pxeIpAddr: "10.0.0.1"
90+
clusterName: "az-paris-1"
91+
clusterType: virt
92+
reconciliationMode: Reconcile
93+
clusterNetwork:
94+
ipv4: "10.0.0.0"
95+
ipv6: "fc00:1::"
96+
cidrIpv4: 24
97+
cidrIpv6: 64
98+
vlanId: 1
99+
gatewayIpv4: "10.0.0.254"
100+
linkMtu: 1500
101+
publicNetwork:
102+
ipv6: "fc00:2::"
103+
cidrIpv6: 64
104+
vlanId: 2
105+
linkMtu: 1500
106+
podSubnets:
107+
ipv4: "10.0.0.0"
108+
ipv6: "fd00:100::"
109+
cidrIpv4: 12
110+
cidrIpv6: 96
111+
serviceSubnets:
112+
ipv4: "10.16.0.0"
113+
ipv6: "fd00:100:ffff::"
114+
cidrIpv4: 12
115+
cidrIpv6: 112
116+
controlplaneIpv6: "fc00:1::ffff:ffff:ffff:ffff"
117+
controlplanePort: 6443
118+
talosVersion: "v1.13.0"
119+
k8sVersion: "v1.35.0"
120+
nodes:
121+
- hostname: "az-paris-1-master01"
122+
type: controlplane
123+
cpuArchitecture: amd64
124+
pxeMacAddress: "AA:AA:AA:AA:AA:AA"
125+
pxeSetup: true
126+
ipmiIpv4: "10.0.2.1"
127+
ipmiUser: user
128+
ipmiPassword: pass
129+
pxeInterfaceName: "Interface1"
130+
interface:
131+
name: net0
132+
clusterNetwork:
133+
ipv4: "10.0.0.2"
134+
ipv6: "fc00:1::2"
135+
publicNetwork:
136+
ipv6: "fc00:2::2"
137+
useVlan: true
138+
lacpBond:
139+
enabled: false
140+
physicalMacAddress: "AA:AA:AA:AA:AA:AA"
141+
installDisk:
142+
auto: true
143+
- ...
95144
```
96145
97146
Set `connection.mode: Local` when the cluster being defined is the same Kubernetes cluster that hosts the operator (typical for management-on-AZ after bootstrap).
98147

148+
Set `talosManagementMode: Full` to let talos-operator boot, install and configure Talos automatically, or `talosManagementMode: Import` to import an already installed Talos cluster and let talos-operator manage its lifecycle.
149+
99150
See [Configure a cluster](../installing-an-az/configuring-a-cluster.md) for the full field reference.
100151

101-
## Step 4: Reconcile and verify
152+
## Step 3: Reconcile and verify
102153

103154
After resources are applied:
104155

0 commit comments

Comments
 (0)