Restructure configuration section to highlight v0/v1alpha1 differences. Removed old configuration material. Signed-off-by: Brad Beam <brad.beam@talos-systems.com>
7.6 KiB
title, date, draft, weight, menu
title | date | draft | weight | menu | ||||
---|---|---|---|---|---|---|---|---|
v1alpha1 Reference | 2019-10-04T19:40:55-07:00 | false | 20 |
|
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.
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.
version: v1alpha1
Machine Configuration
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
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.