diff --git a/website/content/docs/v0.7/Virtualized Platforms/proxmox.md b/website/content/docs/v0.7/Virtualized Platforms/proxmox.md index 640d9c42e..86cb1c5b4 100644 --- a/website/content/docs/v0.7/Virtualized Platforms/proxmox.md +++ b/website/content/docs/v0.7/Virtualized Platforms/proxmox.md @@ -1,5 +1,181 @@ --- -title: "Proxmox" +title: Proxmox --- -Talos is known to work on Proxmox; however, it is currently undocumented. +In this guide we will create a Kubernetes cluster using Proxmox. + +## Video Walkthrough + +To see a live demo of this writeup, visit Youtube here: + + + +## Installation + +### How to Get Proxmox + +It is assumed that you have already installed Proxmox onto the server you wish to create Talos VMs on. +Visit the [Proxmox](https://www.proxmox.com/en/downloads) downloads page if necessary. + +### Install talosctl + +You can download `talosctl` via +[github.com/talos-systems/talos/releases](https://github.com/talos-systems/talos/releases) + +```bash +curl https://github.com/talos-systems/talos/releases/download//talosctl-- -L -o talosctl +``` + +For example version `v0.7.0` for `linux` platform: + +```bash +curl https://github.com/talos-systems/talos/releases/download/v0.7.0/talosctl-linux-amd64 -L -o talosctl +sudo cp talosctl /usr/local/bin +sudo chmod +x /usr/local/bin/talosctl +``` + +### Download ISO Image + +In order to install Talos in Proxmox, you will need the ISO image from the Talos release page. +You can download `talos-amd64.iso` via +[github.com/talos-systems/talos/releases](https://github.com/talos-systems/talos/releases) + +```bash +mkdir -p _out/ +curl https://github.com/talos-systems/talos/releases/download//talos-.iso -L -o _out/talos-.iso +``` + +For example version `v0.7.0` for `linux` platform: + +```bash +mkdir -p _out/ +curl https://github.com/talos-systems/talos/releases/download/v0.7.0/talos-amd64.iso -L -o _out/talos-amd64.iso +``` + +## Upload ISO + +From the Proxmox UI, select the "local" storage and enter the "Content" section. +Click the "Upload" button: + + + +Select the ISO you downloaded previously, then hit "Upload" + + + +## Create VMs + +Start by creating a new VM by clicking the "Create VM" button in the Proxmox UI: + + + +Fill out a name for the new VM: + + + +In the OS tab, select the ISO we uploaded earlier: + + + +Keep the defaults set in the "System" tab. + +Keep the defaults in the "Hard Disk" tab as well, only changing the size if desired. + +In the "CPU" section, give at least 2 cores to the VM: + + + +Verify that the RAM is set to at least 2GB: + + + +Keep the default values for networking, verifying that the VM is set to come up on the bridge interface: + + + +Finish creating the VM by clicking through the "Confirm" tab and then "Finish". + +Repeat this process for a second VM to use as a worker node. +You can also repeat this for additional nodes desired. + +## Start Control Plane Node + +Once the VMs have been created and updated, start the VM that will be the first control plane node. +This VM will boot the ISO image specified earlier and enter "maintenance mode". +Once the machine has entered maintenance mode, there will be a console log that details the IP address that the node received. +Take note of this IP address, which will be referred to as `$CONTROL_PLANE_IP` for the rest of this guide. +If you wish to export this IP as a bash variable, simply issue a command like `export CONTROL_PLANE_IP=1.2.3.4`. + + + +## Generate Machine Configurations + +With the IP address above, you can now generate the machine configurations to use for installing Talos and Kubernetes. +Issue the following command, updating the output directory, cluster name, and control plane IP as you see fit: + +```bash +talosctl gen config talos-vbox-cluster https://$CONTROL_PLANE_IP --output-dir _out +``` + +This will create several files in the _out directory: init.yaml, controlplane.yaml, join.yaml, and talosconfig. + +## Create Control Plane Node + +Using the `init.yaml` generated above, you can now apply this config using talosctl. +Issue: + +```bash +talosctl apply-config --insecure --nodes $CONTROL_PLANE_IP --file _out/init.yaml +``` + +You should now see some action in the Proxmox console for this VM. +Talos will be installed to disk, the VM will reboot, and then Talos will configure the Kubernetes control plane on this VM. + +> Note: This process can be repeated multiple times to create an HA control plane. +> Simply apply `controlplane.yaml` instead of `init.yaml` for subsequent nodes. + +## Create Worker Node + +Create at least a single worker node using a process similar to the control plane creation above. +Start the worker node VM and wait for it to enter "maintenance mode". +Take note of the worker node's IP address, which will be referred to as `$WORKER_IP` + +Issue: + +```bash +talosctl apply-config --insecure --nodes $WORKER_IP --file _out/join.yaml +``` + +> Note: This process can be repeated multiple times to add additional workers. + +## Using the Cluster + +Once the cluster is available, you can make use of `talosctl` and `kubectl` to interact with the cluster. +For example, to view current running containers, run `talosctl containers` for a list of containers in the `system` namespace, or `talosctl containers -k` for the `k8s.io` namespace. +To view the logs of a container, use `talosctl logs ` or `talosctl logs -k `. + +First, configure talosctl to talk to your control plane node by issuing the following, updating paths and IPs as necessary: + +```bash +export TALOSCONFIG="_out/talosconfig" +talosctl config endpoint $CONTROL_PLANE_IP +talosctl config node $CONTROL_PLANE_IP +``` + +## Retrieve and Configure the `kubeconfig` + +Fetch the kubeconfig file from the control plane node by issuing: + +```bash +talosctl kubeconfig +``` + +You can then use kubectl in this fashion: + +```bash +kubectl get nodes +``` + +## Cleaning Up + +To cleanup, simply stop and delete the virtual machines from the Proxmox UI. diff --git a/website/static/images/proxmox-guide/click-upload.png b/website/static/images/proxmox-guide/click-upload.png new file mode 100644 index 000000000..06b911616 Binary files /dev/null and b/website/static/images/proxmox-guide/click-upload.png differ diff --git a/website/static/images/proxmox-guide/create-vm.png b/website/static/images/proxmox-guide/create-vm.png new file mode 100644 index 000000000..f8aa02ed0 Binary files /dev/null and b/website/static/images/proxmox-guide/create-vm.png differ diff --git a/website/static/images/proxmox-guide/edit-cpu.png b/website/static/images/proxmox-guide/edit-cpu.png new file mode 100644 index 000000000..ff29603fb Binary files /dev/null and b/website/static/images/proxmox-guide/edit-cpu.png differ diff --git a/website/static/images/proxmox-guide/edit-nic.png b/website/static/images/proxmox-guide/edit-nic.png new file mode 100644 index 000000000..c6fb40701 Binary files /dev/null and b/website/static/images/proxmox-guide/edit-nic.png differ diff --git a/website/static/images/proxmox-guide/edit-os.png b/website/static/images/proxmox-guide/edit-os.png new file mode 100644 index 000000000..f9269e591 Binary files /dev/null and b/website/static/images/proxmox-guide/edit-os.png differ diff --git a/website/static/images/proxmox-guide/edit-ram.png b/website/static/images/proxmox-guide/edit-ram.png new file mode 100644 index 000000000..e8e02b66f Binary files /dev/null and b/website/static/images/proxmox-guide/edit-ram.png differ diff --git a/website/static/images/proxmox-guide/edit-vm-name.png b/website/static/images/proxmox-guide/edit-vm-name.png new file mode 100644 index 000000000..14c495388 Binary files /dev/null and b/website/static/images/proxmox-guide/edit-vm-name.png differ diff --git a/website/static/images/proxmox-guide/maintenance-mode.png b/website/static/images/proxmox-guide/maintenance-mode.png new file mode 100644 index 000000000..8868c2c21 Binary files /dev/null and b/website/static/images/proxmox-guide/maintenance-mode.png differ diff --git a/website/static/images/proxmox-guide/select-iso.png b/website/static/images/proxmox-guide/select-iso.png new file mode 100644 index 000000000..354a14452 Binary files /dev/null and b/website/static/images/proxmox-guide/select-iso.png differ