lndmonをremoteLNDに接続する
lndのノード監視ツールであるlndmonをローカルからremoteのLNDに接続したのでメモ。
まず、macaroonsとtlsを用意する。 macaroonはreadonly.macaroonsをコピーしてくる。
kubectl cp lnd-btcd-0:root/.lnd/data/chain/bitcoin/simnet/readonly.macaroon ./readonly.macaroon -c lnd
続いて、tlsをコピーする。前提として、このtlsは、gkeでservice立ち上げ後に再作成したものである必要がある。 再作成は、下記のshellの実行で取得できる。podのdeleteをしているが、statefulsetを前提としているので、勝手に再起動される。
#!/bin/bash
IP=$(kubectl get services | grep lnd-btcd-s | awk '{print $4}')
kubectl exec lnd-btcd-0 -c lnd -- rm /root/.lnd/tls.cert
kubectl exec lnd-btcd-0 -c lnd -- rm /root/.lnd/tls.key
# kubectl exec lnd-pod -- cat server.json > tmp.json
cat server.json >> tmp.json
sed -i "bak" "s/address/$IP/g" tmp.json
kubectl cp tmp.json lnd-btcd-0:/server.new.json -c lnd
rm tmp.json
kubectl exec lnd-btcd-0 -c lnd -- sh -c 'cfssl gencert -initca server.new.json | cfssljson -bare ca -'
kubectl exec lnd-btcd-0 -c lnd -- sh -c 'cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=config.json server.new.json | cfssljson -bare server'
kubectl exec lnd-btcd-0 -c lnd -- sh -c 'mv /server.pem /root/.lnd/tls.cert'
kubectl exec lnd-btcd-0 -c lnd -- sh -c 'mv /server-key.pem /root/.lnd/tls.key'
kubectl delete pod lnd-btcd-0
.envファイルとdocker-composeを編集する必要があった。 まず、docker-composeは下記のように、--lnd.macaroondir=$MACAROONPATH --lnd.tlspath=$TLSCERT_PATHを固定値から環境変数に置き換える。
lndmon:
build: .
ports:
- "9092:9092"
volumes:
- ${TLS_CERT_PATH?}:/root/.lnd/tls.cert
- ${MACAROON_PATH?}:/root/simnet/
command: --prometheus.listenaddr=0.0.0.0:9092 --lnd.network=$LND_NETWORK --lnd.host=$LND_HOST --lnd.macaroondir=$MACAROON_PATH --lnd.tlspath=$TLS_CERT_PATH
.envは言われた通りでよい。
# lnd settings
# LND_HOST is the IP of the default docker interface.
LND_HOST=x.x.x.x:10009
LND_NETWORK=simnet
# Fill in these fields as directed. Note that `MACAROON_PATH` must be the path
# to your readonly macaroon.
TLS_CERT_PATH=./root/.lnd/tls.cert
MACAROON_PATH=./root/simnet/
そして、docker-compose upをやる。
docker-compose up
一定時間がたつと、0.0.0.0:3000からgrafanaに入れる。初期passはadmin/admin。 いい感じだ。