Requirements
- A machine with at least 32 cores and 128GB of RAM
- A root disk of at least 100GB
- A data disk of at least 300GB
Setup
Setup will depend on your hypervisor of choice, this Virtual Machine has been tested using:- Kubevirt
- Proxmox
Disks
- The provided disk.img should be used as the root volume, and may need to be converted using qemu-img
- The data disk should be attached to
/dev/vdband be blank. This disk should be detached between upgrades and reattached as it contains all application data
Ports
- 50000 for access to the talos API
- 6443 for access to the Kubernetes API
- 30080 and 30443 for application access
Example
During testing these VMs are deployed on Kubernetes via Kubevirt with the following configuration:Kubevirt VM Deployment
Kubevirt VM Deployment
Configuring BTP
As part of the installation package there are 4 more files that provide access to the VM:- talosconfig
- kubeconfig
- controlplane.yaml
- worker.yaml
- btp.yaml
Configuring the BTP App
Thebtp.yaml file contains the configuration for your deployment and will need to be updated. This can be done by adding values (more information in the configuring BTP section) to the yaml file and applying it to the cluster. We suggest using a valuesObject key to provide seperation between values set by yourselves and values set by default.
As an example the domain will need to change to match your internal domain:
Machine with Network Access
Talos uses mutual transport layer security to ensure it can only be accessed on a strict list of domains. The domains are listed in thecontrolplane.yaml file, in these examples talos-node.local is used.
Steps:
- Add
talos-node.localDNS entry for the VM (Or add an entry fortalos-node.localin /etc/hosts) - Install:
- Make changes to the btp.yaml file to suit your needs
- Apply those changes with:
Kubernetes Pod
The local address (127.0.0.1) is valid to reconfigure the VM and all Kubernetes calls originate from there. Steps:- Get access to the cluster
- Create a pod on the Kubernetes cluster:
- Wait for the pod to be ready:
- Make changes to the
btp.yamlfile to suit your needs - Copy the
talosconfigandbtp.yamlfiles to the pod: - Install
talosctlandkubectl, then apply the changes: - Once complete, delete the pod:
Routing to the Virtual Machine
The Virtual Machine can be routed to either with a load balancer that terminates TLS and forwards plaintext traffic, or TLS can be terminated by the virtual machine’s internal load balancer.External Load Balancer
You must set up a load balancer with certificates for your domain, terminating TLS at the load balancer level and forwarding traffic to the application access ports on the load balancer. The load balancer should be configured with a DNS record for your domain, and the domain should be passed to the Binarly platform (more information in the configuring BTP section).Using the Internal Load Balancer
The virtual machine employs a Kubernetes Gateway listening on the application ports and can be used as a traffic entrypoint. This requires some configuration of the Gateway in Kubernetes to set up the certificate and TLS termination.Due to restricted ports when using this ingress method you will need to access the VM using the port as part of the domain. For example:
https://binarly-dashboard.internal:30443 or http://binarly-dashboard.internal:30080.Setting up Internal Certificates
Once there is a domain pointing to the virtual machine’s IP address, apply certificates to the gateway:- Get access to the kubernetes cluster following the instructions from the Machine with Network Access section
- Create a secret containing your certificate in the
defaultnamespace by editing this template: - Run
kubectl edit Gateway ingress-gateway -n defaultwhich will open the Gateway in a local editor - Replace the
httpslistener entry (Whole file provided for an example):