関連サイト
本書の関連ページが用意されています。
内容紹介
本書では、クラウドネイティブに求められる背景やトレンドを押さえるとともに、「Kubernetes」やそのエコシステムを利用し、クラウドネイティブアプリケーションの実装について解説しています。Kubernetesは、コンテナを管理するコンテナオーケストレーションツールであり、これを活用することで、適切なインフラリソースの提供だけではなく、アプリケーションの開発や展開が、容易かつ動的に行える環境を構築できます。
本書の読者対象は、これからクラウドネイティブアプリケーションの開発・運用を始める方です。したがってその内容も、Kubernetesとそのエコシステムを活用したアプリケーションの開発、運用にフォーカスしています。最初にKubernetesそのものの仕組みの基礎を説明したあとは、その上で動くアプリケーションを運用するために必要なエコシステムやその活用方法に重点を置いています。
全体は、2部構成になっており、第1部では、クラウドネイティブアプリケーションを支える技術の一つとして注目される、Kubernetesの概要を紹介します。クラウドネイティブの考え方からKubernetesが提供するコンポーネントの役割まで、本書を読み進める上でのポイントを取り上げます。
第2部では、Kubernetesエコシステムを活用して、クラウドネイティブアプリケーションの開発やその上で動くアプリケーションの管理方法を紹介します。クラウドの特徴を活かしたアプリケーション開発や運用の重要性を取り上げます。
書誌情報
- 著者: 北山 晋吾, 早川 博
- 発行日: 2019-07-12 (紙書籍版発行日: 2019-07-12)
- 最終更新日: 2019-07-12
- バージョン: 1.0.0
- ページ数: 424ページ(PDF版換算)
- 対応フォーマット: PDF, EPUB
- 出版社: インプレス
対象読者
サーバー管理者、サーバー提案SE、システムインテグレータ、Linuxサーバー保守担当者技術レベル:中級。過去にRHEL互換OSを使ってシステム提案、日常業務を担当、導入、保守経験がある
著者について
北山 晋吾
EC事業のインフラ運用や、ベンダーでのシステムインテグレーション業務を経て、現在はレッドハット株式会社に勤務。エンタープライズ向けのKubernetes管理ツールであるRed Hat OpenShiftのソリューションアーキテクトとして、ソリューション戦略企画やコンサルティングを行っている。また、仕事の傍らMBAを取得し、ユーザー/ベンダーの業務経験と経営の視点を活かしながら業務に邁進している。
なお、オープンソース界隈を中心とするコミュニティ活動を趣味としており、業務問わずコミュニティ運営や登壇を生きがいに楽しんでいる。本書の他にも、『Ansible実践ガイド』『GitLab実践ガイド』(インプレス)を始めとする書籍なども執筆。
エンタープライズの世界にも、オープンソースを普及することを夢に、日々情報発信できるよう努めている。
早川 博
エンタープライズ向け業務アプリケーションパッケージの開発者を経て2015年より現職。現在は日本オラクル株式会社にて、クラウドネイティブな技術スタック専任のソリューション・アーキテクトとして、クラウドを活用したシステム設計の技術支援・提案に従事。
コンテナ、Kubernetesを中心としたクラウドネイティブ領域の他、マイクロサービスアーキテクチャ、DevOps等のアプリケーション設計/開発手法を専門領域とし、日本のエンタープライズITのデジタルトランスフォーメーションを支援すべく奔走中。
業務の傍ら、開発者コミュニティ「Cloud Native Developers JP (cndjp)」の立ち上げ、運営にも取り組み、この技術領域の普及促進のための情報発信にも取り組んでいる。
目次
はじめに
- 本書のターゲット/諸注意
- 本書の構成
- 本書の実行環境/本書で使用するコード
- 本書の表記
第 1 部 Kubernetes の基礎知識
第 1 章 クラウドネイティブが目指す世界
- 1-1 クラウドネイティブとは
- 1-1-1 クラウドネイティブが提供するビジネス価値
- 1-1-2 クラウドネイティブを支える構成要素
- 1-1-3 クラウドネイティブアプリケーションの方法論
- 1-2 クラウドネイティブを推進する団体
- 1-2-1 CNCF の役割
- 1-2-2 CNCF のプロジェクト
- 1-3 クラウドネイティブに求められる組織体制
- 1-3-1 プロセスと組織の変革
- 1-3-2 組織がたどる継続的な改善
- 1-4 まとめ
第 2 章 コンテナを支える技術
- 2-1 コンテナの概要/2-1-1 コンテナの提供価値
- 2-1-2 コンテナの要素技術
- 2-1-3 OCI によるコンテナ技術の標準化
- 2-1-4 コンテナランタイムのレイヤ
- 2-2 Kubernetes の概要/2-2-1 コンテナオーケストレーションの役割
- 2-2-2 Kubernetes とは
- 2-2-3 Kubernetes に対応した製品とその形態
- 2-2-4 Kubernetes のエコシステム
- 2-3 まとめ
第 3 章 Kubernetes のアーキテクチャ
- 3-1 Kubernetes クラスタの全体像
- 3-1-1 オブジェクトの概要
- 3-1-2 コントロールプレーンの概要
- 3-2 マスターノードのコンポーネント/3-2-1 kube-apiserver
- 3-2-2 kube-scheduler
- 3-2-3 kube-controller-manager
- 3-2-4 etcd
- 3-3 ワーカーノードのコンポーネント
- 3-3-1 kubelet
- 3-3-2 kube-proxy
- 3-4 拡張コンポーネント
- 3-4-1 Service Discovery
- 3-4-2 Visualization & Control
- 3-5 まとめ
第 4 章 Kubernetes クラスタの構築
- 4-1 kubeadm
- 4-1-1 kubeadm を利用したクラスタ概要
- 4-1-2 クラスタノードの準備
- 4-1-3 マスターノードの構築
- 4-1-4 ワーカーノードの構築
- 4-2 Azure Kubernetes Service
- 4-2-1 AKS を利用したクラスタ概要
- 4-2-2 AKS の構築
- 4-3 サンプルコンテナのデプロイ/4-3-1 Hello World
- 4-4 まとめ
第 5 章 Kubernetes オブジェクトの概要
- 5-1 主要なオブジェクト
- 5-1-1 Pod
- 5-1-2 ReplicaSet
- 5-1-3 Deployment
- 5-1-4 Service
- 5-2 オブジェクトを利用したアプリケーション展開
- 5-2-1 Sock Shop のアーキテクチャ
- 5-2-2 Sock Shop のデプロイ
- 5-2-3 Pod フィールドの詳細
- 5-2-4 環境変数の取り扱い
- 5-3 オブジェクトを活用したオートスケール/5-3-1 Pod のオートスケール
- 5-3-2 水平オートスケール(HPA)
- 5-3-3 垂直オートスケール(VPA)
- 5-4 まとめ
第 2 部 クラウドネイティブアプリケーションの開発・運用
第 6 章 コンテナアプリケーションカタログ
- 6-1 YAML の管理
- 6-2 パッケージマネージメント
- 6-2-1 Helm の概要
- 6-2-2 Chart の展開
- 6-2-3 Chart のカスタマイズ
- 6-3 カスタムマネージドサービス
- 6-3-1 Operator の概要
- 6-3-2 Operator の展開
- 6-3-3 Operator の活用
- 6-4 まとめ
第 7 章 継続的インテグレーション
- 7-1 クラウドネイティブな継続的インテグレーション
- 7-1-1 継続的インテグレーションのフェーズ
- 7-2 コンテナビルド/7-2-1 コンテナビルドの概要
- 7-2-2 BuildKit によるコンテナビルド
- 7-2-3 Kaniko によるコンテナビルド
- 7-3 コンテナセキュリティ/7-3-1 コンテナアプリケーションセキュリティ
- 7-3-2 Clair の概要
- 7-3-3 Clair の実装
- 7-4 コンテナアプリの継続的な開発ワークフロー
- 7-4-1 Skaffold の概要
- 7-4-2 Skaffold の実装
- 7-5 まとめ
第 8 章 継続的デリバリ
- 8-1 クラウドネイティブな継続的デリバリ
- 8-1-1 デプロイメント戦略
- 8-1-2 Spinnaker の概要
- 8-1-3 Spinnaker のインストール
- 8-2 Blue/Green デプロイメント
- 8-2-1 Spinnaker の Sock Shop デプロイメント
- 8-2-2 Blue/Green デプロイメントパイプライン
- 8-3 Canary デプロイメント
- 8-3-1 自動カナリア分析の事前準備
- 8-3-2 自動カナリア分析のパイプライン
- 8-4 まとめ
第 9 章 マイクロサービス
- 9-1 マイクロサービスアーキテクチャの概要
- 9-1-1 モノリシックアーキテクチャの課題
- 9-1-2 マイクロサービスアーキテクチャによる設計/9-1-3 マイクロサービスアーキテクチャの利点
- 9-1-4 マイクロサービスアーキテクチャの課題
- 9-2 サービスメッシュの概念/9-2-1 サービスメッシュの利点
- 9-2-2 Istio の概要
- 9-2-3 Istio のアーキテクチャ
- 9-3 Kubernetes への Istio の展開
- 9-3-1 Kubernetes 上の Istio
- 9-3-2 Istio のインストール
- 9-3-3 サービスメッシュ上へのSock Shop の展開
- 9-4 耐障害性の向上/9-4-1 リトライ
- 9-4-2 パフォーマンス劣化への対応/9-4-3 タイムアウト
- 9-4-4 サーキットブレイカー
- 9-5 サービスの安全な更新/9-5-1 Blue/Green デプロイメント
- 9-5-2 Canary デプロイメント
- 9-6 カオスエンジニアリング
- 9-6-1 Istio によるフォールトインジェクション
- 9-7 分散トレーシング
- 9-7-1 分散トレーシングのための標準技術
- 9-7-2 Istio と Jaeger による分散トレーシング
- 9-7-3 Jaeger によるトレースの分析
- 9-8 まとめ