ククログ

株式会社クリアコード > ククログ > Fluentdの公式サイトをHerokuからNetlifyへと移転した話

Fluentdの公式サイトをHerokuからNetlifyへと移転した話

Fluentdの公式サイトは www.fluentd.org ですが、 2026年2月20日にそれまでサイトをホスティングしていたHerokuから、Netlifyへと移行しました。

サイトのコンテンツの見栄えにほぼ影響ないように作業をすすめたので、移転していることに気づかなかった人も多いと思います。 今回は移行の背景等を記録として紹介します。

公式サイトの移転のきっかけ

そもそもは、公式サイトを移転するという話ではなく、 GitHubのissueで https://fluentd.org へとアクセスできないという報告があったことからはじまりました。

www.fluentd.org にしか普段アクセスしていなかったため気づいていなかったのですが、 https://fluentd.org にブラウザでアクセスできない状態になっていました。

http://fluentd.org にアクセスすると、 https://www.fluentd.org へリダイレクトするように設定されていましたが、 https://fluentd.org にアクセスすると証明書のエラーが発生するようになっていました。

https://www.fluentd.org については、https://github.com/fluent/fluentd-website のmasterブランチへのpushをトリガーとしてHerokuにデプロイしていることは把握していましたが、 http://fluentd.orghttps://fluentd.org にアクセスしたときにどう管理されているのかについては当時把握できていませんでした。 そのあたりを関係者に確認していく必要がありました。

関係者からの聞き取りでわかったこと

もともと fluentd.org のドメインはFluentdの開発元であったTreasure Data, Inc.さん(以下TDさん)が保持していたという経緯があります。

そのため fluentd.org のリダイレクト設定についてどうなっているか確認してみたところ、 TDさんではそのあたりを把握していない状況であることがわかりました。 そこで、CNCFのフロントデスクに問い合わせした結果、次のような状態であることがわかりました。

  • fluentd.org はCNCF/LFIT(Linux FoundationのIT部門)が管轄している
    • 問題となっているリダイレクト設定はFastlyで実施している
  • www.fluentd.org はTDさんがFastly+Herokuで構成している (CNCF/LFITのFastlyとは別管理)
    • www.fluentd.org の証明書はGlobalSignで発行した専用のものを利用している。

過去の経緯から、fluentd.org と www.fluentd.org は別管理となっているようでした。1

サイトにアクセスできない件に関しては、管轄がCNCF側にあることから、そちらのリダイレクト設定を見直してもらうように依頼しました。 (しかし、こちらからのアプローチがあまりよろしくなかったのか)CNCF側での設定がうまくいかなかったようで、リダイレクト設定の見直しの話はなかなか進みませんでした。

逆に、やりとりの途中でCNCF/LFIT管轄ではなく、TDさん側の関与を増やしてそちらで解決することをLFITから提案される状況でした。

TDさんには、サイトのホスティングや証明書の更新など長らく支援してもらっています。 しかし、コミュニティーで継続的にメンテナンスしていけるようにするためには、TDさんの関与を現状より増やすよりは、 移管できる状況にもっていくほうが望ましいと考えていました。 そのため、上記のLFITからの提案は受け入れられないものでした。

いろいろ状況がわかってきたなかで、現状の課題は次のようなものがありました。

  • TDさんが手離れできていない
  • fluentd.org と www.fluentd.org で管轄が異なり、問題が発生したときの対処に不安がある
  • www.fluentd.org の内容は実質静的なコンテンツであるが、コンテンツに対するメンテナンスコストが高めである
    • HerokuにWebアプリケーションとしてデプロイされているため、Rubyのランタイムの更新や脆弱性対応コストが静的サイトよりも高い
  • CNCFだけで解決しない場合は、LFITにさらにエスカレーションしてもらう等のコミュニケーションコストがかかる

当初はサイトにアクセスできない問題をCNCF側で解決してもらって、いったん区切りとするつもりでいました。 ゆくゆくはHeroku依存を減らしていけるとよいという温度感だったためです。

しかし、このような状況をそのままにしておくのは、リスクがあると判断し、より継続的にメンテナンスしやすい体制を 整えるべきではないかという判断に至りました。

サイトの静的化とMiddlemanの採用

移行前の www.fluentd.org は、Sinatraを採用したRubyアプリケーションとして構築されていました。

コンテンツの更新は次のようにして行っていました。

  • コンテンツを更新してmasterブランチにpushする
  • webhookを利用してCircleCIでデプロイ処理が実行される
  • Herokuに www.fluentd.org として反映される

www.fluentd.org のコンテンツは実質静的なコンテンツがほとんどですが、 app.rbに動的生成するコンテンツのためのロジックが多数含まれていました。 また、それなりにERBテンプレートを駆使したコンテンツもありました。

どこに移転するにせよ、継続的なメンテナンスコストを削減するには動的なコンテンツを排除し、静的HTMLとして再構築する必要がありました。

サイトを静的化するにあたっては、昨今ではいろいろ選択肢があります。 しかし、上記のコンテンツの特性があったため、移行しやすさを考慮してJekyll等ではなくMiddlemanを採用しました。

コンテンツの移行にあたっては、最初はGitHub Pagesを想定していました。 まだ最終的にどのようにデプロイされるか関係者の調整が進んでいなかったためです。 手軽に利用できそうということで移行先として検討していました。(カスタムドメインを適用する前提)

静的化にあたっては、切り替えが円滑に行えるよう、次の方針で作業を進めました。

  • 現状 www.fluentd.org で提供されているルーティング情報を洗い出し、静的にビルドするためのルールをMiddlemanへと移植する
  • (極力平行稼働できるように)現状のコンテンツとの共有部分が最大化するように修正する
  • HerokuとGitHub Pagesで平行稼働させて、コンテンツの差分を検出するしくみをCIとして整備する
    • サイトマップをもとに、対応するコンテンツに差分がないことを(構造上差異がでてしまう部分を除いては)確認する
  • リンクが機能する状態にあるか、生成されたコンテンツに対してlinkcheckerの出力結果を確認する
  • (静的にビルドする変更に支障になりうる)動的に挿入しているようなトラッキング系のJSの必要性を関係者に確認し、不要であればコンテンツから削除する

関係者との調整が長引くことが予見されたため、現状のしくみ(Heroku)でリリースアナウンスといったコンテンツの更新が継続している状況であっても 移行に支障がないように整備しました。

Netlifyへの移転の検討

サイトを静的化する作業のゴールが見えてきた頃、CNCF側から次のような提案がありました。

  • www.fluentd.org をNetlifyへ移転する
  • 移転にあたっては、ドメインのネームサーバーもNetlifyに変更する

なぜNetlifyなのかについては、CNCF傘下のプロジェクトでの実績が多数あるからとのことでした。 ドメインのネームサーバーについては必ずしもNetlifyに移転する必要があるわけではありません。 しかし、移転しない場合ドメイン関連の変更はLFITを経由するままになります。 変更したほうが、将来的な変更をCNCFの管轄として行いやすくなるというメリットがありました。

そのため、上記提案に沿って移転を進めることにしました。(なお、この時点でもまだサイトにアクセスできない問題は解決してません) 管轄が異なる現状を整理して、既存の問題解決にも繋げられるだろうという見込みがあったためです。

Netlifyにプロジェクトを作成してもらい、GitHub Pagesへのデプロイではなく、Netlifyでのデプロイ方法を事前に試してCIのしくみを 整備しなおしたりもしました。

ゾーンファイルの受領とNetlify DNSへの適用

一度にネームサーバーとサイトを切り替えるのには不安があったため、 先行してネームサーバーのみを切り替えることにしました。

事前準備として、LFITから現状のzoneファイルをCNCF経由で取得する必要がありました。

受領したzoneファイルを確認したところ、次のことがわかりました。

  • ネームサーバーはdnsimple.comで、ALIASやURLといった独自機能をサポートしている
  • 現在では利用していないステージング環境向けのサブドメインのレコードが多数ある
  • SOAレコードが古く間違っている
  • サーバー証明書発行のための一時的なレコードの残骸が残っている

不要なレコードは削除し、Netlify DNSでサポートしていないURLレコードについては、 次のようなリダイレクトをnetlify.tomlへと設定することで置き換えました。

[[redirects]]
  from = "https://discuss.fluentd.org/*"
  to = "https://github.com/fluent/fluentd/discussions"
  status = 301
  force = true

[[redirects]]
  from = "https://slack.fluentd.org/*"
  to = "https://launchpass.com/fluent-all"
  status = 301
  force = true

ALIASレコードは旧ネームサーバーから引き継いでFastly+Herokuに向けたままにしました。 そうすることで、ネームサーバーが変更されたとしても、従来と変わらずに名前解決等を行えるはずです。

この状態でNetlifyにリクエストを投げて(ネームサーバーを切り替える前に)期待通りに解決できることを確認しておきました。

dig +short @dns1.p03.nsone.net www.fluentd.org
dig +short @dns1.p03.nsone.net fluentd.org
dig +short @dns1.p03.nsone.net discuss.fluentd.org
dig +short @dns1.p03.nsone.net slack.fluentd.org
curl -I -H 'Host: discuss.fluentd.org' https://fluentd-website.netlify.app
curl -I -H 'Host: slack.fluentd.org' https://fluentd-website.netlify.app

従来と同等になっていることが確認できたのでネームサーバーを切り替えてもらいました。

Netlifyへの切り替え

ネームサーバーを切り替えたあと、次の作業を実施する必要がありました。

  • NetlifyのプロジェクトでDNS Verificationを実施
    • この手順はネームサーバーがNetlify DNSに切りかわってないと失敗します
    • サイトのHTTPS化のために必須です
  • fluentd.org ではなく、www.fluentd.org をprimaryに設定する
    • これをしないと www.fluentd.org が fluentd.org に転送されてしまいます。従来は fluentd.org を www.fluentd.org にリダイレクトする意図だったので、設定しないと逆の挙動になります

上記を実施することで、自動的に証明書がNetlify側で発行され、 www.fluentd.org のNETLIFYレコードが自動的に設定されました。

NETLIFYレコードの指定と、ALIASによってFastly+Herokuに向けている設定の双方が存在する場合、NETLIFYレコードが優先されます。 したがって、 www.fluentd.org がNetlifyに切り替わりました。

ALIASレコードは上記にともない不要になったので削除しました。

サイト切り替えでどのように変わったのか

サイトをNetlifyに切り替えたことで、次のような変化がありました。

  • ネームサーバーの管轄がLFITからCNCF管轄になり今後の変更にも対応しやすくなった
  • サーバー証明書がGlobalSignからLet's Encryptに変わり自動的に更新されるようになった
  • https://fluentd.org へのアクセスに失敗する問題もようやく解決した
  • TDさんがFastly+Herokuおよびサーバー証明書の維持管理をしなくてすむようになった

なお、移行の準備をすすめている過程で、Herokuが事実上のメンテナンスモードとなる ことがアナウンスされたという驚くべきニュースもありました。

Herokuのままでも直ちに影響がでたわけではありませんが、ようやく移行できたことは 今後の継続的な維持管理という観点からもよいタイミングだったのかもしれません。

さいごに

クリアコードはFluentdのサポートサービスやプラグイン開発を行っています。 今回公式サイトの移転を関係者と調整の上推進したのも、クリアコードがFluentdの継続的なメンテナンスを実施している立場にあるからです。

Fluentdのサポートサービスやプラグイン開発では td-agentやFluent Packageのアップデートについてもサポートしているので、詳しくはFluentdのサポートサービスをご覧いただき、お問い合わせフォームよりお気軽にお問い合わせください。

日本コミュニティ向けのXアカウントでは、日々、Fluentdに関する情報を発信しております。 ぜひ @fluentd_jp をフォローしてください!

  1. なお、CNCFとのやりとりの過程で fluentd.dev や fluentd.io といったドメインも CNCF/LFITで管理していることがわかりました。現在は使われていません。