Setting up the EDA virtual machine nodes#
This section describes how to the prepare the configurations file, generate the configuration files, and deploy the Talos virtual machines.
Preparing the EDAADM configuration file#
The edaadm
tool helps with the creation of the necessary machine configuration files for the Talos VMs that are part of your deployment.
EDAAM configuration file fields#
The EDAADM configuration file is a YAML file that describes your Talos Kubernetes environment. You can use it to configure the different nodes and the general Kubernetes cluster environment.
Top-level parameter | Description | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| The version of the EDA environment to be deployed. | ||||||||||||||||||||||||
| The name of your EDA environment. | ||||||||||||||||||||||||
| A list of Kubernetes nodes. Each Kubernetes node has the following settings:
| ||||||||||||||||||||||||
| The Kubernetes-specific configuration. The following parameters define the Kubernetes cluster:
|
Example EDAADM configuration file#
The following examples show an EDAADM configuration file for a 6-node Kubernetes cluster. For a standard Internet based installation, as well as for an Air-gapped installation. These are the same two files, with only the mirror
addition on the second tab/file.
version: 25.4.1
clusterName: eda-compute-cluster
machines:
- name: eda-node01
endpoint: "192.0.2.11"
interfaces:
- name: eth0
dhcp: false
interface: eth0
addresses:
- 192.0.2.11/24
routes:
- network: 0.0.0.0/0
gateway: 192.0.2.1
mtu: 9000
- name: eth1
dhcp: false
interface: eth1
addresses:
- 203.0.113.11/24
mtu: 9000
disks:
os: /dev/vda
storage: /dev/vdb
- name: eda-node02
endpoint: "192.0.2.12"
interfaces:
- name: eth0
dhcp: false
interface: eth0
addresses:
- 192.0.2.12/24
routes:
- network: 0.0.0.0/0
gateway: 192.0.2.1
mtu: 9000
- name: eth1
dhcp: false
interface: eth1
addresses:
- 203.0.113.12/24
mtu: 9000
disks:
os: /dev/vda
storage: /dev/vdb
- name: eda-node03
endpoint: "192.0.2.13"
interfaces:
- name: eth0
dhcp: false
interface: eth0
addresses:
- 192.0.2.13/24
routes:
- network: 0.0.0.0/0
gateway: 192.0.2.1
mtu: 9000
- name: eth1
dhcp: false
interface: eth1
addresses:
- 203.0.113.13/24
mtu: 9000
disks:
os: /dev/vda
storage: /dev/vdb
- name: eda-node04
endpoint: "192.0.2.14"
interfaces:
- name: eth0
dhcp: false
interface: eth0
addresses:
- 192.0.2.14/24
routes:
- network: 0.0.0.0/0
gateway: 192.0.2.1
mtu: 9000
- name: eth1
dhcp: false
interface: eth1
addresses:
- 203.0.113.14/24
mtu: 9000
disks:
os: /dev/vda
- name: eda-node05
endpoint: "192.0.2.15"
interfaces:
- name: eth0
dhcp: false
interface: eth0
addresses:
- 192.0.2.15/24
routes:
- network: 0.0.0.0/0
gateway: 192.0.2.1
mtu: 9000
- name: eth1
dhcp: false
interface: eth1
addresses:
- 203.0.113.15/24
mtu: 9000
disks:
os: /dev/vda
- name: eda-node06
endpoint: "192.0.2.16"
interfaces:
- name: eth0
dhcp: false
interface: eth0
addresses:
- 192.0.2.16/24
routes:
- network: 0.0.0.0/0
gateway: 192.0.2.1
mtu: 9000
- name: eth1
dhcp: false
interface: eth1
addresses:
- 203.0.113.16/24
mtu: 9000
disks:
os: /dev/vda
k8s:
stack: ipv4
primaryNode: eda-node01
endpointUrl: https://192.0.2.5:6443
allowSchedulingOnControlPlanes: true
control-plane:
- eda-node01
- eda-node02
- eda-node03
worker:
- eda-node04
- eda-node05
- eda-node06
vip:
ipv4: 192.0.2.5
interface: eth0
env:
http_proxy: http://192.0.2.254:8080
https_proxy: http://192.0.2.254:8080
no_proxy: 192.0.2.0/24,203.0.113.0/24,.domain.tld,172.22.0.0/16,localhost,127.0.0.1,10.0.1.0/24,0.0.0.0,169.254.116.108
time:
disabled: false
servers:
- 192.0.2.253
- 192.0.2.254
nameservers:
servers:
- 192.0.2.253
- 192.0.2.254
version: 25.4.1
clusterName: eda-compute-cluster
machines:
- name: eda-node01
endpoint: "192.0.2.11"
interfaces:
- name: eth0
dhcp: false
interface: eth0
addresses:
- 192.0.2.11/24
routes:
- network: 0.0.0.0/0
gateway: 192.0.2.1
mtu: 9000
- name: eth1
dhcp: false
interface: eth1
addresses:
- 203.0.113.11/24
mtu: 9000
disks:
os: /dev/vda
storage: /dev/vdb
- name: eda-node02
endpoint: "192.0.2.12"
interfaces:
- name: eth0
dhcp: false
interface: eth0
addresses:
- 192.0.2.12/24
routes:
- network: 0.0.0.0/0
gateway: 192.0.2.1
mtu: 9000
- name: eth1
dhcp: false
interface: eth1
addresses:
- 203.0.113.12/24
mtu: 9000
disks:
os: /dev/vda
storage: /dev/vdb
- name: eda-node03
endpoint: "192.0.2.13"
interfaces:
- name: eth0
dhcp: false
interface: eth0
addresses:
- 192.0.2.13/24
routes:
- network: 0.0.0.0/0
gateway: 192.0.2.1
mtu: 9000
- name: eth1
dhcp: false
interface: eth1
addresses:
- 203.0.113.13/24
mtu: 9000
disks:
os: /dev/vda
storage: /dev/vdb
- name: eda-node04
endpoint: "192.0.2.14"
interfaces:
- name: eth0
dhcp: false
interface: eth0
addresses:
- 192.0.2.14/24
routes:
- network: 0.0.0.0/0
gateway: 192.0.2.1
mtu: 9000
- name: eth1
dhcp: false
interface: eth1
addresses:
- 203.0.113.14/24
mtu: 9000
disks:
os: /dev/vda
- name: eda-node05
endpoint: "192.0.2.15"
interfaces:
- name: eth0
dhcp: false
interface: eth0
addresses:
- 192.0.2.15/24
routes:
- network: 0.0.0.0/0
gateway: 192.0.2.1
mtu: 9000
- name: eth1
dhcp: false
interface: eth1
addresses:
- 203.0.113.15/24
mtu: 9000
disks:
os: /dev/vda
- name: eda-node06
endpoint: "192.0.2.16"
interfaces:
- name: eth0
dhcp: false
interface: eth0
addresses:
- 192.0.2.16/24
routes:
- network: 0.0.0.0/0
gateway: 192.0.2.1
mtu: 9000
- name: eth1
dhcp: false
interface: eth1
addresses:
- 203.0.113.16/24
mtu: 9000
disks:
os: /dev/vda
k8s:
stack: ipv4
primaryNode: eda-node01
endpointUrl: https://192.0.2.5:6443
allowSchedulingOnControlPlanes: true
control-plane:
- eda-node01
- eda-node02
- eda-node03
worker:
- eda-node04
- eda-node05
- eda-node06
vip:
ipv4: 192.0.2.5
interface: eth0
env:
http_proxy: http://192.0.2.254:8080
https_proxy: http://192.0.2.254:8080
no_proxy: 192.0.2.0/24,203.0.113.0/24,.domain.tld,172.22.0.0/16,localhost,127.0.0.1,10.0.1.0/24,0.0.0.0,169.254.116.108
time:
disabled: false
servers:
- 192.0.2.253
- 192.0.2.254
nameservers:
servers:
- 192.0.2.253
- 192.0.2.254
mirror:
name: 192.0.2.228
url: https://192.0.2.228
insecure: true
overridePath: false
skipFallback: true
mirrors:
- docker.io
- gcr.io
- ghcr.io
- registry.k8s.io
- quay.io
Generating the Talos machine configurations#
After creating the EDAADM configuration file, the next step is to generate all the configuration files that are necessary to deploy the Kubernetes environment using Talos.
Use the edaadm
tool to generate the deployment files.
The configuration files created by the edaadm
tool are used in the next steps when you deploy the virtual machines.
Note
Nokia strongly recommends that you store these files securely and keep a backup.
Deploying the Talos virtual machines#
This section provides the procedures for deploying an EDA node as a virtual machine on KVM or VMware vSphere.
Creating the VM on bridged networks on KVM#
Complete the following steps to deploy an EDA node as a virtual machine on KVM. These steps are executed on the RedHat Enterprise Linux or Rocky Linux hypervisor directly. The steps below assume the deployment of the eda-node01 virtual machine as per the above configuration file. Ensure that you use the correct machine configuration file generated by the edaadm
tool.
Note
This procedure expects two networks to be available on the KVM hypervisors. The OAM network is referred to as br0 and the fabric management network is referred to as br1. Both of these networks are standard Linux bridge networks. If you use only one interface, adapt Step 7
to only use the br0 network only.
-
Ensure that the virt-install tool is installed on the KVM hypervisor.
If you need to install the tool, use the following command: -
Verify that the ISO image downloaded in Downloading the KVM image is available on the hypervisor.
-
Copy the machine configuration file generated for this specific node to a file called user-data.
-
Create a file called meta-data for the node. Use the appropriate instance-id and local-hostname values.
-
Create a file called
network-config
for the node.The file should have the following content:
-
Create an ISO file containing the newly created files. For ease of use, name the ISO file with the name of the node for which you are creating the ISO.
-
Create the virtual machine. This step uses both the newly created ISO file and the ISO file downloaded from the Talos Machine Factory.
virt-install -n eda-node01 \ --description "Talos 1.9.2 vm for node eda-node01" \ --noautoconsole --os-type=generic \ --memory 65536 --vcpus 32 --cpu host \ --disk eda-node01-rootdisk.qcow2,format=qcow2,bus=virtio,size=100 \ --disk eda-node01-storagedisk.qcow2,format=qcow2,bus=virtio,size=300 \ --cdrom nocloud-amd64.iso \ --disk eda-node01-data.iso,device=cdrom \ --network bridge=br0,model=virtio \ --network bridge=br1,model=virtio
Note
If the node is not a storage node, you can remove the second --disk line.
Creating the VM on bridged networks on VMware vSphere#
Complete the following steps to deploy an EDA node as a virtual machine on VMware vSphere. The steps below assume the deployment of the eda-node01 virtual machine as per the above configuration file. Ensure that you are using the correct machine configuration file generated by the edaadm
tool.
You can use one of the following methods to deploy the VM on VMware vSphere:
-
the VMware vSphere vCenter or ESXi UI
For instructions, see Deploy an OVF or OVA Template in the VMware vSphere documentation.
-
the VMware Open Virtualization Format Tool CLI (VMware OVF Tool CLI)
This procedure provides an example of how to use the VMware OVF Tool CLI.
Note
This procedure uses two networks (portgroups) to be available on the ESXi hypervisors. The OAM network is referred to as OAM and the fabric management network is referred to as FABRIC. Both of these networks can be standard PortGroups or distributed PortGroups. If you only use one network, you do not need to create a second interface on the VM.
- Download and install the latest version of the VMware OVF Tool from the VMware Developer website.
-
Display details about the OVA image.
-
Create a base64 encoded hash from the Talos machine configuration for the node.
In this example, the output is stored as an environment variable to make it easy to use in the command to deploy the image using the OVF Tool.
-
Deploy the OVA image using the OVF Tool. For details about command line arguments, see the OVF Tool documentation from the VMware website.
Note
If you prefer using the VMware vCenter UI to create the virtual machines, use the regular method of deploying an OVA/OVF template. In this process, in the Customize template step, when you are prompted to provide the Inline Talos config, you must provide the base64 encoded data from the Talos machine configuration for the node. This very long string that is returned when you execute the base64 -i eda-node01.yaml command. Copy that long string and paste it into the field in the UI, then continue.
ovftool --acceptAllEulas --noSSLVerify \ -dm=thick \ -ds=DATASTORE \ -n=eda-node01 \ --net:"VM Network=OAM" \ --prop:talos.config="${NODECONFIG}" \ vmware-amd64.ova \ vi://administrator%[email protected]/My-DC/host/My-Cluster/Resources/My-Resource-Group
This step deploys the VM with the CPU, memory, disk, and NIC configuration of the default OVA image. The next step updates these settings.
-
In vCenter, edit the VM settings.
Make the following changes:
- Increase the number of vCPU to 32.
- Increase the memory to 64G.
- Increase the main disk size to 100G. On boot, Talos automatically extends the file system.
- Optionally, if this VM is a storage node, add a new disk with a size of 300G.
- Optionally, add a second network interface and connect it to the FABRIC PortGroup.
- Enable 100% resource reservation for the CPU, memory and disk.
-
Power on the virtual machine.