UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Docker】localhost:9200でアクセスできるESにdocker上のKibanaからアクセスしたい(その1)

GCE上にたてたElasticsearchに対してIAPを使ってアクセスできるようにしている

具体的には下のコマンドをうつとlocalhost:9200でアクセスできる

gcloud compute start-iap-tunnel [elasticsearchインスタンス名] 9200 --local-host-port localhost:9200 --zone asia-northeast1-b

これに対してローカルのDocker上のKibanaからアクセスしたい

Docker上のKibanaは docker-comose で起動する

ただ、結論としてDocker で起動したコンテナ内から localhost と指定するとコンテナ内を指してしまうのでKibanaからESに接続することができなかった

解決方法:自IPアドレスを使う

これしか思いつかなかった

環境変数LOCAL_HOST_IPに自IPアドレスを設定する

export LOCAL_HOST_IP=`ifconfig en0 | grep inet | grep -v inet6 | sed -E "s/inet ([0-9]{1,3}.[0-9]{1,3}.[0-9].{1,3}.[0-9]{1,3}) .*$/\1/" | tr -d "\t"`

IAPの設定も自IPアドレスにする

gcloud compute start-iap-tunnel [elasticsearchインスタンス名] 9200 --local-host-port $LOCAL_HOST_IP:9200 --zone asia-northeast1-b

docker-compose.yml

version: '3'
services:
  kibana:
    image: "docker.elastic.co/kibana/kibana:6.5.4"
    ports:
      - "5601:5601"
    environment:
      ELASTICSEARCH_URL: "http://$LOCAL_HOST_IP:9200"

これでとりあえずKibanaからESにアクセスできたけど、アプリ側ではlocalhostと設定しているのでそこを自IPアドレスに変更するのかはちょっと悩む

追記

解決策が見つかったので、(その2)に記載する

uga-box.hatenablog.com