ISBN 9784814400881
Kubernetesパターン(第2版) : クラウドネイティブアプリケーションのための再利用可能パターン
- 出版社
- オライリー・ジャパン
- 刊行
- 2024-09
概要
Kubernetes上でクラウドネイティブアプリを再利用可能パターンで設計する
想定読者
Kubernetesとコンテナでマイクロサービスをすでにまたはこれから本番運用するエンジニア・アーキテクト
こんな人には向いていない
- Kubernetesを初めて触る入門段階の読者。kubectlやDeploymentの基本を習得した後に読む書籍であり、「まずDockerを知りたい」段階には抽象度が高すぎる
- 特定言語のアプリ実装チュートリアルを求めている読者。本書は実装詳細よりも設計判断に軸足を置いており、コードをそのまま写して動かす用途には向いていない
- OperatorやカスタムコントローラをすでにGoで実装・運用している上級者には、前半の基礎パターン群の比重が大きく感じる可能性がある
この本で身につくこと
- Pod・Deployment・Service等の主要リソースを、問題解決の文脈に沿ったパターンとして選択・組み合わせる設計判断力
- LivenessProbe/ReadinessProbeを用いたヘルスチェックパターンと、グレースフルシャットダウンを含むアプリのライフサイクル管理設計
- ConfigMap/Secretを活用した設定の外部化と、アプリイメージをimmutableに保つ12-Factor的アプローチの実践
- サイドカー・アンバサダー・アダプターなどマルチコンテナパターンのユースケース別の使い分けと採用根拠の言語化
- StatefulSetおよびOperatorパターンを用いたステートフルワークロードの管理手法と、そのトレードオフ
ハイライト(外部からの言���)
各パターンでは、問題の説明とKubernetes固有の解決策を示し、具体的なコード例を示します。 — 出典
「問題→解決策→コード例」という本書一貫の記述スタイルを端的に示しており、設計判断の参照書として使う際の実用価値が伝わる
章立て
第1章 序論
Kubernetes の基本コンセプトと本書のパターン分類体系を提示する導入
第2章 Predictable Demand(予想可能な需要)
第I部 基本パターン。リソースリクエスト/リミットの基本
第3章 Declarative Deployment(宣言的デプロイ)
Deployment / DaemonSet / StatefulSet の使い分け
第4章 Health Probe
liveness / readiness / startup の使い分け。本番運用の必須知識
第5章 Managed Lifecycle(管理されたライフサイクル)
preStop / SIGTERM の扱い。グレースフルシャットダウンの実装
第6章 Automated Placement(自動的な配置)
NodeSelector / Affinity / Taint-Tolerationによるスケジューリング制御。マルチゾーンやGPUノード分離など実務要件が多く、早めに習得しておきたい章
第7章 Batch Job(バッチジョブ)
第II部 振る舞いパターン
第8章 Periodic Job(定期ジョブ)
CronJobのスケジューリングと失敗ポリシー設定。バッチワークロード移行時の典型的な問題(ジョブ重複実行・並列数制御)を扱い、実務適用で最初につまずきやすい箇所
第9章 Daemon Service(デーモンサービス)
DaemonSetで全ノードに監視エージェントやログ収集コンテナを展開するパターン。クラスタ全体の可観測性インフラ構築で必ず参照する実務頻出の章
第10章 Singleton Service(シングルトンサービス)
クラスタ内で1インスタンスのみ維持する排他制御パターン。分散ロックが使えない状況でのリーダー選出設計の指針として参照価値が高い
第11章 Stateless Service(ステートレスサービス)
水平スケールを支えるステートレス設計の原則整理。12-FactorのProcessステートレス原則とDeployment設計の接続点を押さえる
第12章 Stateful Service(ステートフルサービス)
StatefulSet と PV/PVC の関係。データベースを K8s で動かす指針
第13章 Service Discovery(サービスディスカバリ)
KubernetesのDNSベースサービス検出とHeadless Serviceの使い方。ServiceMesh導入前の基礎として確実に押さえておく章
第14章 Self Awareness(セルフアウェアネス)
DownwardAPIでPodが自身のメタデータ(名前・ノード名・リソース制限)を取得するパターン。分散トレーシングやシャードID自動割当で頻出
第15章 Init Container
第III部 構造化パターン
第16章 Sidecar(サイドカー)
Service Mesh / 監視エージェントなど現代の K8s で頻出
第17章 Adapter(アダプタ)
既存コンテナ出力を標準フォーマットに変換するサイドカーパターン。Prometheusメトリクス変換やログ正規化の実装で典型的に使われる
第18章 Ambassador(アンバサダ)
外部サービスへの通信をサイドカーが代理するプロキシパターン。TLS終端・レート制限・リトライを本体コンテナから切り出す設計として有効
第19章 EnvVar Configuration(環境変数による設定)
第IV部 設定パターン
第20章 Configuration Resource(設定リソース)
ConfigMapとSecretをKubernetesリソースとして管理する設計。Helmやkustomizeと組み合わせた環境別設定注入の参照点として活用できる
第21章 Immutable Configuration(イミュータブル設定)
ConfigMapをimmutableに固定し設定変更を新リソース作成で行うパターン。予期しない設定変更によるPod再起動を防ぐ、運用上重要な手法
第22章 Configuration Template(設定テンプレート)
InitContainerで設定ファイルをテンプレートから生成するパターン。Helmテンプレートとのアプローチの差異を比較しながら読む価値がある
第23章 Process Containment(プロセス封じ込め)
第V部 セキュリティパターン
第24章 Network Segmentation(ネットワークセグメンテーション)
NetworkPolicy / Service Mesh による細粒度制御
第25章 Secure Configuration(セキュア設定)
SecretをVaultや外部シークレットストアと連携させる設計。本番環境でのシークレット漏洩防止に向けた運用パターンが集約された章
第26章 Access Control(アクセス制御)
RBAC / ServiceAccount の運用パターン
第27章 Controller(コントローラ)
第VI部 高度なパターン
第28章 Operator(オペレータ)
本書の到達点の 1 つ。CRD + Controller でドメイン知識を Kubernetes に組み込む
第29章 Elastic Scale(エラスティックスケール)
HPA / VPA / Cluster Autoscaler の組合せ
第30章 Image Builder(イメージビルダ)
Tekton・Kanikoなどクラスタ内でのコンテナイメージビルドパターン。DockerデーモンレスビルドとCI/CD統合設計の参照点として活用できる
学習のヒント
- カタログ形式の構成なので、最初から順読みせず、現在の開発・運用で直面している課題(設定管理、スケーリング、ヘルスチェック等)に対応するパターン章から参照し実務適用した後、改めて全体を通読すると定着が早い
- 各パターン冒頭の「問題の説明」を先に読み、自分の現場で類似の悩みがあるか確認してから「Kubernetes固有の解決策」に進むと、パターン採用の必然性を腑に落とせる
- 第1版経験者は版ごとの追加・改訂パターンを先に把握することで再読コストを最小化できる。新規パターンの位置づけを確認しながら差分を優先的に吸収する読み方が効率的
前提知識
- Dockerコンテナの基本操作とDockerfileによるイメージ作成の経験
- kubectlを用いてPod・Deployment・Serviceを作成・確認できる程度のKubernetes基本操作
- マイクロサービスアーキテクチャの概念的な理解(モノリスとの違いが説明できる程度で十分)
次に読む本
Kubernetes in Action
本書がパターンの「何を」「いつ使うか」を示すのに対し、Kubernetes in Actionはコントローラループ・スケジューラ・etcd連携の内部機構を段階的に解説する。パターン採用の根拠を設計レベルで説明できるようになる次の一冊
Programming Kubernetes
Operatorパターンの実装に踏み込む際のGo + controller-runtimeによる実践書。本書でOperatorパターンの概念を掴んだ後の次ステップ
クラウドネイティブパターン
本書がKubernetes上のパターン実装に特化するのに対し、分散システム全般のサービスメッシュ・イベント駆動・回路遮断器といった設計原則を扱う。Kubernetesパターンを習得した後に設計適用範囲を体系的に広げる補完書
出版社による内容紹介
Kubernetesやコンテナを使ったシステムを作る際の問題を網羅! マイクロサービスとコンテナの進化に伴い、ソフトウェアの設計、構築、実行方法が大きく変わったため、これまで多くの開発者やアーキテクトが使い慣れている方法とは異なるプラクティスを必要とします。本書はKubernetes上でクラウドネイティブアプリケーションを設計および実装するための再利用可能なパターンと原則について解説します。各パターンでは、問題の説明とKubernetes固有の解決策を示し、具体的なコード例を示します。
この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。