OpenResty Edge でゲートウェイ設定をリリース・ロールバックする方法:リロード不要のバージョン管理
OpenResty Edge は、組み込みのバージョン管理でゲートウェイ設定を管理します。各変更は設定リリースを行うまで保留中のままで、リリースするとリロード・再起動・バイナリアップグレードなしに一度にすべてのゲートウェイクラスターへプッシュされます。リリース前に変更をテキストまたは JSON の差分でプレビューし、Normal または Staging タイプでリリースでき、あとからワンクリックで任意の過去バージョンへ元に戻す(ロールバック)ことも可能です。
本チュートリアルでは、ページルールの作成、リリース、修正して再リリース、最新リリースの取り消し、そしてより古いバージョンへのロールバックまでの一連の流れを、各ステップを curl で検証しながら解説します。バージョン管理は、ウェブコンソールが使用するリレーショナルデータベースが下支えしています。
アプリケーションのページルールを作成する
いつものように、OpenResty Edge の管理ウェブコンソールにアクセスしましょう。これは私たちのコンソールのサンプルデプロイメントです。各ユーザーは独自のデプロイメントを持つことができます。
引き続き、サンプルアプリケーション test-edge.com を使用します。
アプリケーションに入ります。
まず、カスタムレスポンスボディを出力する簡単なページルールを追加します。
新しいページルールを作成します。
このルールに条件を指定していません。そのため、無条件でトリガーされます。
レスポンスボディを直接返す新しいアクションを追加します。
「レスポンスボディを出力」アクションを検索することもできます。
それを選択します。
ここでは、Content-Type ヘッダーに「text/plain」を指定しました。
そして、レスポンスボディとして「Hello world」を指定しました。
このルールが他のルールよりも常に先に実行されるようにする必要があります。そのため、「常に先頭」のルールとしてマークします。
このルールがマッチした場合、後続のルールをスキップします。
これで作成します。
ページルールがここにリストされているのが確認できます。
ページルールをすべてのゲートウェイクラスターにリリースする
この新しいページルールはまだオンラインになっておらず、保留中の変更のままです。
新しい設定バージョンをリリースして、これをプッシュします。
このクリアボタンを使用して、保留中の変更をすべてクリアすることができます。しかし、今回はクリアしたくありません。
設定のリリースを行う前に、変更の詳細を確認することができます。
このボタンをクリックするだけで、変更の差分を確認できます。
これらの変更に対して、人が読みやすい形式で表示されます。
または、JSON 形式の変更を直接確認することもできます。
これで新しいリリースを行う準備ができました。
自分の Staging 用ゲートウェイノード にのみリリースすることもできます。
この場合、この設定バージョンは Staging タイプになります。これについては、将来のビデオチュートリアルでデモンストレーションを行います。そうでない場合は Normal タイプになります。
ここでは、そのバージョンを説明するためのメモやコメントを追加することもできます。もちろん、これはオプションです。
リリースボタンをクリックしてリリースします。
これで完全に同期されました。
新しいページルールがすべてのゲートウェイクラスターとサーバーにプッシュされました。
設定の変更にはサーバーのリロード、再起動、バイナリのアップグレードは必要ありません。そのため、非常に効率的でスケーラブルです。
curl でリリースした設定をテストする
ターミナルで、アプリケーションにテストリクエストを送信できます。
curl http://test-edge.com/
test-edge.com ドメインは OpenResty Edge が管理するゲートウェイノードサーバーに解決されています。
実行します。
確かに Hello world というレスポンスボディが得られました。
リリースページに戻ると、このテーブルですべてのリリース履歴を閲覧できます。
ここでは、各バージョンの作成者が誰かを確認できます。
また、いつリリースされたかも確認できます。
操作タイプも確認でき、「リリース」または「ロールバック」のいずれかになります。
リリースタイプは Normal または Staging のいずれかです。
ここで各履歴バージョンの変更の詳細を展開することもできます。
テキストによる説明もあります。
ページルールを編集する
ページルールを少し編集してみましょう。ページルールのページに戻ります。
このルールを編集します。
レスポンスボディを「Happy hacking!」に変更しましょう。
保存します。
これで新しい変更ができました。
修正した設定をリリースする
もう一度新しい設定リリースを行います。
変更の詳細をもう一度確認します。
「Hello world」を「Happy hacking!」に置き換えたことが表示されています。
リリースしましょう。
今回は「Say happy hacking」というコメントを追加します。
リリースします。
新しいバージョンがプッシュされました。
リリース履歴も更新されました。
修正した設定をテストする
ターミナルでもう一度テストリクエストを送信してみましょう。
curl http://test-edge.com/
実行します。
レスポンスボディが確かに「Happy hacking」に変更されました。
最新の設定リリースを元に戻す
次に、最新の設定バージョンを元に戻したいとします。
この「このバージョンに戻す」ボタンをクリックするだけです。
ロールバックを確認します。
ロールバックがすべてのゲートウェイサーバーにプッシュされました。
最新の操作ログのタイプが「ロールバック」になっているのがわかります。
元に戻した設定をテストする
ターミナルでもう一度テストしてみましょう。
curl http://test-edge.com/
実行します。
確かに「Hello world」に戻りました。
任意の過去バージョンにロールバックする
直前のリリースを取り消すだけでなく、より古いバージョンにロールバックすることもできます。
例えば、今回は 2 番目のバージョンにロールバックしたいとします。
この「このバージョンにロールバック」ボタンを直接クリックできます。ぜひ自分で試してみてください。
以上が、本日お伝えしたい内容です。
よくある質問
OpenResty Edge で設定変更をリリースするには?
ウェブコンソールで行った変更(新しいページルールなど)は、設定リリースを行うまで保留中の変更のままです。リリースページで保留中の差分を確認し、必要に応じて説明を入力して「リリース」をクリックします。すると変更がすべてのゲートウェイクラスターとサーバーへプッシュされます。
設定変更のリリースにサーバーのリロードや再起動は必要ですか?
いいえ。OpenResty Edge の設定リリースにはサーバーのリロード・再起動・バイナリアップグレードは不要です。新しい設定はすべてのゲートウェイクラスターとサーバーへ自動的に同期されるため、リリースは効率的でスケーラブルです。
Normal リリースと Staging リリースの違いは?
Staging リリースは設定を自分の Staging 用ゲートウェイノードにのみプッシュし、本番公開前に変更を検証できます。Normal リリースはすべてのゲートウェイサーバーへプッシュします。リリース履歴には各エントリのタイプが表示されるため、両者を区別できます。
最新のリリースを元に戻すには?
リリース履歴で最新のエントリを開き、「このバージョンに戻す」をクリックして確認します。取り消しはただちにすべてのゲートウェイサーバーへプッシュされ、その操作は「ロールバック」タイプとして履歴に記録されます。
直前だけでなく、任意の過去バージョンにロールバックできますか?
はい。直近のリリースを取り消すだけでなく、リリース履歴の任意の古いエントリ(例えば最後から 2 番目)を選び、「このバージョンにロールバック」をクリックすれば、その正確な設定バージョンを復元できます。
リリース前に変更をプレビューできますか?
はい。リリース前に、保留中の変更を人が読みやすいテキスト形式の説明と JSON 差分の両方で確認でき、ゲートウェイへプッシュされる内容を正確に把握できます。
OpenResty Edge について
OpenResty Edge は、マイクロサービスと分散トラフィックアーキテクチャ向けに設計された多機能ゲートウェイソフトウェアで、当社が独自に開発しました。トラフィック管理、プライベート CDN 構築、API ゲートウェイ、セキュリティ保護などの機能を統合し、現代のアプリケーションの構築、管理、保護を容易にします。OpenResty Edge は業界をリードする性能と拡張性を持ち、高同時接続・高負荷シナリオの厳しい要求を満たすことができます。K8s などのコンテナアプリケーショントラフィックのスケジューリングをサポートし、大量のドメイン名を管理できるため、大規模ウェブサイトや複雑なアプリケーションのニーズを容易に満たすことができます。
著者について
章亦春(Zhang Yichun)は、オープンソースの OpenResty® プロジェクトの創始者であり、OpenResty Inc. の CEO および創業者です。
章亦春(GitHub ID: agentzh)は中国江蘇省生まれで、現在は米国ベイエリアに在住しております。彼は中国における初期のオープンソース技術と文化の提唱者およびリーダーの一人であり、Cloudflare、Yahoo!、Alibaba など、国際的に有名なハイテク企業に勤務した経験があります。「エッジコンピューティング」、「動的トレーシング」、「機械プログラミング」 の先駆者であり、22 年以上のプログラミング経験と 16 年以上のオープンソース経験を持っております。世界中で 4000 万以上のドメイン名を持つユーザーを抱えるオープンソースプロジェクトのリーダーとして、彼は OpenResty® オープンソースプロジェクトをベースに、米国シリコンバレーの中心部にハイテク企業 OpenResty Inc. を設立いたしました。同社の主力製品である OpenResty XRay(動的トレーシング技術を利用した非侵襲的な障害分析および排除ツール)と OpenResty Edge(マイクロサービスおよび分散トラフィックに最適化された多機能ゲートウェイソフトウェア)は、世界中の多くの上場企業および大企業から高い評価を得ております。OpenResty 以外にも、章亦春は Linux カーネル、Nginx、LuaJIT、GDB、SystemTap、LLVM、Perl など、複数のオープンソースプロジェクトに累計 100 万行以上のコードを寄与し、60 以上のオープンソースソフトウェアライブラリを執筆しております。
翻訳
英文版の原文と日本語訳版(本文)をご用意しております。読者の皆様による他の言語への翻訳版も歓迎いたします。全文翻訳で省略がなければ、採用を検討させていただきます。心より感謝申し上げます!
















































































