ちょっと話題の記事

書評「Kubernetes on AWS ~アプリケーションエンジニア 本番環境へ備える」は Kubernetes を中心に AWS も学ぶことができる良書

2020.05.12

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

そろそろ Kubernetes 入門しようかな。インフラは AWS がいいな。

そんなあなたに

Kubernetes on AWS ~アプリケーションエンジニア 本番環境へ備える

ということで本日は 2020/03/25 に出版されたKubernetes on AWS ~アプリケーションエンジニア 本番環境へ備えるを紹介したいと思います。

こんな方にお勧め

  • コンテナベースの開発プロセスや Kubernetes の基本的な使い方を理解したいアプリケーションエンジニアの方
  • Kubernetes は避けては通れないと思っている AWS エンジニア(インフラエンジニア)の方
  • Kubernetes を本番運用するにあたり何をすべきなのか知りたい方

それではいってみましょう!!

そもそも Kubernetes とは

Kubernetes はコンテナオーケストレーションツールです。Kubernetes を利用することでコンテナ化されたアプリケーションのデプロイ、スケーリング等を管理することができます。

コンテナオーケストレーションツールには、Docker Swarm や Mesos など様々なものが存在していますが、2020 年現在、Kubernetes が事実上の標準となっています。

ざっくりどんな本なの?

サンプルアプリケーションを Amazon EKS(AWS が提供する Kubernetes を実行するためのマネージドサービス)にデプロイする体験を通して、Kubernetes および AWS を学ぶ書籍です。

本書の中心は Kubernetes ですが、AWS 上で動作させることを前提として書かれているため、Kubernetes と同時に VPC、RDS、ELB、S3 など AWS の主要なサービスについても学ぶことができます。

また、タイトルにある通り Kubernetes を本番運用するための考慮(モニタリング、ログ監視、セキュリティ、デプロイ等)についても深く書かれています。これから EKS の導入を検討する!という方は必見、もうすでに運用しているという方も見ておいて損はないでしょう。

AWS と Kubernetes の両方をカバーした書籍であるため、以下のようなEKS に特化した内容も充実しています。

  • IAM ロールを Pod ごとに個別に指定する
  • EKS が AWS CLI(aws eks get-token)で認証できる仕組み

Kubernetes や AWS の機能詳細を説明するというよりは、実践で必要な知識が多く記載された書籍だと感じました。

以下、本書の特徴をいくつか紹介します。

サンプルアプリケーションがモダンな構成である

Kubernetes の部分だけでなくそれ以外の部分についてもモダンな構成になっています。

  • フロントは SPA(Nuxt.js)で作成し、CloudFront、S3 で配信
  • サーバーサイドは Spring Boot で作成したアプリを Docker 化し EKS でホスト

また、AWS に詳しい人であればそのような構成にするよね!というような内容まで盛り込まれています。

  • 踏み台サーバーに対するアクセスは SystemsManager 経由
  • RDS のパスワードは CloudFormation で作成し、SecretsManager に保存 などなど

Kubernetes だけ学ぼうとすると得られない AWS の周辺知識まで習得できます。これは Kubernetes に特化した書籍にはない魅力です。

構築手順が丁寧である

AWS に知見がない人でも構築作業で迷うことはありません。リソースは CloudFormation で作成する部分が大半ですが、それ以外の操作に関する部分も GUI で丁寧に説明されてます。

また、AWS リソースを作成する CloudFormation や、kubernetes のリソースを作成するマニュフェストファイルに関する説明も充実しています。

項目1つ1つに対しての説明があるのは嬉しいですね。

コラムが充実している

コラムが面白いです。エンジニアであれば気になるあんなことやこんなことが記載されています。

  • IAM ロールを Pod ごとに個別に指定する
  • 様々なモニタリングツール・監視ツール
  • EKS が AWS CLI(aws eks get-token)で認証できる仕組み
  • アプリケーションや環境毎にクラスターは分けるべき?
  • Secret などの機密情報を GitOps で管理する工夫
  • バージョンアップ戦略を考える
  • etc

私自身 EKS 環境を構築したことはありますが、その際に気になって調べた内容がコラムとして書かれているような印象を受けました。コラムを見るだけでも学びがあると思います。

各章の概要

章立て

章立ては以下のようになっています。

  • 第 1 章 コンテナ技術の普及と Kubernetes
  • 第 2 章 Kubernetes 環境の構築とサンプルアプリケーションのデプロイ
  • 第 3 章 Kubernetes でアプリケーションを動かす仕組み
  • 第 4 章 本番運用に向けた考慮

各章のざっくり概要です。

第 1 章 コンテナ技術の普及と Kubernetes

コンテナが普及してからAmazon EKSが登場するまでの歴史/経緯と技術的な部分の概要を理解することができます。

第 2 章 Kubernetes 環境の構築とサンプルアプリケーションのデプロイ

GUI や CLI、CloudFormation を使ってサンプルアプリケーションをデプロイします。 AWS の主要サービス( S3 、 CloudFront 、 RDS など)の概要も本章に記載されています。人によっては聞きなれない単語が多く難しく感じるかもしれませんが、手順通りに実施すればアプリケーションの実行環境が出来上がります。各機能の詳細ではなくアプリケーションの全体イメージをつかむことができます。

具体的には以下を実施します。

  • EKS クラスタの構築
  • データーベースのセットアップ
  • サーバーサイドアプリケーションのビルド、EKS クラスタへのデプロイ
  • フロントエンドアプリケーション実行環境( CloudFront 、 S3 )の構築
  • フロントエンドアプリケーションのビルド、 S3 へのデプロイ
  • バッチアプリケーション(CronJobで起動)のビルド、EKS クラスタへのデプロイ
  • 作成したリソースの削除

第 3 章 Kubernetes でアプリケーションを動かす仕組み

第 2 章にてデプロイした Kubernetes リソースの詳細内容を知ることができます。Pod や Deployment など Kubernetes の主要なリソースの解説はもちろん、設定情報を安全に取り扱うための Secret や、Pod を安全に公開するための ヘルスチェック( Rediness Probe 、Liveness Probe)、リソースマネージメント( request 、limits )についても学ぶことができます。

第 4 章 本番運用に向けた考慮

モニタリング、オートスケーリング、ログ監視、セキュリティ、バージョン管理、デプロイなど Kubernetes の運用について学ぶことができます。

  • モニタリング
    • CloudWatch Container Insights によるモニタリング や CloudWatch アラームを利用した通知、状況の可視化
  • オートスケーリング
    • Cluster Autoscalerによるデータプレーンのオートスケーリング、 Horizontal Pod Autoscalerによる Pod のオートスケーリング
  • セキュリティ
    • クラスタ / ノード / Pod / ネットワーク それぞれの観点でどのようなセキュリティ対策を講じるべきか
  • マニュフェスト管理、デプロイ
    • GitOpsによる CI / CD
    • Kustomize を使った実践的なデプロイ
  • バージョン管理
    • クラスタのバージョンアップ手順

Fargeteや、Kubernetesのエコシステムについても本章に記載されています。

最後に

冒頭に記載した通り、以下の方におすすめな書籍です。

  • コンテナベースの開発プロセスや Kubernetes の基本的な使い方を理解したいアプリケーションエンジニアの方
  • Kubernetes は避けては通れないと思っている AWS エンジニア(インフラエンジニア)の方
  • Kubernetes を本番運用するにあたり何をすべきなのか知りたい方

本書には Kubernetes on AWS を構築/運用する上で必要な知識がまとまっています。 初学者の方はカバー範囲が広く難しいと感じるかもしれませんが、知識にインデックスを貼るという意味でかなり有益だと思います。