Google Container EngineによるKubernetesクラスタの作成
KubernetesによるスケーラブルなWebアプリ環境の構築 第1回
本連載では、オープンソースのオーケストレーションシステムである「Kubernetes」を用いて、スケーラブルで運用しやすいWebアプリケーションを構築する方法を紹介します。「Google Container Engine」で提供されているKubernetesを使用し、構築方法には触れずにKubernetes上の構成にフォーカスを当てて説明します。今回はKubernetesおよびGoogle Container Engineの説明と、Kubernetesクラスタの作成方法、その上にWebアプリケーションをデプロイする方法を解説します。
-
- Page 1
本連載について
本連載では、6部構成で以下の機能を持ったWebアプリケーションを構築します。
- オートスケーリング
- 本番環境と開発環境で別のURLを持つ
- アプリケーションのバージョン番号を使った本番環境の切り替え
- アプリケーションのバージョンごとにURLを自動で割り当てる
- ロギング機能
- CPU使用率、メモリー使用率などのモニタリング機能
アプリケーションの構成図
本連載で作成するアプリケーションの構成図です。図1の「Ingress」「Service」「Pod」はKubernetesの用語です。各用語については後ほど説明します。
この構成にすると、以下のURLでそれぞれの環境にアクセスできます。
本番環境用のURL
- https://pro.app.io
開発環境用のURL
- バージョンがr45の場合:https://dev.app.io/versions/r45
- バージョンがr46の場合:https://dev.app.io/versions/r46
この構成には次の利点があります。
- バージョンごとにアプリケーションのテストが可能
- 本番環境で問題が起こった場合も、すぐに別のバージョンに切り替えることができる
連載の構成
本連載は、以下の内容で解説する予定です。
[第1回]Google Container EngineによるKubernetesクラスタを作成
KubernetesおよびKubernetesの概念、Google Container Engineについての解説をします。また、Google Container Engineのクラスタの作成方法と、その上にWebアプリケーションをデプロイする方法を解説します。
[第2回]Webアプリケーションを外部に公開
第1回で構成したクラスタに修正を行い、Webアプリケーションを外部に公開するための手順を解説します。
[第3回]Blue-Green Deployment相当の機能とアプリケーションのバージョンごとにURLを生成する機能を追加
第2回で構成したクラスタに対してさらに修正を行い、Serviceのselector(後述)を使ったBlue-Green Deployment相当の機能の実現方法と、アプリケーションのバージョンごとにURLを自動で割り当てる機能を実現するため、必要な手順を解説します。
[第4回]アプリケーションのデプロイと継続的インテグレーション
アプリケーションを効率的に開発するため、継続的インテグレーションの導入と本番環境および開発環境にデプロイする手順について解説します。
[第5回]モニタリングツールの導入
Google Container Engineでは標準のモニタリングツールである「StackDriver」の説明をします。また、StackDriverに足りないモニタリング機能を補うために「Prometheus」というオープンソースのモニタリングツールの導入方法を解説します。
[第6回目]アプリケーションのログの設定とアラートの設定
CPUやメモリーの使用率がしきい値を超えた場合にアラートやアプリケーションのログのフォーマットを変更して、ログレベルがError以上の場合はアラートを出すように設定します。
対象読者
- Linuxの基本的なコマンドが使える方
- Dockerの使用経験がある方
- Kubernetesを使ったことがない技術者
検証環境
Kubernetes側の環境
- Google Container Engine 1.7.3
- Kubernetes 1.7.3
クライアントの環境
- macOS Sierra 10.12.6
- kubectl 1.7.3
[注意]料金について
本連載では、Google Container Engineの料金と「Google Compute Engine」のVMインスタンス(仮想化インスタンス)の料金が時間に応じて発生します。
この記事は参考になりましたか?
- KubernetesによるスケーラブルなWebアプリ環境の構築連載記事一覧
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 吉海 将太(ヨシカイ ショウタ)
株式会社カブクのサーバーサイドエンジニアです。APIの開発(Python,GO,AppEngine)とKubernetesによるインフラ環境の構築を担当しています。好きな獣はチベットスナギツネです。 Twitter: @yoshikai_ Facebook < WINGSプロジェクト について>有限会社 WINGSプロジェクト が運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での 登録メンバ は約50名で、現在も執筆メンバを 募集中 。興味のある方は、どしどし応募頂きたい。 著書 、 記事 多数。 RSS X: @WingsPro_info (公式)、 @WingsPro_info/wings (メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
