概要
docker swarm は通信に tls を使うことができます
通信するポートは選択できますがデフォルトで swarm は自己証明書を内部的に生成しています
その証明書の期限がデフォルトだと 2160 時間 (90日) になっています
基本的には自動で更新してくれるので問題ないのですがログなどが出るので初期構築のときに期限を延ばしておいてもいいかもしれません
環境
- Ubuntu18.04
- docker 20.10.5
期限を短くして動作確認
最短で 1 時間にまで短縮できます
docker swarm update --cert-expiry 1h0m0s
docker swarm ca --rotate
これで期限が 1 時間になった証明書が再配布されます
試しに確認してみましょう
cat /var/lib/docker/swarm/certificates/swarm-node.crt | openssl x509 -noout -dates
notBefore=Mar 25 22:03:00 2021 GMT
notAfter=Mar 26 00:03:00 2021 GMT
JST に直すと時間は 09:03 に期限切れとなります
期限が近くなるとどうなるか
内部的に自動で証明書の更新を行うようなログが流れると思います
journalctl -xu docker.service
Mar 26 09:10:00 swarm2 dockerd[26069]: time="2021-03-26T09:10:00.000149868+09:00" level=info msg="renewing certificate" module=node/tls node.id=ojnx8crctp5vb5rjmrf8uln7b node.role=swarm-worker
証明書の期限が 09:03 でそのあとに流れた renewing のログが 09:10 になります
期限切れのあとで renewing のバッチが流れると証明書の期限が自動的に延伸されているのが確認できると思います
cat /var/lib/docker/swarm/certificates/swarm-node.crt | openssl x509 -noout -dates
notBefore=Mar 25 23:10:00 2021 GMT
notAfter=Mar 26 01:10:00 2021 GMT
問題点
これの問題点としては以下の 2 つあります
- 証明書の期限切れと同時に更新してくれるわけではない
- 証明書更新のログが流れ続けるので syslog を逼迫する可能性がある
特に大きな問題になるわけではないですが長い間蓄積すると結構な量になったりする恐れがあります
期間を延伸する
なので初期構築の段階で延伸してあげるのが良いかなと思います
docker swarm update --cert-expiry 876000h0m0s
docker swarm ca --rotate
上記だと 100 年になります
無限はできないので数を大きくしましょう
最後に
自分で SSL 証明書を設定している場合にはそれを管理すれば良いのですがそうでない場合はデフォルトだと自己証明書が作られるようです
更新などは勝手にやってくれているようなので基本面倒を見る必要はないのですが自己証明書が使われていることは認識しておいたほうが良いかもしれません
0 件のコメント:
コメントを投稿