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
コンテナ・K8s研修 - 後半 Kubernetes 基礎&ハンズオン【MIXI 24新卒技術研修】
mixi_engineers
PRO
1
120
VPoEの視点から見た、ヘンリーがサーバーサイドKotlinを使う理由 / Why Server-side Kotlin 2024
cho0o0
1
420
プレイドにおけるDatadog APMの活用方法
plaidtech
PRO
2
120
クラウド利用者の「責任」をどう果たす?AWSセキュリティ対策のススメ #AWSSummit
hiashisan
0
280
データベース研修 分析向けSQL入門【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
110
ABEMAにおけるLLMを用いたコンテンツベース推薦システム導入と効果検証
cyberagentdevelopers
PRO
1
750
AIエージェントを現場に導入する目線とは
masahiro_nishimi
1
1.5k
コミュニティサービスに「あなたへ」フィードを リリースするまでの試行錯誤
takapy
1
150
開発と事業を繋ぐ!SREのオブザーバビリティ戦略 ~ Developers Summit 2024 Summer ~
leveragestech
0
630
[NIKKEI Tech Talk] KDDI/KAG Scrum & Community for Engineering Training
curanosuke
2
220
Matterport を使ってクラスメソッド各拠点のバーチャルオフィスツアーを作成してみた
wakatsuki
0
160
DDDにおける認可の扱いとKotlinにおける実装パターン / authorization-for-ddd-and-kotlin-implement-pattern
urmot
4
390
Featured
See All Featured
Optimizing for Happiness
mojombo
373
69k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
Producing Creativity
orderedlist
PRO
340
39k
Fontdeck: Realign not Redesign
paulrobertlloyd
79
5.1k
The Cult of Friendly URLs
andyhume
75
5.9k
The Cost Of JavaScript in 2023
addyosmani
31
4.7k
Adopting Sorbet at Scale
ufuk
71
8.8k
Faster Mobile Websites
deanohume
303
30k
How GitHub (no longer) Works
holman
305
140k
VelocityConf: Rendering Performance Case Studies
addyosmani
321
23k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
129
32k
WebSockets: Embracing the real-time Web
robhawkes
59
7.2k
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