HashiCorpは、Amazon ECSサービスでConsulのバージョン0.3のリリースを発表した。このリリースには、構成オプションの追加、Terraformを使わないデプロイ、高トラフィック負荷に対するサポートが含まれている。また、AWSと提携して、Amazon ECSでのConsulの使用をサポートするAWSクラウド開発キット(CDK)をリリースした。
HashiCorp Consulは、サービスディスカバリ、安全なサービス間通信、トラフィック管理、ヘルスモニタリングを提供するマルチプラットフォームサービスメッシュである。Amazon ECSのConsul Service Meshでは、Amazon ECSでサービスメッシュを有効にするために必要なConsulクライアントとEnvoyプロキシがインストールされる。そしてAWS FargateのAmazon ECSとEC2のAmazon ECSの両方の起動タイプをサポートする。このサービスでは、サービスメッシュで実行されているタスクに関して必要に応じてACLトークンが自動プロビジョニングされる。
ECSクラスターで実行されるタスクは、mesh-task
モジュールを介して作成される。このモジュールでは、Consulのサービスを有効にするために、タスク定義にサイドカーコンテナが追加される。ここには、起動時にConsulとEnvoyの両方を構成するために実行されるmesh-init
も含まれる。consul-client
コンテナはConsulクライアントを実行する。このクライアントは、Consulサーバに接続される。また、サイドカープロキシの構成も実行する。このコンテナ(sidecar-proxy
)では、実行中のアプリケーションとの間のすべてのリクエストを処理するEnvoyhealth-sync
コンテナは、ヘルスチェックステータスをECSからConsulに同期する。
ヘルスチェックの同期は、アプリコンテナーがessential
としてマークされ、ECS healthChecks
mesh-init
コンテナーはTTLヘルスチェックを作成する。
CDKにより、ECSタスクをサービスメッシュに追加するプロセスがシンプルになる。たとえば、Dockerイメージからサービスを宣言するには、次のようにする。
const greetingDescription = new ecs_extensions.ServiceDescription();
greetingDescription.add(new ecs_extensions.Container({
cpu: 512,
memoryMiB: 1024,
trafficPort: 3000,
image: ecs.ContainerImage.fromAsset(path.resolve(__dirname, '../../../services/greeting/src/'), {file: 'Dockerfile'}),
}));
greetingDescription.add(new consul_ecs.ECSConsulMeshExtension({
...baseProps,
serviceDiscoveryName: 'greeting',
}));
const greeting = new ecs_extensions.Service(this, 'greeting', {
environment: envProps.ecsEnvironment,
serviceDescription: greetingDescription,
});
CDKを使ってConsulをAmazon ECSにデプロイすることに加えて、Terraformレジストリで使用できるTerraformモジュールのconsul-ecsがある。0.3リリースで新たに構成オプションが拡張されたことにより、Terraformを使わずに構成し、デプロイすることもシンプルになった。
このリリースでは、アクセス制御リスト(ACL)コントローラの効率も改善している。この改善により、Hashicorpは、このサービスが「一度に数千のタスクを安全に取り扱える」ことを示している。
リリースの詳細については、HashiCorpブログをご覧ください。HashiCorp Cloud Platform(HCP)とAmazon EC2へのデプロイをウォークスルーする2つの新しいチュートリアルを利用できる。Amazon ECSのConsul向けのCDKはGitHubから入手できる。