FEDORACORE(Fedora CoreOS怎么入门)

发布时间:2025-12-11 01:26:42 浏览次数:1

现在被称为 DevOps 时代,操作系统的关注度似乎比工具要低一些。然而,这并不意味着操作系统没有创新。(编辑注:基于 Linux 内核的众多发行版所提供的多样化产品就是一个很好的例子)。Fedora CoreOS就对这个 DevOps 时代的操作系统应该是什么样有着独特的理念。

Fedora CoreOS 的理念

Fedora CoreOS(FCOS)是由 CoreOS Container Linux 和 Fedora Atomic Host 合并而来。它是一个专注于运行容器化应用程序的精简的独体操作系统。安全性是首要重点,FCOS 提供了自动更新,并带有 SELinux 强化。

为了使自动更新能够很好地工作,它们需要非常健壮,目标是运行 FCOS 的服务器在更新后不会崩溃。这是通过使用不同的发布流(stable、testing 和 next)来实现的。每个流每 2 周发布一次,更新内容会从一个流推广到另一个流(next -> testing -> stable)。这样落地在 stable 流中的更新就有机会经过长时间的测试。

入门

对于这个例子,让我们使用 stable 流和一个 QEMU 基础镜像,我们可以作为一个虚拟机运行。你可以使用coreos-installer来下载该镜像。

在你的(Workstation)终端上,更新镜像的链接后,运行以下命令(编辑注:在 Silverblue 上,基于容器的 coreos 工具是最简单的方法,可以尝试一下。说明可以在https://docs.fedoraproject.org/en-US/fedora-coreos/tutorial-setup/中找到,特别是 “Setup with Podman or Docker” 一节。):

$sudodnfinstallcoreos-installer$coreos-installerdownload--image-urlhttps://builds.coreos.fedoraproject.org/prod/streams/stable/builds/32.20200907.3.0/x86_64/fedora-coreos-32.20200907.3.0-qemu.x86_64.qcow2.xz$xz-dfedora-coreos-32.20200907.3.0-qemu.x86_64.qcow2.xz$lsfedora-coreos-32.20200907.3.0-qemu.x86_64.qcow2
创建一个配置

要定制一个 FCOS 系统,你需要提供一个配置文件,Ignition将使用这个文件来配置系统。你可以用这个文件来配置诸如创建用户、添加受信任的 SSH 密钥、启用 systemd 服务等等。

以下配置创建了一个core用户,并在authorized_keys文件中添加了一个 SSH 密钥。它还创建了一个 systemd 服务,使用podman来运行一个简单的 “hello world” 容器:

version:"1.0.0"variant:fcospasswd:users:-name:coressh_authorized_keys:-ssh-ed25519my_public_ssh_key_hashfcos_keysystemd:units:-contents:|[Unit]Description=RunahelloworldwebserviceAfter=network-online.targetWants=network-online.target[Service]ExecStart=/bin/podmanrun--pull=always--name=hello--net=host-p8080:8080quay.io/cverna/helloExecStop=/bin/podmanrm-fhello[Install]WantedBy=multi-user.targetenabled:truename:hello.service

在配置中加入你的 SSH 密钥后,将其保存为config.yaml。接下来使用 Fedora CoreOS Config Transpiler(fcct)工具将这个 YAML 配置转换成有效的 Ignition 配置(JSON 格式)。

直接从 Fedora 的资源库中安装fcct,或者从GitHub中获取二进制文件:

$sudodnfinstallfcct$fcct-outputconfig.ignconfig.yaml
安装并运行 Fedora CoreOS

要运行镜像,你可以使用 libvirt 堆栈。要在 Fedora 系统上使用dnf软件包管理器安装它:

$sudodnfinstall@virtualization

现在让我们创建并运行一个 Fedora CoreOS 虚拟机:

$chcon--verboseunconfined_u:object_r:svirt_home_t:s0config.ign$virt-install--name=fcos\--vcpus=2\--ram=2048\--import\--network=bridge=virbr0\--graphics=none\--qemu-commandline="-fw_cfgname=opt/com.coreos/config,file=${PWD}/config.ign"\--disk=size=20,backing_store=${PWD}/fedora-coreos-32.20200907.3.0-qemu.x86_64.qcow2

安装成功后,会显示一些信息并提供登录提示符:

FedoraCoreOS32.20200907.3.0Kernel5.8.10-200.fc32.x86_64onanx86_64(ttyS0)SSHhostkey:SHA256:BJYN7AQZrwKZ7ZF8fWSI9YRhI++KMyeJeDVOE6rQ27U(ED25519)SSHhostkey:SHA256:W3wfZp7EGkLuM3z4cy1ZJSMFLntYyW1kqAqKkxyuZrE(ECDSA)SSHhostkey:SHA256:gb7/4Qo5aYhEjgoDZbrm8t1D0msgGYsQ0xhW5BAuZz0(RSA)ens2:192.168.122.237fe80::5054:ff:fef7:1a73Ignition:userprovidedconfigwasappliedIgnition:wrotesshauthorizedkeysfileforuser:core

Ignition 配置文件没有为core用户提供任何密码,因此无法通过控制台直接登录。(不过,也可以通过 Ignition 配置为用户配置密码。)

使用Ctrl + ]组合键退出虚拟机的控制台。然后检查hello.service是否在运行:

$curlhttp://192.168.122.237:8080HellofromFedoraCoreOS!

使用预先配置的 SSH 密钥,你还可以访问虚拟机并检查其上运行的服务:

$sshcore@192.168.122.237$systemctlstatushello●hello.service-RunahelloworldwebserviceLoaded:loaded(/etc/systemd/system/hello.service;enabled;vendorpreset:enabled)Active:active(running)sinceWed2020-10-2810:10:26UTC;42sago
zincati、rpm-ostree 和自动更新

zincati 服务使用自动更新驱动 rpm-ostreed。

检查虚拟机上当前运行的 Fedora CoreOS 版本,并检查 zincati 是否找到了更新:

$sshcore@192.168.122.237$rpm-ostreestatusState:idleDeployments:●ostree://fedora:fedora/x86_64/coreos/stableVersion:32.20200907.3.0(2020-09-23T08:16:31Z)Commit:b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57GPGSignature:Validsignatureby97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0$systemctlstatuszincati●zincati.service-ZincatiUpdateAgentLoaded:loaded(/usr/lib/systemd/system/zincati.service;enabled;vendorpreset:enabled)Active:active(running)sinceWed2020-10-2813:36:23UTC;7sago…Oct2813:36:24cosa-devshzincati[1013]:[INFO]initializationcomplete,auto-updateslogicenabledOct2813:36:25cosa-devshzincati[1013]:[INFO]targetrelease'32.20201004.3.0'selected,proceedingtostageit...zincatireboot...

重启后,我们再远程登录一次,检查新版的 Fedora CoreOS:

$sshcore@192.168.122.237$rpm-ostreestatusState:idleDeployments:●ostree://fedora:fedora/x86_64/coreos/stableVersion:32.20201004.3.0(2020-10-19T17:12:33Z)Commit:64bb377ae7e6949c26cfe819f3f0bd517596d461e437f2f6e9f1f3c24376fd30GPGSignature:Validsignatureby97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0ostree://fedora:fedora/x86_64/coreos/stableVersion:32.20200907.3.0(2020-09-23T08:16:31Z)Commit:b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57GPGSignature:Validsignatureby97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0

rpm-ostree status现在显示了两个版本的 Fedora CoreOS,一个是 QEMU 镜像中的版本,一个是更新后的最新版本。有了这两个版本,就可以使用rpm-ostree rollback命令回滚到之前的版本。

最后,你可以确保 hello 服务仍在运行并提供内容:

$curlhttp://192.168.122.237:8080HellofromFedoraCoreOS!
删除虚拟机

要进行事后清理,使用以下命令删除虚拟机和相关存储:

$virshdestroyfcos$virshundefine--remove-all-storagefcos

Fedora CoreOS 为在容器中运行应用程序提供了一个坚实而安全的操作系统。它在推荐主机使用声明式配置文件进行配置的 DevOps 环境中表现出色。自动更新和回滚到以前版本的操作系统的能力,可以在服务的运行过程中带来安心的感觉。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注本站行业资讯频道,感谢您对本站的支持。

FEDORACORE
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477