PortainerのEgdeAgent TunnelをTraefikでリバースプロキシする

Portainer ServerをTraefik Reverse Proxy経由で公開しているとき、Egde AgentからServerに接続する方法

Traefik

設定の一例

Portainer Server

WebUIには https://portainer.example.com/ でアクセス

EdgeAgentは https://edge.portainer.example.com/ でアクセス

Egde Agentを追加する

通常通りEdgeAgentに接続するコマンドを発行する

Setting -> Environments -> Add environment -> Docker Standalone -> Edge Agent を開く

Portainer Serverには https://portainer.example.com を設定する

Egde Agent Setting Page

Createを押すとEdgeAgentを起動するdockerコマンドが発行される

EDGE_KEYを修正する

EDGE_KEYにはPortainer Serverへの接続情報がBase64形式で記載されている

形式はこのようになっている(参照)

portainer_instance_url|tunnel_server_addr|tunnel_server_fingerprint|endpoint_ID

上記のEDGE_KEYをBase64デコードすると以下のようになる

https://portainer.example.com|portainer.example.com:8000|23:f5:6a:67:0c:67:38:54:25:49:a8:3b:04:3b:fd:83|7

ここで、tunnel_server_addrをReverseProxyのアドレスに変更する

httpsで設定するとwssで接続される

https://portainer.example.com|https://edge.portainer.example.com|23:f5:6a:67:0c:67:38:54:25:49:a8:3b:04:3b:fd:83|7

変更した設定情報をbase64でエンコードする

$ echo "https://portainer.example.com|https://edge.portainer.example.com|23:f5:6a:67:0c:67:38:54:25:49:a8:3b:04:3b:fd:83|7" | base64 -w 0
aHR0cHM6Ly9wb3J0YWluZXIuZXhhbXBsZS5jb218aHR0cHM6Ly9lZGdlLnBvcnRhaW5lci5leGFtcGxlLmNvbXwyMzpmNTo2YTo2NzowYzo2NzozODo1NDoyNTo0OTphODozYjowNDozYjpmZDo4M3w3Cg==

先程のコマンドのEDGE_KEYを修正する

注意:末尾の = パディングは不要なため取り除く

修正したコマンドをEdge Nodeで実行することで、EdgeAgentの接続が完了する