Files
homelab-v/tofu/kubernetes
renovate[bot]Vegard Hagenrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
6fd4d4b15c chore(deps): renovate 2025-09-28
chore(deps): update dependency grafana/grafana-operator to v5.19.4 (#368)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update dependency unpoller/unpoller to v2.15.4 (#380)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update github actions (#369)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Vegard Stenhjem Hagen <[email protected]>

chore(deps): update helm release kube-prometheus-stack to v75.18.1 (#370)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update terraform google to ~> 6.50.0 (#372)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update netbird (#373)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update sealed-secrets docker tag to v2.5.19 (#374)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update cloudflare/cloudflared docker tag to v2025.9.1 (#375)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update cilium (#379)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update media containers (#377)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update docker.io/adguard/adguardhome docker tag to v0.107.66 (#381)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update docker.io/lldap/lldap docker tag to v0.6.2 (#382)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update ghcr.io/authelia/authelia docker tag to v4.39.10 (#383)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update helm release authelia to v0.10.46 (#384)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update helm release node-feature-discovery to v0.17.4 (#385)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update proxmox-csi-plugin docker tag to v0.3.14 (#386)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update dependency kubernetes/kubernetes to v1.34.1 (#387)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update dependency siderolabs/talos to v1.11.2 (#388)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update docker.io/grafana/grafana docker tag to v12.2.0 (#389)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update ghcr.io/advplyr/audiobookshelf docker tag to v2.29.0 (#390)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update helm release argo-cd to v8.5.7 (#391)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update helm release cloudnative-pg to v0.26.0 (#392)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update intel device plugins to v0.34.0 (#393)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update registry.k8s.io/git-sync/git-sync docker tag to v4.5.0 (#394)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update terraform proxmox to v0.84.0 (#395)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update terraform talos to v0.9.0 (#396)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update actions/checkout action to v5 (#397)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update ghcr.io/home-operations/radarr docker tag to v6 (#398)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update helm release kube-prometheus-stack to v77 (#399)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

chore(deps): update terraform google to v7 (#400)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: Vegard Hagen <[email protected]>
2025-09-28 17:59:30 +02:00
..
2025-08-03 15:59:03 +02:00
2025-09-28 17:59:30 +02:00
2025-04-18 13:56:14 +02:00

Kubernetes Tofu

Read Talos Kubernetes on Proxmox using OpenTofu for a more thorough explanation of how everything works.

Install pre-requisites

  1. tofu
  2. talosctl
  3. kubectl

Initialize tofu

tofu init

Proxmox

Environment variable

export TF_VAR_proxmox_api_token="<YOUR_API_TOKEN>"

Optional External Secrets Manager / Other methods

Bitwarden Secrets Manager - Name your secret TF_VAR_proxmox_api_token in bws.

bws run -- tofu ...

Note: By default, the shell is sh. Change with --shell if required.

Sealed-secrets

Generate certificate

openssl req -x509 -days 365 -nodes -newkey rsa:4096 -keyout sealed-secrets.key -out sealed-secrets.crt -subj "/CN=sealed-secret/O=sealed-secret"

Kubernetes

Output kubeconfig

tofu output -raw kube_config

Talos

Output talosconfig

tofu output -raw talos_config

Upgrading Talos and Kubernetes

Upgrade talos nodes one by one.

  1. Set talos_image.auto.tfvars -> image -> update_version to the required update version.
  2. Set talos_cluster.auto.tfvars -> talos_cluster_config -> kubernetes_version to the required kubernetes version.
  3. Set talos_nodes.auto.tfvars -> talos_nodes -> $node_1 -> update = true and run tofu apply.
  4. Set talos_nodes.auto.tfvars -> talos_nodes -> $node_2 -> update = true, leave the previous nodes update = true and run tofu apply.
  5. Set talos_nodes.auto.tfvars -> talos_nodes -> $node_3 -> update = true, leave the previous nodes update = true and run tofu apply.
  6. ...
  7. Set talos_nodes.auto.tfvars -> talos_nodes -> $node_n -> update = true, leave the previous nodes update = true and run tofu apply.
  8. After upgrading all nodes, Set talos_image.auto.tfvars -> image -> version to match the update version and set update = false for all nodes.

Upgrading Talos Schematic

  1. Create a new schematic file.
  2. Same process as above instead of image.version and image.update_version, change image.schematic and image.update_schematic, in talos_image.auto.tfvars.

Reuse machine secrets

tofu state rm module.talos.talos_machine_secrets.this
tofu import module.talos.talos_machine_secrets.this output/talos-machine-secrets.yaml
tofu apply --refresh=false