Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Kubernetes導入に備えたGitOpsなCI/CDを構築する/rakus_meetup_...
Search
txkxyx
June 02, 2022
1.5k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Kubernetes導入に備えたGitOpsなCI/CDを構築する/rakus_meetup_202206
2022/6/1(水)19:00〜 【ラクスMeetup】技術刷新の課題取り組み - 共通基盤/k8s/技術ロードマップ -での発表資料です。
txkxyx
June 02, 2022
More Decks by txkxyx
See All by txkxyx
寿命の長いドキュメントの 鮮度を保つ仕組み
txkxyx
0
350
PostCSSの導入検証 / r&d_meetup_css_t_okkan
txkxyx
0
1k
ゲーム開発で始めるオブジェクト指向 / ooltjp_vol3_t_okkan
txkxyx
1
590
Technology selection for mobile cross-platform
txkxyx
0
120
itbookslt_vol2_takuyaokamoto
txkxyx
0
15k
Rakusmeetup_20210804_Takuya_Okamoto
txkxyx
0
2.1k
今年やることやらないこと
txkxyx
0
60
クロスプラットフォームの技術選定 ~ライブラリ編~
txkxyx
0
400
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Tell your own story through comics
letsgokoyo
1
1.1k
A better future with KSS
kneath
240
18k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
690
HDC tutorial
michielstock
2
930
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
440
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
510
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.1k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Designing for Performance
lara
611
70k
Transcript
#RAKUSMeetup ©2022 RAKUS Co., Ltd. Kubernetes導入に備えた GitOpsなCI/CDを構築する 株式会社ラクス 技術推進課 岡本 1
#RAKUSMeetup 自己紹介 • Job ◦ 技術推進PJのリーダーやメンバー (先行技術検証) ◦ 横断機能開発 (要件定義〜開発)
• Career ◦ Java、Python、AWS、Vue.js ◦ Java研修講師、資格対策本の執筆 ◦ 2020年〜株式会社ラクスに所属 2
#RAKUSMeetup 本日お話する内容 • Kubernetes導入に向けた技術推進PJを実施しました • 導入に向けてIaCを活かしたCI/CDの見直しを実施 • ツールの選定や、実際にCI/CD環境を構築しましたので、 その知見を共有します 3
#RAKUSMeetup 取り組みの背景 4
#RAKUSMeetup 9割のサーバーをオンプレで構築 • ラクスは約9割のサーバーリソースをオンプレで構築・管理 ◦ 一部サービスはパブリッククラウドで構築・管理 ◦ 【参考】 https://tech-blog.rakus.co.jp/entry/20211126/technology#%E3%82%A4%E3%83%B3%E3%83%95%E3%83%A9 5
#RAKUSMeetup 取り組みの背景 • コンテナ技術を生かした開発の需要の高まり • パブリッククラウドで運用しているコンテナアプリのオンプレ移行 • コンテナアプリ実行環境としてk8sについてノウハウを収集 • k8sを導入することで開発環境にどう影響するか調査する
k8sの特徴を活かしたCI/CDを構築する必要がある 6
#RAKUSMeetup k8s導入後のCI/CDの検討 7
#RAKUSMeetup Kubernetes導入による変化 • k8s導入によりほぼ全てのリソースがIaCによりマニフェスト ファイルで管理される ◦ 従来はアプリケーション・MW・OSを個別で管理 ◦ k8sではマニフェストファイルで管理できる 8
アプリの Manifest DBの Manifest Webサーバーの Manifest kubectl apply Kubenetes Webサー バー コンテナ アプリ コンテナ DB コンテナ Manifest宣言通りの状態
#RAKUSMeetup Kubernetesを導入後のCI/CD • IaCの特徴を生かしたCI/CDを構築し直す必要がある ◦ 現状はJenkinsやGitLabを利用したCI Ops(CI + CD)に近い状態 ◦
候補となるのがGitOps 9 開発者 Code Repository CI/CD code push run CI/CD deploy deploy 宣言通りの状態になっているか把握しにくい
#RAKUSMeetup GitOps Weaveworks社によって提唱された、Gitを中心としたk8s管理と デプロイメント手法 kubectlコマンドを利用せずに、git push のみでデプロイを管理 できる手法 https://www.weave.works/technologies/gitops/ 10
#RAKUSMeetup GitOpsの原則 1. システム全体が宣言的にコード化されていること 2. システムのバージョンをGitで管理していること 3. 変更を自動的に適用できること 4. 正しさを保証し乖離をアラートし自己回復すること
11
#RAKUSMeetup GitOpsの構成例 開発者 運用者 アプリケーションソースコード マニフェストファイル コンテナイメージ pull型のデプロイ 【引用】https://www.weave.works/technologies/gitops/ 12
#RAKUSMeetup GitOpsで得られる効果 1. 生産性の向上 2. Developer Experienceの向上 3. 安定性の向上 4.
信頼性の向上 5. 一貫性と標準化 6. セキュリティ保証 13
#RAKUSMeetup GitOpsを構築してみる 14
#RAKUSMeetup ツールの選定 • 候補となるツールが多すぎる・・・・ • なるべく社内標準ツールを利用してGitOpsを構築したい • 社内標準ツール ◦ Git
▪ GitLab ◦ CI/CD ▪ GitLab CI ▪ Jenkins 15
#RAKUSMeetup ラクスでのツールの選定案 • Code Repository : GitLab • CI : GitLab(GitLab Runner) • Container
Registry : GitLab Container Registry • Config Updater : なし(CI上で実行) • Manifest Repository : GitLab • Deploy Operator : ArgoCD 16
#RAKUSMeetup 17 開発者 Code Repository CI Pipeline Container Registry Config
Repository 運用者 Deploy Service ①コミット ②Pipelineを実行 ③コンテナイメージを push ④イメージの変更を更新 ⑤更新を承認 ⑥リポジトリの更新を検知 ⑦デプロイ Service Deployment Kubernetes Cluster
#RAKUSMeetup CI Pipeline • GitLab CIを選定 ◦ 社内標準ツールであり既にノウハウがあるため ◦ GitLab
Container Registryと組み合わせることで、 コードリポジトリ・コンテナレジストリ・CI環境をまとめて管理できる • その他候補ツール ◦ Tekton ▪ GoogleのKnativeからCI/CDを切り離したツール 18
#RAKUSMeetup CD Pipeline • ArgoCDを選定 ◦ GitOpsの原則を実現するk8s環境のCDツール ◦ Gitリポジトリの状態に合わせて差分検出により自動デプロイを行う ◦
GUIが整備されており、クラスターの可視化や画面からのデプロイが可能 • その他候補ツール ◦ Flux ▪ GitOpsを提唱したWeaveworksのCDツール ◦ JenkinsX 19
#RAKUSMeetup GitOpsで期待できる効果 • CIとCDの分離ができる ◦ 開発チームがCI、インフラチームがCDと役割を明確に分離できる ◦ k8sにはCDからしかアクセスできないため、安全性を高めれる • 使い慣れたGitで開発〜運用を管理できる
◦ リリース用の作業手順の効率化 ◦ 操作履歴は全てcommitやMRの履歴から追跡が可能 20
#RAKUSMeetup まとめ • GitOpsによりk8sの特徴を活かしたCI/CDを構築 ◦ GitLabとArgoCDで構築 ◦ k8s導入はまだ先になりそうだが準備をしておく • k8s・CloudNative領域はツールも膨大で選定が困難
◦ なるべく従来のノウハウを活かせるツールを選定して移行する 21