mirror of
https://github.com/siderolabs/talos.git
synced 2025-08-21 22:51:13 +02:00
Restructure configuration section to highlight v0/v1alpha1 differences. Removed old configuration material. Signed-off-by: Brad Beam <brad.beam@talos-systems.com>
304 lines
7.6 KiB
Markdown
304 lines
7.6 KiB
Markdown
---
|
|
title: v1alpha1 Reference
|
|
date: 2019-10-04T19:40:55-07:00
|
|
draft: false
|
|
weight: 20
|
|
menu:
|
|
docs:
|
|
parent: 'configuration'
|
|
---
|
|
|
|
Talos User Data is responsible for the host and Kubernetes configuration, and it is independent of other cloud init data.
|
|
|
|
## Differences from v0
|
|
|
|
The main driver in introducing a new configuration file format is to reduce the complexity and make it more approachable.
|
|
The redesign proposal can be found [here](https://github.com/talos-systems/talos/blob/master/docs/proposals/20190708-MachineConfig.md).
|
|
The major change between these two versions is the introduction of `machine` and `cluster` configuration objects.
|
|
Machine configuration data deals with the configuration of the host itself whereas cluster configuration data deals with the configuration of the cluster on top of Talos ( ex, Kubernetes configuration ).
|
|
|
|
## Version
|
|
|
|
``Version`` represents the Talos configuration version.
|
|
|
|
This denotes what the schema of the configuration file is.
|
|
|
|
```yaml
|
|
version: v1alpha1
|
|
```
|
|
|
|
## Machine Configuration
|
|
|
|
```yaml
|
|
machine:
|
|
type: string
|
|
token: string
|
|
ca:
|
|
crt: string ( base64 encoded certificate )
|
|
key: string ( base64 encoded key )
|
|
kubelet: (optional)
|
|
image: string
|
|
extraArgs: []string
|
|
network: (optional)
|
|
hostname: string
|
|
interfaces:
|
|
- interface: string
|
|
cidr: string
|
|
dhcp: bool
|
|
ignore: bool
|
|
install: (optional)
|
|
disk: string
|
|
extraKernelArgs: []string
|
|
image: string
|
|
bootloader: bool
|
|
wipe: bool
|
|
force: bool
|
|
```
|
|
|
|
### machine.type
|
|
|
|
``type`` defines the type/role of a node.
|
|
|
|
Acceptable values are:
|
|
-``init``
|
|
-``controlplane``
|
|
-``worker``
|
|
|
|
#### Init
|
|
|
|
Init node type designates the first control plane node to come up.
|
|
You can think of it like a bootstrap node.
|
|
This node will perform the initial steps to bootstrap the cluster -- generation of TLS assets, starting of the control plane, etc.
|
|
|
|
#### Control Plane
|
|
|
|
Control Plane node type designates the node as a control plane member.
|
|
This means it will host etcd along with the Kubernetes master components such as API Server, Controller Manager, Scheduler.
|
|
|
|
#### Worker
|
|
|
|
Worker node type designates the node as a worker node.
|
|
This means it will be an available compute node for scheduling workloads.
|
|
|
|
### machine.token
|
|
|
|
``token`` is used for authentication to ``trustd`` to confirm the node's identity.
|
|
|
|
### machine.kubelet
|
|
|
|
``kubelet`` is used to provide some additional options to the kubelet.
|
|
|
|
#### machine.kubelet.image
|
|
|
|
``image`` is used to supply a hyperkube image location.
|
|
|
|
#### machine.kubelet.extraArgs
|
|
|
|
``extraArgs`` is used to supply kubelet with additional startup command line arguments.
|
|
|
|
### machine.ca
|
|
|
|
``ca`` handles the certificate configuration for Talos components (osd, trustd, etc.).
|
|
|
|
#### machine.ca.crt
|
|
|
|
``crt`` provides the CA Certificate for OSD.
|
|
|
|
#### machine.ca.key
|
|
|
|
``crt`` provides the CA Certificate Key for OSD.
|
|
|
|
### machine.network
|
|
|
|
``network`` defines the host network configuration.
|
|
|
|
#### machine.network.hostname
|
|
|
|
``hostname`` can be used to statically set the hostname for the host.
|
|
|
|
#### machine.network.interfaces
|
|
|
|
``interfaces`` is used to define the network interface configuration.
|
|
By default all network interfaces will attempt a DHCP discovery.
|
|
This can be further tuned through this configuration parameter.
|
|
|
|
##### machine.network.interfaces.interface
|
|
|
|
This is the interface name that should be configured.
|
|
|
|
##### machine.network.interfaces.cidr
|
|
|
|
``cidr`` is used to specify a static IP address to the interface.
|
|
This should be in proper CIDR notation ( `192.168.2.5/24` ).
|
|
|
|
> Note: This option is mutually exclusive with DHCP.
|
|
|
|
##### machine.network.interfaces.dhcp
|
|
|
|
``dhcp`` is used to specify that this device should be configured via DHCP.
|
|
|
|
The following DHCP options are supported:
|
|
|
|
- `OptionClasslessStaticRoute`
|
|
- `OptionDomainNameServer`
|
|
- `OptionDNSDomainSearchList`
|
|
- `OptionHostName`
|
|
|
|
> Note: This option is mutually exclusive with CIDR.
|
|
|
|
##### machine.network.interfaces.ignore
|
|
|
|
``ignore`` is used to exclude a specific interface from configuration.
|
|
This parameter is optional.
|
|
|
|
##### machine.network.interfaces.routes
|
|
|
|
``routes`` is used to specify static routes that may be necessary.
|
|
This parameter is optional.
|
|
|
|
Routes can be repeated and includes a ``Network`` and ``Gateway`` field.
|
|
|
|
### machine.install
|
|
|
|
``install`` provides the details necessary to install the Talos image to disk.
|
|
This is typically only used in bare metal setups.
|
|
|
|
#### machine.install.disk
|
|
|
|
``disk`` is the device name to use for the `/boot` partition and `/var` partitions.
|
|
This should be specified as the unpartitioned block device.
|
|
|
|
#### machine.install.extraDevices
|
|
|
|
``extraDevices`` contains additional devices that should be formatted and partitioned.
|
|
|
|
#### machine.install.extraKernelArgs
|
|
|
|
``extraKernelArgs`` contain additional kernel arguments to be appended to the bootloader.
|
|
|
|
#### machine.install.image
|
|
|
|
``image`` is a url to a Talos installer image.
|
|
|
|
#### machine.install.bootloader
|
|
|
|
``bootloader`` denotes if the bootloader should be installed to teh device.
|
|
|
|
#### machine.install.wipe
|
|
|
|
``wipe`` denotes if the disk should have zeros written to it before partitioning.
|
|
|
|
#### machine.install.force
|
|
|
|
``force`` will ignore any existing partitions on the device.
|
|
|
|
## Cluster Configuration
|
|
|
|
```yaml
|
|
cluster:
|
|
controlPlane:
|
|
ips: []string
|
|
clusterName: string
|
|
network:
|
|
dnsDomain: string
|
|
podSubnets: []string
|
|
serviceSubnets: []string
|
|
token: string
|
|
ca:
|
|
crt: string
|
|
key: string
|
|
apiServer:
|
|
image: (optional) string
|
|
extraArgs: map[string]string
|
|
certSANs: []string
|
|
controllerManager: (optional)
|
|
image: string
|
|
extraArgs: map[string]string
|
|
scheduler: (optional)
|
|
image: string
|
|
extraArgs: map[string]string
|
|
etcd: (optional)
|
|
image: string
|
|
```
|
|
|
|
### cluster.controlPlane
|
|
|
|
#### cluster.controlPlane.endpoint
|
|
|
|
``endpoint`` defines the address for kubernetes ( load balancer or DNS name ).
|
|
|
|
#### cluster.controlPlane.ips
|
|
|
|
``ips`` lists the trustd endpoints.
|
|
This should be a list of all the control plane addresses.
|
|
|
|
### cluster.clusterName
|
|
|
|
``clusterName`` is the name of the cluster.
|
|
|
|
### cluster.network
|
|
|
|
### cluster.network.dnsDomain
|
|
|
|
``dnsDomain`` is the dns domain of the cluster.
|
|
|
|
### cluster.network.podSubnets
|
|
|
|
``podSubnets`` is a list of the subnets that Kubernetes should allocate from for CNI.
|
|
|
|
### cluster.network.serviceSubnets
|
|
|
|
``serviceSubnets`` is a list of the subnets that Kubernetes should allocate service addresses from.
|
|
|
|
### cluster.token
|
|
|
|
``token`` is the kubeadm bootstrap token used to authenticate additional kubernetes nodes to the cluster.
|
|
|
|
### cluster.ca
|
|
|
|
``ca`` represents the ca certificate and key pair for Kubernetes use.
|
|
|
|
### cluster.ca.crt
|
|
|
|
### cluster.ca.key
|
|
|
|
### cluster.apiServer
|
|
|
|
### cluster.apiServer.image
|
|
|
|
``image`` defines the container image the Kubernetes API server will use.
|
|
|
|
### cluster.apiServer.extraArgs
|
|
|
|
``extraArgs`` provides additional arguments to the Kubernetes API server.
|
|
|
|
### cluster.apiServer.certSANs
|
|
|
|
``certSANs`` are a list of IP addresses that should be added to the API server certificate.
|
|
|
|
### cluster.controllerManager
|
|
|
|
### cluster.controllerManager.image
|
|
|
|
``image`` defines the container image the Kubernetes API server will use.
|
|
|
|
### cluster.controllerManager.extraArgs
|
|
|
|
``extraArgs`` provides additional arguments to the Kubernetes API server.
|
|
|
|
### cluster.scheduler
|
|
|
|
### cluster.scheduler.image
|
|
|
|
``image`` defines the container image the Kubernetes API server will use.
|
|
|
|
### cluster.scheduler.extraArgs
|
|
|
|
``extraArgs`` provides additional arguments to the Kubernetes API server.
|
|
|
|
### cluster.etcd
|
|
|
|
### cluster.etcd.image
|
|
|
|
``image`` defines the container image the Kubernetes API server will use.
|