BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース HashiCorpがConsulを拡張、トポロジマップを追加、Kubernetes統合を改善

HashiCorpがConsulを拡張、トポロジマップを追加、Kubernetes統合を改善

原文(投稿日:2020/11/08)へのリンク

HashiCorpは、同社のサービスメッシュプラットフォームであるConsul 1.9のベータリリースを発表し、新たな機能を追加した。今回のリリースには、レイヤ7コンストラクトをサポートするためのインテンションモデルの拡張、コンフィギュレーション検証を目的とした新たなビジュアライゼーション、Kubernetes用のカスタムリソースが含まれている。

アプリケーション対応のインテンションを導入したことにより、レイヤ7インタラクションをサポートするポリシの構築が可能になった。これには、HTTPリクエストヘッダとURLパスに基づいた、サービス通信の許可または拒否のサポートが含まれている。従来のバージョンでは、インテンションのサポート対象はL4インタラクションに限られていたが、ひとつのインテンション宣言中にL4とL7を混在できるようになった。

Kind = "service-intentions"
Name = "api"
Sources = [
  {
    Name   = "hackathon-project"
    Action = "deny"
  },
  {
    Name   = "web"
    Action = "allow"
  },
  {
    Name = "nightly-reconciler"
    Permissions = [
      {
        Action = "allow"
        HTTP {
          PathExact = "/v1/reconcile-data"
          Methods   = ["POST"]
        }
      }
    ]
  }
]

上の例では、"api"共通デスティネーション用のインテンションが定義されている。最初のインテンションは、ソース"hackerthon-project"からの接続を拒否し、ソース"web"からのトラフィック接続を許可する。ソース"nightly-reconciler"からは、POSTメソッドを経由した特定パスからのみのHTTPトラフィックが許可される。

従来、Consulの設定とコンフィギュレーションのデバッグやトラブルシューティングにはエラーログ、コマンド行入力、外部システムへのテレメトリ送信が必要だった。トラブルシューティングを容易にするための、サービスメッシュトポロジを簡単に視覚化する機能が、Consulには不足していたのだ。今回のリリースではUIに新たな"topology"タブが追加され、リクエストやエラー率、タイミングなど、サービスメッシュのメトリクスを含んだトポロジダイアグラムが利用できるようになった。詳細な説明とベストプラクティスが"maintenance and monitoring operations guides"に紹介されている。

トポロジマップ内では、メッシュ内のサービス間で交わされるインタラクションを見ることができる。明示的な拒否は、2つのサービス間に描かれた赤い線とxとで表される。トポロジマップ上で拒否から許可に変更することも可能だ。

Consul UIに新設された"toology"タブに表示される接続拒否

Consul UIに新設された"toology"タブに表示される接続拒否(提供: Hashicorp)

 

Kubernetesファーストのエクスペリエンス改善として、今回のリリースではCustom Resources Definitionsのサポートが導入されており、Kubernetesスタイルのオブジェクトを通じたConsulの設定がスムーズになった。サービスのコンフィギュレーションをCRD経由で管理することも可能だ。リリース時点では、以下のコンフィギュレーションエントリがCRDとして使用できる。

  • proxy-defaults — プロキシ設定をコントロールする
  • service-defaults — 指定されたサービスの全インスタンスに対する既定値を設定する
  • service-resolver — 指定されたConnect上流ディスカバリ要求を持つサービスインスタンスにマッチする
  • service-router — レイヤ7トラフィックの送信先をHTTPルートに基づいて設定する
  • service-splitter — 単一のHTTPルートをパーセンテージに基づいて分割する方法を定義する
  • service-intentions — 指定したサービスへのサービス接続に関する制限を定義する

Kubernetesインテグレーションのさらなる改善として、Readiness ProbeでKubernetesの健全性を追跡できるようになった。これにより、Consulのヘルスチェックに加えて、Pod上でのネイティブなKubernetesヘルスチェックに基づいて、トラフィックが向かうべき方向を決定することが可能になる。

ストリーミングの導入により、Consulの大規模展開時のCPUやネットワーク帯域の使用量が改善された。この変更はおもに、ブロックを伴うクエリに対する更新通知の配信方法に関する、アーキテクチャ上の改善によって実現されている。ストリーミングはサービス状態に関するHTTPエンドポイントで使用可能で、コンフィギュレーションフラグとキャッシュされたURLパラメータによって有効化される。将来的には、さらに多くのエンドポイントにストリーミングが加えられる予定だ。

Consul 1.9はベータ版が現在利用可能である。ベータテスト中の変更に関しては互換性が保障されないので、破棄可能なクラスタにインストールを行うよう、Hashicorpではアドバイスしている。今回のリリースに関する詳細は、changelogに記載されている。

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT