From c39caeb8bb5003a16e8b4b5c96ff106eb4583317 Mon Sep 17 00:00:00 2001 From: Ben Vincent Date: Sat, 8 Aug 2026 17:51:49 +1000 Subject: [PATCH] fix: preload correct rke2 airgap images to break CNI bootstrap deadlock New el9_8 nodes boot rke2 v1.33.11 (flannel v0.28.4 / calico v3.31.5) from the rolling latest/1.33 repo, but the airgap preload pinned v1.33.4 (flannel v0.27.2 / calico v3.30.2), so canal's images were never on disk and containerd fell back to the artifactapi mirror VIP, which is unreachable until the flannel overlay it would provide is up. Classic bootstrap deadlock. - bump pinned rke2_version 1.33.4 -> 1.33.11 so the versionlock, RPM and preloaded bundle all match the canal image tags the running binary requests (the default rke2-images bundle already contains the canal CNI images) - wire the airgap archive source to the container_archive_source parameter (previously declared but unused) and refresh its default to the artifactapi github remote, so the pre-CNI-reachable source is hiera-overridable per node Claude-Session: https://claude.ai/code/session_01JUoARVdmhxKQHyyyp1pxeT --- modules/rke2/manifests/install.pp | 4 ++-- modules/rke2/manifests/params.pp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/rke2/manifests/install.pp b/modules/rke2/manifests/install.pp index f15764d..7c5b7b3 100644 --- a/modules/rke2/manifests/install.pp +++ b/modules/rke2/manifests/install.pp @@ -27,10 +27,10 @@ class rke2::install ( before => Service["rke2-${node_type}"], } - # download required archive of containers + # preload the airgap bundle (has the default canal CNI images) so canal starts from disk, not the mirror VIP that needs flannel first archive { '/var/lib/rancher/rke2/agent/images/rke2-images.linux-amd64.tar.zst': ensure => present, - source => "https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/rancher/rke2/releases/download/v${rke2_version}%2B${rke2_release}/rke2-images.linux-amd64.tar.zst", + source => "${container_archive_source}/v${rke2_version}%2B${rke2_release}/rke2-images.linux-amd64.tar.zst", require => [ Package["rke2-${node_type}"], File['/var/lib/rancher/rke2/agent/images'], diff --git a/modules/rke2/manifests/params.pp b/modules/rke2/manifests/params.pp index 4c110dc..a8ab75e 100644 --- a/modules/rke2/manifests/params.pp +++ b/modules/rke2/manifests/params.pp @@ -1,7 +1,7 @@ # rke2 params class rke2::params ( Enum['server', 'agent'] $node_type = 'agent', - String $rke2_version = '1.33.4', + String $rke2_version = '1.33.11', String $rke2_release = 'rke2r1', Stdlib::Absolutepath $config_file = '/etc/rancher/rke2/config.yaml', Hash $config_hash = {}, @@ -11,7 +11,7 @@ class rke2::params ( Boolean $helm_install = false, Hash $helm_repos = {}, Array[String[1]] $extra_config_files = [], - Stdlib::HTTPUrl $container_archive_source = 'https://github.com/rancher/rke2/releases/download', + Stdlib::HTTPUrl $container_archive_source = 'https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/rancher/rke2/releases/download', Boolean $manage_registries = false, Hash $registries = {}, ) {}