Skip to content

Deploy a Talos OS-based cluster in Proxmox using Terraform, with Cilium and ArgoCD

License

Notifications You must be signed in to change notification settings

roeldev/iac-talos-cluster

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Talos cluster on Proxmox

This repository contains a Terraform configuration to create a Talos Kubernetes cluster on servers running Proxmox VE. It includes a basic Kubernetes configuration to run services on the cluster, which includes Cilium as CNI, Talos CCM and Argo CD to deploy services in a GitOps way.

Requirements

  • Proxmox server(s)
  • terraform
  • kubectl
  • go
  • nmap

Usage

  • Make sure all tools are installed and are set in your PATH;
  • Run task init to initialize the Terraform providers;
  • Download the correct Talos release image and place it in a folder which Proxmox can access;
  • Change the mac-to-ip_scan_subnets variable to match to subnets on which Proxmox creates the VMs by default;
  • Optionally run terraform plan to see what will be created;
  • Run task create to create the VMs, boot the Talos cluster and run some basic Kubernetes services.

How it works

  • Terraform creates VMs in Proxmox using a Talos release image;
  • Terraform creates Talos configs and applies it to the VMs running Talos;
  • A Talos control plane is bootstrapped and a Talos cluster is formed;
  • Terraform generates the inline manifests (containing Cilium and Talos CCM) which Talos installs;
  • Terraform waits for the nodes to be ready and installs Argo CD;
  • Argo CD installs all specified services and applications;
  • Argo CD keeps the services and applications in sync with the manifests in this repository.

If everything works as expected, Argo CD should automatically install metrics-server on the recently created Kubernetes cluster.

License

Copyright © 2023-2024 Roel Schut. All rights reserved.

This project is governed by a BSD-style license that can be found in the LICENSE file.