Kubernetesパターン 第2版

―クラウドネイティブアプリケーションのための再利用可能パターン

[cover photo]
TOPICS
System/Network
発行年月日
PRINT LENGTH
392
ISBN
978-4-8144-0088-1
原書
Kubernetes Patterns, 2nd Edition
FORMAT
Print PDF EPUB
Ebook
3,960円
Ebookを購入する
Print
3,960円

マイクロサービスとコンテナの進化に伴い、開発者がソフトウェアを設計、構築、実行する方法は大きく変わりました。これらのアーキテクチャは、分散システムの新しい構成要素を提供し、多くの開発者やアーキテクトが慣れ親しんだものとは異なる一連のプラクティスを必要とします。本書は、Kubernetes上でクラウドネイティブアプリケーションを設計および実装するための再利用可能なパターンを解説します。
はじめに、コンテナベースのクラウドネイティブなアプリケーションを作るための基本原理とプラクティスを紹介し、コンテナとプラットフォーム間の様々な相互作用を管理する方法を説明します。次に、Kubernetesプラットフォームの構成要素であるPod内のコンテナをまとめるためのパターンを紹介し、Kubernetesでのアプリケーション設定の扱い方を学びます。またアプリケーションがコンテナ化され、Kubernetesにデプロイされる時に生じるセキュリティ上の懸念を取り上げ、さらにプラットフォーム自体の拡張方法やクラスタ内で直接コンテナイメージを作る方法を解説します。
実証済みのデザインパターンを使って、クラウドネイティブな課題を解決する本書は、Kubernetesの基礎に精通した開発者やアーキテクトに最適な1冊です。

目次

まえがき
はじめに

1章 序論
    1.1 クラウドネイティブへの道
    1.2 分散アプリケーションの基本的要素
        1.2.1 コンテナ
        1.2.2 Pod
        1.2.3 Service
        1.2.4 Label
        1.2.5 Namespace
    1.3 議論
    1.4 追加情報

第I部 基本パターン

2章 Predictable Demand(予想可能な需要)
    2.1 問題
    2.2 解決策
        2.2.1 実行時の依存関係
        2.2.2 リソースプロファイル
        2.2.3 Podの優先度
        2.2.4 プロジェクトごとのリソース
        2.2.5 キャパシティプランニング
    2.3 議論
    2.4 追加情報

3章 Declarative Deployment(宣言的デプロイ)
    3.1 問題
    3.2 解決策
        3.2.1 ローリングデプロイ
        3.2.2 固定デプロイ
        3.2.3 ブルーグリーンリリース
        3.2.4 カナリアリリース
    3.3 議論
    3.4 追加情報

4章 Health Probe
    4.1 問題
    4.2 解決策
        4.2.1 プロセスヘルスチェック
        4.2.2 Liveness Probe
        4.2.3 Readiness Probe
        4.2.4 Startup Probe
    4.3 議論
    4.4 追加情報

5章 Managed Lifecycle(管理されたライフサイクル)
    5.1 問題
    5.2 解決策
        5.2.1 SIGTERMシグナル
        5.2.2 SIGKILLシグナル
        5.2.3 postStartフック
        5.2.4 preStopフック
        5.2.5 その他のライフサイクル制御方法
    5.3 議論
    5.4 追加情報

6章 Automated Placement(自動的な配置)
    6.1 問題
    6.2 解決策
        6.2.1 利用可能なノードリソース
        6.2.2 コンテナのリソース需要
        6.2.3 スケジューラ設定
        6.2.4 スケジューリングのプロセス
        6.2.5 ノードアフィニティ
        6.2.6 Podアフィニティとアンチアフィニティ
        6.2.7 Topology Spread Constraint
        6.2.8 TaintとToleration
    6.3 議論
    6.4 追加情報

第II部 振る舞いパターン

7章 Batch Job(バッチジョブ)
    7.1 問題
    7.2 解決策
    7.3 議論
    7.4 追加情報

8章 Periodic Job(定期ジョブ)
    8.1 問題
    8.2 解決策
    8.3 議論
    8.4 追加情報

9章 Daemon Service(デーモンサービス)
    9.1 問題
    9.2 解決策
    9.3 議論
    9.4 追加情報

10章 Singleton Service(シングルトンサービス)
    10.1 問題
    10.2 解決策
        10.2.1 アプリケーション外のロック
        10.2.2 アプリケーション内のロック
        10.2.3 Pod Disruption Budget
    10.3 議論
    10.4 追加情報

11章 Stateless Service(ステートレスサービス)
    11.1 問題
    11.2 解決策
        11.2.1 インスタンス
        11.2.2 ネットワーク
        11.2.3 ストレージ
    11.3 議論
    11.4 追加情報

12章 Stateful Service(ステートフルサービス)
    12.1 問題
        12.1.1 ストレージ
        12.1.2 ネットワーク
        12.1.3 アイデンティティ
        12.1.4 順序
        12.1.5 その他の必要事項
    12.2 解決策
        12.2.1 ストレージ
        12.2.2 ネットワーク
        12.2.3 アイデンティティ
        12.2.4 順序
        12.2.5 その他の機能
    12.3 議論
    12.4 追加情報

13章 Service Discovery(サービスディスカバリ)
    13.1 問題
    13.2 解決策
        13.2.1 内部的なサービスディスカバリ
        13.2.2 手動によるサービスディスカバリ
        13.2.3 クラスタ外からのサービスディスカバリ
        13.2.4 アプリケーションレイヤでのサービスディスカバリ
    13.3 議論
    13.4 追加情報

14章 Self Awareness(セルフアウェアネス)
    14.1 問題
    14.2 解決策
    14.3 議論
    14.4 追加情報

第III部 構造化パターン

15章 Init Container(Init コンテナ)
    15.1 問題
    15.2 解決策
    15.3 議論
    15.4 追加情報

16章 Sidecar(サイドカー)
    16.1 問題
    16.2 解決策
    16.3 議論
    16.4 追加情報

17章 Adapter(アダプタ)
    17.1 問題
    17.2 解決策
    17.3 議論
    17.4 追加情報

18章 Ambassador(アンバサダ)
    18.1 問題
    18.2 解決策
    18.3 議論
    18.4 追加情報

第IV部 設定パターン

19章 EnvVar Configuration(環境変数による設定)
    19.1 問題
    19.2 解決策
    19.3 議論
    19.4 追加情報

20章 Configuration Resource(設定リソース)
    20.1 問題
    20.2 解決策
    20.3 議論
    20.4 追加情報

21章 Immutable Configuration(イミュータブル設定)
    21.1 問題
    21.2 解決策
        21.2.1 Dockerボリューム
        21.2.2 KubernetesのInitコンテナ
        21.2.3 OpenShift Templates
    21.3 議論
    21.4 追加情報

22章 Configuration Template(設定テンプレート)
    22.1 問題
    22.2 解決策
    22.3 議論
    22.4 追加情報

第V部 セキュリティパターン

23章 Process Containment(プロセス封じ込め)
    23.1 問題
    23.2 解決策
        23.2.1 ルート以外のユーザでコンテナを動かす
        23.2.2 コンテナのケーパビリティを制限する
        23.2.3 コンテナファイルシステムの変更を防止する
        23.2.4 セキュリティポリシーを強制する
    23.3 議論
    23.4 追加情報

24章 Network Segmentation(ネットワークセグメンテーション)
    24.1 問題
    24.2 解決策
        24.2.1 ネットワークポリシー
        24.2.2 認証ポリシー
    24.3 議論
    24.4 追加情報

25章 Secure Configuration(セキュア設定)
    25.1 問題
    25.2 解決策
        25.2.1 クラスタ外での暗号化
        25.2.2 集中型のシークレット管理
    25.3 議論
    25.4 追加情報

26章 Access Control(アクセス制御)
    26.1 問題
    26.2 解決策
        26.2.1 認証
        26.2.2 認可
        26.2.3 アドミッションコントローラ
        26.2.4 サブジェクト(誰)
        26.2.5 ロールベースアクセス制御(RBAC)
    26.3 議論
    26.4 追加情報

第VI部 高度なパターン

27章 Controller(コントローラ)
    27.1 問題
    27.2 解決策
    27.3 議論
    27.4 追加情報

28章 Operator(オペレータ)
    28.1 問題
    28.2 解決策
        28.2.1 Custom Resource Definition
        28.2.2 コントローラとオペレータの分類
        28.2.3 オペレータの開発とデプロイ
        28.2.4 例
    28.3 議論
    28.4 追加情報

29章 Elastic Scale(エラスティックスケール)
    29.1 問題
    29.2 解決策
        29.2.1 手動での水平Podスケーリング
        29.2.2 水平Podオートスケーリング
        29.2.3 垂直Podオートスケーリング
        29.2.4 クラスタオートスケーリング
        29.2.5 スケーリングレベル
    29.3 議論
    29.4 追加情報

30章 Image Builder(イメージビルダ)
    30.1 問題
    30.2 解決策
        30.2.1 コンテナイメージビルダ
        30.2.2 ビルドオーケストレータ
        30.2.3 ビルドPod
        30.2.4 OpenShift Build
    30.3 議論
    30.4 追加情報

あとがき
訳者あとがき
索引