Pro Yearly is on sale from $80 to $50! »

PortainerとDocker Swarmで遊べる環境を作った話

8a36fd550d43b523ded6b30888a65262?s=47 Yamato
August 24, 2020

PortainerとDocker Swarmで遊べる環境を作った話

8a36fd550d43b523ded6b30888a65262?s=128

Yamato

August 24, 2020
Tweet

Transcript

  1. PortainerとDocker Swarmで 遊べる環境を作った話 ゆるWeb勉強会@札幌 OnLine #8

  2. ゆるWeb勉強会@札幌 OnLine #8 #ゆるWeb札幌 お話したいこと • なぜ自前で作ったのか • Docker Swarm

    / Portainer とは • 作った環境の構成/デプロイまでのフロー • 感想 ※ 具体的な構築手順などは今回ありません。
  3. ゆるWeb勉強会@札幌 OnLine #8 #ゆるWeb札幌 なぜ自前で環境を作ろうと思った? • 趣味で使ういい感じのDockerインフラを安い維持費で用意したかった ◦ AWSやGCPの無料枠使うことも考えたが、趣味で使うには従量課金がチョット怖い •

    趣味でやることなので、あえて苦労もしてみたかった ◦ AWS ECSとか使ったら瞬殺なところ、あえて自前構築
  4. ゆるWeb勉強会@札幌 OnLine #8 #ゆるWeb札幌 Docker Swarmとは? Docker Swarm • Dockerに含まれているクラスタリングツール

    • 複数のDockerホストを束ねて1つの仮想Dockerホストとして利用できる • 複数のサービス(コンテナ)をまとめたStackと呼ばれる単位で管理もできる • docker-compose.ymlとほぼ同じ書き方で構築することができる。    
  5. ゆるWeb勉強会@札幌 OnLine #8 #ゆるWeb札幌 Portainerとは? Portainer •  Go製の軽量なWebGUI Docker管理ツール •

     Docker Imageが公式で用意されており、デプロイするだけで簡単に構築可能 •  WebAPIが用意されており、Webhookを利用したCD環境構築なども可能 •  有料で使える機能(Single Sign Onなど)もあるが、個人で使う分には不要
  6. ゆるWeb勉強会@札幌 OnLine #8 #ゆるWeb札幌 なぜPortainer/Docker Swarmを選んだのか? • 色々アプリ作ってデプロイしていたが、 docker-compose x

    CLI だけでやるの疲れた ◦ WebGUIでサクサクやりたかった • 軽量で簡単に構築できるうえに APIが用意されていて、CD環境構築までできる ◦ 個人でやるときでも、 CI/CDは大切だと思う • k8sも考えたが、個人でやるにはオーバースペックすぎると感じた ◦ あくまでお安めの VPSでサクサク動いてほしかった
  7. 構成について

  8. ゆるWeb勉強会@札幌 OnLine #8 #ゆるWeb札幌 構成 さくらVPSを3台使って構築しています • リバースプロキシ&SSL終端 • Docker

    Swarm & Portainer マネージャ • Docker Swarm & Portainer エージェント 6台写ってますが、3台は別用途のサーバです。
  9. ゆるWeb勉強会@札幌 OnLine #8 #ゆるWeb札幌 構成図 Docker Swarm クラスタ Webサーバ

  10. ゆるWeb勉強会@札幌 OnLine #8 #ゆるWeb札幌 構成図 Docker Swarm クラスタ Webサーバ Dockerクラスタをインターネット上に直で

    晒さないためのリバースプロキシ & SSL終端も兼務
  11. ゆるWeb勉強会@札幌 OnLine #8 #ゆるWeb札幌 構成図 Docker Swarm クラスタ Webサーバ Docker

    Swarmで構築されたクラスタ マネージャノードには Portainerをデプロイ エージェントノードには Portainer Agentをデプロイ (どちらもDockerでデプロイ) いずれもSSH以外のインバウンドアクセスは Webサーバからの接続しか許可していない。 (Firewalldで管理)
  12. ゆるWeb勉強会@札幌 OnLine #8 #ゆるWeb札幌 Portainerの画面 (公式のデモ環境)

  13. ゆるWeb勉強会@札幌 OnLine #8 #ゆるWeb札幌 Portainerの画面 (公式のデモ環境)

  14. ゆるWeb勉強会@札幌 OnLine #8 #ゆるWeb札幌 Portainerの画面 (公式のデモ環境)

  15. ゆるWeb勉強会@札幌 OnLine #8 #ゆるWeb札幌 Portainerの画面 (公式のデモ環境)

  16. デプロイについて

  17. ゆるWeb勉強会@札幌 OnLine #8 #ゆるWeb札幌 デプロイの流れ Docker Swarm クラスタ Webサーバ

  18. ゆるWeb勉強会@札幌 OnLine #8 #ゆるWeb札幌 デプロイの流れ Docker Swarm クラスタ Webサーバ Git

    push
  19. ゆるWeb勉強会@札幌 OnLine #8 #ゆるWeb札幌 デプロイの流れ Docker Swarm クラスタ Webサーバ Gitlab

    CIが起動 Docker imageをビルドして、 Gitlab Docker Registry にプッシュ
  20. ゆるWeb勉強会@札幌 OnLine #8 #ゆるWeb札幌 デプロイの流れ Docker Swarm クラスタ Webサーバ イメージのプッシュ後、

    Gitlab CI で Portainerの Webhook URLにアクセス
  21. ゆるWeb勉強会@札幌 OnLine #8 #ゆるWeb札幌 デプロイの流れ Docker Swarm クラスタ Webサーバ Gitlab

    Docker Registry から 最新のイメージを取得し、起動する
  22. ゆるWeb勉強会@札幌 OnLine #8 #ゆるWeb札幌 Git push するだけでデプロイできる環境の完成!

  23. ゆるWeb勉強会@札幌 OnLine #8 #ゆるWeb札幌 自分で作ってみた感想 • Web GUIで操作できるのが楽 ◦ CLIで入って作業することがなくなった

    • 気軽に起動しっぱなしのコンテナを建てれて楽しい ◦ 例えば、Herokuの無料枠は 1000時間/月 なので、2, 3つ建てると無料枠では足りなくなる • AWS ECS に対する感謝 ◦ あんなに簡単に構築できるって素晴らしい …… • データの永続化って難しい ◦ ホストのボリュームにデータが保存されるので、ホスト切り替えが大変。 今後の課題 などなど書いていますが ……
  24. ゆるWeb勉強会@札幌 OnLine #8 #ゆるWeb札幌 自分で作ったインフラで遊ぶのが楽しい

  25. ゆるWeb勉強会@札幌 OnLine #8 #ゆるWeb札幌 興味があるかたはぜひ、使ってみてください! Dockerで起動するので、手元の環境で簡単に試すこともできます (Docker Swarmモードである必要はないです)

  26. ありがとうございました!