このチュートリアルでは、OpenResty Edge での設定バージョンの管理とリリース方法をご紹介します。私たちのウェブコンソールで使用しているリレーショナルデータベースには、バージョン管理の機能が組み込まれています。

アプリケーションのページルールを作成する

埋め込み画像

いつものように、OpenResty Edge の管理ウェブコンソールにアクセスしましょう。これは私たちのコンソールのサンプルデプロイメントです。各ユーザーは独自のデプロイメントを持つことができます。

引き続き、サンプルアプリケーション test-edge.com を使用します。

屏幕截图

アプリケーションに入ります。

スクリーンショット

まず、カスタムレスポンスボディを出力する簡単なページルールを追加します。

スクリーンショット

新しいページルールを作成します。

屏幕截图

このルールに条件を指定していません。そのため、無条件でトリガーされます。

スクリーンショット

レスポンスボディを直接返す新しいアクションを追加します。

スクリーンショット

「レスポンスボディを出力」アクションを検索することもできます。

スクリーンショット

スクリーンショット

それを選択します。

屏幕截图

ここでは、Content-Type ヘッダーに「text/plain」を指定しました。

スクリーンショット

そして、レスポンスボディとして「Hello world」を指定しました。

スクリーンショット

このルールが他のルールよりも常に先に実行されるようにする必要があります。そのため、「常に先頭」のルールとしてマークします。

スクリーンショット

このルールがマッチした場合、後続のルールをスキップします。

スクリーンショット

これで作成します。

スクリーンショット

ページルールがここにリストされているのが確認できます。

ページルールをリリースする

スクリーンショット

この新しいページルールはまだオンラインになっておらず、保留中の変更のままです。

新しい設定バージョンをリリースして、これをプッシュします。

屏幕截图

このクリアボタンを使用して、保留中の変更をすべてクリアすることができます。しかし、今回はクリアしたくありません。

スクリーンショット

設定のリリースを行う前に、変更の詳細を確認することができます。

このボタンをクリックするだけで、変更の差分を確認できます。

スクリーンショット

これらの変更に対して、人間が読める形式のテキスト説明を提供しています。

スクリーンショット

または、JSON 形式の変更を直接確認することもできます。

屏幕截图

これで新しいリリースを行う準備ができました。

スクリーンショット

自分の Staging 用ゲートウェイノードにのみリリースすることもできます。

スクリーンショット

この場合、この設定バージョンは Staging タイプになります。これについては、将来のビデオチュートリアルでデモンストレーションを行います。そうでない場合は Normal タイプになります。

埋め込み画像

ここでは、そのバージョンを説明するためのメモやコメントを追加することもできます。もちろん、これはオプションです。

スクリーンショット

リリースボタンをクリックしてリリースします。

スクリーンショット

これで完全に同期されました。

屏幕截图

新しいページルールがすべてのゲートウェイクラスターとサーバーにプッシュされました。

設定の変更にはサーバーのリロード、再起動、バイナリのアップグレードは必要ありません。そのため、非常に効率的でスケーラブルです。

埋め込み画像

テスト

ターミナルで、アプリケーションにテストリクエストを送信できます。

curl http://test-edge.com/

test-edge.com ドメインは OpenResty Edge が管理するゲートウェイノードサーバーに解決されています。

スクリーンショット 1

実行します。

スクリーンショット 3

確かに Hello world というレスポンスボディが得られました。

リリースページに戻ると、このテーブルですべてのリリース履歴を閲覧できます。

スクリーンショット

ここでは、各バージョンの作成者が誰かを確認できます。

スクリーンショット

また、いつリリースされたかも確認できます。

スクリーンショット

操作タイプも確認でき、「リリース」または「ロールバック」のいずれかになります。

スクリーンショット

リリースタイプは Normal または Staging のいずれかです。

屏幕截图

ここで各履歴バージョンの変更の詳細を展開することもできます。

スクリーンショット

テキストによる説明もあります。

スクリーンショット

ページルールを編集する

ページルールを少し編集してみましょう。ページルールのページに戻ります。

スクリーンショット

このルールを編集します。

スクリーンショット

レスポンスボディを「Happy hacking!」に変更しましょう。

屏幕截图

保存します。

これで新しい変更ができました。

変更を公開する

スクリーンショット

もう一度新しい設定リリースを行います。

スクリーンショット

変更の詳細をもう一度確認します。

スクリーンショット

「Hello world」を「Happy hacking!」に置き換えたことが表示されています。

スクリーンショット

リリースしましょう。

屏幕截图

今回は「Say happy hacking」というコメントを追加します。

スクリーンショット

リリースします。

スクリーンショット

新しいバージョンがプッシュされました。

スクリーンショット

リリース履歴も更新されました。

屏幕截图

変更をテストする

ターミナルでもう一度テストリクエストを送信してみましょう。

curl http://test-edge.com/

屏幕截图 1

実行します。

スクリーンショット 2

レスポンスボディが確かに「Happy hacking」に変更されました。

設定バージョンを元に戻す

次に、最新の設定バージョンを元に戻したいとします。

スクリーンショット

この「このバージョンに戻す」ボタンをクリックするだけです。

スクリーンショット

ロールバックを確認します。

スクリーンショット

ロールバックがすべてのゲートウェイサーバーにプッシュされました。

スクリーンショット

最新の操作ログのタイプが「ロールバック」になっているのがわかります。

屏幕截图

バージョンのロールバックをテストする

ターミナルでもう一度テストしてみましょう。

curl http://test-edge.com/

屏幕截图 1

実行します。

スクリーンショット 2

確かに「Hello world」に戻りました。

より古いバージョンにロールバックすることもできます。

例えば、今回は 2 番目のバージョンにロールバックしたいとします。

屏幕截图

この「このバージョンにロールバック」ボタンを直接クリックできます。ぜひ自分で試してみてください。

スクリーンショット

以上が、本日お伝えしたい内容です。

屏幕截图

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、LuaJITGDBSystemTapLLVM、Perl など、複数のオープンソースプロジェクトに累計 100 万行以上のコードを寄与し、60 以上のオープンソースソフトウェアライブラリを執筆しております。

翻訳

英文版の原文と日本語訳版(本文)をご用意しております。読者の皆様による他の言語への翻訳版も歓迎いたします。全文翻訳で省略がなければ、採用を検討させていただきます。心より感謝申し上げます!