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
Kubernetes導入に備えたGitOpsなCI/CDを構築する/rakus_meetup_...
Search
txkxyx
June 02, 2022
0
980
Kubernetes導入に備えたGitOpsなCI/CDを構築する/rakus_meetup_202206
2022/6/1(水)19:00〜 【ラクスMeetup】技術刷新の課題取り組み - 共通基盤/k8s/技術ロードマップ -での発表資料です。
txkxyx
June 02, 2022
Tweet
Share
More Decks by txkxyx
See All by txkxyx
PostCSSの導入検証 / r&d_meetup_css_t_okkan
txkxyx
0
910
ゲーム開発で始めるオブジェクト指向 / ooltjp_vol3_t_okkan
txkxyx
1
520
Technology selection for mobile cross-platform
txkxyx
0
94
itbookslt_vol2_takuyaokamoto
txkxyx
0
15k
Rakusmeetup_20210804_Takuya_Okamoto
txkxyx
0
1.6k
今年やることやらないこと
txkxyx
0
44
クロスプラットフォームの技術選定 ~ライブラリ編~
txkxyx
0
330
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Building Your Own Lightsaber
phodgson
102
6k
Optimizing for Happiness
mojombo
376
69k
GraphQLの誤解/rethinking-graphql
sonatard
66
9.9k
Bash Introduction
62gerente
608
210k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
355
29k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
What's in a price? How to price your products and services
michaelherold
243
11k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
46
2.1k
We Have a Design System, Now What?
morganepeng
50
7.2k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
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