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)に記載する