Software Design plusシリーズKubernetes実践入門 プロダクションレディなコンテナ&アプリケーションの作り方
2019年3月2日紙版発売
2019年3月2日電子版発売
須田一輝,稲津和磨,五十嵐綾,坂下幸徳,吉田拓弘,河宜成,久住貴史,村田俊哉 著
B5変形判/328ページ
定価3,278円(本体2,980円+税10%)
ISBN 978-4-297-10438-2
書籍の概要
この本の概要
Dockerの登場以降,アプリケーションはコンテナイメージとして管理・実行できるようになりました。コンテナイメージには,アプリケーションの実行に必要な言語ランタイムやライブラリなどがすべて含まれているため,どんな環境でも同じアプリケーションを同じように実行できます。このコンテナの利点を活かして,アプリケーションのデプロイ・設定・管理を自動的に行うためのソフトウェアが「Kubernetes(クーバネティス)」です。
本書は,コンテナイメージの作成・デプロイ・運用という一連の流れに沿って,アプリケーション(コンテナ)を本番運用で使える状態(プロダクションレディ)にまで持っていく方法を解説します。
具体的には,アプリケーションの開発や運用に携わる人向けに,Kubernetesクラスタ上で,アプリケーション(コンテナ)のデプロイ,更新,安定性の向上,セキュリティの強化,ロギング,モニタリングなどを行う方法を扱います(Kubernetesクラスタそのものの構築や運用については扱っていないため,ご注意ください)。
こんな方におすすめ
- コンテナでデプロイ・本番運用したいと考えているアプリケーションエンジニア
- Kubernetesの使い方を学びたいエンジニア
この書籍に関連する記事があります!
- いよいよコンテナ技術で本番運用する時代へ―そのとき開発者に求められる力とは
- この数年,Web業界を中心にコンテナ(コンテナ仮想化)という技術が注目されています。その背景を説明しましょう。
本書のサンプル
本書の一部ページを,PDFで確認することができます。
- サンプルPDFファイル(632KB)
本書の紙面イメージは次のとおりです。画像をクリックすることで拡大して確認することができます。
目次
第1章 Hello Kubernetes world! コンテナオーケストレーションとKubernetes
- 1.1 Kubernetesとは
- 1.1.1 コンテナオーケストレーションとKubernetes
- 1.1.2 Linuxコンテナ技術とDocker
- 1.1.3 頻繁なデプロイを可能にする「宣言的設定」
- 1.1.4 強力な自己回復機能「セルフヒーリング」
- 1.1.5 VM 中心ではなく「コンテナ中心のインフラ」
- 1.1.6 ベンダーロックインされない「クラウド・ポータビリティ」
- 1.2 Kubernetesが解決する課題
- 1.2.1 マイクロサービスとKubernetes
- 1.2.2 Kubernetesが解決するインフラ面の課題
- 1.2.3 Kubernetesが解決するアプリケーション面の課題
- 1.3 Kubernetesオブジェクト
- 1.3.1 Namespace ―― 論理的にクラスタを分割する
- 1.3.2 Pod ―― デプロイの最小単位
- 1.3.3 LabelとLabelセレクタ ―― オブジェクトのグルーピング
- 1.3.4 ReplicaSet ―― 実行されているPodレプリカ数を保証する
- 1.3.5 Deployment ―― デプロイ戦略とロールバック
- 1.3.6 Service ―― 仮想IPと負荷分散
- 1.3.7 ConfigMap ―― アプリケーションと設定情報の分離
- 1.3.8 Secret ―― アプリケーションと秘密情報の分離
- 1.3.9 その他のオブジェクト
- 1.4 Kubernetesのアーキテクチャ
- 1.4.1 クラスタを操作するコマンドラインツール「kubectl」
- 1.4.2 マスタコンポーネント
- 1.4.3 ノードコンポーネント
- 1.4.4 クラスタアドオン
- 1.5 まとめ
第2章 Kubernetesを構築する
- 2.1 クラスタの構築・運用の難しさ
- 2.2 クラスタ構築の方法
- 2.3 minikubeでクラスタを構築する
- 2.3.1 minikubeとは
- 2.3.2 インストール方法
- 2.3.3 minikubeでクラスタを構築する
- 2.3.4 kubectlとは
- 2.3.5 クラスタを停止・削除するには
- 2.3.6 minikubeでaddonを管理する
- 2.4 クラスタの動作に必要なコンポーネント
- 2.4.1 コンテナレジストリ
- 2.4.2 ログ分析
- 2.4.3 メトリクス
- 2.4.4 認証
- 2.5 まとめ
第3章 Kubernetes上にアプリケーションをデプロイする
- 3.1 アプリケーションを簡易的にデプロイする
- 3.2 Kubernetes APIでCRUDしてKubernetesの動きを体感する
- 3.2.1 Create,Read ―― アプリケーションがデプロイされるまでの流れを理解する
- 3.2.2 Update,Delete ―― ControllerManagerによる調整ループとセルフヒーリング
- 3.3 Dockerコンテナイメージを知る
- 3.3.1 Dockerfileを読む
- 3.3.2 DockerfileからDockerイメージを生成する
- 3.3.3 コンテナイメージをDocker Hubにアップロードする
- 3.4 アプリケーションのマニフェストを書く
- 3.4.1 DeploymentのYAMLファイルを書く
- 3.4.2 ConfigMapを使って設定値を管理する
- 3.4.3 Secretを使って秘密情報を取り扱う
- 3.5 クラスタ内のアプリケーション間で通信する
- 3.5.1 マニフェストを適用する
- 3.5.2 Serviceマニフェストを書いてサービスディスカバリの恩恵を受ける
- 3.5.3 外部アプリケーションをクラスタ内アプリケーションと同じように扱う
- 3.5.4 ClusterIPを使わないHeadless Service
- 3.6 アプリケーションを外部に公開する
- 3.6.1 NodePortを使って公開する
- 3.6.2 外部Load Balancerを使って公開する
- 3.6.3 Ingressを使って公開する
- 3.7 データを保存する
- 3.7.1 Kubernetesで利用するストレージの特徴と選定
- 3.7.2 スケールするMySQLの構成
- 3.7.3 ストレージの準備
- 3.7.4 外部ストレージの割り当て
- 3.7.5 StatefulSetを使ったMySQLのMaster-Slave構成
- 3.7.6 スケールするMySQLの動作検証
- 3.7.7 Mattermostとの接続
- 3.7.8 Mattermostを使ったデータ永続化の動作検証
- 3.8 定期的にバックアップを取る
- 3.8.1 1 回のみ実行するJob
- 3.8.2 定期実行するCronJob
- 3.9 まとめ
第4章 アプリケーションをデバッグする
- 4.1 Kubernetesオブジェクトの状態を把握する
- 4.1.1 kubectl get
- 4.1.2 kubectl describe
- 4.2 アプリケーションコンテナを調査する
- 4.2.1 kubectl logs
- 4.2.2 kubectl cp
- 4.2.3 kubectl exec
- 4.2.4 kubectl run
- 4.2.5 kubectl port-forward
- 4.3 kubectlの動作を調べる
- 4.3.1 設定情報を確認する
- 4.3.2 クラスタ情報を確認する
- 4.3.3 --vオプションでログレベルを変更する
- 4.4 まとめ
第5章 アプリケーションを更新する
- 5.1 アプリケーションを手動更新する
- 5.1.1 Dockerイメージの更新
- 5.1.2 更新したDockerイメージのデプロイ
- 5.2 アプリケーションを停止せずに更新する
- 5.2.1 ローリングアップデート
- 5.3 アプリケーションを以前の状態に戻す
- 5.3.1 ロールバック
- 5.3.2 ロールバックの注意点
- 5.4 アプリケーションを継続的に更新する
- 5.4.1 CI/CDとは
- 5.4.2 CI/CDツール
- 5.4.3 CI/CDとサービスアカウント
- 5.5 サービスアカウントを用意する(ServiceAccount,RBAC)
- 5.5.1 Kubernetesの認証・認可
- 5.5.2 サービスアカウント(ServiceAccount)
- 5.5.3 ServiceAccountの作成
- 5.5.4 Pod内のServiceAccountの利用
- 5.5.5 Role-Based Access Controlによる認可の設定
- 5.5.6 マニフェストでの管理
- 5.6 まとめ
第6章 アプリケーションの安定性をあげる
- 6.1 アプリケーションの耐障害性を向上させる
- 6.1.1 Podの動作を安定させるためのしくみ
- 6.1.2 Podの動作を安定させるしくみの恩恵を受けるには
- 6.2 負荷に応じてアプリケーションの処理能力を向上させる
- 6.2.1 スケールアップする
- 6.2.2 スケールアウトする
- 6.3 まとめ
第7章 アプリケーションのセキュリティを強化する
- 7.1 Kubernetesのセキュリティモデル
- 7.1.1 クラスタそのもののセキュリティ
- 7.1.2 アプリケーション自体のセキュリティ
- 7.2 コンテナイメージのスキャン
- 7.3 Podのセキュリティを強化する
- 7.3.1 コンテナ内でプロセスを実行するユーザを設定する
- 7.3.2 一般ユーザで動作するようにコンテナイメージを変更する
- 7.3.3 OSのセキュリティ機構を利用して権限を制限する
- 7.4 ネットワークのセキュリティを強化する
- 7.4.1 minikubeでNetworkPolicyを利用できるようにする
- 7.4.2 Mattermostのネットワーク構成のおさらい
- 7.4.3 NetworkPolicyの作成
- 7.4.4 NetworkPolicyが無指定の場合の挙動
- 7.4.5 デフォルトのNetworkPolicy
- 7.4.6 MattermostのNetworkPolicy
- 7.5 まとめ
第8章 アプリケーションを運用する
- 8.1 ロギング
- 8.1.1 kubectl logsでログを確認する
- 8.1.2 kubectl logsのしくみ
- 8.1.3 ログの転送・集約
- 8.1.4 ログ集約のパターン
- 8.1.5 EFKスタックでログを集約する
- 8.2 メトリクスモニタリング
- 8.2.1 kubectl topでリソース使用状況を確認する
- 8.2.2 kubectl topのしくみ
- 8.2.3 Kubernetesのメトリクスモニタリング
- 8.2.4 Prometheusとは
- 8.2.5 Prometheusをデプロイする
- 8.2.6 Prometheusでメトリクスを収集する
- 8.2.7 Grafanaでメトリクスを可視化する
- 8.3 まとめ
付録 Podのセキュリティを高める管理者向けの機能
- A.1 PodSecurityPolicyでPodのセキュリティ設定を強制する
- A.1.1 PodSecurityPolicyを有効にする
- A.1.2 PodSecurityPolicyの作成
- A.1.3 システムコンポーネントのためのポリシーのひもづけ
- A.1.4 ポリシーの例
この本に関連する書籍
-
目で見て体験! Kubernetesのしくみ ——Lチカでわかるクラスタオーケストレーション
近年普及が著しいKubernetesですが,手元でのクラスタ構築の難しさ,宣言的な管理の裏側の見えづらさなどから,多少触ってみるだけではその効果を実感したりしくみを理...
-
Kubernetesポケットリファレンス
コンテナの基盤技術として標準の地位を獲得したKubernetesが,「ポケットリファレンス」シリーズに登場。 近年コンテナ技術への注目が高まり,実プロジェクトへの普...
-
みんなのDocker/Kubernetes
今や当たり前に使われるようになったコンテナ技術ですが,実際の利用に裏打ちされたノウハウについては未だまとまった情報がないのが現状です。そんななか本書では,現...
-
Docker/Kubernetes 実践コンテナ開発入門
話題のコンテナ技術,Docker/Kubernetesの基礎から実際にアプリケーションを作るまでを解説した入門書です。Docker/Kubernetesを実際の現場で活用している著者が最新情...
-
Docker実践入門――Linuxコンテナ技術の基礎から応用まで
Linuxのコンテナ技術の1つであるDockerは,迅速なWebサービスの展開に必要不可欠なものであり,多くのIT企業が注目している重要なものである。本書では,そのしくみを明...
-
Dockerエキスパート養成読本[活用の基礎と実践ノウハウ満載!]
Dockerは,アプリケーションの開発・配布・実行のための,オープンソース・コンテナ型仮想化技術です。2013年の登場以来,重要なITインフラ技術として,エンジニアから...