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
PipeCDを使用したBucketeerのGitOps-style CI/CD
Search
muras
January 20, 2021
Technology
0
940
PipeCDを使用したBucketeerのGitOps-style CI/CD
muras
January 20, 2021
Tweet
Share
More Decks by muras
See All by muras
Vim Tips
muras
0
750
Java研修成果発表
muras
0
740
Other Decks in Technology
See All in Technology
La gouvernance territoriale des données grâce à la plateforme Terreze
bluehats
0
150
COVESA VSSによる車両データモデルの標準化とAWS IoT FleetWiseの活用
osawa
1
250
MCPで変わる Amebaデザインシステム「Spindle」の開発
spindle
PRO
3
3.2k
Platform開発が先行する Platform Engineeringの違和感
kintotechdev
4
530
Snowflakeの生成AI機能を活用したデータ分析アプリの作成 〜Cortex AnalystとCortex Searchの活用とStreamlitアプリでの利用〜
nayuts
1
450
職種の壁を溶かして開発サイクルを高速に回す~情報透明性と職種越境から考えるAIフレンドリーな職種間連携~
daitasu
0
140
クラウドセキュリティを支える技術と運用の最前線 / Cutting-edge Technologies and Operations Supporting Cloud Security
yuj1osm
2
310
20250910_障害注入から効率的復旧へ_カオスエンジニアリング_生成AIで考えるAWS障害対応.pdf
sh_fk2
3
190
JTCにおける内製×スクラム開発への挑戦〜内製化率95%達成の舞台裏/JTC's challenge of in-house development with Scrum
aeonpeople
0
190
AWSで推進するデータマネジメント
kawanago
1
1.2k
「どこから読む?」コードとカルチャーに最速で馴染むための実践ガイド
zozotech
PRO
0
240
BPaaSにおける人と協働する前提のAIエージェント-AWS登壇資料
kentarofujii
0
130
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
The Art of Programming - Codeland 2020
erikaheidi
55
13k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
Music & Morning Musume
bryan
46
6.8k
Building Adaptive Systems
keathley
43
2.7k
How STYLIGHT went responsive
nonsquared
100
5.8k
Scaling GitHub
holman
463
140k
Become a Pro
speakerdeck
PRO
29
5.5k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Transcript
Developer Productivity Study #1 PipeCDを使用した Bucketeerの GitOps-style CI/CD Seiya Muramatsu
(@mura_s_)
• Seiya Muramatsu • GitHub: mura-s • Twitter: @mura_s_ •
Team: Bucketeer • Role: Backend Engineer
• Bucketeerのアーキテクチャの概要 • バックエンドのCI/CDの概要 • PipeCDを使ったGitOps & Progressive Delivery •
まとめ アジェンダ
Bucketeerのアーキテクチャの概要
• Feature Flag & A/B Testing機能を 提供する社内SaaSプロダクト • GCPプロジェクト ◦
bucketeer-dev-host ◦ bucketeer-prd-host ◦ bucketeer-dev-srv ◦ bucketeer-uat-srv ◦ bucketeer-abematv-srv: 専用prd環境 ◦ bucketeer-media-srv: 共用prd環境 ◦ bucketeer-load-srv • マルチプロジェクト/テナント アーキテクチャ
バックエンドのCI/CDの概要
• GitHubリポジトリ ◦ bucketeer: App Code (Monorepo) ◦ bucketeer-config: App
Config ◦ bucketeer-ops: CI, Terraform, ... • Buildツール ◦ Bazel (GoやPythonをbuild) • CIツール ◦ Argo Events ◦ Argo Workflows • CDツール ◦ PipeCD v0.9.4 • マニフェスト管理 ◦ Helm v3 CI/CDの全体像
• ArgoのCI Workflow ◦ 1a) Build ◦ 1b) Unit test
◦ 2) 変更されたサービスの検出 ◦ 3) GCRにImagesをpush ◦ 4) dev環境用のPR作成, マージ CIについて ◦ 5) pipectlを使ってsync & wait ◦ 6) E2E test ◦ 7a) stage環境用のPR作成, マージ ◦ 7b) prd環境用のPR作成 ◦ 7c) Git Tag, Release Note作成 ◦ 8) Slack通知
CDについて • PipeCDで計198 Appsを管理 • GitOps & Progressive Delivery •
CDの流れ ◦ CIでImageのバージョンアップを行うPR作成 ◦ PRマージ (自動/手動) ◦ カナリアPodデプロイ (prd環境のみ) ◦ 自動デプロイ分析 (prd環境のみ) ◦ 全Podsデプロイ • 詳細は次のセクションで
PipeCDを使った GitOps & Progressive Delivery
PipeCD UIでの設定 • Piped & Environment ◦ GCPプロジェクト単位で作成
PipeCD UIでの設定 • Project & API Key
Pipedの設定 • analysisProviders ◦ Automated Deployment Analysisで使用 ◦ Cluster内のPrometheusを設定 •
notifications ◦ デプロイ失敗時にSlack通知 abematv.yaml
• bucketeer-config repoの設定 (後述) • pipectlを使ったscriptを作成 ◦ Environmentを指定してAppsを一括登録 ◦ EnvironmentとAppを指定して登録
Applicationの登録 ➢ pipectlはCIでも使用 ◦ pipectl application sync --wait-status ...
Applicationの登録 • Appリスト & 詳細ページ
bucketeer-config repoの構成 ディレクトリ構成 • charts, configの下にサービスが並んでいる • Environmentごとのconfigはディレクトリで分割 ◦ デメリットもあるが現状は運用しやすさを優先
◦ cf. ブランチで分割、リポジトリで分割
bucketeer-config repoの構成 ディレクトリ構成 .pipe/analysis-template.yaml • AnalysisTemplateにはgrpc_error_rateのmetricsを設定
bucketeer-config repoの構成 ディレクトリ構成 account/dev/.pipe.yaml account/abematv/.pipe.yaml • prd環境以外はQuickSync • prd環境のみDeploy Pipeline
を設定
dev環境のデプロイ dev環境へのPR + 自動マージ
dev環境のデプロイ QuickSync
prd環境のデプロイ prd環境へのPR + 手動マージ
prd環境のデプロイ Deploy Pipeline
prd環境のデプロイ (Failure) • 自動でRollback • Slack通知
手動Rollback • リリース完了後に何らかの問題 があってRollbackしたいケース • PRをRevertしてマージするだけ
まとめ
• CI/CDの全体像 (再掲) • PipeCDを使ってどのように GitOps & Progressive Delivery を行っているかを紹介した
まとめ
• Pros ◦ PipeCD単体でGitOps, Progressive Deliveryが可能 ◦ 独自のCustom Resourceを使用せず、K8SのDeploymentのまま扱える ◦
ControlPlaneの社内SaaSが提供されている ◦ 身近で開発されているのでやりとりがしやすい • Cons ◦ 競合ツールと比べて若干の機能不足や不安定さを感じることがある ◦ コミュニティの活発さ => 一緒に盛り上げていきましょう! • 要望 ◦ Cascade deleteの実装 ▪ https://github.com/pipe-cd/pipe/issues/1285 PipeCDについての所感
Thanks!