Upgrade to Pro — share decks privately, control downloads, hide ads and more …

さくらのクラウドと Docker Swarm Modeで 誰でもわかる簡単デプロイ @ さくら...

chibiegg
December 23, 2019

さくらのクラウドと Docker Swarm Modeで 誰でもわかる簡単デプロイ @ さくらの聖夜2019 / Simple Deployment with SAKURA Cloud and Docker Swarm

chibiegg

December 23, 2019
Tweet

More Decks by chibiegg

Other Decks in Technology

Transcript

  1. さくらのクラウドと Docker Swarm Modeで 誰でもわかる簡単デプロイ 2019-12-23 @さくらの聖夜2019 ©SAKURA internet Inc.

    さくらインターネット株式会社 執行役員 技術推進統括担当 兼 CISO 江草 陽太
  2. ⾃⼰紹介 2 【所属等】 さくらインターネット株式会社 新卒入社 執行役員 技術推進統括担当 兼 CISO 【開発】

    • さくらのVPS API/DB/制御システム担当 • sakura.io ハードウエア仕様、ファームウエア開発 システム設計、開発、インフラ設計、構築 • 社内システム/データセンター自動化 • さくらのエンジニアリングラボ 【その他】 • CSAJ U22プログラミングコンテスト審査員 • Home NOC Operators’ Group (AS59105) @chibiegg
  3. ⾃⼰紹介 3 【経歴】 • ロボカップジュニア (中学・高校) / NHK大学ロボコン • 大阪大学工学部電子情報工学科情報通信工学専攻

    • 個人事業主 • 大阪大学大学院工学研究科中退 • SECCON CTF 2014 国内4位 • ISUCON5/ISUSON7/ISUCON8本戦、ISUCON9問題作成 • ICTSC7 大人チーム 【専門】 • ソフトウエアエンジニア • NW/SC/DBスペシャリスト • 回路設計/組み込みソフトウエア 【趣味】 旅行/温泉/写真/電子工作/プログラミング/かわいい服 @chibiegg
  4. よく使うミドルウエア 5 • Nginx • リバースプロキシと静的ファイル配信 • Django • Webアプリケーション本体

    • Redis/Memcached • グラフデータ等のキャッシュ • PostgreSQL/MariaDB • データベース
  5. 古典的な⽅法でのデプロイ 6 • パッケージのインストール • posrgresql-10, python3-pip, redis, nginx •

    ソースコードを持って来る • Pythonパッケージをインストールする • 各種設定ファイルを書く • データベースをセットアップする • サービス登録する
  6. 開発にDocker Composeを使う 8 • 開発環境は⼿元のmacOSなど • いろんな開発を並⾏して⾏うため、環境構築が⼤変 • データベース、Redis、Pythonのバージョン、etc… •

    Docker Composeを使うことで簡単に • コンテナを使うため独⽴した環境が⽤意できる • 他の環境に影響しない、壊さない • 初めて実⾏する⼈もコマンド2つ • `docker-compose build` `docker-compose up` のみ • docker-compose.ymlに全て書いてある • 削除も⼀⾏ `docker-compose rm`
  7. 開発にDocker Composeを使う 9 • git clone [email protected]:isucon/isucon9- portal.git • cd

    isucon9-portal • docker-compose build • docker-compose up • http://localhost:8000/ を開く
  8. Docker Composeでのデプロイ 11 Docker ComposeとSystemdを使う • パッケージのインストール • docker, docker-compose

    • ソースコードを持って来る • docker-compose.yml が含まれている • Systemdにサービス登録する
  9. Docker Swarm Mode 14 サーバ OS Docker Engine App App

    一台でのDocker Compose サーバ サーバ サーバ OS OS OS Docker Engine Docker Engine Docker Engine App App App App App App Docker Cluster 管理レイヤ Docker Swarm Mode オーケストレーション サービス検出・クラスタ管理 Dockerのコンテナ管理
  10. Docker Swarm Modeでのデプロイ 15 • Docker Swarmのインストール • ⼿作業でも簡単 •

    Ansibleで⾃動化も簡単 • ソースコードを持って来る • docker stack deploy コマンドで設定を反映 • イメージのバージョンを変えると ローリングアップデートされる!
  11. さくらのクラウドで実環境でも使える構成を紹介 18 エンハンスドLB Nginx Swarm Worker Swarm Manager DBアプライアンス スイッチ

    192.168.0.0/24 https://www.example.com/ ポート番号毎にアプリケーションをデプロイし、Nginxでリバースプロキシするといい感じ SSLはLet’s Encryptで自動更新! HTTP/2にも対応!
  12. さくらのクラウドで実環境でも使える構成を紹介 19 エンハンスドLB Swarm Worker Swarm Manager DBアプライアンス スイッチ 192.168.0.0/24

    https://www.example.com/ ポート番号毎にアプリケーションをデプロイし、ELBのルール機能でリバースプロキシ ルールベースロードバランスに対応!
  13. 2019/12/23 ©SAKURA internet Inc. 36 今⽇のAdvent Calendarで仕組みを紹介しています Private Docker Container

    Registryサービスを作った話 https://qiita.com/chibiegg/private/746e0825c602f947ab1c