如果不知从何处入手Fedora CoreOS,那就看看本文,内容有:Fedora CoreOS的理念、入门、创建配置、安装并运行Fedora CoreOS、zincati,rpm-ostree和自动更新、删除虚拟机。
Fedora CoreOS的理念 Fedora CoreOS(FCOS)来自CoreOS Container Linux和Fedora Atomic Host的合并,它是一款最小化的整体操作系统,专注于运行容器化的应用程序,安全性是一流的,FCOS提供自动更新并带有SELinux强化功能。 为了使自动更新正常工作,它们必须非常强大,目标是运行FCOS的服务器在更新后不会中断,这是通过使用不同的发布流来实现的,每个流每2周发布一次,并将内容从一个流提升为另一流,这样一来,稳定流中的更新落地就有机会在很长一段时间内得到测试。 参考:Fedora CoreOS版本详细介绍:用于安全和大规模运行容器化工作负载。
入门 在本示例中,我们使用稳定流和可以作为虚拟机运行的QEMU基本映像,您可以使用coreos-installer下载该映像,地址在https://github.com/coreos/coreos-installer/releases。 在更新到映像的链接后,从工作站终端运行以下命令,另外在Silverblue上,基于容器的coreos工具是最简单的尝试方法,可以在https://docs.fedoraproject.org/en-US/fedora-coreos/tutorial-setup/上找到说明,尤其是使用Podman或Docker进行设置,即Setup with Podman or Docker: $ sudo dnf install coreos-installer $ coreos-installer download --image-url https://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 -d fedora-coreos-32.20200907.3.0-qemu.x86_64.qcow2.xz $ ls fedora-coreos-32.20200907.3.0-qemu.x86_64.qcow2
创建配置 要自定义FCOS系统,您需要提供一个配置文件,Ignition将使用该文件来配置系统,您可以使用此文件来配置诸如创建用户、添加受信任的SSH密钥、启用系统服务等功能。 以下配置将创建一个“core”用户,并将SSH密钥添加到authorized_keys文件中,它还正在创建一个使用podman运行简单的hello world容器的systemd服务: version: "1.0.0" variant: fcos passwd: users: - name: core ssh_authorized_keys: - ssh-ed25519 my_public_ssh_key_hash fcos_key systemd: units: - contents: | [Unit] Description=Run a hello world web service After=network-online.target Wants=network-online.target [Service] ExecStart=/bin/podman run --pull=always --name=hello --net=host -p 8080:8080 quay.io/cverna/hello ExecStop=/bin/podman rm -f hello [Install] WantedBy=multi-user.target enabled: true name: hello.service 在配置中添加SSH密钥后,将其另存为config.yaml,接下来,使用Fedora CoreOS Config Transpiler(fcct)工具将此YAML配置转换为有效的Ignition配置(JSON格式)。 直接从Fedora的存储库安装fcct或从GitHub获取二进制文件,地址在https://github.com/coreos/fcct/releases: $ sudo dnf install fcct $ fcct -output config.ign config.yaml
安装并运行Fedora CoreOS 要运行该映像,可以使用libvirt堆栈,使用dnf软件包管理器将其安装在Fedora系统上: $ sudo dnf install @virtualization 现在,我们创建并运行Fedora CoreOS虚拟机: $ chcon --verbose unconfined_u:object_r:svirt_home_t:s0 config.ign $ virt-install --name=fcos \ --vcpus=2 \ --ram=2048 \ --import \ --network=bridge=virbr0 \ --graphics=none \ --qemu-commandline="-fw_cfg name=opt/com.coreos/config,file=${PWD}/config.ign" \ --disk=size=20,backing_store=${PWD}/fedora-coreos-32.20200907.3.0-qemu.x86_64.qcow2 安装成功后,将显示一些信息并提供登录提示: Fedora CoreOS 32.20200907.3.0 Kernel 5.8.10-200.fc32.x86_64 on an x86_64 (ttyS0) SSH host key: SHA256:BJYN7AQZrwKZ7ZF8fWSI9YRhI++KMyeJeDVOE6rQ27U (ED25519) SSH host key: SHA256:W3wfZp7EGkLuM3z4cy1ZJSMFLntYyW1kqAqKkxyuZrE (ECDSA) SSH host key: SHA256:gb7/4Qo5aYhEjgoDZbrm8t1D0msgGYsQ0xhW5BAuZz0 (RSA) ens2: 192.168.122.237 fe80::5054:ff:fef7:1a73 Ignition: user provided config was applied Ignition: wrote ssh authorized keys file for user: core Ignition配置文件未为核心用户提供任何密码,因此无法直接通过控制台登录,但是,可以通过Ignition配置为用户配置密码。 使用Ctrl+]组合键退出虚拟机的控制台,然后检查hello.service是否正在运行: $ curl http://192.168.122.237:8080 Hello from Fedora CoreOS! 使用预配置的SSH密钥,您还可以访问VM并检查在VM上运行的服务: $ ssh core@192.168.122.237 $ systemctl status hello hello.service - Run a hello world web service Loaded: loaded (/etc/systemd/system/hello.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-10-28 10:10:26 UTC; 42s ago
zincati,rpm-ostree和自动更新 zincati服务通过自动更新来驱动rpm-ostreed。 检查VM当前正在运行哪个Fedora CoreOS版本,并检查Zincati是否找到更新: $ ssh core@192.168.122.237 $ rpm-ostree status State: idle Deployments: ostree://fedora:fedora/x86_64/coreos/stable Version: 32.20200907.3.0 (2020-09-23T08:16:31Z) Commit: b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57 GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0 $ systemctl status zincati zincati.service - Zincati Update Agent Loaded: loaded (/usr/lib/systemd/system/zincati.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-10-28 13:36:23 UTC; 7s ago … Oct 28 13:36:24 cosa-devsh zincati[1013]: [INFO ] initialization complete, auto-updates logic enabled Oct 28 13:36:25 cosa-devsh zincati[1013]: [INFO ] target release '32.20201004.3.0' selected, proceeding to stage it ... zincati reboot ... 重新启动后,让我们再次进行远程登录以检查新版本的Fedora CoreOS: $ ssh core@192.168.122.237 $ rpm-ostree status State: idle Deployments: ostree://fedora:fedora/x86_64/coreos/stable Version: 32.20201004.3.0 (2020-10-19T17:12:33Z) Commit: 64bb377ae7e6949c26cfe819f3f0bd517596d461e437f2f6e9f1f3c24376fd30 GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0 ostree://fedora:fedora/x86_64/coreos/stable Version: 32.20200907.3.0 (2020-09-23T08:16:31Z) Commit: b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57 GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0 rpm-ostree状态现在显示Fedora CoreOS的两个版本,一个出现在QEMU映像中,一个是从更新中获得的最新版本,通过提供这两个版本,可以使用rpm-ostree rollback命令回滚到以前的版本。 最后,您可以确保hello服务仍在运行并正在提供内容: $ curl http://192.168.122.237:8080 Hello from Fedora CoreOS!
删除虚拟机 为了随后进行清理,以下命令将删除VM和关联的存储: $ virsh destroy fcos $ virsh undefine --remove-all-storage fcos
结论 Fedora CoreOS提供了一个坚实而安全的操作系统,专门用于在容器中运行应用程序,它在DevOps环境中表现出色,该环境鼓励使用声明性配置文件来配置主机,支持自动更新和回滚到OS的先前版本的功能使服务运行更令人放心,更有保障。
相关主题 |