BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース HashiCorp、レイヤ7オブザーバビリティと集中型コンフィギュレーションを備えたConsul 1.5.0をリリース

HashiCorp、レイヤ7オブザーバビリティと集中型コンフィギュレーションを備えたConsul 1.5.0をリリース

原文(投稿日:2019/05/24)へのリンク

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サーバのコンフィギュレーション変更を待機するリスナを使うことで、コンフィギュレーションの集中管理が可能になった。コンフィギュレーションが更新されると、その設定内容を参照するすべてのプロキシは、再デプロイすることなく、自動的にコンフィギュレーションの再設定を行う。

一元化されたConsulサーバーから構成を更新することを示す図

一元化されたConsulサーバからコンフィギュレーションを適用するためのワークフロー(HashiCorpによる)

 

例えば、メトリクスに対して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-k8sconsul-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サイトから無料でダウンロードできる。

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT