From da8428bbae0f61d787b737b3fe031721076d9efd Mon Sep 17 00:00:00 2001 From: Sascha Grunert Date: Thu, 24 Aug 2023 12:29:46 +0200 Subject: [PATCH] Integrate CRI-O into `krel obs` Signed-off-by: Sascha Grunert --- cmd/krel/templates/latest/cri-o/cri-o.spec | 112 +++++++++++++++++++++ cmd/krel/templates/latest/metadata.yaml | 4 + pkg/obs/consts/consts.go | 1 + pkg/obs/obs.go | 4 +- pkg/obs/specs/archive.go | 3 + pkg/obs/specs/specs.go | 3 +- 6 files changed, 123 insertions(+), 4 deletions(-) create mode 100644 cmd/krel/templates/latest/cri-o/cri-o.spec diff --git a/cmd/krel/templates/latest/cri-o/cri-o.spec b/cmd/krel/templates/latest/cri-o/cri-o.spec new file mode 100644 index 00000000000..053d6932d85 --- /dev/null +++ b/cmd/krel/templates/latest/cri-o/cri-o.spec @@ -0,0 +1,112 @@ +%global debug_package %{nil} +%undefine _missing_build_ids_terminate_build + +Name: cri-o +Version: {{ .RPMVersion }} +Release: {{ .Revision }} +Summary: Open Container Initiative-based implementation of Kubernetes Container Runtime Interface + +%if "%{_vendor}" == "debbuild" +Group: admin +%endif + +Packager: Kubernetes Authors +License: Apache-2.0 +URL: https://kubernetes.io +Source0: %{name}_%{version}.orig.tar.gz +BuildRequires: sed + +%description +%{summary}. + +%prep +%setup -q -c + +%build +# Nothing to build + +%install +%define archive_root "$(uname -m)"/cri-o + +# Binaries +install -dp %{buildroot}%{_bindir} +install -p -m 755 %{archive_root}/bin/crio %{buildroot}%{_bindir}/crio +install -p -m 755 %{archive_root}/bin/conmon %{buildroot}%{_bindir}/conmon +install -p -m 755 %{archive_root}/bin/pinns %{buildroot}%{_bindir}/pinns +install -p -m 755 %{archive_root}/bin/crun %{buildroot}%{_bindir}/crun + +# Completions +install -d -m 755 %{buildroot}%{_datadir}/bash-completion/completions +install -D -m 644 -t %{buildroot}%{_datadir}/bash-completion/completions %{archive_root}/completions/bash/crio + +install -d -m 755 %{buildroot}%{_datadir}/fish/completions +install -D -m 644 -t %{buildroot}%{_datadir}/fish/completions %{archive_root}/completions/fish/crio.fish + +install -d -m 755 %{buildroot}%{_datadir}/zsh/site-functions +install -D -m 644 -t %{buildroot}%{_datadir}/zsh/site-functions %{archive_root}/completions/zsh/_crio + +# Configurations +install -dp %{buildroot}%{_sysconfdir}/containers +install -p -m 644 %{archive_root}/contrib/policy.json %{buildroot}%{_sysconfdir}/containers/policy.json + +install -p -m 644 %{archive_root}/etc/crictl.yaml %{buildroot}%{_sysconfdir}/crictl.yaml + +install -dp %{buildroot}%{_sysconfdir}/crio/crio.conf.d +install -p -m 644 %{archive_root}/etc/10-crun.conf %{buildroot}%{_sysconfdir}/crio/crio.conf.d/10-crun.conf +install -p -m 644 %{archive_root}/etc/crio.conf %{buildroot}%{_sysconfdir}/crio/crio.conf + +install -dp %{buildroot}%{_datadir}/oci-umount/oci-umount.d +install -p -m 644 %{archive_root}/etc/crio-umount.conf %{buildroot}%{_datadir}/oci-umount/oci-umount.d/crio-umount.conf + +install -dp %{buildroot}%{_sysconfdir}/cni/net.d +install -p -m 644 %{archive_root}/contrib/11-crio-ipv4-bridge.conflist %{buildroot}%{_sysconfdir}/cni/net.d/11-crio-ipv4-bridge.conflist + +# Fix the prefix in crio.service +sed -i 's;/usr/local/bin;/usr/bin;g' %{archive_root}/contrib/crio.service +install -D -m 644 -t %{buildroot}%{_unitdir} %{archive_root}/contrib/crio.service + +# Docs +install -D -m 644 -t %{buildroot}%{_mandir}/man5 %{archive_root}/man/crio.conf.5 +install -D -m 644 -t %{buildroot}%{_mandir}/man5 %{archive_root}/man/crio.conf.d.5 +install -D -m 644 -t %{buildroot}%{_mandir}/man8 %{archive_root}/man/crio.8 + +%files +# Binaries +%{_bindir}/crio +%{_bindir}/conmon +%{_bindir}/pinns +%{_bindir}/crun + +# Completions +%{_datadir}/bash-completion/completions/crio +%dir %{_datadir}/fish +%dir %{_datadir}/fish/completions +%{_datadir}/fish/completions/crio.fish +%dir %{_datadir}/zsh +%dir %{_datadir}/zsh/site-functions +%{_datadir}/zsh/site-functions/_crio + +# Configurations +%dir %{_sysconfdir}/containers +%config(noreplace) %{_sysconfdir}/containers/policy.json +%config(noreplace) %{_sysconfdir}/crictl.yaml +%dir %{_sysconfdir}/cni +%dir %{_sysconfdir}/cni/net.d +%config(noreplace) %{_sysconfdir}/cni/net.d/11-crio-ipv4-bridge.conflist +%{_unitdir}/crio.service +%dir %{_sysconfdir}/crio +%dir %{_sysconfdir}/crio/crio.conf.d +%{_sysconfdir}/crio/crio.conf +%{_sysconfdir}/crio/crio.conf.d/10-crun.conf +%dir %{_datadir}/oci-umount +%dir %{_datadir}/oci-umount/oci-umount.d +%{_datadir}/oci-umount/oci-umount.d/crio-umount.conf + +# Docs +%{_mandir}/man5/crio.conf*5* +%{_mandir}/man8/crio*.8* + +%license %{_arch}/cri-o/LICENSE +%doc %{_arch}/cri-o/README.md + +%changelog diff --git a/cmd/krel/templates/latest/metadata.yaml b/cmd/krel/templates/latest/metadata.yaml index 02aa0e24ce2..24676441e40 100644 --- a/cmd/krel/templates/latest/metadata.yaml +++ b/cmd/krel/templates/latest/metadata.yaml @@ -2,6 +2,10 @@ cri-tools: - versionConstraint: ">= 1.0.0" sourceURLTemplate: "gs://k8s-artifacts-cri-tools/release/v{{ .PackageVersion }}/crictl-v{{ .PackageVersion }}-linux-{{ .Architecture }}.tar.gz" sourceTarGz: true +cri-o: + - versionConstraint: ">= 1.28.0" + sourceURLTemplate: "gs://cri-o/artifacts/cri-o.{{ .Architecture }}.v{{ .PackageVersion }}.tar.gz" + sourceTarGz: true kubeadm: - versionConstraint: ">= 1.24.0 < 1.24.2" sourceURLTemplate: "{{ KubernetesURL }}" diff --git a/pkg/obs/consts/consts.go b/pkg/obs/consts/consts.go index 0bfccedcdcc..a0c125f22b3 100644 --- a/pkg/obs/consts/consts.go +++ b/pkg/obs/consts/consts.go @@ -20,6 +20,7 @@ import "github.com/sirupsen/logrus" const ( PackageCRITools string = "cri-tools" + PackageCRIO string = "cri-o" PackageKubeadm string = "kubeadm" PackageKubectl string = "kubectl" PackageKubelet string = "kubelet" diff --git a/pkg/obs/obs.go b/pkg/obs/obs.go index 120d1ca7770..2ee9e0e2902 100644 --- a/pkg/obs/obs.go +++ b/pkg/obs/obs.go @@ -93,7 +93,7 @@ type Options struct { /** * Parameters used for core packages. - * Core packages are: kubeadm, kubectl, kubelet, cri-tools, kubernetes-cni. + * Core packages are: kubeadm, kubectl, kubelet * The API is same as for "krel stage" for consistency reasons. **/ @@ -114,7 +114,7 @@ type Options struct { /** * Parameters used for non-core packages. - * Core packages are: kubeadm, kubectl, kubelet, cri-tools, kubernetes-cni. + * Non-core packages are: cri-tools, kubernetes-cni, cri-o **/ // Version of packages to build. Same version is used for all provided diff --git a/pkg/obs/specs/archive.go b/pkg/obs/specs/archive.go index e06bb51494c..608864fbf55 100644 --- a/pkg/obs/specs/archive.go +++ b/pkg/obs/specs/archive.go @@ -70,6 +70,9 @@ func (s *Specs) BuildArtifactsArchive(pkgDef *PackageDefinition) error { case consts.PackageCRITools: dlPath = filepath.Join(dlRootPath, "cri-tools.tar.gz") dlTarGz = true + case consts.PackageCRIO: + dlPath = filepath.Join(dlRootPath, "cri-o.tar.gz") + dlTarGz = true default: dlPath = filepath.Join(dlRootPath, pkgDef.Name) } diff --git a/pkg/obs/specs/specs.go b/pkg/obs/specs/specs.go index 8e32db89fed..03cd214f1ac 100644 --- a/pkg/obs/specs/specs.go +++ b/pkg/obs/specs/specs.go @@ -35,8 +35,7 @@ type Options struct { // Version is the package version. // For kubelet, kubeadm, kubectl, this is Kubernetes version. - // For cri-tools, this is cri-tools version. - // For kubernetes-cni, this is cni-plugins version. + // For cri-tools, kubernetes-cni and cri-o, this is their corresponding version. Version string // Revision is the package revision.