Slide 1

Slide 1 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. Kubernetes × CircleCI で実現する安⼼安全Deploy VTRyo / @3s_hv #CircleCIJP

Slide 2

Slide 2 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. #CircleCIJP イベントハッシュタグ #CircleCIJP

Slide 3

Slide 3 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. #CircleCIJP スライドは公開します

Slide 4

Slide 4 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. VTRyo / @3s_hv ➤ 株式会社マツリカ / SRE ➤ 作家(早く脱稿したい) ➤ CircleCIユーザコミュニティメ ンバー etc. ➤ AWS Summit 2019 Startup Central 登壇 etc. https://vtryo.me illustration by 湊川あい #CircleCIJP

Slide 5

Slide 5 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. 営業をもっと⾃由に、もっと創造的に。 #CircleCIJP

Slide 6

Slide 6 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. 営業をもっと⾃由に、もっと創造的に。 #CircleCIJP

Slide 7

Slide 7 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. 営業をもっと⾃由に、もっと創造的に。 #CircleCIJP

Slide 8

Slide 8 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ➤ CI/CDってなんだっけ? ➤ 安⼼安全のDeployって? ➤ CircleCIに何をさせている? ➤ Deploy Workflow ➤ config.yml 話すこと #CircleCIJP

Slide 9

Slide 9 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ⼿動でDeployまでしている⼈ #CircleCIJP

Slide 10

Slide 10 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. Build, Testは⾃動の⼈ #CircleCIJP

Slide 11

Slide 11 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. Build, Test, Deploy承認 までは⾃動の⼈ #CircleCIJP

Slide 12

Slide 12 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ⾃動でDeployまでしている⼈ #CircleCIJP

Slide 13

Slide 13 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ⾃動 CI/CDってなんだっけ? #CircleCIJP 参考:https://aws.amazon.com/jp/devops/continuous-delivery/ Build & Test Deploy Staging Deploy Production Commit change ⾃動 継続的インテグレーション 継続的デリバリ 継続的デプロイメント v1.1 本番Deploy  承認します ⾃動

Slide 14

Slide 14 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ➤ CI(継続的インテグレーション) ➤ リリースプロセスのBuild段階とTest段階のことを指す。コードの変更がCommit されるたびに、⾃動化されたBuildとTestが実⾏される ➤ CD(継続的デリバリ) ➤ リリースプロセスの全体を⾃動化すること。ステージング環境まで⾃動Deployさ れる。本番環境へのDeployするかは開発者が決める ➤ CD(継続的デプロイメント) ➤ 継続的デリバリにおいて、本番環境へのDeployに承認が必要かどうか CI/CDってなんだっけ? #CircleCIJP 参考:https://aws.amazon.com/jp/devops/continuous-delivery/

Slide 15

Slide 15 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ҆৺҆શͷDeployͱ͸ #CircleCIJP

Slide 16

Slide 16 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. 1. 開発者なら誰でもDeployまでできる CircleCIの頑張りどころ #CircleCIJP

Slide 17

Slide 17 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. 2. ⼈間が頑張らずにDeployまでできる CircleCI, Kubernetes    の頑張りどころ #CircleCIJP

Slide 18

Slide 18 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. 3. Stagingでテストされた環境が ProductionにDeployされる CircleCI, Kubernetes    の頑張りどころ #CircleCIJP

Slide 19

Slide 19 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ͜ͷ3ͭΛϙΠϯτʹ ࿩͍͖ͯ͠·͢ #CircleCIJP

Slide 20

Slide 20 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ։ൃऀͳΒ୭Ͱ΋Deploy·ͰͰ͖Δ #CircleCIJP

Slide 21

Slide 21 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ⾃動 どこの部分の話? #CircleCIJP 参考:https://aws.amazon.com/jp/devops/continuous-delivery/ Build & Test Deploy Staging Deploy Production Commit change ⾃動 継続的インテグレーション 継続的デリバリ 継続的デプロイメント v1.1 本番Deploy  承認します ⾃動 ͜͜ͷ࿩Λ͢ΔΑ

Slide 22

Slide 22 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ➤ 開発者がソースコードをPush or Mergeすると… ➤ CircleCIがBuild & Testを開始 ➤ DockerΠϝʔδ͕ECRにPushされる ➤ KubernetesクラスタにDeployされる Workflowの概要 #CircleCIJP

Slide 23

Slide 23 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ➤ 開発者がソースコードをPush or Mergeすると… ➤ CircleCIがBuild & Testを開始 ➤ DockerΠϝʔδ͕ECRにPushされる ➤ KubernetesクラスタにDeployされる Workflowの概要 開発者がやることはシンプル #CircleCIJP

Slide 24

Slide 24 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ➤ ⾃動的にテスト(リリース候補確認)環境にDeployされる ➤ 開発者はMasterにMergeするだけでOK v1.1がMasterにMergeされたWorkflow #CircleCIJP

Slide 25

Slide 25 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ➤ ProductionリリースWorkflowはStaging(本番相当)環境に⾃動Deployされる ➤ 問題なければ「request_prod 」をApprovedすることで本番Deployされる v1.1がProduction DeployされるときのWorkflow #CircleCIJP

Slide 26

Slide 26 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ➤ ProductionリリースWorkflowはStaging(本番相当)環境に⾃動Deployされる ➤ 問題なければ「request_prod 」をApprovedすることで本番Deployされる v1.1がProduction DeployされるときのWorkflow #CircleCIJP 開発者は「Approved」するだけ

Slide 27

Slide 27 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ➤ ProductionリリースWorkflowはStaging(本番相当)環境に⾃動Deployされる ➤ 問題なければ「request_prod 」をApprovedすることで本番Deployされる v1.1がProduction DeployされるときのWorkflow #CircleCIJP 安全だね!

Slide 28

Slide 28 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ➤ Stagingに⾃動的にDeployしたあとに  ApprovedのJobを挟んでおく ➤ 開発者はこの中⾝を知らなかったとしても  Deployすることができる config.yml #CircleCIJP

Slide 29

Slide 29 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ਓ͕ؒؤுΒͣʹDeploy·ͰͰ͖Δ #CircleCIJP

Slide 30

Slide 30 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ⾃動 どこの部分の話? #CircleCIJP 参考:https://aws.amazon.com/jp/devops/continuous-delivery/ Build & Test Deploy Staging Deploy Production Commit change ⾃動 継続的インテグレーション 継続的デリバリ 継続的デプロイメント v1.1 本番Deploy  承認します ⾃動 ͜͜ͷ࿩Λ͢ΔΑ

Slide 31

Slide 31 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ➤ ⼈間がコマンドラインなどを使⽤してDeployするやりかた ➤ kubectl apply ➤ terraform apply ➤ Deploy時にパラメータの変更が⼿動で必要なやりかた ⼈間が頑張るDeployとは(⼀例です) #CircleCIJP

Slide 32

Slide 32 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ➤ ⼈間がコマンドラインなどを使⽤してDeployするやりかた ➤ kubectl apply ➤ terraform apply ➤ Deploy時にパラメータの変更が⼿動で必要なやりかた ⼈間が頑張るDeployとは(⼀例です) #CircleCIJP いつかミスでる & 時間かかる

Slide 33

Slide 33 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ➤ 変更されたコードのテスト ➤ Dockerイメージの作成 ➤ 作成されるたび、Dockerイメージタグにバージョン管理のためコミットハッシュ を付与する ➤ ECRにPushする ➤ Migrationの実⾏ ➤ Deploy ➤ クラスタで、作成したDockerイメージに差し替える KubernetesクラスタにDeployするまで #CircleCIJP

Slide 34

Slide 34 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ➤ 変更されたコードのテスト ➤ Dockerイメージの作成 ➤ 作成されるたび、Dockerイメージタグにバージョン管理のためコミットハッシュ を付与する ➤ ECRにPushする ➤ Migrationの実⾏ ➤ Deploy ➤ クラスタで、作成したDockerイメージに差し替える KubernetesクラスタにDeployするまで #CircleCIJP なんだかんだ⾔ってやること多い

Slide 35

Slide 35 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ➤ Dockerイメージタグにコミットハッシュ ➤ ↑で作成されたDockerイメージを使ってDeployされる config.yml #CircleCIJP

Slide 36

Slide 36 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ➤ ECRの操作は、CircleCI Orbsを利⽤することで簡単に実現できる config.yml #CircleCIJP 参考:https://circleci.com/orbs/registry/orb/circleci/aws-ecr

Slide 37

Slide 37 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. StagingͰςετ͞Εͨ؀ڥ͕ ProductionʹDeploy͞ΕΔ #CircleCIJP

Slide 38

Slide 38 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ⾃動 どこの部分の話? #CircleCIJP 参考:https://aws.amazon.com/jp/devops/continuous-delivery/ Build & Test Deploy Staging Deploy Production Commit change ⾃動 継続的インテグレーション 継続的デリバリ 継続的デプロイメント v1.1 本番Deploy  承認します ⾃動 ͜͜ͷ࿩Λ͢ΔΑ

Slide 39

Slide 39 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ➤ StagingにDeployされてからでなければProductionへDeployできない流れ v1.1がProduction DeployされるときのWorkflow #CircleCIJP

Slide 40

Slide 40 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. なぜその流れがよいの? #CircleCIJP

Slide 41

Slide 41 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. かつての地獄… ➤ Opsworksによる構築、Deploy ➤ Stackによって失敗したりする ➤ 詳細なログを出してくれない… ➤ 構成変更に時間がかかる(停⽌も⻑ い) ➤ Chef ➤ 毎回Setupコマンド待ち ➤ ローカル開発環境はDockerなんだけど… #CircleCIJP

Slide 42

Slide 42 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. 確かなDockerイメージをProductionへ #CircleCIJP Deploy Staging Deploy Production Docker Image ⾃動 workflowでは  Staging Deploy前にdocker build実⾏ 同じDockerイメージがDeploy ➤ 動作確認が取れているDockerイメージが 確実にProductionへ届く ➤ 安定性の向上 ➤ 「それStagingだと環境差分があって  再現しないんですよ」が減る  ※データベース内容による環境差分はあると思います

Slide 43

Slide 43 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. 確かなDockerイメージをProductionへ #CircleCIJP Deploy Staging Deploy Production Docker Image ⾃動 workflowでは  Staging Deploy前にdocker build実⾏ 同じDockerイメージがDeploy ➤ 動作確認が取れているDockerイメージが 確実にProductionへ届く ➤ 安定性の向上 ➤ 「それStagingだと環境差分があって  再現しないんですよ」が減る  ※データベース内容による環境差分はあると思います 安全だね!

Slide 44

Slide 44 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ➤ CircleCIによって、継続的デプロイメント(or 継続的デリバリ)の実装が可能 ➤ 「⼈間が頑張らず、誰でもDeployできる」ことには様々なメリットがあるよ ➤ 効率化 ➤ 属⼈化排除 ➤ Deploy安定性向上 ➤ Staging→ProductionというDeployフローが可能なら実装するとメリットがあるよ ➤ 動作確認保証が取れたものがProductionへ届く ➤ サービス安定性向上 まとめ #CircleCIJP

Slide 45

Slide 45 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. ➤ Amazon EKSͰߏங͢Δࣾ಺PaaS ➤ https://speakerdeck.com/vtryo/create-paas-eks ➤ KubernetesͷJobͰ࣮ߦͨ͠MigrationͷϩάΛCircleCI಺ͰݟΕΔͱศར ➤ https://blog.vtryo.me/entry/migration-log-to-circleci ➤ CircleCIͰϏϧυ͍ͯ͠Δϒϥϯν໊ΛDockerΠϝʔδͷλάʹઃఆ͢Δ ➤ https://blog.vtryo.me/entry/docker-image-tag-using-branch-name その他 参考資料 #CircleCIJP

Slide 46

Slide 46 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. Hire me! (side job.) ➤ Hire meは冗談ですが、ご相談はいつで もお待ちしています ➤ Twitter→@3s_hv #CircleCIJP illustration by 湊川あい

Slide 47

Slide 47 text

 © 株式会社マツリカ ∕ mazrica, inc. - All Rights Reserved. Kubernetes × CircleCI で実現する安⼼安全Deploy VTRyo / @3s_hv 完 #CircleCIJP