HashiCorpは、Consul 1.15をリリースした。このリリースでは、Envoyとのやり取りを改善し、サービスメッシュプラットフォーム内の問題をトラブルシューティングするための新機能が追加された。さらにEnvoyアクセスログの改善やConsul Envoy拡張の追加が行われている。トラブルシューティングの体験を向上させるために、新たなサービス間トラブルシューティングツールも追加された。
ConsulはビルトインのL4プロキシであるConnectのサポートと、EnvoyのEnvoyのサポートの両方を提供している。このプロキシはアプリケーションがサービスメッシュ内の他のサービスに接続するのを許可するためのものだ。以前のバージョンではescape-hatch overridesを使用して、EnvoyリソースをConsulと互換性を保つために既存のEnvoy設定を書き換える必要があった。これはConsulがEnvoyリソースにどのように名前をつけるかを理解する必要があったため難易度が高かった。
今回のリリースでは、Consulに新たな拡張システムが導入され、ユーザーがConsulのバイナリを修正することなく、Consulが生成するEnvoyリソースを変更できるようになった。拡張システムではEnvoyのリスナー、ルート、クラスタ、エンドポイントを追加、削除、または変更できる。リリース時点ではLuaおよびAWS Lambdaのためのエクステンションがサポートされている。
Envoy拡張はEnvoyExtensions
フィールドを使用して設定できる。これは、proxy-defaults
とservice-defaults
の設定エントリの両方で定義できる。ただしservice-defaults
でEnvoyExtensions
を有効にすることが推奨されている。
Consulではプロキシへの着信トラフィックパターン解析にEnvoyのアクセスログを用いる。以前のバージョンではアクセスログを有効にするために、escape hatchを使用してEnvoyのブートストラップ設定を調整する必要があった。
Consul 1.15では、ログはコンフィグエントリとCRDを介して一元管理できるようになった。これにより、サービスメッシュ内のすべてのプロキシのアクセスログの有効化と無効化が容易になる。ログは異なるリクエストプロパティを出力するように設定でき、標準出力パイプまたはファイルに出力できる。例えば、proxy-defaults設定エントリ内のログを有効にするには、以下のように実装可能だ。
Kind = "proxy-defaults"
Name = "global"
AccessLogs {
Enabled = true
Type = "stdout"
}
また、今回のリリースでは新しいビルトインツールとしてサービス間トラブルシューティングが導入された。このツールはVMとKubernetesの両方でアップストリームとダウンストリームのプロキシのEnvoy設定を検証する。実行時にツールは以下を含むいくつかのチェックを行い、問題を検出するのに役立つ。
- アップストリームサービスの存在を確認する
- 片方または両方のホストのヘルスチェック
- フィルタがアップストリームサービスに影響を与えているかどうかを確認する
- 証明書認証局またはサービスのmTLS証明書の期限切れを確認する
例えば、Kubernetes上のサービス間のトラブルシューティングでは、次のようにアップストリームIPアドレスを指定して通信を検証する。
consul-k8s troubleshoot proxy -pod frontend-767ccfc8f9-6f6gx -upstream-ip 10.4.6.160
バージョン1.14では、Consul Dataplaneが導入され、Kubernetesを使用する際にConsulクライアントエージェントをデプロイする必要がなくなった。ただし、これによりConsulクライアントが提供するレートリミッターのサポートが削除された。
バージョン1.15ではふたたびレートリミッターのサポートを追加しており、Consulサーバーに対する読み取りおよび書き込み操作のグローバル制限と、制限に達した際に適用するモード制御が追加されている。モードは"強制"、"許容"、"無効"のいずれかに設定でき、"強制"モードの場合、レートリミッターは設定されたレートを超えるサーバーへのリクエストを拒否する。"許容"モードでは、リクエストを許可し続けるが、トラフィックパターンを確認するためのメトリクスとログが生成される。このモードは設定作業やトラブルシューティング時の使用を目的としている。"無効"モードに設定するとレートリミッターは解除される。
Consul 1.15は現在一般に利用可能である。リリースに関する詳細情報は、HashiCorpブログまたはConsulドキュメントで公開されている。