Upgrade to Pro — share decks privately, control downloads, hide ads and more …

宣言的かつ安全に管理するElasticsearch/Declarative managemen...

宣言的かつ安全に管理するElasticsearch/Declarative management for Elasticsearch

第49回Elasticsearch勉強会での発表資料です。
https://www.meetup.com/tokyo-elastic-fantastics/events/287299123/

Kazuma Arimura

August 31, 2022
Tweet

More Decks by Kazuma Arimura

Other Decks in Technology

Transcript

  1. 2022 前提: PostgreSQLで考える構成管理 一般的なデータベースの代表例として、PostgreSQLの管理についてまずは考えてみる • 構成管理 ◦ バージョン、使用するインスタンス、セキュリティ関連の設定共にTerraformでサポートされている ◦ RDS(AWS):

    Terraform - AWS Provider ◦ Cloud SQL(GCP): Terraform - Google Cloud Platform Provider • テーブル定義 ◦ sqldefやFlywayなどで別途ファイルに定義/管理 → 基本的にデプロイ時のパイプライン内で完結
  2. 2022 Elasticsearchの構成管理を考えてみる 本題、Elasticsearchの構成管理ついて考えてみる • 構成管理 ◦ Opensearch(AWS): Terraform - AWS

    Provider ◦ Elasticsearch Service(Elastic Cloud): Terraform - Elastic Cloud Provider ▪ 2020/12にβ版が、2021/03にGA版リリースされている ▪ ecctlが少し早い2019/12にβ版をリリースしているので、その選択肢を取っているところもあるかも? • インデックス定義等その他の管理 ◦ ????
  3. 2022 Terraform - Elastic Cloud Provider Elastic公式のTerraform Provider Deploymentの他、プラグインやカスタム辞書などの管理や トラフィックフィルタも宣言的に管理可能

    Pros • 宣言的にクラスタの構成管理が可能 ◦ コードレビューができる • ecctlと比較し、宣言が完結で管理も簡単 ◦ ecctlではDeployment IDの別途管理が必要 ⇔ tfstate内に保存される為自前の管理が不要 Cons • UI上でサポートされている一部のコンフィグに 未対応
  4. 2022 Elasticsearchの構成管理を考えてみる • 構成管理 ◦ Opensearch(AWS): Terraform - AWS Provider

    ◦ Elasticsearch Service(Elastic Cloud): Terraform - Elastic Cloud Provider • インデックス定義等その他の管理 ◦ Elasticsearch ~7.x: phillbaker/terraform-provider-elasticsearch ◦ Elasticsearch 8.x~: Terraform Provider Elastic Stack
  5. 2022 phillbaker/terraform-provider-elasticsearch 有志開発のTerraform Provider 初期リリースが2017年と歴史が長く、またOpenSearchにも対応 Pros • 開発が活発かつ、ユーザが多い ◦ 公式:

    6k, phillbaker: 60k (ダウンロード数/週) • Mapping/Settings/Analysis周りの設定がJSONで 定義可能なため、素のJSONファイルからも移行が容易 • SecurityやILM, Snapshot lifecycle, Userなどにも対応 Cons • Elasticsearch v8以降に関しては、 後述の公式Terraform Providerへの移行を推奨(Issue)
  6. 2022 Terraform Provider Elastic Stack Elastic社が中心に開発中の、公式Terraform Provider リリースが2021/12と比較的歴史が浅く、まだまだ発展途上 Pros •

    前述のProviderでサポートされている設定に加えて、 Ingest Pipelineの定義も可能 Cons • JSONで定義可能な設定が少なく、定義が複雑 ◦ settingsに関しては、ネストも非対応 ◦ analyzer等多くの設定を必要とする検索用途で は、現段階での移行は現実的ではなさそう
  7. 2022 Terraform Provider Elastic Stack Elastic社が中心に開発中の、公式Terraform Provider リリースが2021/12と比較的歴史が浅く、まだまだ発展途上 Pros •

    前述のProviderでサポートされている設定に加えて、 Ingest Pipelineの定義も可能 Cons • JSONで定義可能な設定が少なく、定義が複雑 ◦ settingsに関しては、ネストも非対応 ◦ analyzer等多くの設定を必要とする検索用途で は、現段階での移行は現実的ではなさそう
  8. 2022 Elasticsearchの構成管理を考えてみる • 構成管理 ◦ Opensearch(AWS): Terraform - AWS Provider

    ◦ Elasticsearch Service(Elastic Cloud): Terraform - Elastic Cloud Provider • インデックス定義等その他の管理 ◦ Elasticsearch ~7.x: phillbaker/terraform-provider-elasticsearch ◦ Elasticsearch 8.x~: Terraform Provider Elastic Stack
  9. 2022 Elasticsearchの構成管理を考えてみる • 構成管理 ◦ Opensearch(AWS): Terraform - AWS Provider

    ◦ Elasticsearch Service(Elastic Cloud): Terraform - Elastic Cloud Provider • インデックス定義等その他の管理 ◦ Elasticsearch ~7.x: phillbaker/terraform-provider-elasticsearch ◦ Elasticsearch 8.x~: Terraform Provider Elastic Stack ◦ 共通する課題としてインデックス定義のバリデーションができない
  10. 2022 Elasticsearchの構成管理を考えてみる • 構成管理 ◦ Opensearch(AWS): Terraform - AWS Provider

    ◦ Elasticsearch Service(Elastic Cloud): Terraform - Elastic Cloud Provider • インデックス定義等その他の管理 ◦ Elasticsearch ~7.x: phillbaker/terraform-provider-elasticsearch ◦ Elasticsearch 8.x~: Terraform Provider Elastic Stack ◦ CI上でのバリデーション: Elasticsearch Github Action
  11. 2022 Elasticsearch Github Action Elasticsearch Github Action Elasticから提供されている、Github Actions上にElasticsearchを構築するアクション。 プラグインの導入/任意のセキュリティの設定も可能。

    → 他CIツールを利用している場合でも、CIプロセス上でElasticsearchの仮環境を構築すれば代替可能 バリデーション方法 CI上に構築された仮のElasticsearchを利用し実際に作成を試みることで、インデックス定義のバリデーションを行う • Terraformを利用してインデックス管理をしている場合: CI上で terraform apply を実行 • JSON管理で管理している場合: curlで登録、もしくはeskeeperのような管理ツールを導入/CI上で実行
  12. 2022 Elasticsearchの構成管理を考えてみる • 構成管理 ◦ Opensearch(AWS): Terraform - AWS Provider

    ◦ Elasticsearch Service(Elastic Cloud): Terraform - Elastic Cloud Provider • インデックス定義等その他の管理 ◦ Elasticsearch ~7.x: phillbaker/terraform-provider-elasticsearch ◦ Elasticsearch 8.x~: Terraform Provider Elastic Stack ◦ CI上でのバリデーション: Elasticsearch Github Action
  13. 2022 Elasticsearchの構成管理を考えてみる • 構成管理 ◦ Opensearch(AWS): Terraform - AWS Provider

    ◦ Elasticsearch Service(Elastic Cloud): Terraform - Elastic Cloud Provider • インデックス定義等その他の管理 ◦ Elasticsearch ~7.x: phillbaker/terraform-provider-elasticsearch ◦ Elasticsearch 8.x~: Terraform Provider Elastic Stack ◦ CI上でのバリデーション: Elasticsearch Github Action → かなりな範囲をElastic公式ツール、もしくはクラウドプロバイダから提供されるツールでカバー可能 = 安定運用💪
  14. 2022 参考文献/リンク • elastic/terraform-provider-elasticstack: Terraform provider for Elastic Stack •

    phillbaker/terraform-provider-elasticsearch: An elasticsearch provider for terraform • Elasticsearchのバージョンアップと検索基盤の改善 - ZOZO TECH BLOG • po3rin/eskeeper: eskeeper synchronizes index and alias with configuration files while ensuring idempotency. • elastic/elastic-github-actions: This action spins up an Elasticsearch instance that can be accessed and used ...