hcloud-talos / terraform-hcloud-talos

This repository contains a Terraform module for creating a Kubernetes cluster with Talos in the Hetzner Cloud.
https://registry.terraform.io/modules/hcloud-talos/talos
MIT License
55 stars 12 forks source link

Error complains about wrong kubernetes version 1.20.0 #36

Closed malagant closed 1 month ago

malagant commented 1 month ago
Plan: 24 to add, 0 to change, 0 to destroy.
╷
│ Error: chart requires kubeVersion: >= 1.21.0-0 which is incompatible with Kubernetes v1.20.0
│
│   with module.talos.data.helm_template.cilium_default[0],
│   on .terraform/modules/talos/manifest_cilium.tf line 1, in data "helm_template" "cilium_default":
│    1: data "helm_template" "cilium_default" {
│
╵

I created a main.tf file with the following content and did a terraform init and terraform plan with the following content:

module "talos" {
  source  = "hcloud-talos/talos/hcloud"
  version = "2.8.3"

  talos_version = "v1.7.5" # The version of talos features to use in generated machine configurations

  hcloud_token = "BpP182jC8t1exhD0f9ZTS2V4HeuIQg0AwtLb2bke1exhD0f9ZTS2V4HeuIQG7qh65bHz9X7"

  cluster_name     = "heartcoded.io"
  cluster_domain   = "cluster.heartcoded.io.local"
  cluster_api_host = "kube.heartcoded.io"

  # If true, the current IP address will be used as the source for the firewall rules.
  # ATTENTION: to determine the current IP, a request to a public service (https://ipv4.icanhazip.com) is made.
  firewall_use_current_ip = false

  datacenter_name = "fsn1-dc14"

  kubernetes_version = "1.29.7"

  control_plane_count       = 3
  control_plane_server_type = "cax11"

  worker_count       = 3
  worker_server_type = "cax21"
}

I changed the token for opening this issue ;)

Any hint for me where this error might come from?

mrclrchtr commented 1 month ago

I'm not on the PC at the moment so I can't analyze it. I will be back next week. But I could imagine that it is related to cilium versions conflict.

That's something I need to take a closer look at anyway... The latest kubernetes version requires cilium 1.16.0.

It is possible to customize the cilium version via parameter.

mrclrchtr commented 1 month ago

Adding the following no longer throws the error:

module "talos" {
  ...
  cilium_version     = "1.15.7"
}

The problem is: In this module cilium is used with the latest version. This is not a good idea, because an error like this can occur.

Version 1.16.0 was recently released and is not compatible with k8s 1.29.7.

Cilium must always be used in combination with a suitable Kubernetes version: https://docs.cilium.io/en/stable/network/kubernetes/compatibility/

Follow up tasks:

mrclrchtr commented 1 month ago

I was wrong: It is not directly because of cilium... but it seems that in version 1.16.0 a new check of helm is used. I can't say exactly how it works, but there is the possibility to specify a kubernetes version in the terraform resource helm_template. This solves the problem. I make sure that from now on a default value is always set in the version.

mrclrchtr commented 1 month ago

:tada: This issue has been resolved in version 2.8.10 :tada:

The release is available on GitHub release

Your semantic-release bot :package::rocket: