溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Fedora CoreOS怎么入門

發(fā)布時間:2021-10-27 16:17:53 來源:億速云 閱讀:247 作者:柒染 欄目:系統(tǒng)運維

Fedora CoreOS怎么入門,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

現(xiàn)在被稱為 DevOps 時代,操作系統(tǒng)的關(guān)注度似乎比工具要低一些。然而,這并不意味著操作系統(tǒng)沒有創(chuàng)新。(編輯注:基于 Linux 內(nèi)核的眾多發(fā)行版所提供的多樣化產(chǎn)品就是一個很好的例子)。Fedora CoreOS 就對這個 DevOps 時代的操作系統(tǒng)應(yīng)該是什么樣有著獨特的理念。

Fedora CoreOS 的理念

Fedora CoreOS(FCOS)是由 CoreOS Container Linux 和 Fedora Atomic Host  合并而來。它是一個專注于運行容器化應(yīng)用程序的精簡的獨體操作系統(tǒng)。安全性是首要重點,F(xiàn)COS 提供了自動更新,并帶有 SELinux 強化。

為了使自動更新能夠很好地工作,它們需要非常健壯,目標是運行 FCOS  的服務(wù)器在更新后不會崩潰。這是通過使用不同的發(fā)布流(stable、testing 和 next)來實現(xiàn)的。每個流每 2  周發(fā)布一次,更新內(nèi)容會從一個流推廣到另一個流(next -> testing -> stable)。這樣落地在 stable  流中的更新就有機會經(jīng)過長時間的測試。

入門

對于這個例子,讓我們使用 stable 流和一個 QEMU 基礎(chǔ)鏡像,我們可以作為一個虛擬機運行。你可以使用 coreos-installer 來下載該鏡像。

在你的(Workstation)終端上,更新鏡像的鏈接后,運行以下命令(編輯注:在 Silverblue 上,基于容器的 coreos 工具是最簡單的方法,可以嘗試一下。說明可以在 https://docs.fedoraproject.org/en-US/fedora-coreos/tutorial-setup/ 中找到,特別是 “Setup with Podman or Docker” 一節(jié)。):

$ 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$ lsfedora-coreos-32.20200907.3.0-qemu.x86_64.qcow2
創(chuàng)建一個配置

要定制一個 FCOS 系統(tǒng),你需要提供一個配置文件,Ignition 將使用這個文件來配置系統(tǒng)。你可以用這個文件來配置諸如創(chuàng)建用戶、添加受信任的 SSH 密鑰、啟用 systemd 服務(wù)等等。

以下配置創(chuàng)建了一個 core 用戶,并在 authorized_keys 文件中添加了一個 SSH 密鑰。它還創(chuàng)建了一個 systemd 服務(wù),使用 podman 來運行一個簡單的 “hello world” 容器:

version: "1.0.0"variant: fcospasswd:  users:    - name: core      ssh_authorized_keys:        - ssh-ed25519 my_public_ssh_key_hash fcos_keysystemd:  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 配置轉(zhuǎn)換成有效的 Ignition 配置(JSON 格式)。

直接從 Fedora 的資源庫中安裝 fcct,或者從 GitHub 中獲取二進制文件:

$ sudo dnf install fcct$ fcct -output config.ign config.yaml
安裝并運行 Fedora CoreOS

要運行鏡像,你可以使用 libvirt 堆棧。要在 Fedora 系統(tǒng)上使用 dnf 軟件包管理器安裝它:

$ sudo dnf install @virtualization

現(xiàn)在讓我們創(chuàng)建并運行一個 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.0Kernel 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:1a73Ignition: user provided config was appliedIgnition: wrote ssh authorized keys file for user: core

Ignition 配置文件沒有為 core 用戶提供任何密碼,因此無法通過控制臺直接登錄。(不過,也可以通過 Ignition 配置為用戶配置密碼。)

使用 Ctrl + ] 組合鍵退出虛擬機的控制臺。然后檢查 hello.service 是否在運行:

$ curl http://192.168.122.237:8080Hello from Fedora CoreOS!

使用預先配置的 SSH 密鑰,你還可以訪問虛擬機并檢查其上運行的服務(wù):

$ ssh core@192.168.122.237$ systemctl status hello● hello.service - Run a hello world web serviceLoaded: 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 服務(wù)使用自動更新驅(qū)動 rpm-ostreed。

檢查虛擬機上當前運行的 Fedora CoreOS 版本,并檢查 zincati 是否找到了更新:

$ ssh core@192.168.122.237$ rpm-ostree statusState: idleDeployments:● ostree://fedora:fedora/x86_64/coreos/stableVersion: 32.20200907.3.0 (2020-09-23T08:16:31Z)Commit: b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0$ systemctl status zincati● zincati.service - Zincati Update AgentLoaded: 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 enabledOct 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 statusState: idleDeployments:● ostree://fedora:fedora/x86_64/coreos/stableVersion: 32.20201004.3.0 (2020-10-19T17:12:33Z)Commit: 64bb377ae7e6949c26cfe819f3f0bd517596d461e437f2f6e9f1f3c24376fd30GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0ostree://fedora:fedora/x86_64/coreos/stableVersion: 32.20200907.3.0 (2020-09-23T08:16:31Z)Commit: b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0

rpm-ostree status 現(xiàn)在顯示了兩個版本的 Fedora CoreOS,一個是 QEMU 鏡像中的版本,一個是更新后的最新版本。有了這兩個版本,就可以使用 rpm-ostree rollback 命令回滾到之前的版本。

最后,你可以確保 hello 服務(wù)仍在運行并提供內(nèi)容:

$ curl http://192.168.122.237:8080Hello from Fedora CoreOS!
刪除虛擬機

要進行事后清理,使用以下命令刪除虛擬機和相關(guān)存儲:

$ virsh destroy fcos$ virsh undefine --remove-all-storage fcos

Fedora CoreOS 為在容器中運行應(yīng)用程序提供了一個堅實而安全的操作系統(tǒng)。它在推薦主機使用聲明式配置文件進行配置的 DevOps 環(huán)境中表現(xiàn)出色。自動更新和回滾到以前版本的操作系統(tǒng)的能力,可以在服務(wù)的運行過程中帶來安心的感覺。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI