GCP GKE AutopilotでElasticsearchをデプロイする方法

部分的に管理されたElasticsearchセットアップ構成のために、GKEオートパイロットとECKを使用してElasticsearchクラスターをGCPにデプロイする方法を学びます。

Elasticsearchは初めてですか?Elasticsearchを使い始めるウェビナーに参加しましょう。無料のクラウドトライアルを始めるか、今すぐマシンでElasticを試すこともできます。

この記事では、Autopilotを使用してGoogle Cloud Kubernetes(GKE)にElasticsearchをデプロイする方法を学びます。

Elasticsearchでは、Elastic Cloud on Kubernetes(ECK)を使用します。これはElasticsearch Kubernetes公式オペレーターであり、すべてのElastic StackコンポーネントのKubernetes導入のオーケストレーションを簡素化します。

ElasticsearchクラスターをさまざまなGCPインフラストラクチャーにデプロイする方法の詳細は、Google Cloud ComputeGoogle Cloud Marketplaceの入門記事をご覧ください。

Elasticsearchの導入作業

GKE Autopilotとは何ですか?

Google Kubernetes Engine(GKE)Autopilotは、Googleがクラスター設定、ノード管理、セキュリティ、スケーリングを処理し、開発者がアプリケーションのデプロイに集中できる、完全に管理されたKubernetesエクスペリエンスを提供します。これにより、チームは組み込まれたベストプラクティスを使用し、コードから本番環境まで数分で移行できます。

Google CloudでECKを使用するタイミングは?

Elastic Cloud on Kubernetes(ECK)は、既存のKubernetesインフラを持つ組織が、専用ノードロール、高可用性、自動化などの高度な機能を備えたElasticsearchをデプロイするのに最適です。

Google CloudでECKを設定する方法は?

1. Google Cloud Consoleにログインします。

2. 右上Cloud Shellボタンをクリックし、コンソールにアクセスして、そこから GKEクラスターをデプロイします。あるいは、gcloud CLIを使用することもできます。

チュートリアルでは、必ずプロジェクトIDを自分のプロジェクトIDに更新してください。

3. Google Kubernetes Engine APIを有効にします。

[次へ] をクリックします。

これで、Kubernetes Engine APIを検索すると、Kubernetes Engine APIが有効になっていることが表示されます。

4. Cloud ShellでAutopilotクラスターを作成します。これをautopilot-cluster-1という名前にし、autopilot-testをプロジェクトのIDに置き換えます。

5. 準備ができるまで待ちます。作成には10分ほどかかります。

クラスターを正しく設定すると確認メッセージが表示されます。

6. kubectlコマンドラインアクセスを設定します。

次のように表示されます。

autopilot-cluster-1用に生成されたkubeconfigエントリ。

7. Elastic Cloud on Kubernetes(ECK)オペレーターをインストールします。

8. デフォルト値で単一ノードのElasticsearchインスタンスを作成しましょう。

異なる設定のレシピを確認したい場合はこちらのリンクをご覧ください。

storageClassを指定しない場合、ECKはデフォルトで設定されたものを使用します。GKEの場合はstandard-rwoで、これはCompute Engine persistent disk CSI Driverを使用して1GBのボリュームを作成します。

デフォルトの GKE マシンのvm.max_map_count値が低すぎるため、 nmapを無効にしました。本番環境ではこれを無効にせず、 vm.max_map_countの値を増やすことが推奨されます。詳しくはこちらをご覧ください。

9. Kibanaのシングルノードクラスターもデプロイしましょう。Kibanaの場合、デバイスからKibanaにアクセスするために使用できる外部IPを提供するLoadBalancerを追加します。

注釈に注意してください。

cloud.google.com/l4-rbs: "enabled"

これは、Autopilotにパブリック向けのLoadBalancerを提供するように指示するため、非常に重要です。設定しない場合、LoadBalancerは内部になります。

10. ポッドが動作していることを確認します。

11. また、run kubectl get elasticsearchkubectl get kibanaすることで、Elasticsearchのバージョン、ノード、健全性などのより具体的な統計情報を取得することもできます。

12. サービスにアクセスします。

これにより、EXTERNAL-IPのKibanaの外部URLが表示されます。LoadBalancerの提供には数分かかる場合があります。EXTERNAL-IPの値をコピーします。

13 「elastic」ユーザーのElasticsearchパスワードを取得します。

14. ブラウザからKibana にアクセスします。

  • URL: https://<EXTERNAL_IP>:5601
  • ユーザー名:elastic
  • パスワード:28Pao50lr2GpyguX470L2uj5(前のステップから)

15. ブラウザからアクセスすると、ウェルカム画面が表示されます。

ノードの変更やサイズ変更など、Elasticsearchクラスターの仕様を変更したい場合は、新しい設定でymlマニフェストを再度適用できます。

この例では、ノードをもう1つ追加して、RAMとCPUを変更します。ご覧のとおり、 kubectl get elasticsearchには2つのノードが表示されています。

Kibanaにも同じことが当てはまります。

コンテナのCPU/RAMとNode.jsのメモリ使用量(max-old-space-size)を調整できます。

既存のボリュームクレームを縮小することはできないことに留意してください。アップデートを適用した後、オペレーターは最小限の中断時間で変更を加えます。

不要なコストを避けるために、テストが完了したらクラスターを忘れずに削除してください。

今後の見通し

KubernetesとGoogle Kubernetes Engineについて詳しく知りたい場合は、次の記事をご覧ください。

関連記事

最先端の検索体験を構築する準備はできましたか?

十分に高度な検索は 1 人の努力だけでは実現できません。Elasticsearch は、データ サイエンティスト、ML オペレーター、エンジニアなど、あなたと同じように検索に情熱を傾ける多くの人々によって支えられています。ぜひつながり、協力して、希望する結果が得られる魔法の検索エクスペリエンスを構築しましょう。

はじめましょう