From a9a6a30e597b63459586a0bab9e3a248e7237e4e Mon Sep 17 00:00:00 2001 From: "Dustin C. Hatch" Date: Fri, 31 Jan 2025 18:57:21 -0600 Subject: [PATCH] r/{cri-o,kubelet}: Support versioned packages Fedora 41 introduced versioned package names for Kubernetes components, including CRI-O. The intent is to allow multiple versions of Kubernetes to be available (but not necessarily installed) within a given Fedora release. In order to use these packages, we need to set the desired Kubernetes version, via the new `kubernetes_version` Ansible variable. --- roles/cri-o/tasks/main.yml | 23 ++++++++++++++++++++++- roles/cri-o/vars/Fedora-40.yml | 1 + roles/cri-o/vars/Fedora.yml | 1 + roles/kubelet/defaults/main.yml | 1 + roles/kubelet/vars/Fedora.yml | 7 +++++++ roles/kubelet/vars/main.yml | 1 + 6 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 roles/cri-o/vars/Fedora-40.yml create mode 100644 roles/cri-o/vars/Fedora.yml create mode 100644 roles/kubelet/defaults/main.yml create mode 100644 roles/kubelet/vars/Fedora.yml diff --git a/roles/cri-o/tasks/main.yml b/roles/cri-o/tasks/main.yml index 6d54902..092c1de 100644 --- a/roles/cri-o/tasks/main.yml +++ b/roles/cri-o/tasks/main.yml @@ -1,8 +1,29 @@ +- name: load os-specific values + include_vars: '{{ item }}' + with_first_found: + - '{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml' + - '{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml' + - '{{ ansible_os_family }}-{{ ansible_distribution_major_version }}.yml' + - '{{ ansible_distribution }}.yml' + - '{{ ansible_os_family }}.yml' + - defaults.yml + tags: + - always + +- name: ensure legacy cri-o package is not installed + package: + name: cri-o + state: absent + when: crio_package != 'cri-o' + tags: + - install + - cleanup + - name: ensure cri-o is installed package: name: - container-selinux - - cri-o + - '{{ crio_package }}' - crun state: present tags: diff --git a/roles/cri-o/vars/Fedora-40.yml b/roles/cri-o/vars/Fedora-40.yml new file mode 100644 index 0000000..b60e0ba --- /dev/null +++ b/roles/cri-o/vars/Fedora-40.yml @@ -0,0 +1 @@ +crio_package: cri-o diff --git a/roles/cri-o/vars/Fedora.yml b/roles/cri-o/vars/Fedora.yml new file mode 100644 index 0000000..295e7c3 --- /dev/null +++ b/roles/cri-o/vars/Fedora.yml @@ -0,0 +1 @@ +crio_package: cri-o{{ kubernetes_version }} diff --git a/roles/kubelet/defaults/main.yml b/roles/kubelet/defaults/main.yml new file mode 100644 index 0000000..2b8596a --- /dev/null +++ b/roles/kubelet/defaults/main.yml @@ -0,0 +1 @@ +kubernetes_version: 1.29 diff --git a/roles/kubelet/vars/Fedora.yml b/roles/kubelet/vars/Fedora.yml new file mode 100644 index 0000000..8c832fd --- /dev/null +++ b/roles/kubelet/vars/Fedora.yml @@ -0,0 +1,7 @@ +kubernetes_distro_packages: +- kubernetes{{ kubernetes_version }} +- kubernetes{{ kubernetes_version }}-client +- kubernetes{{ kubernetes_version }}-kubeadm + +kubernetes_packages: '{{ kubernetes_common_packages + kubernetes_distro_packages }}' + diff --git a/roles/kubelet/vars/main.yml b/roles/kubelet/vars/main.yml index 6dd7fe5..92f48f9 100644 --- a/roles/kubelet/vars/main.yml +++ b/roles/kubelet/vars/main.yml @@ -2,6 +2,7 @@ kubernetes_kernel_modules: - br_netfilter kubernetes_common_packages: +- cri-tools - ebtables - ethtool - iproute-tc