2023年4月

CRI-O 是 Kubernetes 的开源轻量级容器运行时。它是使用 开放容器组织 Open Container Initiative (OCI)兼容运行时的 Kubernetes 容器运行时接口 Container Runtime Interface (CRI)的实现。在运行 Kubernetes 时,它是 Docker 的完美替代品。

在本指南中,我们将逐步演示如何在 Ubuntu 22.04 LTS 上安装 CRI-O。

先决条件

在开始之前,这是你需要的:

  • 具有 SSH 访问权限的 Ubuntu 22.04 实例
  • 在实例上配置的 sudo 用户
  • 快速稳定的互联网连接

有了这个,让我们开始吧。

步骤 1:更新系统并安装依赖

立即登录你的服务器实例,并按如下方式更新包列表:

$ sudo apt update

更新本地包索引后,按如下方式安装依赖项:

$ sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common -y

步骤 2:添加 CRI-O 存储库

要安装 CRI-O,我们需要在 Ubuntu 上添加或启用它的仓库。但首先,你需要根据操作系统和要安装的 CRI-O 版本定义变量。

因此,定义如下变量:

$ export OS=xUbuntu_22.04
$ export CRIO_VERSION=1.24

完成后,运行以下命令集以添加 CRI-O Kubic 仓库:

$ echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /"| sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
$ echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$CRIO_VERSION/$OS/ /"|sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$CRIO_VERSION.list

此后,为 CRI-O 仓库导入 GPG 密钥:

$ curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$CRIO_VERSION/$OS/Release.key | sudo apt-key add -
$ curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | sudo apt-key add -

这会产生如下输出:

再次更新包索引,使系统与新添加的 CRI-O Kubic 仓库同步:

$ sudo apt update

步骤 3:在 Ubuntu 22.04 上安装 CRI-O

添加仓库后,使用 APT 包管理器安装 CRI-O 和运行时客户端:

$ sudo apt install cri-o cri-o-runc -y

安装后,启动并启用 CRI-O 守护程序:

$ sudo systemctl start crio
$ sudo systemctl enable crio

接下来,验证 CRI-O 服务是否正在运行:

$ sudo systemctl status crio

你应该看到以下输出,表明 CRI-O 服务正在按预期运行:

步骤 4:为 CRI-O 安装 CNI 插件

接下来,你需要安装 CNI( 容器网络接口 Container Network Interface )以及 CNI 插件。请记住,环回和桥接配置已启用并且足以使用 CRI-O 运行 容器荚 Pod

因此,要安装 CNI 插件,请运行以下命令:

$ sudo apt install containernetworking-plugins -y

安装后,编辑 CRI-O 配置文件:

$ sudo nano /etc/crio/crio.conf

取消注释 network_dirplugin_dirs 部分,并在 plugin_dirs 下添加 /usr/lib/cni/

保存更改并退出配置文件。

接下来,重启 CRIO 服务:

$ sudo systemctl restart crio

步骤 5:安装 CRI-O 工具

此外,你还需要安装 cri-tools 包,它提供了 crictl 命令行程序,用于交互和管理容器和 pod。

为此,请运行以下命令:

$ sudo apt install -y cri-tools

安装后,确认 crictl 的版本和 RunTimeVersion 如下:

$ sudo crictl --runtime-endpoint unix:///var/run/crio/crio.sock version

一定要检查 CRI-O 是否准备好使用以下命令部署容器荚:

$ sudo crictl info

crictl 命令提供自动补全功能,让你可以通过按 TAB 键自动补全命令。要启用命令补全,请运行以下命令:

$ sudo su -

# crictl completion > /etc/bash_completion.d/crictl

然后重新加载当前的 Bash 会话:

# source ~/.bashrc

要使用自动补全功能,你需要注销或启动新的终端会话。然后只需键入 crictl 命令并按 TAB 键即可查看所有选项。

$ crictl

步骤 6:使用 crictl 程序创建容器荚

至此,CRI-O 已完全安装和配置并准备好启动容器荚。在本节中,我们将在容器荚中创建一个 Apache Web 服务器并确认它是否正在处理请求。

首先,我们将使用容器荚配置文件设置一个沙箱或隔离环境,如下所示:

$ sudo nano apache_sandbox.json

然后我们将以下配置添加到文件中:

{
    "metadata": {
        "name": "apache-sandbox",
        "namespace": "default",
        "attempt": 1,
        "uid": "hdishd83djaidwnduwk28bcsb"
    },
    "linux": {
    },
    "log_directory": "/tmp"
}

保存并退出。接下来使用以下命令创建容器荚。这会打印出很长的字母数字,它是容器荚 ID。

$ sudo crictl runp apache_sandbox.json

要确认容器荚已创建,请运行命令:

$ sudo crictl pods

要检索有关创建的容器荚的更多信息,请运行以下命令:

$ sudo crictl inspectp --output table 05ba2f0704f22

这将打印出 ID、名称、UID、命名空间、创建日期、内部 IP 等详细信息。

步骤 7:在容器荚中创建容器

这部分中,我们将在容器荚中创建一个 Apache Web 服务器容器。因此,使用 crictl 程序从 Docker Hub 拉取 Apache Web 服务器镜像:

$ sudo crictl pull httpd

你可以如图所示验证拉取的镜像:

$ sudo crictl images

接下来,我们将为 Apache Web 服务器定义一个容器配置文件:

$ sudo nano container_apache.json

复制并粘贴以下代码:

{
  "metadata": {
      "name": "apache"
    },
  "image":{
      "image": "httpd"
    },
  "log_path":"apache.0.log",
  "linux": {
  }
}

保存并退出配置文件。

最后,要将容器连接到之前创建的沙盒容器荚,请运行以下命令:

$ sudo crictl create 05ba2f0704f22 container_apache.json apache_sandbox.json

这会向终端输出一长串字母数字 ID。请记下此 ID。

最后,使用 ID 启动 Apache Web 服务器容器,如下所示:

$ sudo crictl start 37f4d26510965452aa918f04d629f5332a1cd398d4912298c796942e22f964a7

要检查容器状态,请运行以下命令:

$ sudo crictl ps

要验证 Apache Web 服务器是否正在运行,请使用 curl 命令和容器荚的内部 ID 向 Web 服务器发送 HTTP 请求:

$ curl -I 10.85.0.2

以下输出确认 Web 服务器正在运行:

结论

这就是全部的指南。我们已经在 Ubuntu 22.04 上成功安装了 CRI-O,并继续创建容器荚和容器。欢迎你提出意见和反馈。


via: https://www.linuxtechi.com/install-crio-container-runtime-on-ubuntu/

作者:James Kiarie 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Valve 显示 Linux 游戏玩家份额大跌

Valve 刚刚公布了 2023 年 3 月的 Steam 调查结果,这些初步数字显示 Linux 游戏市场份额下降了 0.54%,使整个 Linux 游戏人口只占 Steam 客户群的 0.84% 左右。而 2 月份的数据为 1.27%。Steam Deck 仍在疯狂销售,所以看到如此大的月度环比跌幅令人惊讶。不过,3 月份数据显示简体中文用户跃升了 27%,现在占 Steam 上整体游戏客户群的 51%。这也是一个非常令人吃惊的数据。如果这一数据准确的话,倒是能说明 Linux 用户群份额降低的原因。

消息来源:Phoronix
老王点评:Steam 报告的数据不是第一次出错了,希望是又一次数学没学好,毕竟这数据有点匪夷所思了。

人工智能政策小组称,FTC 应阻止 OpenAI 推出新的 GPT 模型

人工智能和数字政策中心(CAIDP)今天提出投诉,要求美国联邦贸易委员会(FTC)调查 OpenAI 违反消费者保护规则的行为,认为 OpenAI 推出的人工智能文本生成工具 “有偏见,有欺骗性,并对公共安全构成风险”。CAIDP 认为,GPT-4 越过了伤害消费者的界限,应该引起监管行动。在投诉中,CAIDP 要求 FTC 停止任何进一步的 GPT 模式的商业部署,并要求在未来推出任何模式之前对其进行独立评估。FTC 已经表达了对人工智能工具的监管兴趣。

消息来源:The Verge
老王点评:这是什么盘外招都使出了啊。

谷歌再次暂停废弃 Manifest V2

早在 2018 年 11 月,谷歌就以安全、隐私和性能等既定理由要修改 Chrome 浏览器扩展 API,即 Manifest V2。鉴于它很容易被滥用,允许开发人员创建占用资源的扩展,也不是特别适合于移动设备,谷歌在新推出的 Manifest V3 删除了一些 API,但这导致广告拦截等扩展不能工作或需要修改工作方式。根据统计,去年底,大约有 13.6 万个扩展仍然在 MV2 下运行,而大约有 3 万个扩展依赖 MV3 代码。谷歌已经屡次推迟废弃 MV2 的计划,最近一次承诺在 3 月修订该指南,但目前已再次推迟,并且没有明确的时间表。

消息来源:The Register
老王点评:新的 API 或许有更好的地方,但是既有的扩展生态带来的反弹可能超乎了谷歌的预料。

它不仅仅是为了让你的电脑启动得更快。

当 systemd 刚问世时,有很多关于它能加快启动时间的消息。这项功能对大多数人都有吸引力(对那些不重启的人来说就不那么重要了),所以在很多方面,这也是它今天仍然拥有的声誉。虽然 systemd 确实是在启动过程中并行启动服务起到了作用,但它的作用远不止于此。以下是你可能没有意识到 systemd 可以做的三件事,但你应该好好利用。

1、简化 Linux ps

如果你曾经使用过 ps,甚至只是 top 命令,那么你就会知道你的电脑一直都在运行数百个进程。有时,这正是你需要的信息,以便了解你的计算机或其用户在做什么。其他时候,你真正需要的是一个总体的概览。

systemd-cgtop 命令提供了一个基于 控制组 cgroup 任务安排的计算机负载的简单视图。控制组 对现代 Linux 很重要,基本上是容器和 Kubernetes 的底层支持结构(这也是云计算可以扩展的原因),但它们也是家庭电脑上的有用结构。例如,从 systemd-cgtop 的输出中,你可以看到用户进程的负载,而不是系统进程:

Control Group               Proc+   %CPU   Memory  Input/s Output/s
/                             183    5.0     1.6G       0B     3.0M
user.slice                      4    2.8     1.1G       0B   174.7K
user.slice/user-1000.slice      4    2.8   968.2M       0B   174.7K
system.slice                   65    2.2     1.5G       0B     2.8M

你也可以只查看你的用户空间进程,或者查看用户空间进程和内核线程。

这绝不是对 topps 的替代,而是从一个不同的、独特的角度来观察你的系统。在运行容器时,它可能是至关重要的,因为容器使用控制组。

2、Linux 定时任务

Cron 是 Linux 的一个经典组件。当你想安排一些事情定期发生时,你会使用 Cron。它很可靠,而且相当好地集成到你的系统中。

问题是,Cron 并不了解有些计算机会被关闭。如果你有一个安排在午夜的 Cron 任务,但你每天在 23:59 关闭你的电脑,那么你的 Cron 任务就永远不会运行。Cron 没有任何工具可以检测到一夜之间错过了工作。

作为对这个问题的回答,有一个很好的 Anacron,但它不像 Cron 那样集成的好。要让 Anacron 运行,你需要做很多设置。

第二个选择是 systemd 计时器。和 Cron 一样,它也是内置的,可以随时使用。你需要写一个单元文件,这肯定比单行的 Crontab 条目多,但也很简单。例如,这里有一个单元文件,在开机 30 分钟后运行一个假想的备份脚本,但每天只运行一次。这可以确保我的电脑得到备份,并防止它每天尝试备份超过一次。

[Unit]
Description=Backup
Requires=myBackup.service

[Timer]
OnBootSec=30min
OnUnitActiveSec=1d

[Install]
WantedBy=timers.target

当然,你也可以干预并提示运行一个任务。多亏了 OnUnitActiveSec 指令,systemd 不会试图运行你手动激活的作业。

3、运行 Linux 容器

容器使启动一个复杂的服务变得非常容易。你可以在短短几分钟内运行一个 Mattermost 或 Discourse 服务器。在某些情况下,困难的部分是在你运行容器后管理和监控它们。Podman 使得管理它们变得容易,但是用什么来管理 Podman 呢?嗯,你可以使用 systemd

Podman 有一个内置的命令来生成单元文件,这样你的容器就可以被 systemd 管理和监控:

$ podman generate systemd --new --files --name example_pod

然后你所要做的就是启动服务:

$ systemctl --user start pod-example_pod.service

和其他服务一样,systemd 确保你的容器荚在任何情况下都能运行。它记录问题,你可以用 journalctl 和其他重要的日志来查看,你也可以用 systemd-cgtop 在控制组中监控它的活动。

它不是 Kubernetes 平台,但对于一两个容器来说,你只需要在可靠和可预测的基础上提供服务,Podman 和 systemd 是一对很棒的组合。

下载 systemd 电子书

systemd 的内容还有很多,你可以从作者 David Both 的新书《systemd 实用指南》中了解基础知识,以及很多实用的技巧。


via: https://opensource.com/article/23/3/3-things-you-didnt-know-systemd-could-do

作者:Alan Smithee 选题:lkxed 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Ubuntu Unity 的负责人提出了一个新的发行版,听起来像是每个人都可能想要关注的东西。

blend os

听起来太牵强了?

好吧,blendOS 把自己定位为发行版的终极杂拌。

blendOS 是 Rudra Saraswat 的一个新项目,他以基于 Ubuntu 的合成版而闻名,特别是 Ubuntu Unity(现在是官方的 Ubuntu 风味版)。

我想说的是,这个项目有一个非常准确的名字来表达它想要实现的目标。

但是,blendOS 的目标是如何成为所有人的替代品?它到底是什么?

blendOS 不只是又一个 Linux 发行版

blendOS

blendOS 是一个基于 Arch 的发行版,它支持每种类型的应用程序包。

如果你了解过 carbonOSVanilla OS,你应该对这类发行版中的一些共同点有了了解。

其中之一是,不可变性,意思是,操作系统的核心/基础保持不变,给你带来增强的安全性,以及更简单和可靠的更新。

同样,blendOS 也有以下的关键亮点:

  • 不可变操作系统
  • 支持多个软件包管理器,包括 Apt、DNF、Yum、Pacman 和 Yay
  • 支持多种桌面环境
  • Flathub 商店桌面应用

blendOS 使用 Jade GUI(来自 Crystal Linux 的安装程序)来提供一个无缝的安装体验。而且,Flathub 商店可以直接安装应用程序,而不是像人们想象的那样下载 Flatpakref文件。

为了使所有的发行版的软件包都能正常工作,blendOS 使用其软件包管理器 blend。

你仍然可以通过 Arch 容器在命令行使用 Pacman。

此外,它还支持,T2 Mac,即 2018 年后生产的英特尔 Mac。因此,如果你想在你已经拥有的设备上做实验,blendOS 应该可以使用。

? 截至目前,该项目还处于早期发展阶段。

预计一些直接的变化包括:

  • 用 Podman 代替 Distrobox 的实现
  • 一个新的 GUI 配置工具,支持管理覆盖层和容器

所以,是的,你现在看到的东西可能会有变化。然而,它仍然是听起来令人激动的东西。

你可以在其 官方博客文章 中阅读其计划中的变化,并在其 GitHub 页面中探索 blendOS。

blendOS

你对 blendOS 有什么看法?它值得关注吗?请在评论中告诉我!


via: https://news.itsfoss.com/blendos/

作者:Ankush Das 选题:lkxed 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Twitter 公开推荐算法源代码,马斯克获特别优待

Twitter 终于如约 公开 了推荐算法源代码,源代码 托管在 GitHub 上,采用 AGPLv3 许可证。推荐算法控制着出现在 “For You” 中的推文,利用机器学习模型进行排名,过滤掉不良推文和已屏蔽用户的推文等,最后展示到用户的时间线。该代码仓库迅速获得了数十万星标。在代码中,用户发现埃隆·马斯克被专门标出。上个月马斯克的推文曾一度 展示 给几乎所有 Twitter 用户。代码的注解声称这些标签只是用于数据收集的目的。对于这一发现,马斯克本人在 Twitter 上表示将会移除,声称他也是才知道。

消息来源:Ars Technica
老王点评:这是我对马斯克入主 Twitter 之后所做的事情中唯一赞赏的,或许这会带来一个所谓的 “Twitter 2.0”。今天早上我在朋友圈嘲讽道,某个国内的山寨品怕是都不敢用 Twitter 开源出来的算法来改善自己的算法,因为他们的算法是 “MONEY”。

Midjourney 由于新用户过多而暂停免费试用

AI 图像生成服务 Midjourney 已经停止了其服务的免费试用。人们最初认为暂停的原因是,有人利用 Midjourney v5 生成的 AI 图像在社交网络病毒式传播,如前总统特朗普被捕和罗马天主教教皇身穿时尚夹克的照片,让很多人信以为真。但 Midjourney CEO 表示暂停原因是免费用户流量过大,试用遭滥用。他们认为“罪魁祸首可能是中国的一个病毒式的操作视频”和“暂时的 GPU 短缺”。并指出,Midjourney 的免费试用版从未包括访问 Midjourney 最新的第 5 版,而该版本可创建最真实的图像,并被认为是用于这些病毒图片。

消息来源:The Verge
老王点评:看看,其实不是被玩坏了,而是太受欢迎了。

电子游戏行业盛会 E3 2023 取消

今年的电子娱乐博览会(E3)已经被取消了。娱乐软件协会(ESA)和展会发起人 ReedPop 周四晚些时候宣布,计划中的 6 月活动“没有从主要出版商和潜在与会者那里获得必要的持续兴趣”,以证明大规模会议的合理性。这本来该是自 2019 年后第一次现场的 E3 大展。但所有三个主要的游戏机制造商已经确认他们不会参加,而主要的出版商育碧和世嘉最近也公开放弃了这个展会。

消息来源:Ars Technica
老王点评:真是见证了一个时代的落幕,而三年的大流行只是加速了这个过程。

Tekton 是一个用于创建持续集成和持续交付(CI/CD)系统的 Kubernetes 原生开源框架。

 title=

Tekton 是一个用于创建持续集成和持续交付(CI/CD)系统的 Kubernetes 原生开源框架。通过对底层实施细节的抽象,它还可以帮助你在多个云供应商或企业内部系统中进行端到端(构建、测试、部署)应用开发。

Tekton 介绍

Tekton 最初被称为 Knative Build,后来被重组为独立的开源项目,有自己的 治理组织,现在是属于 Linux 基金会 的项目。Tekton 提供了一个集群内的容器镜像构建和部署工作流程,换句话说,它是一个 持续集成 continuous integration (CI)和 持续交付 continuous delivery (CD)服务。它由 Tekton 流水线和几个支持组件如 Tekton CLI、Triggers 和 Catalog 等组成。

Tekton 是一个 Kubernetes 原生应用。它在 Kubernetes 集群中作为扩展被安装和运行,由一套Kubernetes 定制化资源组成,定义了你为流水线创建和复用的构建块。由于 Tekton 是一种 Kubernetes 原生技术,所以它非常容易扩展。当你需要增加你的工作负载时,你只需向你的集群添加节点就可以了。由于其可扩展的设计和社区贡献的组件库,它也很容易定制。

对于需要 CI/CD 系统来开展工作的开发人员,和为其组织内的开发人员建立 CI/CD 系统的平台工程师,Tekton 是理想选择。

Tekton 组件

构建 CI/CD 流水线的过程非常复杂,因此 Tekton 为每一步都提供工具。以下是 Tekton 提供的主要组件:

  • 流水线 Pipeline: 定义了一组 Kubernetes 自定义资源,作为你用来组装 CI/CD 流水线的构建块。
  • 触发器 Triggers :一种 Kubernetes 自定义资源,允许你根据从事件有效载荷中提取的信息来创建流水线。例如,你可以在每次创建 Git 仓库的合并请求时,触发流水线的实例化和执行。
  • 命令行 CLI :提供一个名为 tkn 的命令行界面,你可以使用它从终端与 Tekton 进行交互。
  • 仪表盘 Dashboard :是 Tekton 流水线的一个基于网页的图形界面,显示流水线的执行信息。
  • 目录 Catalog :是一个高质量的、由社区贡献的 Tekton 构建块(任务、流水线等),可在你自己的流水线中使用。
  • 中心 Hub :是一个基于网页的图形界面,用于访问 Tekton 目录。
  • 操作员 Operator :是一种 Kubernetes 操作员模式,你可以在 Kubernetes 集群中安装、更新、升级和删除 Tekton 项目。
  • Chains :是一个 Kubernetes 自定义资源定义 Custom Resource Definition (CRD)控制器,使你可以在 Tekton 中处理供应链安全的问题。正在开发中。
  • 结果 Results :旨在帮助用户对 CI/CD 工作负载历史进行逻辑分组,并将长期结果的存储从流水线控制器中分离出来。

Tekton 术语

 title=

  • 步骤 Step :是 CI/CD 工作流程中最基本的实体,例如为 Python 网络应用程序运行一些单元测试或编译一个 Java 程序。Tekton 使用容器镜像执行每个步骤。
  • 任务 Task ::kissing:* 是按特定顺序排列的步骤的集合。Tekton 以 Kubernetes 容器荚 的形式运行任务,其中每个步骤都成为 容器荚 pod 中的一个运行容器。
  • 流水线 Pipelines :是按特定顺序排列的任务的集合。Tekton 把所有任务连接成一个 有向无环图 directed acyclic graph (DAG),并按顺序执行图。换句话说,它创建了一些 Kubernetes 容器荚,并确保每个容器荚按预期成功运行。

 title=

  • 流水线运行 PipelineRun :顾名思义,是一条流水线的具体执行。
  • 任务运行 TaskRun :是一个任务的具体执行。你可以选择在流水线外运行一次任务运行,可以通过它查看任务中每个步骤执行的具体情况。

创建你的 CI/CD 流水线

开始使用 Tekton 的最简单方法是自己编写一个简单的流水线。如果你每天都在使用 Kubernetes,那你可能对 YAML 很熟悉,这正是 Tekton 流水线的定义方式。下面是一个克隆代码库的简单流水线的例子。

首先,创建一个 task.yaml 文件,用你喜欢的文本编辑器打开它。这个文件定义了你要执行的 步骤 Step 。在这个例子中,就是克隆一个仓库,所以我把这个步骤命名为 “clone”。该文件设置了一些环境变量,然后使用一个简单的 shell 脚本来执行克隆。

接下来是 任务 Task 。你可以把步骤看作是一个被任务调用的函数,而任务则设置步骤所需的参数和工作空间。

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
 name: git-clone
spec:
 workspaces:
   - name: output
     description: The git repo will be cloned onto the volume backing this Workspace.
 params:
   - name: url
     description: Repository URL to clone from.
     type: string
   - name: revision
     description: Revision to checkout. (branch, tag, sha, ref, etc...)
     type: string
     default: ""
 steps:
   - name: clone
     image: "gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/git-init:v0.21.0"
     env:
       - name: PARAM_URL
         value: $(params.url)
       - name: PARAM_REVISION
         value: $(params.revision)
       - name: WORKSPACE_OUTPUT_PATH
         value: $(workspaces.output.path)
     script: |
      #!/usr/bin/env sh
       set -eu

       CHECKOUT_DIR="${WORKSPACE_OUTPUT_PATH}"

       /ko-app/git-init \
         -url="${PARAM_URL}" \
         -revision="${PARAM_REVISION}" \
         -path="${CHECKOUT_DIR}"
       cd "${CHECKOUT_DIR}"
       EXIT_CODE="$?"
       if [ "${EXIT_CODE}" != 0 ] ; then
         exit "${EXIT_CODE}"
       fi
       # Verify clone is success by reading readme file.
       cat ${CHECKOUT_DIR}/README.md

创建第二个文件 pipeline.yaml,并用你喜欢的文本编辑器打开它。这个文件通过设置诸如可以运行和处理任务的工作区等重要参数来定义流水线。

apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
 name: cat-branch-readme
spec:
 params:
   - name: repo-url
     type: string
     description: The git repository URL to clone from.
   - name: branch-name
     type: string
     description: The git branch to clone.
 workspaces:
   - name: shared-data
     description: |
      This workspace will receive the cloned git repo and be passed
       to the next Task for the repo's README.md file to be read.
 tasks:
   - name: fetch-repo
     taskRef:
       name: git-clone
     workspaces:
       - name: output
         workspace: shared-data
     params:
       - name: url
         value: $(params.repo-url)
       - name: revision
         value: $(params.branch-name)

最后,创建一个 pipelinerun.yaml 文件,用喜欢的文本编辑器打开它。这个文件真正的运行流水线。它调用流水线中定义的参数(继而调用任务文件中定义的任务)。

apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
 name: git-clone-checking-out-a-branch
spec:
 pipelineRef:
   name: cat-branch-readme
 workspaces:
   - name: shared-data
     volumeClaimTemplate:
       spec:
         accessModes:
          - ReadWriteOnce
         resources:
           requests:
             storage: 1Gi
 params:
   - name: repo-url
     value: <https://github.com/tektoncd/pipeline.git>
   - name: branch-name
     value: release-v0.12.x

把不同工作分在不同的文件中的好处是,git-clone 任务可以在多条流水线中复用。

例如,假设你想为一个流水线项目做端到端的测试。你可以使用 git-clone 任务 来让每一次测试都基于最新的代码

总结

只要你熟悉 Kubernetes,那 Tekton 对你来说就像其他 Kubernetes 原生应用一样简单。它有很多工具可以帮助你创建流水线并与之交互。如果你喜欢自动化,不妨试试 Tekton!


via: https://opensource.com/article/21/11/cicd-pipeline-kubernetes-tekton

作者:Savita Ashture 选题:lujun9972 译者:lxbwolf 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出