Slide 1

Slide 1 text

クラスターを分割するという運用の現実解 ~ Pod を VM のように使い始めたら見えてきた世界 ~ 1 © 2023 CASAREAL,Inc. 株式会社カサレアル 野中 翔太

Slide 2

Slide 2 text

PROFILE 2 © 2023 CASAREAL,Inc. 野中 翔太 / casa_snona 株式会社カサレアル プロフェッショナルソリューション技術部 ・クラウドインフラ関連のお仕事をしています。 ・今年、第一子(娘)が生まれました! Favorite

Slide 3

Slide 3 text

株式会社カサレアル 設立 :1999年7月2日 従業員数:84名(2023年9月現在) 株主構成:テクマトリックス株式会社 所在地 :東京都港区港南1-2-70 品川シーズンテラス 24 階 3 © 2023 CASAREAL,Inc.

Slide 4

Slide 4 text

事業紹介 4 © 2023 CASAREAL,Inc. ラーニングサービス • 研修事業 • オープン研修 • カスタムメイド研修 • 新入社員研修 • 技術支援/内製化支援 クラウドネイティブ 推進支援サービス • プロフェッショナルサービス • クラウドネイティブ推進支援 • DevSecOps 環境構築支援 • 開発プロセス/テスト自動化支援 • クラウドネイティブ道場 ビジネス ソリューション • 受託開発/SES • システム構築サービス • 開発支援サービス • パッケージサービス

Slide 5

Slide 5 text

AGENDA • 運用改善プロジェクトは突然に • VM から Kubernetes へ • クラスター分割 • まとめ 5 © 2023 CASAREAL,Inc.

Slide 6

Slide 6 text

運用改善プロジェクトは突然に 6 © 2023 CASAREAL,Inc.

Slide 7

Slide 7 text

運用改善プロジェクトは突然に 7 © 2023 CASAREAL,Inc. 上 野 うちに来てくれてる協力会 社さんいるじゃない? 彼らの開発環境なんだけど、 ブラウザ経由でデスクトッ プにアクセスしてもらって るんだよね。 はい、いますね。 たしか、ブラウザさえあれ ばどこでも開発環境にアク セスできるんですよね。

Slide 8

Slide 8 text

運用改善プロジェクトは突然に 8 © 2023 CASAREAL,Inc. 上 野 そうそう。 実はあれ、VM を1人1台 構築してあげてるんだよね。 しかも担当者が手動で構築 してインストールとかやっ てるから結構時間がかかっ てるんだよ。 そうなんですねぇ。 大変そうですね。

Slide 9

Slide 9 text

運用改善プロジェクトは突然に 9 © 2023 CASAREAL,Inc. 上 野 かわいそうだと思うよね~ てなわけで助けてあげてほ しんだよね、お得意なクラ ウドネイティブで! あっ、はい…

Slide 10

Slide 10 text

運用改善プロジェクトは突然に 運用改善チームを結成 10 © 2023 CASAREAL,Inc. 上

Slide 11

Slide 11 text

運用改善プロジェクトは突然に 課題 • VM の手動構築に時間がかかる • 協力会社さんの増員後、すぐに開発環境を用意できない • 手動構築なので設定もれなどがたまにある 11 © 2023 CASAREAL,Inc. まだ かな?

Slide 12

Slide 12 text

運用改善プロジェクトは突然に 改善方針 • 開発環境をコンテナ化 • 複数のコンテナをすぐに起動できる • コンテナイメージとしてパッケージングすることで再現性の担保 • オーケストレーションするために Kubernetes を導入 12 © 2023 CASAREAL,Inc.

Slide 13

Slide 13 text

INDEX • VM から Kubernetes へ 13 © 2023 CASAREAL,Inc.

Slide 14

Slide 14 text

VM から Kubernetes へ 14 © 2023 CASAREAL,Inc.

Slide 15

Slide 15 text

VM から Kubernetes へ VM 時代はこんな感じでした 15 © 2023 CASAREAL,Inc. AWS Cloud 手順書通りに構築 増員分の環境準備 お願いします。 これ終わったら 着手します。 別の案件と掛け持ちしながら... AWS の UI 変わった? できあがり! 増員分の EC2 構築 開発ツールインストール 数時間後...

Slide 16

Slide 16 text

VM から Kubernetes へ VM で運用していたものを Kubernetes へ 16 © 2023 CASAREAL,Inc. 開発チーム別に構築された EC2 インスタンス × 開発者数 CI/CD パイプライン コントローラー×1 エージェント×5

Slide 17

Slide 17 text

VM から Kubernetes へ まずは開発環境をコンテナ化 17 © 2023 CASAREAL,Inc. Kasm が提供する デスクトップ環境のコンテナイメージを ベースイメージとしてコンテナ化

Slide 18

Slide 18 text

VM から Kubernetes へ (images) とは • Kasm Workspaces(The Container Streaming Platform®)を開発している企 業が、OSS として公開している Docker イメージ • デスクトップ環境(VNC)が構築済みのイメージ • Dockerfile を自由にカスタマイズすることが可能 • カサレアルでは開発環境毎(Java、Python、Node.js etc...)にカスタマイズした Dockerfile を Git 管理している 18 © 2023 CASAREAL,Inc.

Slide 19

Slide 19 text

VM から Kubernetes へ こんな感じの開発環境が出来上がる 19 © 2023 CASAREAL,Inc. IntelliJ IDEA をインストール するようにカスタマイズ ブラウザで開発環境へアクセス IntelliJ IDEA で簡単な Java コードを実行

Slide 20

Slide 20 text

VM から Kubernetes へ CI/CD 環境をコンテナ化 • Jenkins 自体のコンテナ化は不要 20 © 2023 CASAREAL,Inc. コントローラーは Helm Chart でインストール エージェントは Jenkins の Kubernetes Plugin によって動的に作成される It’s スケーラブル!

Slide 21

Slide 21 text

VM から Kubernetes へ Kubernetes Plugin って? • Kubernetes クラスターで動的エージェントを実行するための Jenkins Plugin 21 © 2023 CASAREAL,Inc. Kubernetes クラスター ジョブ実行! ユーザ コントローラー エージェント Pod が起動して ジョブを実行する ジョブが終了したら Pod が消滅

Slide 22

Slide 22 text

VM から Kubernetes へ Kubernetes へデプロイ 22 © 2023 CASAREAL,Inc. Kubernetes クラスター Java 開発チーム Python 開発チーム1 Python 開発チーム2 Front End 開発チーム CI/CD

Slide 23

Slide 23 text

VM から Kubernetes へ Kubernetes で構築プロセスはどうなった? 23 © 2023 CASAREAL,Inc. 構築が簡単に 増員分の環境準備 お願いします。 これ終わったら 着手します。 別の案件と掛け持ちしながら... マニフェストを アプライ! できあがり! Kubernetes クラスター 開発環境 増員!

Slide 24

Slide 24 text

VM から Kubernetes へ Kubernetes へ移行してよかったこと① • 構築作業の簡素化 • 構築にかかる時間を約 80% 削減 • 人的エラーを解消し、再現性を向上 24 © 2023 CASAREAL,Inc.

Slide 25

Slide 25 text

VM から Kubernetes へ Kubernetes へ移行してよかったこと② • 責任分界点の偏りを解消 • クラスターとネットワーク管理は運用チームが責任を持つ • 環境構築用の Dockerfile は各開発チームが責任を持つ 25 © 2023 CASAREAL,Inc. アプリ OS/開発ツール 基盤 ネットワーク 開発チーム 運用チーム VM 開発チーム 運用チーム K8s

Slide 26

Slide 26 text

VM から Kubernetes へ Kubernetes へ移行してよかったこと③ • AWS 利用料の削減 • 月額の利用料を約 15% 削減 26 © 2023 CASAREAL,Inc.

Slide 27

Slide 27 text

VM から Kubernetes へ VM の構築に時間がかかっていた課題は解決 27 © 2023 CASAREAL,Inc. 上

Slide 28

Slide 28 text

VM から Kubernetes へ いいことばかりではなく... 28 © 2023 CASAREAL,Inc. 開発環境の動作が全体的に モッサリしてる! Jenkins のジョブが なかなか始まらない... 遅くて仕事にならない!

Slide 29

Slide 29 text

VM から Kubernetes へ 何が起きたのか? 29 © 2023 CASAREAL,Inc. Kubernetes クラスター Java 開発チーム Python 開発チーム1 Python 開発チーム2 Front End 開発チーム CI/CD

Slide 30

Slide 30 text

VM から Kubernetes へ 何が起きていたかというと... 30 © 2023 CASAREAL,Inc. Kubernetes クラスター Java 開発チーム リソース全然 足りないぜ エージェントの Pod が起動できない VSCode は軽量なはずなのに なんか重い

Slide 31

Slide 31 text

VM から Kubernetes へ とりあえずワークアラウンド的解決 • ワーカーノードのノード数増加 • ワーカーノードのスペック向上 これはあるべき姿なのか 31 © 2023 CASAREAL,Inc.

Slide 32

Slide 32 text

VM から Kubernetes へ 新たな課題 • 特定の高負荷 Pod がクラスター全体の安定性に影響を与えてしまう • K8s のバージョンアップが行いづらい • 各チームへのお伺いが必要 • 全てのチームの足並みをそろえざるを得ない • 納期が近いからもう少し待ってほしい etc... どこかで聞いたような課題だなぁ 32 © 2023 CASAREAL,Inc.

Slide 33

Slide 33 text

VM から Kubernetes へ なんかモノリスっぽいぞ 33 © 2023 CASAREAL,Inc.

Slide 34

Slide 34 text

VM から Kubernetes へ モダンなプラットフォーム(K8s)であっても 運用がモノリスになりがち クラスターの責務を分散できないか? 34 © 2023 CASAREAL,Inc.

Slide 35

Slide 35 text

INDEX • クラスター分割 35 © 2023 CASAREAL,Inc.

Slide 36

Slide 36 text

クラスター分割 36 © 2023 CASAREAL,Inc.

Slide 37

Slide 37 text

クラスター分割 一般的な複数クラスターの構成パターン 37 © 2023 CASAREAL,Inc. 同じインフラで 複数クラスターを扱う マルチクラウドで 複数クラスターを扱う ハイブリットクラウドで 複数クラスターを扱う 今回はこのパターン

Slide 38

Slide 38 text

クラスター分割 分割単位 • 開発チーム単位と共有リソースで分割 38 © 2023 CASAREAL,Inc. Kubernetes クラスター …共有リソース …開発チームA …開発チームB …開発チームC 開発チームA 開発チームB 開発チームC CI/CD 分割前のモノリスクラスター 分割されたクラスター

Slide 39

Slide 39 text

クラスター分割 複数のクラスターを管理するのは大変じゃないか 39 © 2023 CASAREAL,Inc. クラスター管理は任せて!

Slide 40

Slide 40 text

クラスター分割 とは • Kubernetes 管理プラットフォームの OSS • ハイブリットやマルチクラウドで KaaS(K8s as a Service) を実現する • カタログ(Helm Chart)によるアプリの GUI 管理 • アプリ無停止で K8s をバージョンアップ • グループ化したクラスターへの共通的なリソース作成 40 © 2023 CASAREAL,Inc.

Slide 41

Slide 41 text

クラスター分割 クラスター分割後の構成 41 © 2023 CASAREAL,Inc. 開発チームA 開発チームB 開発チームC CI/CD 管理クラスター ブラウザで 操作 ネットワーク経由で 監視・制御

Slide 42

Slide 42 text

クラスター分割 Rancher を導入してよかったこと① • 開発環境毎のカタログを GUI で管理できる 42 © 2023 CASAREAL,Inc. 1.カタログを選択 2.「Install」クリック 3.Values 設定 4.「Install」クリック

Slide 43

Slide 43 text

クラスター分割 Rancher を導入してよかったこと② • K8s のバージョンアップが容易 • クラスターのコンフィグ変更(GUI)でバージョンアップが可能 • 稼働中の開発環境を無停止でバージョンアップできる 43 © 2023 CASAREAL,Inc.

Slide 44

Slide 44 text

クラスター分割 Rancher を導入してよかったこと③ • 共通的なリソースの自動作成が容易 • 例)Java 開発環境のクラスターは想定以上のリソースを 利用しないようにリソースクォータを設定 44 © 2023 CASAREAL,Inc. Java 開発チーム1 Java 開発チーム2 Java 開発グループ 管理クラスター リソースクォータの カタログ

Slide 45

Slide 45 text

INDEX • まとめ 45 © 2023 CASAREAL,Inc.

Slide 46

Slide 46 text

まとめ • VM の開発環境をコンテナ化して K8s へ • 構築時間を大幅に削減した • クラスターをチーム単位で分割 • 特定の高負荷 Pod による影響を限定的にした • K8s のバージョンアップを行いやすくした • Rancher の導入 • 複数クラスターの管理をしやすくした 46 © 2023 CASAREAL,Inc.

Slide 47

Slide 47 text

まとめ 数々の課題を解決して無事にミッション達成 47 © 2023 CASAREAL,Inc. 上

Slide 48

Slide 48 text

まとめ 現状の最適がこの先も最適とは限らない 最高傑作のアーキテクチャに拘らず 柔軟なアーキテクチャを目指すべき 48 © 2023 CASAREAL,Inc.