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
1k
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
930
ゲーム開発で始めるオブジェクト指向 / ooltjp_vol3_t_okkan
txkxyx
1
530
Technology selection for mobile cross-platform
txkxyx
0
100
itbookslt_vol2_takuyaokamoto
txkxyx
0
15k
Rakusmeetup_20210804_Takuya_Okamoto
txkxyx
0
1.6k
今年やることやらないこと
txkxyx
0
45
クロスプラットフォームの技術選定 ~ライブラリ編~
txkxyx
0
330
Featured
See All Featured
KATA
mclloyd
29
14k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.9k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2k
GitHub's CSS Performance
jonrohan
1031
460k
Java REST API Framework Comparison - PWX 2021
mraible
28
8.3k
The Cost Of JavaScript in 2023
addyosmani
46
7k
Optimizing for Happiness
mojombo
376
70k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
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