GKEの特徴とは?GKEのもつ長所6選と機能について解説!

GKEの特徴とは?GKEのもつ長所6選と機能について解説!のアイキャッチイメージ

GKEとは?

Googleが開発したGKE(Google Kubernetes Engine)とは、Kubernetesをベースとしたマネージドサービスです。 Kubernetesとは、1つ以上のコンテナから構成されるクラスターの管理やスケールを自動的に行うオーケストレーションツールのことです。

どのようなコンテナによって、サービスが構成されるのかを定義すると、コンテナの立ち上げからモニタリング・ロードバランシング・サービスの自己修復などを自動で行い各コンテナを協調動作させることができます。

コンテナとは?

ホストのOS上にアプリケーションの起動に必要な「アプリケーション本体」と「必要なライブラリ」や「設定ファイル」などをひとまとめにしたものを「コンテナ」といいます。

コンテナをコンテナエンジン上で起動することでアプリケーションの実行の際、ゲストOSを起動させる必要がある仮想マシンを使用するよりもメモリやCPUリソースを余計に使うことなくアプリケーションの実行を行うことができます。

Googleにおけるコンテナの歴史

Googleは、UNIX OS「Version 7 Unix」の開発途中に各プロセスの分離を行うchrootを開発し導入しました。これによりシステムコール・コマンドの開発で大きく進展しました。

また、プロセスの分離を行うことで、システムセキュリティが向上しました。コンテナ技術の開発が進み、Kubernetesの基となったコンテナクラスタ管理システムであるBorgを導入しました。

更にコンテナ管理ソフトウェアである、Dockerが登場しました。

Kubernetesとは?

自動デプロイやスケーリング・アプリ・コンテナの運用を自動化するために設計されたオープンソースのプラットフォームをKubernetesといいます。Kubernetesにより迅速で余計なメモリやCPUを消費することなくアプリケーションの実行ができます。

大規模な分散環境で少人数のエンジニアでコンテナアプリケーションを管理することができ、コンテナの利点を生かすことのできるプラットフォームです。

Kubernetesの特徴

Kubernetesの主な特徴は、ハードウェアインフラストラクチャーを抽象化しデータサーバ全体を一つの膨大な計算リソースとしてみなすことです。これにより、開発者が実際のサーバーを意識することなく、コンテナアプリケーションをデプロイして実行することができます。

障害が発生した場合も、復旧作業をエンジニアがしますがKubernetesに正常の定義をファイル設定することで、障害が発生してもエンジニアを介さずに、正常に戻すことができます。

GKEのもつ長所6つ

Googleが開発したGoogle Kubernetes Engine(GKE)により、Kubernetesをベースとし各種コンテナを常に正しく自動的に実行できるようになりました。障害発生時にも自動的に正常な状態へ復旧を行えるため実用性の高いシステムです。

高い安全性や複数のサービスと連携・統合できるため現在のサービス提供において活用されることが多いGKEですが、実際の活用にはどのようなメリットがあるのでしょうか。大きく6つにわけて詳しくご説明します。

長所1:安全性が高い

コンテナイメージのコンテンツやコンテナのランタイム・クラスタネットワーク・クラスタAPI サーバへのアクセスなど何層ものスタックをGKEで行うことで、ワークロードを保護することができます。

ニーズに合わせ最適な状態でセキュリティ機能を構成することができます。これにより高い安全性を保持することができます。

長所2:多様なサービスと統合できる

GKEはステートフル・サーバレス・アプリケーションアクセラレータに対応した多様なアプリを開発することができます。

Kubernetes固有のCI/CDツールを使用することで、構築とデプロイに関しライフサイクルの各ステージについて、セキュリティを保持しながらスピードアップすることができます。サーバレスで対応できるため多様なサービスとの統合ができます。

長所3:インフラ構築の再現性が高い

大規模なゲームパブリッシャーやファッションメディアなどのインフラやデータ分析をしなければならない場合にもGKEは大変役に立ちます。障害が発生した場合自動修復ができるGKEは、インフラを構築することにおいて再現性が高い傾向にあります。

役割分担されたコンテナや機能追加としてのインフラの構築が必要になった際にもGKEを活用することで高い再現性を実現できます。

長所4:コミュニティが充実している

Kubernetesは、オープンソースプロダクトのため他の多くの場所からサポートを受けることが可能です。これはGKEであることの強みです。

数々のサーバにおいてKubernetesを活用しているため、GKEを通し多くのコミュニティと繋がることが可能です。このコミュニティが充実していることで更にGKEは実力を発揮することができます。

長所5:コストパフォーマンスが良い

Kubernetesが複雑であるため学習コストは少し高いですが、今後の開発者はKubernetesが必修になりますので、学習コストを考えてもコストパフォーマンスは良いです。

正常な状態を定義すれば自動復旧や改修においても人件費を多重にかけることなく、インフラ運用の手間を省くことができるためコストパフォーマンスを更に高めることができます。

また、他のツールとの組み合わせによって使用される場所が増えるため今後更に高くなります。

長所6:GKEの運用のしやすさ

アプリケーションの開発・運用には、さまざまなシステムを合わせてホストOSを起動する以外にゲストOSの起動も必要とされてきました。これにより必要以上にメモリやCPUを使用しなければならず、展開するのも大変でした。

GKEを使用しコンテナ化する技術ができたことでゲストOSの起動をしなくてもアプリケーションの実行を行うことができるようになったため、余計なメモリやCPUを使用することなく実行・展開を行えるようになりました。

GKEがアプリを運用する際に必要な機能5つ

GKEが1つ以上のコンテナから構成されるクラスターの管理やスケールを自動的に行うオーケストレーションツールであるKubernetesを活用するためマネジメントシステムである説明を上記でしてきました。

では実際GKEがアプリを運用する際に必要とされる機能はどんなものがあるのでしょうか。GKEを最大限に活用するため、5つにわけて必要な機能をご説明させて頂きます。

機能1:GKE Sandbox

GKE Sandboxとは、コンテナを分離するためのソリューションです。 GKE上でコンテナ化されたワークロードに2番目に防御レイヤを提供します。

オープンソースのコンテナサンドボックス化プロジェクトであるgVisorをベースとして開発されています。

速度とパフォーマンスを維持したままアプリケーションの変更や、新しいアーキテクチャモデルを追加したりすることなく、複雑化せず多層防御のセキュリティ定義をコンテナに導入することができます。

機能2:Anthos

Anthosは、ハイブリッドクラウドやマルチクラウド環境のオープンアプリケーションのプラットフォームです。既存のアプリケーションのモダナイズと新規アプリケーションの構築をし、どこでも安全に動作するアプリケーション開発を可能にしています。

Googleが開発に深く関与したオープンソーステクノロジーを基盤として、オンプレミス・クラウドの各環境で一貫性を提供します。これにより迅速なアプリケーション開発を行うことができます。

機能3:Binary Authorization

Binary Authorizationは、信頼できるコンテナイメージのみをGKEにデプロイされることを保証する機能で、デプロイする際のセキュリティを管理するサービスです。

Binary Authorizationを使用すると、開発のプロセス時に信頼できる機関によるイメージへの署名を必須とし、デプロイ時にその署名を検証することができます。

検証プロセスを適用することによって、適切であると認められたイメージのみ、ビルドとリリースのプロセスに組み込まれ、コンテナ環境をより厳密に管理できます。

機能4:Istio

Istioはマイクロサービスをセキュアにマネージメントするための機能で、Kubernetes同様のものです。マイクロサービス化が進む現代に、複雑なサービスメッシュの管理が追いつかない課題を解決するため開発されました。

サービス間の認証などで柔軟なロードバランシングが提供されています。現在はKubernetesにのみ対応されており、Podにデプロイされるためサービスコードを修正する必要がないためアプリケーション開発者に負担をかけることがありません。

機能5:Cloud Identity & Access Management

Cloud Identity &Access Management(IAM)とはプラットフォーム・サービスに関してユーザーをセキュアに認証することができ、リソースへのアクセスを制御することができます。

複数のリソース・グループに編成されていて、ユーザーは一度に複数のリソースに素早くアクセスすることができます。

アクセスポリシーを使用し、アカウント内のリソースへのアクセス権限をサービスIDに割り当てることができ、グループ内の全てにアクセス権限を付与することができます。

GKEでなくCloud Runを使った方が良い3ケース

GKEは構成の柔軟性からコンテナオーケストレーションのプラットフォームを求めている数多くの方から選ばれています。

しかし、オーケストレーションプラットフォームはGKEだけではありません。使用する環境や状況で他のサーバレスプラットフォームであるCloud Runというものもあります。今回はCloud Runを使用した方がいい場合についてご説明します。

ケース1:複雑な構成が必要ない場合

サービスを開発するにあたって、コンテナ化し分離したものを複雑に組み合わせなければならない場合GKEを利用すると複雑化せずアプリケーションの実行を行うことができるシステムです。

ですから、複雑な構成がいらないシステムの場合GKEを活用しなくてもCloud Runで十分アプリケーションの実行を行うことができます。Cloud Runはコンテナ化されたマイクロサービスをシングルコマンドでデプロイできるためサービス固有の構成は不要です。

ケース2:スケーラビリティに重きを置く場合

Cloud Runにデプロイされるマイクロサービスですが、リクエスト数に応じ自動的にスケーリングをします。本格的なKubernetesを使用したクラスターの構成・管理は不要となります。

スケーラビリティに重点を置く場合GKEよりもCloud Runを活用する方が効率的になります。

ケース3:サーバレスの利点を生かしたい場合

Cloud RunはKubernetesの名前空間やポッドでのコンテナ共存・ノードの割り当てや管理といった機能を必要としません。

コンテナ化されたステートレスマイクロサービスにうってつけのサーバレスプラットフォームのため、サーバレスの利点を生かしたい場合はGKEよりもCloud Runを活用する方が効率的です。

GKEは確かに利便性が高く活用されるシーンが多いですが、必要に応じて使い分けることで更に効率よく作業することができます。

GKEについて理解を深めよう

アプリケーションの開発・実行において複雑化したコンテナを簡易化し作業効率をあげることができるのがGKEです。

セキュリティ性も高く利便性も高いシステムですが、使用目的と状況に応じてCloud RunとGKEを使い分けることで更に作業効率をあげることができます。GKEの理解を深めることで、更にGKEの長所を生かすことができます。