diff --git a/content/zh-cn/blog/_posts/2023-10-10-cri-o-community-package-infrastructure.md b/content/zh-cn/blog/_posts/2023-10-10-cri-o-community-package-infrastructure.md new file mode 100644 index 0000000000..af91a47f32 --- /dev/null +++ b/content/zh-cn/blog/_posts/2023-10-10-cri-o-community-package-infrastructure.md @@ -0,0 +1,284 @@ +--- +layout: blog +title: "CRI-O 正迁移至 pkgs.k8s.io" +date: 2023-10-10 +slug: cri-o-community-package-infrastructure +--- + + + +**作者**:Sascha Grunert + + +**译者**:Wilson Wu (DaoCloud) + + +Kubernetes 社区[最近宣布](/zh-cn/blog/2023/08/31/legacy-package-repository-deprecation/)旧的软件包仓库已被冻结, +现在这些软件包将被迁移到由 [OpenBuildService(OBS)](https://build.opensuse.org/project/subprojects/isv:kubernetes) +提供支持的[社区自治软件包仓库](/blog/2023/08/15/pkgs-k8s-io-introduction)中。 +很久以来,CRI-O 一直在利用 [OBS 进行软件包构建](https://github.com/cri-o/cri-o/blob/e292f17/install.md#install-packaged-versions-of-cri-o), +但到目前为止,所有打包工作都是手动完成的。 + + +CRI-O 社区非常喜欢 Kubernetes,这意味着他们很高兴地宣布: + + +**所有未来的 CRI-O 包都将作为在 pkgs.k8s.io 上托管的官方支持的 Kubernetes 基础设施的一部分提供!** + + +现有软件包将进入一个弃用阶段,目前正在 +[CRI-O 社区中讨论](https://github.com/cri-o/cri-o/discussions/7315)。 +新的基础设施将仅支持 CRI-O `>= v1.28.2` 的版本以及比 `release-1.28` 新的版本分支。 + + +## 如何使用新软件包 {#how-to-use-the-new-packages} + + +与 Kubernetes 社区一样,CRI-O 提供 `deb` 和 `rpm` 软件包作为 OBS 中专用子项目的一部分, +被称为 [`isv:kubernetes:addons:cri-o`](https://build.opensuse.org/project/show/isv:kubernetes:addons:cri-o)。 +这个项目是一个集合,提供 `stable`(针对 CRI-O 标记)以及 `prerelease`(针对 CRI-O `release-1.y` 和 `main` 分支)版本的软件包。 + + +**稳定版本:** + + +- [`isv:kubernetes:addons:cri-o:stable`](https://build.opensuse.org/project/show/isv:kubernetes:addons:cri-o:stable):稳定软件包 + - [`isv:kubernetes:addons:cri-o:stable:v1.29`](https://build.opensuse.org/project/show/isv:kubernetes:addons:cri-o:stable:v1.29 ):`v1.29.z` 标记 + - [`isv:kubernetes:addons:cri-o:stable:v1.28`](https://build.opensuse.org/project/show/isv:kubernetes:addons:cri-o:stable:v1.28 ):`v1.28.z` 标记 + + +**预发布版本:** + + +- [`isv:kubernetes:addons:cri-o:prerelease`](https://build.opensuse.org/project/show/isv:kubernetes:addons:cri-o:prerelease):预发布软件包 + - [`isv:kubernetes:addons:cri-o:prerelease:main`](https://build.opensuse.org/project/show/isv:kubernetes:addons:cri-o:prerelease:main): + [`main`](https://github.com/cri-o/cri-o/commits/main) 分支 + - [`isv:kubernetes:addons:cri-o:prerelease:v1.29`](https://build.opensuse.org/project/show/isv:kubernetes:addons:cri-o:prerelease:v1.29): + [`release-1.29`](https://github.com/cri-o/cri-o/commits/release-1.29) 分支 + - [`isv:kubernetes:addons:cri-o:prerelease:v1.28`](https://build.opensuse.org/project/show/isv:kubernetes:addons:cri-o:prerelease:v1.28): + [`release-1.28`](https://github.com/cri-o/cri-o/commits/release-1.28) 分支 + + +v1.29 仓库中尚无可用的稳定版本,因为 v1.29.0 将于 12 月发布。 +CRI-O 社区也**不**支持早于 `release-1.28` 的版本分支, +因为已经有 CI 需求合并到 `main` 中,只有通过适当的努力才能向后移植到 `release-1.28`。 + + +例如,如果最终用户想要安装 CRI-O `main` 分支的最新可用版本, +那么他们可以按照与 Kubernetes 相同的方式添加仓库。 + + +### 基于 `rpm` 的发行版 {#rpm-based-distributions} + + +对于基于 `rpm` 的发行版,您可以以 `root` +用户身份运行以下命令来将 CRI-O 与 Kubernetes 一起安装: + + +#### 添加 Kubernetes 仓库 {#add-the-kubernetes-repo} + +```bash +cat < +#### 添加 CRI-O 仓库 {#add-the-cri-o-repo} + +```bash +cat < +#### 安装官方包依赖 {#install-official-package-dependencies} + +```bash +dnf install -y \ + conntrack \ + container-selinux \ + ebtables \ + ethtool \ + iptables \ + socat +``` + + +#### 从添加的仓库中安装软件包 {#install-the-packages-from-the-added-repos} + +```bash +dnf install -y --repo cri-o --repo kubernetes \ + cri-o \ + kubeadm \ + kubectl \ + kubelet +``` + + +### 基于 `deb` 的发行版 {#deb-based-distributions} + + +对于基于 `deb` 的发行版,您可以以 `root` 用户身份运行以下命令: + + +#### 安装用于添加仓库的依赖项 {#install-dependencies-for-adding-the-repositories} + +```bash +apt-get update +apt-get install -y software-properties-common curl +``` + + +#### 添加 Kubernetes 仓库 {#add-the-kubernetes-repository} + +```bash +curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | + gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg +echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /" | + tee /etc/apt/sources.list.d/kubernetes.list +``` + + +#### 添加 CRI-O 仓库 {#add-the-cri-o-repository} + +```bash +curl -fsSL https://pkgs.k8s.io/addons:/cri-o:/prerelease:/main/deb/Release.key | + gpg --dearmor -o /etc/apt/keyrings/cri-o-apt-keyring.gpg +echo "deb [signed-by=/etc/apt/keyrings/cri-o-apt-keyring.gpg] https://pkgs.k8s.io/addons:/cri-o:/prerelease:/main/deb/ /" | + tee /etc/apt/sources.list.d/cri-o.list +``` + + +#### 安装软件包 {#install-the-packages} + +```bash +apt-get update +apt-get install -y cri-o kubelet kubeadm kubectl +``` + + +#### 启动 CRI-O {#start-cri-o} + +```bash +systemctl start crio.service +``` + + +如果使用的是另一个包序列,CRI-O 包路径中项目的 `prerelease:/main` +前缀可以替换为 `stable:/v1.28`、`stable:/v1.29`、`prerelease:/v1.28` 或 `prerelease :/v1.29`。 + + +你可以使用 `kubeadm init` 命令来[引导集群](/docs/setup/product-environment/tools/kubeadm/install-kubeadm/), +该命令会自动检测后台正在运行 CRI-O。还有适用于 +[Fedora 38](https://github.com/cri-o/packaging/blob/91df5f7/test/rpm/Vagrantfile) +以及 [Ubuntu 22.04](https://github.com/cri-o/packaging/blob/91df5f7/test/deb/Vagrantfile) +的 `Vagrantfile` 示例,可在使用 `kubeadm` 的场景中测试下载的软件包。 + + +## 它是如何工作的 {#how-it-works-under-the-hood} + + +与这些包相关的所有内容都位于新的 [CRI-O 打包仓库](https://github.com/cri-o/packaging)中。 +它包含 [Daily Reconciliation](https://github.com/cri-o/packaging/blob/91df5f7/.github/workflows/schedule.yml) GitHub 工作流, +支持所有发布分支以及 CRI-O 标签。 +OBS 工作流程中的[测试管道](https://github.com/cri-o/packaging/actions/workflows/obs.yml)确保包在发布之前可以被正确安装和使用。 +所有包的暂存和发布都是在 [Kubernetes 发布工具箱(krel)](https://github.com/kubernetes/release/blob/1f85912/docs/krel/README.md)的帮助下完成的, +这一工具箱也被用于官方 Kubernetes `deb` 和 `rpm` 软件包。 + + +包构建的输入每天都会被动态调整,并使用 CRI-O 的静态二进制包。 +这些包是基于 CRI-O CI 中的每次提交来构建和签名的, +并且包含 CRI-O 在特定架构上运行所需的所有内容。静态构建是可重复的, +由 [nixpkgs](https://github.com/NixOS/nixpkgs) 提供支持, +并且仅适用于 `x86_64`、`aarch64` 以及 `ppc64le` 架构。 + + +CRI-O 维护者将很乐意听取有关新软件包工作情况的任何反馈或建议! +感谢您阅读本文,请随时通过 Kubernetes [Slack 频道 #crio](https://kubernetes.slack.com/messages/CAZH62UR1) +联系维护人员或在[打包仓库](https://github.com/cri-o/packaging/issues)中创建 Issue。