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
1.2k
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
寿命の長いドキュメントの 鮮度を保つ仕組み
txkxyx
0
280
PostCSSの導入検証 / r&d_meetup_css_t_okkan
txkxyx
0
1k
ゲーム開発で始めるオブジェクト指向 / ooltjp_vol3_t_okkan
txkxyx
1
560
Technology selection for mobile cross-platform
txkxyx
0
110
itbookslt_vol2_takuyaokamoto
txkxyx
0
15k
Rakusmeetup_20210804_Takuya_Okamoto
txkxyx
0
1.8k
今年やることやらないこと
txkxyx
0
47
クロスプラットフォームの技術選定 ~ライブラリ編~
txkxyx
0
370
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.2k
Balancing Empowerment & Direction
lara
4
690
Designing for Performance
lara
610
69k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
GraphQLとの向き合い方2022年版
quramy
49
14k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Site-Speed That Sticks
csswizardry
11
900
The Invisible Side of Design
smashingmag
302
51k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Mobile First: as difficult as doing things right
swwweet
224
10k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
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