目次

はじめに

対象読者
注意事項
サンプルコード
免責事項

第1章 セットアップ

1.1 Terraform
1.2 Amazon EKS
1.3 Kubernetes

第2章 サービス公開

2.1 Kubernetes概要
2.2 Webアプリケーションの準備
2.3 Deployment
2.4 NodePort
2.5 ロードバランサー
2.6 HTTPS対応
2.7 ヘルスチェック
2.8 オートスケーリング
2.9 IAM Roles for Service Accounts
2.10 まとめ

第3章 デプロイフロー

3.1 コンテナイメージのビルド
3.2 マニフェストの管理
3.3 GitOpsによるデプロイ
3.4 まとめ

第4章 監視

4.1 メトリクス
4.2 ログ

第5章 Kubernetesの運用

5.1 環境分離
5.2 ユーザー作成
5.3 アップデート
5.4 バックアップとリストア
5.5 管理者用リソースのインストール
5.6 コストとスケールの最適化

第6章 AWSにおけるKubernetes向けプログラムたち

6.1 AWS Load Balancer Controller
6.2 AWS Node Termination Handler
6.3 k8s-cloudwatch-adapter

おわりに

はじめに

 「AWSとTerraformで学ぶプロダクションレディなKubernetes」では、AWSとTerraformを使ってプロダクションレディなKubernetesの構築と運用方法を学びます。プロダクションレディとは何でしょうか?筆者の解釈では、プロダクションレディとはシステムの信頼性と開発効率がバランスよく整った状態であると考えます。

 Kubernetesを取り巻くエコシステムは膨大です。Kubernetesを扱いはじめてまだ間もないと、自分たちのKubernetes環境をどのようにプロダクションレディな状態にすればよいのか悩むと思います。本書を読むことで、プロダクションレディなKubernetesの一例を学ぶことができ、Kubernetesに対する悩みを解決するきっかけを掴めるはずです。あくまで一例ですので、ベストな選択肢ではないかもしれません。ただ、本書を理解したあとであれば、Kubernetesにおけるエコシステムの何を取捨選択すればよいのか判断基準ができると思います。本書が、Kubernetesへの理解を深めるための一助になれば幸いです。

対象読者

 対象読者は「Kubernetesを学びたい人」です。

 Kubernetesの初心者であれば、最初から手を動かしながら読むとKubernetes上でひととおりのサンプルシステムを構築できます。プロダクションレディなKubernetesをどのように実現するのかを学ぶことができます。

 すでにある程度Kubernetesを理解されている方であれば、目次から興味のある項目を読んでいくといいでしょう。自分のやり方と比較しながら読んでもらうと、よりKubernetesの理解が深まると思います。

注意事項

 本書では、多くのAWSのサービスを扱います。これらのサービスは利用時間に応じて料金がかかるものがほとんどです。本書の内容を実施するにあたっては、十分ご注意ください。ちなみに、AWSのKubernetesサービスであるAmazon EKSでは、1時間あたり0.10USDの料金が発生します。

 不要なAWSリソースは適宜削除しましょう。一度削除してもまたTerraformで作れます。

 また、筆者の環境の都合により、本書はmacOS環境が前提の内容になっております。他OSでの各種プログラムのインストール、セットアップに関しては適宜読み替えて頂ければと思います。

サンプルコード

 本書に掲載されているコードは次のリポジトリーで公開しています。


 ・https://github.com/hi1280/aws-terraform-k8s-production-ready

 ・https://github.com/hi1280/front-end

免責事項

 本書に記載された内容は、情報の提供のみを目的としています。したがって、本書を用いた開発、製作、運用は、必ずご自身の責任と判断によって行ってください。これらの情報による開発、製作、運用の結果について、著者はいかなる責任も負いません。

第1章 セットアップ

 本章では、AWSとTerraformを使って、Kubernetes環境を構築します。本書では、Kubernetes環境の構築にAmazon EKS(以降、EKS)を利用します。AWSではEKSを使うと、マネージドなKubernetes環境を作成できます。Terraformは、AWSなどのインフラストラクチャを管理するためのツールです。本書では、Terraformを使ってEKSなどのAWSのリソースを作成していきます。TerraformでEKSのリソースを作るには、Terraform公式のモジュールレジストリにあるterraform-aws-eks1を利用します。このTerraformモジュールを利用すると、EKSに必要なIAMロールなどを作成してくれるので便利です。

 Terraformを使うにはAWS CLI2が必要になります。本書では、すでにAWS CLIをインストールしているものとします。

1.1 Terraform

 本節では、Terraformのセットアップを行い、Terraformを使ってAWSのリソースを作成、削除できることを確認します。TerraformをAWSで使うには、Terraform用のIAMユーザーを作成し、アクセスキーを発行します。そのアクセスキーをAWS CLIに設定するとTerraformからAWSを操作できます。

1.1.1 セットアップ

 TerraformからAWSのリソースを操作できるように、Terraformのセットアップを行います。

 AWSのマネージメントコンソールのIAMからユーザーを選択し、ユーザーを追加をクリックします(図1.1)。

図1.1: IAMの画面

 ユーザー名を入力します。プログラムによるアクセスをチェックして、次のステップをクリックします(図1.2)。

図1.2: IAMユーザーの設定

 既存のポリシーを直接アタッチを選択します。AdministratorAccessをチェックし、次のステップをクリックします(図1.3)。

図1.3: IAMポリシーの設定

 タグは追加せず、次のステップをクリックします。ユーザーの作成をクリックします(図1.4)。

図1.4: 確認画面

 アクセスキーが表示されます(図1.5)。

図1.5: アクセスキーの表示

 このあとに使用するため、アクセスキーIDとシークレットアクセスキーをコピーしておきます。

 AdministratorAccessは、AWSにおいて管理者権限となるIAMポリシーです。何でもできてしまう権限のため、アクセスキーの扱いには注意が必要です。

 次のコマンドで、AWS CLIの設定を行います。設定を行うには、aws configureを利用します。本書では、すでにAWS CLIをインストール済みとしています。

$ aws configure

AWS Access Key ID [None]: AKIAXXXXXXXXXXXXXXX

AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Default region name [None]: ap-northeast-1

Default output format [None]: json

 AWS Access Key IDとAWS Secret Access KeyにコピーしておいたアクセスキーIDとシークレットアクセスキーを入力します。

 次のコマンドで、Terraformのインストールを行います。macOSではbrew3が利用できます。

$ brew install terraform

 本書では、Terraformのバージョンv0.14.6を使用しています。

 次のとおりに、terraformを実行してUsageの出力が行われれば、正常にインストールされています。

$ terraform

Usage: terraform [global options] <subcommand> [args]

...

1. https://registry.terraform.io/modules/terraform-aws-modules/eks/aws/latest

2. https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2.html

3. https://brew.sh/index_ja

試し読みはここまでです。
この続きは、製品版でお楽しみください。