Elastic Cloudのkibanaを独自ドメインで公開したい

お世話になります。

Elastic CloudのKibanaのURIを独自ドメインで公開したいのですが、
どのような方法がありますでしょうか。
ご教示いただけますと幸いです。

Elastic Cloudのことであればサポートに問い合わせてみて、という流れを見た記憶がありますが、
参考までに以下を貼ってみます。

https://twitter.com/elastic/status/864730225208250368

DNSの設定だけでできそうかと思いきや、SSLの証明書については、以下のように制限とあります。

https://www.elastic.co/guide/en/cloud/current/ec-faq.html#faq-ssl

We don’t support custom SSL certificates, which means that a custom CNAME for an Elasticsearch Service endpoint such as mycluster.mycompanyname.com also is not supported.

なので、こちらの投稿での回答にあるように、kibanaへのアクセスを中継するリバースプロキシのようなものを自社ドメインで公開するのが1つの方法かと思います。

You can also host your own server as a proxy to forward HTTP or HTTPS requests to your cluster hosted on Elastic Cloud.

早速のご回答ありがとうございます。

kibanaへのアクセスを中継するリバースプロキシを立ててみたのですが、
リバースプロキシを経由してアクセスすると、Webブラウザで以下のメッセージが表示されました。

{"ok":false,"message":"Unknown deployment."}

これはどういった時に出るメッセージでしょうか。

このdiscussでも同様のエラーが表示されている旨の投稿がいくつかありますが、
私の手元の環境で試したときは、遭遇しませんでした。

Dockerのnginxで確認していますが、以下のような設定でElastic CloudのKibanaの画面を表示することができています。


server{
    listen 443 ssl;
    server_name     localhost;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
    ssl_prefer_server_ciphers on;
    ssl_certificate /etc/nginx/server.crt;  # ←これは自分で用意した
    ssl_certificate_key /etc/nginx/server.key;  # ←これは自分で用意した

    location / {
        # Elastic CloudのKibanaのエンドポイントを指定する
        proxy_pass https://****************.us-east-1.aws.found.io:9243;
    }
}

なお、httpのnginxで proxy_passがhttpsとなっていると、ログインページはhttpsにしてください、というkibanaの画面でエラーとなったため、上記のようにhttpsで確認しています。
(いわゆるオレオレ証明書で確認しております。。。)

この設定で https://localhost/ としますと、kibanaのログイン画面が表示されました。

Unknown deploymentに遭遇している他の人の例

こちらの設定ですと、リダイレクトになってしまうため独自ドメインで公開したいという用途にはあわないかと思います。

ご参考になれば幸いです。

いつもご丁寧な回答ありがとうございます。

当方はEC2上のnginxで確認しています。

なお、httpのnginxで proxy_passがhttpsとなっていると、ログインページはhttpsにしてください、というkibanaの画面でエラーとなったため、上記のようにhttpsで確認しています。
(いわゆるオレオレ証明書で確認しております。。。)

上記の件は対応しておらず、httpでアクセスしていたので、とりあえず同様に対応してみました。
httpsでアクセスできるようにはなったのですが、やはり事象としては変わらずです。
unknown%20deployment

色々と試してみますが、他に何かヒントなどありましたら、引き続きご教示いただけますと幸いです。

nginxの設定ファイルはどのようになってますでしょうか?

以下が私が確認したときの設定ファイルですが、
コメントアウトされている部分を有効にすると、Unknown deploymentの現象となりました。


server{
    listen 443 ssl;
    server_name     localhost;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
    ssl_prefer_server_ciphers on;
    ssl_certificate /etc/nginx/server.crt; # サーバー証明書のパス
    ssl_certificate_key /etc/nginx/server.key; # 秘密鍵のパス

    location / {

        proxy_pass https://**********************.us-east-1.aws.found.io:9243;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        #proxy_set_header Host $host;
    }
}

#proxy_set_header Host $host;

proxy_set_headerでHostを指定している部分です。
もしこのような指定をしているのでしたら、コメントアウトしてみて確認してはどうでしょうか?

あと、EC2を立てられているのでしたら、そこにKibanaを導入し独自ドメインでアクセスできるようにしておいて、
KibanaはElastic CloudのElasticsearchを参照するようにするという方法も検討できそうですね。

ご指摘の通り、proxy_set_header Hostの設定をコメントアウトしたら、解決いたしました。
色々とご教示ありがとうございました。

Hostヘッダがリバースプロキシサーバー宛に書き換えられてしまっていたため、
という理解でいいんですかね。

あと、EC2を立てられているのでしたら、そこにKibanaを導入し独自ドメインでアクセスできるようにしておいて、
KibanaはElastic CloudのElasticsearchを参照するようにするという方法も検討できそうですね。

はい、こちらについても併せてメリデメ考えて実装したいと思います。

何はともあれ、無事にやりたいことができて良かったです。
丁寧なご指導、ありがとうございました。

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.