📗

CentOS Streamへのシフトでうろたえないための手引き

2020/12/09に公開
12

何が起こったの?

CentOSプロジェクトがCentOS Streamに開発をシフトしていくことを宣言しました。これに伴ってRHEL 8の再構築としてのCentOS Linux 8は2021年に終了予定となりました。

ref: https://blog.centos.org/2020/12/future-is-centos-stream/

CentOSはLinuxの2大ディストリビューションの一つであるRed Hat Enterprise Linuxから商用パッケージを抜いてリビルドしたバージョンです。
商用パッケージが抜いてあるため、サポート無しで良ければ無料で本番環境で利用できるという事でOSの商用サポートを必要としないようなケースでよく利用されています。

今回、CentOS Linuxが終了してCentOS Streamになる事でCentOS終了!? という感じで一瞬ビビりましたがそこまで心配は無さそうなのでいったん私の理解をまとめてみました。もし事実と違うところがあればご指摘ください。

ただ大きなポイントとしては「RHELから商用パッケージを抜いたものがCentOS Linux」という考え方から「CentOS Streamに商用パッケージを足したものがRHEL」という感じで関係が逆転してることです。これを好ましいと思うか不都合と思うかは立場によりますね。

とりあえず「どれ使えば良いの?」ってことだけ知りたい人は「フローチャート」にジャンプ!

CentOS Streamとは?

CentOS StreamはRed Hat系の新しいディストリビューションです。その最大の特徴はバージョンが無いローリングリリース方式を採用している事です。
ローリングリリース方式はWindows 10やMacOSのように明確なバージョンが無く、原則最新版が自動的に当たり続ける方式です。Linux系だとGentooとかClear Linuxあたりが有名な気がします。

ローリングリリース方式を採用しているため現状最新の8から移行した時点ではあまり変わりませんが、RHELのバージョンが9, 10と上がっていくにつれてCentOS Streamのパッケージも自動で追従されていくので「古いバージョンを使い続ける」という事が出来なくなります。つまり「マイナバージョンも含めて固定」が難しくなるわけです。
※ 追記にも書きましたがメジャーバージョンは変わらないようです。RHELのマイナバージョンのアップストリームというだけです。

これは通常困る事はありませんが、商用ソフトを利用している場合に困るケースがあります。この手のソフトはRHELの特定のバージョンのみをサポートしている事が多いからです。そのため動かすことは出来ても商用サポートを受けることが難しくなる可能性はあります。この辺は各ベンダーの今後の対応しだいですが最大の懸念点でもあります。

ただし、そもそも商用のパッケージがサポート付きで必要とされるケースだと、OS自体のサポートも必要なケースが多いと思いますのでRHELやOracleLinuxを使えば良く、あまり問題にはならない気がします。

もう1点、まだ細かく調査出来てないのですが、大型の非互換の変更が自動アップデートで入る事も将来的にはありえるます。そのような場合に一時的にアップデートをセキュリティパッチ以外止めるなどそういった柔軟な運用ができるかも必要になってきます。難しい場合はカナリアリリース的に半分ずつOSのバージョンを上げるなど運用上の工夫が必要です。

Fedora/CentOS Stream/RHELの関係

個人的な印象も含めていいえばRed Hatファミリーはざっくりと下記のような形になります。

dist 説明 RHELとのパッチ連携
Fedora 先進的でRHELの元になる基盤を作るプロジェクト 相互
CentOS Linux RHELのクローン。廃止予定 RHELからのダウンストリームのみ
CentOS Stream RHELの最新master (RHELにリリース前のバージョンも含む) 相互
Red Hat Enterpirse Linux CentOS Streamの特定リビジョンに商用パッケージを追加したもの -

CentOS Streamはβ版的なポジションでは無く「十分にテストもされて利用可能だがまだRHELには含まれてないコードを含むブランチ」としてとらえるのが良いようです。

また重要な点としてRHELとのパッチ等の連携です。CentOS LinuxはRed Hat傘下に入るまでは完全に別の組織でしたし、RHELのクローンと言う特性からもRHELからのダウンストリームのみをサポートします。これがどういうことかと言うと、Red Hat系全体に影響するような不具合を見つけた場合はCentOSプロジェクトのみに修正を入れるわけにはいかないので「まずRed Hatにレポートしそこで取り込まれた後にCentOSでも取り込む」というフローを踏む必要があります。今回のCentOS Streamではそれらが連携できる体制になっているので運営上はここが大きな差分になるかと思います。

なお、Fedora, CentOS Linux, CentOS Stream, RHELの関係に関しては下記のサイトにとても詳しくまとめてあります。

つまりベータなんでしょ? 本番で使えないじゃなん!

上の章でも書いてますが「公式の見解」としてはβではなく寧ろ「より早いタイミングでBugfixが当たってるからRHELより安定してるくらい!」とのことです。βとか開発版とかの位置づけはFedoraで、Streamはあくまでmasterとリリースブランチの関係。つまり安定板です。

なので、サポートがどうなるかが謎なのですが、本番で商用サポート無しで利用できるケースなら本番で使えると思います。逆に、CentOSの商用サポートをサードパーティとか使ってやってた場合は困るかもなのでそのケースはRHELかOracle Linuxに移行ですね。

既存のCentOS LinuxのEOSLは?

公式では以下のようにアナウンスされています。

  • Updates for the CentOS Linux 6 distribution ended November 30, 2020.
  • Updates for the CentOS Linux 7 distribution continue as before until the end of support for RHEL7.
  • Updates for the CentOS Linux 8 distribution continue until the end of 2021; users can choose to switch over directly to CentOS Stream 8
  • Updates for the CentOS Stream 8 distribution continue through the full RHEL support phase.

CentOS Linux 8以外はいったん既存通りという感じになると思います。ちなみにあくまで「CentOS Linux 8のEOSLが2021年」なのでRHEL8やOracle Linux 8のEOSLが2021年では無いので商用版の何某を使ってるかたは安心してください。

勝手にメジャーバージョンが変わるの?

これは少なくともいきなりは変わらないようです。
まず大前提としてDNF/yumでアップデートしない限りバージョン上がらないので死蔵させるならそれが一番ですが、そういう例外的な運用はさておき。

下記のFAQを見る限りだと少なくとも現行版と次期版の2つのStreamが運用されそうです。
https://centos.org/distro-faq/#q6-will-there-be-separateparallelsimultaneous-streams-for-8-9-10-etc
https://www.redhat.com/ja/blog/faq-centos-stream-updates#Q6

現行StreamはRHELより先のマイナバージョンが反映されたブランチ、次期版StreamはFedoraを元にした次期メジャーバージョン向けのブランチ、という使い分けになりそう。なので何の予告もなくメジャーバージョンアップされたり、検証の期間が無いという事は無いと思うのでテスト環境で試す時間はありますね。

yum update --security等が使えなくなるわけでもないと思うので、たとえばCentOS Stream 8でセキュリティアップデートのみを当てるということは出来そうな気がします。マイナーバージョンの更新レベルの変更のタイミングをコントロールできるのかが気になるところですね。

追記

8と9はやはり別なのでかってに9になったりはし無さそうですね。あくまでマイナーバージョンの先行リリース版という位置づけなので、パッケージベンダーのサポートも比較的えられやすいね。メジャーバージョンが一致するなら。


ref: CentOS Stream is Continuous Delivery

2021年以降、CentOSを使ってたエンジニアが選ぶディス鳥はこれだ!

とりあえず独断と偏見でフローチャートを書いてみました。自分の理解が間違ってたり状況が変わればアップデートします。

商用パッケージを動かす要件がなく今までもRHELの商用サポートを必要としていなかったようなケースではStreamにして常に最新が使える方がうれしい気がします。どうしてもバージョンを固定しないといけない場合は一応サポート有りでも無しでも利用できるOracle Linuxかサポート付きでRHELですかね。

コンテナでの利用とかは最新が良いですよね。もっと言うとBottlerocketやCoreOSのようなコンテナ用ディス鳥が軽くてセキュアなのでそちらを検討したいですね。ただDebian/Ubuntuも含めてRH系以外のディス鳥の採用時はパッケージやコマンド、ディレクトリ構成の差もあるのでちゃんと確認しましょう。Dockerのつもりが裏はPodmanやcri-oだってケースもRH系だとあるでしょうし。

追記

CentOS Linuxのオリジナルの開発者によって改めてフリーのRHELクローンのRocky Linuxの開発が宣言されました。
https://news.itsfoss.com/rocky-linux-announcement/

リポジトリは下記。2020/12/09現在では空ですが遠からず出来るかと思われます。
https://github.com/hpcng/rocky

UEKのこと考えなくて良いし、宗教上の理由でOracleは無料とか有料とか関係なく使いたくないという方も多そうだからこっちが代替えの主流になるかもしれないですね。

「Scientific Linux 8をリスタートすればよくね?」というコメントに対して「RHEL8からビルドシステムが変わったので再構築し直す必要がある。だからCentOSなんかも8対応は時間がかかった」的なコメントがあるので使えるようになるのはもう少し先かもですが期待は出来ますね。CentOS 8ってGPLに見えるけど単純にそれをクローンしてメンテを独立させるだけじゃダメなのかな?

まとめ

「CentOS Linux無くなるの!?」とちょっと驚いたのでいったん調べてみた内容をまとめてみました。
結論から言うと「現在商用サポートを利用してないような人は概ねCentOS Streamへの移行で十分」だと思われます。
そもそもRHELのフリー版を作りたいならば「RHELから商用ソフトを抜いて再構築」するよりも「商用ソフトの無いCent Streamをまず作りそこに商用パッケージを足してRHELにする」方がずっとシンプルで管理コストも小さいので、Red Hatの立場としてはこうするよねって感じ。

Red Hatも開発向けには無料ですし、今回の変更を受けてより柔軟ないしは低価格なパッケージも用意するとの噂も。

かつてはCentOSの移行先としてScientific Linuxがありましたが少し前に開発終了してしまいました。逆に商用イメージバリバリのOracle Linuxがサポート無しでも利用できる数少ないRHELクローンと言うのが不思議な感じがしますねぇ。

なお、私自身も今回いったん調べて理解をまとめただけなので、もし認識違い等があればぜひ指摘いただけると助かります。

それではHappy Hacking!

Discussion

sugitksugitk

CentOSはLinuxの2大ディストリビューションの一つであるRed Hat Linuxから商用パッケージを抜いてリビルドしたバージョンです。

Red Hat Linux は古い昔のディストリビューションなので、Red Hat Enterprise Linux と書いていただけますと助かります。

inductorinductor

Clear Linuxって実際使っている人を見たことがないのですが、ここのフローチャートに組み込めるほど情報転がってるもんなんでしょうか?

kodukikoduki

そう言われるとこのコンテナ系3つは実はエアプなんですよね。。。 GCPメインなのでCOS使ってるので。単純にコンテナ専用のLinuxだと、AWSがBottlerocketでAzureがClear LinuxでFedora CoreOSがCoreOSの後継でフラットなイメージだったんで書いただけでした。そんなに使われてないなら削りますかね。。。

なんかの記事でAzureがClear Linuxに対応というのを読んで印象に残ってたのですが言われて調べてみたらAKSとかで採用しているというわけでもなさそうですし。

Takahiro YAMADATakahiro YAMADA

既にご認識ですが、Rocky Linuxの動きをフローチャート含めて追記いただいたほうがよさそうですかね。

Takahiro YAMADATakahiro YAMADA

ありがとうございます!
AWS前提でAmazon Linuxもありそうですが、ユースケース的に当てはまるかは微妙なところですね。

kodukikoduki

Amazon LinuxってRedHatをベースにしてたとは思いますが互換って訳でもないですしね。まあ、AWSで使う分には一番最初の選択肢にはなるんだと思いますけど。

inductorinductor

あとRHELからの移行の場合、DockerではなくPodman/CRI-Oを使うシーンもあると思うので、そこの移行を考えずにBottlerocketやDebian系を選択するのはリスクありそうです。

kodukikoduki

なるほど。RH系からDebian系に変えるならDocker以外にも色んなパッケージや構成の差分があるので個別には気にしてなかったですが、一応触れておきますかね。コンテナ=Dockerな人も多いでしょうし。

tsrtsr

CentOS LinuxはRed Hatに買収されるまでは元々別な会社だった

CentOS Project が Red Hatの傘下に入ったのは 2014年の出来事ですが、
そもそもCentOS Project は会社ではありませんでしたし、コミュニティが作るディストリビューション(CentOS の Cent は "Community ENTerprise" の略です)ですので、買収の形もありえません。
当時のプレリリースはこれです。
https://www.redhat.com/ja/about/press-releases/red-hat-and-centos-join-forces
現在も CentOS Project は会社ではありません。

kodukikoduki

ありがとうございます。確かに会社ではないですね。修正しました。