Open5

「 Kubernetesマイクロサービス開発の実践」を読んでいく

TocyukiTocyuki

目次

はじめに

  • 本書のターゲット
  • 本書の構成
  • 本書の実行環境

第1章 変化するアプリケーション開発

1-1 近年のアプリケーション開発とKubernetes

  • 1-1-1 システムの高頻度なアップデートの重要性
  • 1-1-2 ITシステム開発におけるパラダイムの変化
  • 1-1-3 マイクロサービスアーキテクチャとは
  • 1-1-4 マイクロサービスアーキテクチャを支える技術

1-2 コンテナの概要

  • 1-2-1 コンテナの提供価値
  • 1-2-2 コンテナの要素技術

1-3 Kubernetesの概要

  • 1-3-1 コンテナオーケストレーションの役割
  • 1-3-2 Kubernetesとは
  • 1-3-3 Kubernetesに対応した製品とその形態
  • 1-3-4 Kubernetesのエコシステム

1-4 まとめ

第2章 コンテナとKubernetes

2-1 Kubernetesのアーキテクチャ

  • 2-1-1 Kubernetesクラスタの全体像
  • 2-1-2 オブジェクトの概要
  • 2-1-3 コントロールプレーンの概要

2-2 コントロールプレーンノードのコンポーネント

  • 2-2-1 kube-apiserver
  • 2-2-2 kube-scheduler
  • 2-2-3 kube-controller-manager
  • 2-2-4 etcd

2-3 ワーカーノードのコンポーネント

  • 2-3-1 kubelet
  • 2-3-2 kube-proxy

2-4 拡張コンポーネント

2-5 Kubernetesのオブジェクト

  • 2-5-1 Kubernetesオブジェクトの基本構造
  • 2-5-2 Workloadsオブジェクト
  • 2-5-3 Discovery&LBオブジェクト
  • 2-5-4 Config&Storageオブジェクト

2-6 まとめ

第3章 アプリケーションのコンテナ化

3-1 本書で取り扱うアプリケーションの概要

  • 3-1-1 Bookinfoの概要
  • 3-1-2 Reviewsサービスの概要

3-2 コンテナアプリケーションの開発の準備

  • 3-2-1 本書で利用する開発環境
  • 3-2-2 Bookinfoアプリケーションのリポジトリの準備
  • 3-2-3 VS Code Dev Containers環境の準備
  • 3-2-4 Reviewsサービスの動作確認
  • 3-2-5 従来型のJavaアプリケーションの課題

3-3 コンテナ運用への移行

  • 3-3-1 アプリケーションの修正
  • 3-3-2 Dockerfileの作成とコンテナのビルド

3-4 Dockerfileの基本

  • 3-4-1 Dockerfileのインストラクション
  • 3-4-2 Dockerfileのベストプラクティス

3-5 まとめ

第4章 Kubernetesへのアプリケーションの展開

4-1 Kubernetesクラスタの構築

  • 4-1-1 EKSクラスタ構築の事前設定
  • 4-1-2 EKSクラスタの構築
  • 4-1-3 ローカル環境からEKSクラスタを利用するための設定

4-2 Reviewsサービスのデプロイ

  • 4-2-1 データベースのデプロイ
  • 4-2-2 アプリケーションのデプロイ

4-3 Bookinfoアプリケーション全体のデプロイ

4-4 まとめ

第5章 アプリケーションの更新とリアーキテクト

5-1 アプリケーションの更新方法

5-2 既存サービス の置き換えだけの更新

  • 5-2-1 ローリングアップデート
  • 5-2-2 Blue/Greenデプロイメント
  • 5-2-3 カナリーデプロイメント

5-3 Reviewsサービスのローリングアップデート

  • 5-3-1 ローリングアップデート用アプリケーションの準備
  • 5-3-2 ローリングアップデート用マニフェストファイルの修正
  • 5-3-3 ローリングアップデートの実施

5-4 アーキテクチャの変更を伴う更新

  • 5-4-1 ストラングラーパターン
  • 5-4-2 抽象化によるブランチ
  • 5-4-3 変更データキャプチャ
  • 5-4-4 アプリケーションでの同期

5-5 Reviewsサービスのマイクロサービス化

  • 5-5-1 移行計画の検討
  • 5-5-2 マイクロサービス化の実施

5-6 まとめ

第6章 アプリケーションのオブザーバビリティ

6-1 オブザーバビリティとは何か

  • 6-1-1 オブザーバビリティがなぜ必要なのか
  • 6-1-2 オブザーバビリティを意識した監視の実装
  • 6-1-3 OpenTelemetry

6-2 Kubernetesにおけるテレメトリの収集

  • 6-2-1 Kubernetesにおけるログの収集
  • 6-2-2 Kubernetesにおけるトレースの収集
  • 6-2-3 Kubernetesにおけるメトリクスの収集

6-3 Bookinfoへのオブザーバビリティの導入

  • 6-3-1 ロギングエージェントのデプロイ
  • 6-3-2 OTel Collectorのデプロイ
  • 6-3-3 Prometheusのデプロイ
  • 6-3-4 Bookinfoへのオブザーバビリティの適用

6-4 まとめ

第7章 アプリケーションの堅牢化

7-1 Podのライフサイクル

  • 7-1-1 Podの起動の前処理
  • 7-1-2 Podの起動
  • 7-1-3 Serviceオブジェクトによるトラフィックの管理
  • 7-1-4 Podの終了
  • 7-1-5 Podのステータス

7-2 Podの安定稼働のためのプラクティス

  • 7-2-1 Podの起動に備える
  • 7-2-2 コンテナの終了に備える
  • 7-2-3 適切なヘルスチェックを設定する
  • 7-2-4 Podの安定化の効果確認

7-3 Podのリソース管理とチューニング

  • 7-3-1 Kubernetesのリソース制御
  • 7-3-2 Javaアプリケーションのチューニング

7-4 様々なPodの停止シナリオに備える

  • 7-4-1 Podやコンテナが停止するシナリオ
  • 7-4-2 API-initiated Evictionとプリエンプション

7-5 まとめ

付録 本書で使用したkubectlコマンド

おわりに

索引

TocyukiTocyuki

第1章 変化するアプリケーション開発

マイクロサービスアーキテクチャの起源は2014年にThoughtWorks, Inc社のマーチン・ファウラーとジェームス・ルイスが提唱したもの
https://martinfowler.com/articles/microservices.html

2008年にeBayが発表した超大規模システムのメンテナンス性や可用性を確保する取り組み
https://www.infoq.com/presentations/shoup-ebay-architectural-principles/

GoogleがKubernetesをOSSとして提供する以前の話
https://speakerdeck.com/jbeda/containers-at-scale

企業別のコントリビューション
https://k8s.devstats.cncf.io/d/9/companies-table?orgId=1