長年にわたり、コントロール プレーンのプログラミング可能性は API によって支配されてきました。 F5 からは iControl を意味します。 最初は SOAP インターフェイスとして、その後 REST として、iControl は NetOps にその名前が示すとおり、BIG-IP 構成のあらゆる側面を制御できるようになりました。
その方法はなくなることはない。 API は、多くの組織がアプリケーション サービスの展開を管理するために必要とするきめ細かい制御を提供します。 これらは、パートナーや新しい環境との統合作業にとっても重要です。
これは、API が BIG-IP の操作を自動化する「唯一の正しい方法」であることを意味するものではありません。 実際、アプリケーションとアプリケーション サービスの展開に対してより継続的なアプローチを採用する動きの中で、代替方法が生まれました。 この方法は宣言型であり、構成の最終状態はオペレーターによって記述され、実装の責任はターゲット システムに委ねられます。
宣言型の構成方法を採用する理由は多数ありますが、その中でも最も重要なのは、コードとしてのインフラストラクチャや継続的デプロイメントなどの DevOps アプローチとの整合性です。 これが F5 AS3 の目標です。API への依存を減らし、完全に自動化された継続的なデプロイメント パイプラインを実装する能力を高める宣言型インターフェイスを提供することです。 用語が示すように、実際にはコードからインフラストラクチャを構築しているわけではないので、これを「構成としてコード」と呼ぶ方が適切です。
AS3 は、JSON キーと値のペアを使用して BIG-IP 構成を記述する宣言型形式です。 AS3 は、仮想 IP から仮想サーバー、必要なメンバー、プール、ノードまで、構成を記述するためのシンプルで読みやすい形式を提供します。 設定が完了したら、それを BIG-IP に送信するだけで、 AS3 拡張機能がそれを受け入れ、完全に機能する展開済みの BIG-IP 設定に変換するために必要なコマンドを実行します。
AS3宣言としてのbigip.confの VIP およびプールの説明のサンプル翻訳:
ビッグIP.conf |
AS3宣言 |
ltm 仮想 /Common/serviceMain { 宛先 /Common/10.0.1.10:80 ip-protocol tcp マスク 255.255.255.255 プール /Common/web_pool ソース 0.0.0.0/0 変換アドレス有効 変換ポート有効 } ltm プール /Common/web_pool { メンバー { /Common/192.0.1.10:80 { アドレス 192.0.1.10 } /Common/192.0.1.11:80 { アドレス 192.0.1.11 } } モニター /Common/http } |
"サービスメイン": { "クラス": "Service_HTTP", "virtualAddresses": [ "10.0.1.10" ], "pool": "web_pool" } "web_pool": { "class": "プール", "モニター": [ "http" ], "メンバー": [ { "サービスポート": 80, "serverAddresses": [ "192.0.1.10", "192.0.1.11" ] } ] } |
このように BIG-IP 構成を記述できるため、運用担当者はアプリケーション サービスの展開に構成をコードとして採用できます。 リポジトリを利用することで、デプロイメント用の AS3 構成を自動的に取得できます。 自動化の用途に加えて、リポジトリは、構成のバージョン管理と管理を行うためのより最新かつ統合しやすい方法を提供し、構成に問題が発生した場合に迅速なロールバックを可能にします。
たとえば、GitHub の Webhook 機能を使用すると、新しいまたは更新された AS3 構成のコミット時に自動的にデプロイメントを開始できます。 これを行うには、新しいサービス定義 (AS3) がコミットされたという通知を待機するWebhook サーバーが必要です。 これらの通知は、イベントに関する情報を含む JSON オブジェクトであるフックの形式で送信されます。 受信すると、Webhook サーバーはフックを解析し、参照されている AS3 を GitHub から取得して、構成プロセスを開始します。
AS3 の最新バージョンは GitHub からダウンロードできます。 AS3 拡張機能の導入に関するドキュメントと AS3 構成の例は、こちらから入手できます。
Webhook プロトタイプは、CTO オフィスの開発者アドボケートであるNathan Pearceによって開発されました。 BIG-IP を CI/CD およびテレメトリ パイプラインと統合するその他のプロトタイプと例については、GitHub でNathanとF5 Networks をフォローしてください。