Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ここから始めるDevOps CI/CD編
Search
とことんDevOps
March 16, 2023
Technology
0
490
ここから始めるDevOps CI/CD編
DevOpsを始めるにあたってCI/CDの観点から学ぶべきポイントを紹介します。
とことんDevOps
March 16, 2023
Tweet
Share
More Decks by とことんDevOps
See All by とことんDevOps
Docker互換のセキュアなコンテナ実行環境「Podman」超入門
devops_vtj
6
3.2k
自動化と効率化のためにGitHub Actionsを使いこなそう
devops_vtj
4
650
Gitで始めるバージョン管理入門
devops_vtj
1
230
今さら聞けないDocker入門 〜 Dockerfileのベストプラクティス編
devops_vtj
33
10k
AWS AmplifyではじめるDevOps
devops_vtj
0
340
IaCコードリーディング ~Terraformのコードを一緒に読んで行こう~
devops_vtj
0
580
Software Design 11月号第1特集「理想のコンテナイメージを作る」を振り返る 第1章
devops_vtj
0
420
Software Design 11月号第1特集「理想のコンテナイメージを作る」を振り返る 第3章
devops_vtj
0
420
Software Design 11月号第1特集「理想のコンテナイメージを作る」を振り返る 第4章
devops_vtj
0
450
Other Decks in Technology
See All in Technology
OSSコミットしてZennの課題を解決した話
dyoshikawa1993
0
150
ここがすごいよ! AWS Systems Manager!
saichan11
0
1.8k
ペパボのオブザーバビリティ研修2024 説明資料
kesompochy
0
1.1k
What if...? 처음부터 다시 LLM 어플리케이션을 개발한다면
huffon
0
1k
年間一億円削減した時系列データベースのアーキテクチャ改善~不確実性の高いプロジェクトへの挑戦~
lycorptech_jp
PRO
3
2.9k
DevIO2024_レガシー運用からの脱却 -クラウド活用の実践事例とベストプラクティス-
jun2882
0
210
LINE WORKSへ簡単通知!Incoming Webhookアプリの紹介
mmclsntr
0
110
シフトレフトで挑む セキュリティの生産性向上
sekido
PRO
0
270
データ分析を支える技術 生成AI再入門
ishikawa_satoru
0
380
ゆめみのアクセシビリティの現在地と今後
ryokatsuse
3
290
AutomatedLabを使って内部ペンテストを勉強しよう! -やられ社内ネットワークの自動構築-
n_etupirka
1
610
[2024最新版]AWS Control Towerを使ったセキュアなマルチアカウント環境の作り方
hiashisan
0
270
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
17
1.5k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
149
45k
Unsuck your backbone
ammeep
666
57k
Web development in the modern age
philhawksworth
203
10k
Building a Modern Day E-commerce SEO Strategy
aleyda
25
6.7k
Building Adaptive Systems
keathley
34
2k
Rebuilding a faster, lazier Slack
samanthasiow
78
8.5k
Bootstrapping a Software Product
garrettdimon
PRO
304
110k
Learning to Love Humans: Emotional Interface Design
aarron
269
39k
Git: the NoSQL Database
bkeepers
PRO
423
64k
Building Effective Engineering Teams - LeadDev
addyosmani
47
2.2k
The MySQL Ecosystem @ GitHub 2015
samlambert
248
12k
Transcript
ここから始めるDevOps CI/CD編 日本仮想化技術株式会社 水野 源
[email protected]
2023/03/15 1
発表者について • 水野 源 • VTJ 技術部所属 • Ubuntu JPメンバー
• ubuntu.comメンバー • 日経Linuxにて「Linux 100%活用 ガイド」を連載中 • 著書に「そろそろ常識? マンガで わかるLinuxコマンド」など 2
本日のアジェンダ • CIとは • CDとは • CircleCI • ArgoCD •
まとめ 3
CIとは • 自動的にテストするやつでしょ? くらいの理解の人も多いのでは • 間違いではないんだけど、テストは統合のための手段 • Continuous Integrationの略 •
日本語にすると継続的なインテグレーション(統合) • 統合とは、開発者のコードをリリースブランチにマージ可能にすること • リリースブランチは常に正常で、デプロイ可能でなければならない • ぶっ壊れたコードのマージはダメ絶対 • マージ可能にするということは? • マージ対象となるコードの品質を確認できているということ • そのためのテスト 4
コードの品質を担保するには • コードの品質を担保するにはテストがなにより重要 • 最初にテストを書き、テストが成功するようロジックを実装するのも一般的 • これがテスト駆動開発 • コードをリリースブランチへマージする前には •
コードのテストや静的解析を行う • テスト結果を確認する • 実際にマージを行う • ……というプロセスを踏む • これを継続的に行うのがCI 5
継続的? • 単にテストを実行しているだけでは不十分 • 人間は間違えるし、サボる生き物 • コードに対して十分なカバレッジを持つテストを行うこと • それを常に、自動的に実行し続けること •
この両方が大事 • これが満たされていれば、リリースブランチにあるコードは常に、す べてのテストをパスしていることが担保される • この状態を維持することこそがCIの本質 6
CDとは • Continuous Deliveryの略 • デリバリーとは、本番デプロイ可能な準備を整えること • CIによって品質が担保され、リリースブランチにマージされたコードも、 実際に動かすには本番サーバーにデプロイしなければならない •
だがデプロイには、それなりの準備や手順がある • コンテナイメージをビルドしたり • ビルドしたイメージをコンテナレジストリにプッシュしたり • これを継続的に行うのがCD 7
CDとは • 新しいコードをデプロイする時とは? • 当然リリースブランチのコードが更新された時 • つまりCIを完了した後にCDが実行されるのが基本 • そのためCIとCDはだいたいセットで扱われる •
そのためまとめてCI/CDと呼ばれる 8
Continuous Deployとは • Continuous Deliveryと同じくCDと略される概念 • まぎらわしい…… • デリバリーは、あくまでデプロイの準備を整えるだけ •
対してデプロイは、文字通りデプロイまでを一気に行う • Continuous Delivery + 本番デプロイ = Continuous Deploy という感じ • 単にCDと言った場合は区別がつかないことがあるので要注意 9
CI/CD概念図 10 テスト 静的解析 セキュリティチェック etc イメージビルド プッシュ etc 本番デプロイ
Continuous Integration Continuous Delivery Continuous Deploy CircleCI ArgoCD
CircleCI • CIやCDを行うには専用のツールを使うのが一般的 • コミットを検知し、自動的にCIワークフローを起動できることが求められる • そのためコードホスティングサービスと一体化したCIサービスも存在する • CircleCIはCIに特化した老舗のSaaS •
GitHub/GitLabとスムーズに連携できる • Insight、分割並列実行、SSHデバッグなど、便利機能も豊富 • 昨年、無料枠が大幅に強化された 11
CircleCI • CIとCDは、概念的には別物 • だが、実際は明確に分離されているものでもない • 分けて考える必要もあまりない • 単一のフロー内で、CIとCDを順番に実行することも一般的 •
CircleCIはCIという名前だが、デプロイ処理を書くこともできる • 例えばテスト→コンテナのビルド→プッシュ→k8sへのデプロイなどをひとつ のワークフロー内で行うことも可能 12
CircleCI 13
ArgoCD • さっきCircleCIからのデプロイも可能と言ったな? • だがそのためには、CircleCIに本番をいじる権限を預けなければならない • 本番がk8sなら、KUBECONFIGをCircleCIに設定する必要がある • それセキュリティ的にどうよ……? •
CIツールがクラスターを自由にいじれてしまうと、ワークフローを修正した時 などに事故が起きるかもしれない • そこでCDはCD用のツールを別に用意するというのもおすすめ 14
ArgoCD • ArgoCDは、それ自身もk8s上で動くアプリ • クラスター上で動作する他のアプリを管理できる • CircleCIがCDを行う場合、外からクラスターにアプリをプッシュする • だがArgoCDを使えば、ターゲットとなるクラスター上からアプリをプルできる •
この方式のメリットは? • クラスターの認証情報を外部に持ち出さなくてよい • CI/CD(デリバリー)とCD(デプロイ)を分離できる • クラスター上で動いているアプリの状態を管理できる • etc… 15
ArgoCD 16
CI/CD CI/CD概念図 17 コンテナリポジトリ GitHub コード CircleCI テスト ビルド イメージ
k8s ArgoCD アプリ コミット デリバリー デプロイ
まとめ • 高速にDevOpsサイクルを回すには • それを支援するツールの導入が必要不可欠 • なによりキモとなるのが、CI/CD • だがCI/CD自体は、プロダクトの価値に直接寄与しない •
なのでなるべくツールを使って手軽にやりたい • 無料枠の強化されたCircleCIはオススメ • テストやデプロイにツールを導入して自動化し、品質を担保しながら 高速な開発とリリースを実現しよう 18