Slide 1

Slide 1 text

#RAKUSMeetup ©2022 RAKUS Co., Ltd. SRE課が開発中システムの CI/CDで取り組んでいるGitOpsの話 株式会社ラクス 今本光

Slide 2

Slide 2 text

#RAKUSMeetup 今本光(いまもとひかる) SI企業でのエンジニア経験を経て 2021/10にラクスに入社。 SRE課 BusinessPlatform チーム所属。 社内の複数サービスを横断したビ ジネス基盤となるアプリケーション の開発に携わっています。 趣味:野球観戦、サウナ、日向坂46 休日はコワーキングスペースで勉 強したりGoのコードを書いたりす ることが多いです。

Slide 3

Slide 3 text

#RAKUSMeetup 本日お話しする内容 ● 現在開発中のシステムについて(Kubernetesを利用) ● Kubernetesのデプロイについて ● ArgoCDを使ったGitOpsへの取り組み ● GitOpsによって得られるメリット

Slide 4

Slide 4 text

#RAKUSMeetup 現在開発中のシステムについて

Slide 5

Slide 5 text

#RAKUSMeetup 現在開発中のシステムの概要 ● 業務運用課の要望を元に現在開発中の新規システム ● 運用コスト削減や運用作業品質向上を目的としたWebアプリ ○ 現在は人の手で判断・作業している運用業務を削減 ● AWS上にKubernetesを構築してアプリケーションを運用する 想定

Slide 6

Slide 6 text

#RAKUSMeetup デプロイ環境ごとの構成

Slide 7

Slide 7 text

#RAKUSMeetup 全体図

Slide 8

Slide 8 text

#RAKUSMeetup Kubernetesのデプロイについて

Slide 9

Slide 9 text

#RAKUSMeetup コマンドによるデプロイ方法 ● Kubernetesマニフェスト上のコンテナイメージ情報を更新し て、以下のコマンドでデプロイ実施可能 $ kubectl apply -f deployment.yml

Slide 10

Slide 10 text

#RAKUSMeetup kubectl applyにおける課題 ● (1) 誰がいつ変更を適用したかのログが取りづらい ○ 開発者のローカル環境で直接コマンド実行したりすると誰がコマンド実行したか 追えなくなる ● (2) コマンドミスが発生する可能性がある ○ 人の手でコマンド実行する場合、コピペミスや反映する環境の設定ミスで事故が 発生する可能性がある ● (3) クラスタの認証情報を外部に公開する必要がある ○ Kubernetesクラスタの認証情報をコマンド実行者や実行元システムが保持す る必要がある

Slide 11

Slide 11 text

#RAKUSMeetup kubectl applyは課題がいっぱい! ● kubectl applyを打たずにアプリをデプロイしたい!! →この課題に対する解決策としてGitOpsに取り組んでいます。

Slide 12

Slide 12 text

#RAKUSMeetup ArgoCDを使った GitOpsへの取り組み

Slide 13

Slide 13 text

#RAKUSMeetup GitOpsとは ● デプロイに関する問題を解消する手段として、GitOpsという手 法に取り組んでいます。 ● GitOpsとは「アプリだけでなくインフラも含めてシステム全体の コードをGitを使って管理する手法」です。 ● CIだけでなくCDも含めてGit操作だけで完結するようになりま す。

Slide 14

Slide 14 text

#RAKUSMeetup GitOpsを実現するためのツール ● CI:GitHub Actions ○ GitHub上のリポジトリへのPushやPRマージをトリガーに特定の処理を 実行する ● CD:ArgoCD ○ Kubernetes環境でGitOpsを実現するためのCDツール ○ Gitリポジトリ上のKubernetesマニフェストを監視して、変更を検知した らKubernetesクラスタに適用(=デプロイ)

Slide 15

Slide 15 text

#RAKUSMeetup GitOpsの実現方法

Slide 16

Slide 16 text

#RAKUSMeetup GitOpsの実現方法

Slide 17

Slide 17 text

#RAKUSMeetup GitOpsの実現方法

Slide 18

Slide 18 text

#RAKUSMeetup GitOpsの実現方法

Slide 19

Slide 19 text

#RAKUSMeetup GitOpsの実現方法

Slide 20

Slide 20 text

#RAKUSMeetup GitOpsの実現方法

Slide 21

Slide 21 text

#RAKUSMeetup GitOpsによって得られるメリット

Slide 22

Slide 22 text

#RAKUSMeetup GitOpsによって得られるメリット ● デプロイ手順の簡略化 ○ GitHubのCIとPRマージのみで完結するのでデプロイ手順がシンプル ● デプロイ情報のログが残せる ○ GitHub上でのPRマージがデプロイの契機となるので、操作者やデプロイ時刻、デプ ロイ内容のログが自動的に残る ● セキュアなデプロイ手順となる ○ kubectlコマンドでのデプロイと比較して、デプロイ手順ミス等のヒューマンエラーが 起きない ○ クラスタの認証情報もAWS内部で保持すれば良いので、外部に持つ必要があない

Slide 23

Slide 23 text

#RAKUSMeetup まとめ ● Kubernetesクラスタへのデプロイの手法としてGitOpsの実 現に取り組んでいます。 ● GitOpsを実現するツールとしてArgoCDを採用しています。 ● GitHub+ArgoCDでCI/CDを実行することで、kubectlコマ ンドでのデプロイと比較して様々なメリットがあります。

Slide 24

Slide 24 text

#RAKUSMeetup ご清聴ありがとうございました。