過去に、KubernetesでElasticsearchを起動しました。Elasticsearchだけでは、毎回WebAPIを介して情報を取得しなければならなく、情報も見にくいです。そこで、ElasticsearchのフロントエンドとしてKibanaを起動することにしました。ここでは、Kubernetes上でKibanaを起動してElasticsearchと連携する方法について紹介します。KibanaとはKibanaは、Elasticsearchのフロントエンドとして使うことができ、Elasticsearchを作成しているElastic社が現在作成しています。具体的なKibanaの使い方として、私の場合Elasticsearchにはログを集約しているので、Kibanaを使ってログを検索や解析したりするために使います。ストレージKibanaでは、グラフなどを作成できます。そのため、グラフのデータなどを保存しておく場所を用意する必要があります。Kubernetesでは、PersistentVolumesとPersistentVolumeClaimsを使ってデータを置くストレージを用意します。私の環境ではNFSを使っているので、NFSを使った設定の例を載せておきます。PersistentVolumesを作成するymlの例です。********PersistentVolumeClaimsを作成するymlの例です。kibana-pvNFSの設定など、状況に合わせて適切に値を書き換えてください。起動KibanaのDockerイメージは、Elastic社が配布しているものがあるのでそれを使います。今回、OSS版を使用しているため、イメージ名はossがついて、docker.elastic.co/kibana/kibana-oss:6.2.2になります。Kibanaを起動するymlファイルの例は次です。100mElasticsearchの場所は、環境変数のELASTICSEARCH_URLで設定します。値には適切なものを設定してください。SERVER_NAMEではKibanaのサーバのドメインを指定します。Kibanaを起動する上での注意として、OSS版ではない場合、起動の際にCPUリソースをたくさん使用します。OSS版を使用しない場合はresourcesのcpuの値を大きくしましょう。サービス外部からアクセスできるようにしましょう。Kubernetesで外部からアクセスできるようにするには、Servicewoを使います。Serviceを作成するymlは次です。kibanaあくまでも例なので、ClusterIPはNodePortに変更するなど適当な値で書き換えてください。さいごに私の場合、主にログ基盤としてElasticsearchを使っています。ログの検索としてはElasticsearch単体ではあまりにも不便だったので、Kibanaを使ってより良いログ基盤を目指したいと思っています。