LWN.get へようこそ
次のサブスクリプション完全通知は、LWN サブスクライバーによって利用可能になりました。 何百ものサブスクライバーが、Linux およびフリー プラン コミュニティからの最も単純なレコードを LWN に依存しています。 たまたまこの記事に乗ったときは、
LWN
への登録
を心掛けてください。 LWN.getをご覧いただきありがとうございます!
2023年2月14日
このテキストは、Koen Vervloesem
の寄稿を受けて作成されました
私たちの多くは、コンテナを実行するのと同等の単一の機能を Linux ディストリビューションに配置した後、インストールして忘れる手間を省きます。展開の構成。 ブリュッセルで開催された FOSDEM 2023
では、この最小限の Linux ディストリビューション形式のプロジェクトがいくつか提供されていました。 Fedora CoreOS、Ubuntu Core
、openSUSE MicroOS、および Bottlerocket OS はすべて、自分たちの生みの親のこの欠点を打ち出しています。 FOSDEM での講演では、これらのプロジェクトのアプローチがどのように変動するかについて、刺激的な概要が示されました。 Fedora CoreOS
Akashdeep Dhar と Sumantro Mukherjee はどちらも Fedora Council のメンバーであり、Crimson Hat でプラン エンジニアとして働いています 彼らが Fedora CoreOS をコンテナー内のマルチプレイヤー レクリエーション サーバーを突き刺すための嘆かわしい運用計画としてどのように叫んでいるかを説明しました。 ドキュメントで説明されているように、Fedora CoreOS は「機械的に更新され、最小限で、モノリシックで、コンテナーに焦点を当てた運用計画」です。
Fedora CoreOS (通常は FCOS と略される) は、これらのコンテナーのホスト運用計画を提示します。 これには、最小限のネットワーク対応およびコンテナー準備のセットアップに必要なこれらの目的が完全に含まれます。 この記事を書いている時点で、流行りの 有効な解放 には 415 の目的がありました。 x86_64、aarch64 (Raspberry Pi 4 を含む)、および s390x アーキテクチャに役立ちます。 ; ベア スチール、仮想化、または大量のクラウド プラットフォームで実行されます。 Fedora CoreOS マシンが の叫び声でプロビジョニングされます) )Ignition は、ディスクのパーティション化、パーティションのコーデック化、systemd オブジェクトの有効化、およびユーザーの構成を行うツールです。 Ignition は、プランのメイン ブートのあるレベルで、initramfs からすぐに完全に実行されます。 Ignition 構成ファイルは JSON としてフォーマットされていますが、Fedora CoreOS はユーザーのために ブタン構成 は、ブタンが Ignition 構成に解釈する YAML ファイルです。 Fedora CoreOS のドキュメントの「Design Configuration」の半分には、いくつかの例が示されています。ブタン構成でストレージ、コミュニティ、コンテナー、ユーザーとグループ、タイム ゾーンなどを構成する方法。 彼らの話の中で、Dhar と Mukherjee は Minecraft サーバーをコンテナーに配置するためのブタン構成を確認し、さらにそれを印刷しました GitHub リポジトリ . Fedora CoreOS に配置する場合、3 つのうちの 1 つと思われる bewitch 代替ストリーム。 「次」は元の側面を試すためのものであり、「テスト」は次の有効なストリームで何が来るかを表し、「有効」はテスト ストリームで時間を費やした調整を行ったストリームです。 ほとんどのユーザーは、有効なストリームを決定する必要があります。 インストール形式に応じた方法で、カスタマイズと共に Ignition ファイルを参照します。 場合によっては、 PXE から配置するときに、 coreos.inst.ignition_url=URL システムをカーネルに接続し、インターネット サーバー上の Ignition ファイルの位置を参照します。 インストール後、選択したストリームでブランドのオリジナルのリベラートが展開されると、計画は機械的に今と同じくらいアップします。 運用計画のための Zincati エージェント評価rpm-ostree
の叫び声を更新して適用します。 。 Zincati は、単に効果的に構成されているだけである可能性があります。 たとえば、代用をどの程度「警戒」するか (つまり、段階的なロールアウト サイクルのどのくらい早い段階で更新を受け取るか) を構成したり、代用の悲鳴を上げた後に再起動することをどの程度懸念するかを構成したりできます (すぐに、または完全に内部構成された窓の修理)。 . 代替品が問題を引き起こした場合、特定の人は、
を使用して、以前の計画の問題に手動で再度ロールバックする準備が引き続き整っています。 $ sudo rpm-ostree ロールバック -r
ここにはない dnf または yum ) Fedora CoreOS の手順。 キットの拡張は rpm-ostree
で実行します。 、元の運用計画イメージの上位にニーズを重ねます。 ただし、Fedora CoreOS はコンテナーに重点を置いた計画であるため、通常、追加のサービスはコンテナーとしてインストールされます。 Ubuntu コア
Canonical の Valentin David Ubuntu Core について話しました。 ミッションのホーム ページによると、それはもはや「組み込みガジェット向けの安定したユーティリティ中心の IoT OS」ではありません。 Ubuntu Core は、IoT ゲートウェイ、サイネージ、ロボット工学、および自動車用の産業用コンピューターに相当する高度な組み込みガジェットをターゲットにしています。 家では、ラズベリーパイでと同等のサービスを突くのはおそらく寛大ですNextcloud
または住自動化プラン。 ディストリビューションの計画は、基本的に Ubuntu の主要な運用計画のビルドに完全に基づいていますが、deb の目的や dpkg および 本音 手順。 別の方法として、完全に snaps プランをインストールします。 基本的に、スナップ キットは、プランのインストール方法と poke 方法に関するメタデータを含む squashfs イメージです。 スナップは、他のスナップおよび基礎となる運用計画から分離されています。 スナップが突かれたら 厳重監禁、それはサンドボックスで実行され、AppArmor、seccomp、および規制グループの悲鳴を上げます。 デフォルトでは、スナップはサンドボックス外のソースへのエントリを所有していませんが、 インターフェイス 。 David は、Ubuntu Core には 5 つの形式のスナップがあると説明しました。 「ガジェット」スナップには、ブートローダー、インストルメント ツリー、ボード ビッドの目的、および構成に相当するインスツルメント ビッドまたはストラクチャ ビッド ファクタが含まれています。 「カーネル」スナップには、Linux カーネル、モジュール、ファームウェア、および systemd スタブが付属しています。 「嘆かわしい」スナップには、Ubuntu Core オペレーティング プランのルート ファイル プランが含まれています。 「snapd」スナップには、すべてのスナップをインストールおよび更新するデーモンである snapd があります。 最後になりましたが、各ユーティリティはユーティリティ スナップにパッケージ化されています。 これには、嘆かわしいスナップのルート ファイル プランが含まれます。 それはおそらく、おそらく、さらに、基礎となる運用計画で利用可能なサービスと指示を形成するでしょう。 ガジェット スナップはさらにディスク レイアウトを記述します。 Ubuntu Core には通常 4 つのパーティション 。 UEFI 手法では、「シード」パーティションは EFI デザイン パーティション (ESP) であり、メイン ステージのブート ローダーの構成と、最小限の 1 つの復旧計画が含まれています。 「boot」パーティションには、第 2 段階のブートローダー、カーネル、および「place」パーティションと「records」パーティションを復号化する initramfs が含まれています。 後の 2 つは LUKS2 暗号化されています。 プレース パーティションには、復元を容易にするための機器識別およびその他のレコードのバックアップが含まれ、レコード パーティションには、特定の人物および計画のレコードが格納されます。 Ubuntu Core の運用計画のほとんどは完全に教えられます。 場合によっては、/など と /var はデフォルトで完全にティーチングされます。 ただし、入札パスはレコード パーティションからバインド マウントされ、/ などと同等です。 /systemd、これにより、プランがサービスの systemd ユニット ファイルを切り替えてマウントできるようになります。スナップの squashfs イメージ。 トランザクションの更新 snapd によって処理されます。スナップの代替が失敗した場合、計画は機械的にスナップの前のモデルに再びロールバックされます。 openSUSE MicroOS
SUSE のリサーチ エンジニア、Ignaz Forster 氏 openSUSE MicroOS
の形式を説明
。 または、もはやそれは openSUSE Tumbleweed
は、単機能プランとして突くために開発されました。 同一の古いターゲットをインターネット ホスティング コンテナーにすることもできますが、構築するために古いターゲットにすることもできます 最小限のデスクトップ 。 Fedora CoreOS や Ubuntu Core と同様に、openSUSE MicroOS は機械的に更新され、最小限のキットしか選択できません。 openSUSE MicroOS の場合、これらは openSUSE のリポジトリからの正直な RPM の目的です。 さらに、エンデバー モデルの SUSE Linux Endeavor Micro と、後者のコミュニティ モデル が存在する可能性があります。 ジャンプマイクロ。 OpenSUSE MicroOS には、Btrfs の金切り声である完全にルート化されたファイル プランがあります。 トランザクションの更新は、キット マネージャーの zypper を巡る SUSE 入札ラッパー スクリプトによって処理されます トランザクション代用. これにより、ルート ファイル プランのオリジナルの Btrfs スナップショットが作成され、その後、プランの置き換えが実行されます。 インストールが成功すると、スクリプトは元のスナップショットをデフォルトのスナップショットとしてマークします。 エラーが発生した場合、スナップショットは破棄され、前のスナップショットがデフォルトのままになります。 再起動すると、元のスナップショットがアクティブになります。 Forster 氏は、openSUSE MicroOS の完全に教育されたすべての要素が現在 に移動されているため、 /usr、次の 4.2.0 の transactional-substitute の解放はさらに再起動せずに元のスナップショットを叫ぶ準備ができています。 MicroOS は Effectively being-checker 代替後に計画が期待どおりに起動するかどうかを評価する systemd サービス。 これにより、ルート ファイル プランの以前のデフォルト スナップショットへの自動ロールバックが開始されます。 長い間確立されたトランザクション代替スクリプトは、アトミック プラン更新用の汎用ライブラリである libtukit に正しく進化しています。 元の実装は、openSUSE のスナップショット ユーティリティ で Btrfs を完全に支援します。 Snapper、openSUSE MicroOS で古いもの。 しかし Forster によると、API は他のバックエンドを強化するために開発されたものです。 Ubuntu Core と区別して、/var および /等々 は書き込み可能ですが、/usr は十分に教えられます。 場合によっては、デフォルトのプラン構成が /usr
に組み込まれています。 。 管理者によって行われる最も効率的な調整は、/など
にあります。 。 OpenSUSE の libeconf は、多数の場所にある構成ファイルをマージします。 デフォルトの MicroOS の目的のほとんどは、これで動作するように変更されています。 最も効率的 /など/fstab は、この規則をまだ適用していません。 Forster は、openSUSE MicroOS は現在のインフラストラクチャと目的について単に実用的であり、もはやそれは「汚染された世界で完全に機能する OS」ではない、と結論付けました。
前の 3 つの操作手法は、全体的な機能を備えたマザー ディストリビューションに由来しますが、Bottlerocket は Amazon によって作成され、Amazon Internet Companies (AWS) クラウドでコンテナーをホストするように調整されています。 彼の中で トーク
、AWS 計画のトレンド エンジニアである Sean McGinnis 氏はすぐに、運用計画が「AWS によって支えられているが、AWS に完全に依存しているわけではない」ことを強調するようになりました。 場合によっては、ミッションの GitHub リポジトリに 裸のサーバー でそれを突くための指示。 ボトルロケットはすぐに 2020年3月提供・作成 通常利用可能2020年8月. 信頼できる程度にフットプリントを小さくするために、Amazon は入札金切り声のケースのバリエーションを公開しています。 場合によっては、containerd と kubelet を備えた aws-k8s バリアントが AWS の Kubernetes ノードとして機能する可能性があり、vmware-k8s バリアントが同じものを Amazon Elastic Kubernetes Carrier (EKS) を使用して VMware に配置する可能性があります。 Amazon EKS をベア スチールで実行するのに役立つ k8s バリアント。 Bottlerocket は、2 つのまったく別のコンテナー ランタイムを実行します。 1 つは、運用義務のためにホスト コンテナーを実行することです。 反対側は、Kubernetes ポッドに相当する、オーケストレーターを使用してコンテナーを実行するために熟成されています。 各ランタイムには、大量のセキュリティ プロファイルがあります。 すべてのコンテナは、それが束コンテナであろうとオーケストレータ用コンテナであろうと、Bottlerocket で実行されている API サーバーと Unix ソケットを介して通信する API クライアントを実行しています。 . Bottlerocket が起動すると、その起動設定 (特定の個人レコードを含む) が API サーバーに読み込まれます。 さらに、個々の相互作用が通常実行されます この API を介して、計画構成に対する適切な時間の調整を形成します。 主要なホスト コンテナの 1 つは、ブート時に起動される「調整」コンテナであることは間違いありません。 このコンテナーは、Bottlerocket ホストを構成するためにエージングされます。 他のすべてのホスト コンテナは「管理」コンテナです。 これは、デフォルトで起動するのに適した時間ではありません。ホストの運用計画をトラブルシューティングするには、特定の条件で完全に起動する必要があります。 追加の権限があり、ルート ジョブの名前空間を叫んで、トラブルシューティングの目的で反対側のコンテナーに入ることができます。 管理コンテナーは、ホストのメイン コミュニティ インターフェイスを介して到達可能な SSH サーバーを実行します。 ホスト コンテナーの最後の構成は、ブートストラップ コンテナーです。これは、サービスが Kubernetes または Docker の誕生を味わう前に、ホストをブートストラップします。 たとえば、基になるホスト ファイル プランへのエントリを提示するなど、追加のアクセス許可があります。 セキュリティは、Bottlerocket の主要な機能の 1 つと考えられています。 ファウンデーション ファイル プランは完全に教えられ、/など は、起動時に再生成される tmpfs ファイル プランによって支えられています。 コンテナの写真とボリュームには、別の特定人物パーティションがマウントされます。 さらに、キット マネージャーもシェルも Python インタープリターも存在しない可能性があります。 「攻撃者がコンテナを手に入れることができれば、もはや使用するツールは多くありません」と McGinnis 氏は語っています。 ブロックガジェットの完全性を調べるために、Bottlerocket は
dm-verity . カーネルはロックダウン モードで起動します。これにより、root の特定の人物がカーネルを改善することができなくなります。 McGinnis 氏は、これにより、実行中のカーネルがブートされたカーネルに対応しているという保証が高まると説明しました。 彼が強調した他のすべてのセキュリティ機能は、Bottlerocket が SELinux でインポーズ モードで実行されることです。 更新のために、Bottlerocket はイメージベースの完全なモデルを使用します。 カーネル、計画の目的、およびコンテナーのランタイムの目的はすべて、運用計画イメージの内部に保持されます。 ホストの最初のブロック機器には、精力的で非アクティブなパーティションがあります。 アップグレードされたイメージが非アクティブなパーティションにダウンロードされ、再起動時にホストがこのパーティションで起動され、その後、このパーティションが生き生きとします。 以前の Bottlerocket イメージは構成され、その時点で非アクティブなパーティションに保持され、必要に応じてさらにロールバックすることができます。結論
これらの単一機能の Linux ディストリビューションの多くのアプローチをじっと見ていると、最も単純なものが近くにない可能性があることは明らかです。 どちらを選択するかは、それらがあなたの夢にどのように適合するか、そしてどのツールに満足しているかによって異なります. API ファーストの AWS または Kubernetes の世界に慎重に投資していますか? それから、Bottlerocket は啓発試合のように見えます。 あなたのサービスを突くためにスナップを回収しますか? その場合、Ubuntu Core は非常に簡単です。 あまりにも多くの修理をせずにコンテナをまとめて突っ込む方法を教えるには、Fedora CoreOS または openSUSE MicroOS が最適です。 rpm-ostree や Btrfs のスナップショットがフードの下にあるかどうかは、すべてのワークロードがコンテナで実行されている場合、おそらくそれほど重要ではありません。
(
ログインしてコメントを送信)
