%global git_tag %{?git_tag}%{!?git_tag:v1.35.1+rke2r1} %global k8s_minor %{?k8s_minor}%{!?k8s_minor:%(echo "%{git_tag}" | sed -E 's/^v([0-9]+\\.[0-9]+).*/\\1/')} %global is_default %{?is_default}%{!?is_default:1} %global debug_package %{nil} %global _binary_payload w3.zstdio %global _source_payload w3.zstdio %global require_kernel_extra 0 %if 0%{?rhel} >= 10 %global require_kernel_extra 1 %endif %ifarch x86_64 %global relarch amd64 %endif %ifarch aarch64 %global relarch arm64 %endif %{!?relarch:%global relarch %{_arch}} # v1.35.1+rke2r1 => 1.35.1~rke2r1 %global rpmver %(echo "%{git_tag}" | sed -E 's/^v//' | sed -E 's/[+-]/~/g') %global release_url https://github.com/rancher/rke2/releases/download/%{git_tag} %if 0%{?is_default} %global pkgbase rke2 %else %global pkgbase rke2-%{k8s_minor} %endif Name: %{pkgbase} Version: %{rpmver} Release: %autorelease Summary: Rancher's enterprise-ready next-generation Kubernetes distribution License: Apache-2.0 URL: https://github.com/rancher/rke2 Source10: %{release_url}/rke2.linux-amd64.tar.gz Source11: %{release_url}/rke2-images.linux-amd64.tar.zst Source12: %{release_url}/rke2-images-cilium.linux-amd64.tar.zst Source13: %{release_url}/rke2-images-harvester.linux-amd64.tar.zst Source14: %{release_url}/rke2-images-multus.linux-amd64.tar.zst Source15: %{release_url}/rke2-images-traefik.linux-amd64.tar.zst Source16: %{release_url}/rke2-images-vsphere.linux-amd64.tar.zst Source20: %{release_url}/rke2.linux-arm64.tar.gz Source21: %{release_url}/rke2-images.linux-arm64.tar.zst Source22: %{release_url}/rke2-images-cilium.linux-arm64.tar.zst Source23: %{release_url}/rke2-images-harvester.linux-arm64.tar.zst Source24: %{release_url}/rke2-images-multus.linux-arm64.tar.zst Source25: %{release_url}/rke2-images-traefik.linux-arm64.tar.zst ExclusiveArch: x86_64 aarch64 BuildRequires: systemd-rpm-macros Requires: %{name}-common = %{version}-%{release} %description %{summary}. %package common Summary: Common files for RKE2 Requires(post): systemd Requires: iptables %if %{require_kernel_extra} Requires: kernel-modules-extra %endif Suggests: %{name}-images = %{version}-%{release} Provides: rke2-common = %{version}-%{release} Provides: rke2(stream) Conflicts: rke2(stream) %description common Common files shared by RKE2 server and agent components. %package server Summary: RKE2 server service Requires: %{name}-common = %{version}-%{release} Provides: rke2-server = %{version}-%{release} Conflicts: %{name}-agent %description server RKE2 server node service unit and defaults. %package agent Summary: RKE2 agent service Requires: %{name}-common = %{version}-%{release} Provides: rke2-agent = %{version}-%{release} Conflicts: %{name}-server %description agent RKE2 agent node service unit and defaults. %package images Summary: RKE2 airgap images for %{_arch} Provides: rke2-images = %{version}-%{release} Provides: rke2-images(stream) Conflicts: rke2-images(stream) %description images Prepackaged RKE2 container image archives for air-gapped use. These archives are installed under /var/lib/rancher/rke2/agent/images. %prep %setup -q -c -T %ifarch x86_64 tar -xzf %{SOURCE10} %endif %ifarch aarch64 tar -xzf %{SOURCE20} %endif %build # Release artifacts are prebuilt upstream. %install install -Dpm0755 bin/rke2 %{buildroot}%{_bindir}/rke2 install -Dpm0755 bin/rke2-killall.sh %{buildroot}%{_bindir}/rke2-killall.sh install -Dpm0755 bin/rke2-uninstall.sh %{buildroot}%{_bindir}/rke2-uninstall.sh install -Dpm0644 share/rke2/LICENSE.txt %{buildroot}%{_datadir}/rke2/LICENSE.txt install -Dpm0644 share/rke2/rke2-cis-sysctl.conf %{buildroot}%{_datadir}/rke2/rke2-cis-sysctl.conf install -d %{buildroot}%{_unitdir} sed -e 's|/usr/local/bin/rke2|%{_bindir}/rke2|g' \ -e 's|/usr/local/lib/systemd/system/|%{_unitdir}/|g' \ lib/systemd/system/rke2-server.service > %{buildroot}%{_unitdir}/rke2-server.service sed -e 's|/usr/local/bin/rke2|%{_bindir}/rke2|g' \ -e 's|/usr/local/lib/systemd/system/|%{_unitdir}/|g' \ lib/systemd/system/rke2-agent.service > %{buildroot}%{_unitdir}/rke2-agent.service install -d %{buildroot}%{_sysconfdir}/sysconfig install -m0644 lib/systemd/system/rke2-server.env %{buildroot}%{_sysconfdir}/sysconfig/rke2-server install -m0644 lib/systemd/system/rke2-agent.env %{buildroot}%{_sysconfdir}/sysconfig/rke2-agent install -d %{buildroot}%{_sysconfdir}/rancher/rke2 install -d %{buildroot}%{_sharedstatedir}/rancher/rke2 install -d %{buildroot}%{_sharedstatedir}/rancher/rke2/agent install -d %{buildroot}%{_sharedstatedir}/rancher/rke2/agent/images install -d %{buildroot}%{_localstatedir}/run/k3s for src in \ %ifarch x86_64 %{SOURCE11} %{SOURCE12} %{SOURCE13} %{SOURCE14} %{SOURCE15} %{SOURCE16}; do %endif %ifarch aarch64 %{SOURCE21} %{SOURCE22} %{SOURCE23} %{SOURCE24} %{SOURCE25}; do %endif install -pm0644 "$src" %{buildroot}%{_sharedstatedir}/rancher/rke2/agent/images/ done %post server %systemd_post rke2-server.service %preun server %systemd_preun rke2-server.service %postun server %systemd_postun_with_restart rke2-server.service %post agent %systemd_post rke2-agent.service %preun agent %systemd_preun rke2-agent.service %postun agent %systemd_postun_with_restart rke2-agent.service %files %files common %{_bindir}/rke2 %{_bindir}/rke2-killall.sh %{_bindir}/rke2-uninstall.sh %{_datadir}/rke2/LICENSE.txt %{_datadir}/rke2/rke2-cis-sysctl.conf %dir %{_sysconfdir}/rancher/rke2 %dir %{_sharedstatedir}/rancher/rke2 %dir %{_sharedstatedir}/rancher/rke2/agent %dir %{_localstatedir}/run/k3s %files server %{_unitdir}/rke2-server.service %config(noreplace) %{_sysconfdir}/sysconfig/rke2-server %files agent %{_unitdir}/rke2-agent.service %config(noreplace) %{_sysconfdir}/sysconfig/rke2-agent %files images %dir %{_sharedstatedir}/rancher/rke2/agent/images %{_sharedstatedir}/rancher/rke2/agent/images/rke2-images*.linux-%{relarch}.tar.zst %changelog %autochangelog