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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
とことんDevOps
March 16, 2023
Technology
740
0
Share
ここから始めるDevOps CI/CD編
DevOpsを始めるにあたってCI/CDの観点から学ぶべきポイントを紹介します。
とことんDevOps
March 16, 2023
More Decks by とことんDevOps
See All by とことんDevOps
Proxmox超入門
devops_vtj
0
260
脱・コピペ!自分で調べて書くK8sマニフェスト
devops_vtj
0
230
MicroCloudではじめよう! ご家庭向け仮想化クラスター超入門
devops_vtj
0
380
クラウドネイティブ時代の分散データベース「YugabyteDB」を触ってみよう!
devops_vtj
1
310
Playwrightで始めるUI自動テスト入門
devops_vtj
0
810
この夏に始めたい!SQLデータベース超入門
devops_vtj
2
550
GitLabでCI/CDを動かしてみよう
devops_vtj
0
630
いまさら聞けない Git 超入門 〜Gitって結局なに?から始める第一歩〜
devops_vtj
1
830
もう難しくない!誰でもカンタンDocker入門 〜30分であなたのPCにアプリを立ち上げる〜
devops_vtj
0
830
Other Decks in Technology
See All in Technology
コミュニティ・勉強会を作るのは目的じゃない
ohmori_yusuke
0
270
AWS Agent Registry の基礎・概要を理解する/aws-agent-registry-intro
ren8k
3
410
AIはハッカーを減らすのか、増やすのか?──現役ホワイトハッカーから見るAI時代のリアル【MEGU-Meet】
cscengineer
PRO
0
210
Pure Intonation on Browser: Building a Sequencer with Ruby
nagachika
0
170
AI時代 に増える データ活用先
takahal
0
330
これからの「データマネジメント」の話をしよう
sansantech
PRO
0
160
生成AIが変える SaaS の競争原理と弁護士ドットコムのプロダクト戦略
bengo4com
1
2.4k
AI時代のガードレールとしてのAPIガバナンス
nagix
0
310
Do Vibe Coding ao LLM em Produção para Busca Agêntica - TDC 2026 - Summit IA - São Paulo
jpbonson
3
160
ハーネスエンジニアリングをやりすぎた話 ~そのハーネスは解体された~
gotalab555
5
1.9k
コードや知識を組み込む / Incorporate Code and Knowledge
ks91
PRO
0
180
EMから幅を広げるために最近挑戦していること / Recent challenges I'm undertaking to expand my horizons beyond EM
hiro_torii
1
140
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
140
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
10k
Leo the Paperboy
mayatellez
7
1.7k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.2k
Music & Morning Musume
bryan
47
7.2k
Designing for Performance
lara
611
70k
HDC tutorial
michielstock
2
630
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
53k
Code Review Best Practice
trishagee
74
20k
Agile that works and the tools we love
rasmusluckow
331
21k
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