Hashicorpは、同社のサービスメッシュアプリケーション兼キーバリューストアである、Consulのバージョン1.5.0をリリースした。今回のリリースは、新たなロードマップ上てリリースされた最初のバージョンであり、EnvoyによるL7オブザーバビリティとロードバランシングのサポート、集中型コンフィギュレーション、信頼済サードパーティアプリケーションのACL認証サポートを含んでいる。
今回のリリースからはConsul Connectが、Envoy統合経由でL7オブザーバビリティとロードバランシングをサポートする。Connectは1.4リリースから追加されたもので、TLSの自動暗号化とIDベース認証を活用して、安全なサービス間通信を提供する。Connectを使用することで、他のサービスメッシュと同様に、サービスを出入りするすべてのトラフィックがサイドカープロキシを通過することで、Connectをコントロールプレーンとして機能させることが可能になる。これによってConnectは、ワークロードとネットワークの変化に対応することができる。プロキシはデータプレーンを形成し、時系列データベースやその他の形式のアプリケーション監視ソフトウェアに送信可能なアプリケーションメトリクスの、一貫性を備えたソースとなる。Consul Connectはさらに、分散トレースの設定も可能にする。メトリクス設定と分散トレースの両方が、レイヤ4と、レイヤ7のHTTPおよびgRPCを対象に設定できるようになった。
さらにバージョン1.5には、有効期限、役割、サービス識別マッピングなど、ACLの機能拡張も含まれる。これらの改善によって、サードパーティのIDを使用して有効なACLトークンを取得できるようになった。Consulチームによると、"セットアップ時にユーザが最も難しく感じるのは、サービスカタログに自身を登録するアクセス権を所持するサービスに対して、有効なACLトークンを作成し、配布する方法"である。ACL認証方式を導入することによって、アプリケーションは、信頼できるサードパーティを使用して、適切な許可を持つACLトークンを自動的に取得することが可能になる。今回のリリースには、Kubernetesで実行されているサービスからKubernetesサービスアカウントを利用する認証方法が、初めて含まれた。
コンフィギュレーションとアプリケーションのデプロイとの結合への対処も考えられている。既存のモデルでは、コンフィギュレーションはローカルなConsulエージェントによって管理されるため、変更時にはアプリケーションの再デプロイが必要だった。今回のリリースから、Consulサーバのコンフィギュレーション変更を待機するリスナを使うことで、コンフィギュレーションの集中管理が可能になった。コンフィギュレーションが更新されると、その設定内容を参照するすべてのプロキシは、再デプロイすることなく、自動的にコンフィギュレーションの再設定を行う。
例えば、メトリクスに対してStatsDコレクタを有効にするための設定を追加するには、以下の定義を追加する。
kind = "proxy-defaults"
name = "global"
config {
envoy_dogstatsd_url = "udp://127.0.0.1:9125"
}
これがpolicy.hcl
というファイルにあるとすれば、"consul config write proxy.hcl
"というコマンドを使用してConsulサーバに書き込むことができる。この"write"コマンドでは、他の変更が上書きされないようにする"-cas
"(compare-and-swap)オプションもサポートされている。
"kind"の値としては、"proxy-defaults
"と"service-defaults
"の2つがサポートされている。"proxy-defaults"は、Connectプロキシのコンフィギュレーションとして、すべてのサービスに対してグローバルデフォルトを設定する。現時点でサポートされているグローバルエントリはひとつだけだ。"service-defaults"は、プロトコルなど、サービスのデフォルトのグローバル値をコントロールする。
Kubernetes統合も、上述の新機能をサポートするためにアップデートされた。その中には、L7オブザーバビリティと、新たなACL認証方法が含まれている。これらのアップデートは、Consul 1.5.0のリリース後すぐにリリースされる予定だ。この分野での変更点の全リストについては、 consul-k8sとconsul-helmのため変更ログを確認してほしい。
今回のリリースには、ConsulのHTTP APIの多数に対するフィルタリングサポートも含まれている。これにより、フィルタパラメータを使用して、API呼び出しにフィルタ式を渡すためのクエリパタメータを追加することが可能になる。
curl -G <path> --data-urlencode 'filter=<filter expression>'
このように、フィルタ式はプレーンテキスト形式で書かれていて、ブール論理と一致演算子の両方、括弧がサポートされている。
Consulのロードマップによると、 Consulの将来的なリリースには、HTTPパスベースのルーティングとトラフィックシフト機能が含まれるようになる。HTTPパスベースのルーティングでは、PathまたはHTTPヘッダーに基づいて、トラフィックをさまざまなアップストリームサービスにルーティングすることが可能だ。これは現行のレイヤ4ネットワーキングサポートを、レイヤ7ルーティングによって拡張することになる。トラフィックシフト機能を使用すれば、特定のサービスインスタンスやまったく別のサービスに、トラフィックの特定の割合をルーティングすることができる。これにより、サービスの一部のみを更新し、トラフィックの一部を更新されたインスタンスに送信する方法で、ソフトウェアの新リリースのカナリアテストが可能になる。
今回のリリースに含まれるものの詳細、その他の改善点については、HashiCorpブログの公式発表を見て頂きたい。また、CHANGELOGには、リリースの変更点の完全なリストが掲載されている。Consulは、HashiCorpサイトから無料でダウンロードできる。