単一のロケーションでリソース管理に最適化された費用対効果の高い Google Kubernetes Engine(GKE)クラスタとワークロードを作成します。このガイドでは、基本的なウェブ アプリケーションのデプロイに使用できる次のテンプレートについて説明します。
単一リージョン GKE クラスタ テンプレート: 単一リージョン アプリケーションに必要な基盤となる インフラストラクチャを作成します。このテンプレートは、リソース管理に最適化された安全なプライベート GKE クラスタを設定します。
単一リージョン GKE ワークロード (プレビュー): 基本的なウェブ アプリケーションの構成を含む Helm チャートをデプロイします。 ワークロードは、CPU 負荷に基づいてスケーリングし、自発的な中断中にアプリケーションの可用性を確保するように構成されています。
たとえば、クラスタ テンプレートとワークロード テンプレートをデプロイして、次のようなビジネスニーズに対応できます。
| 例 | ビジネスニーズ | 実装 |
|---|---|---|
| 社内基幹業務アプリケーション | 内部アプリケーションには、特定のリージョンでの厳格なデータ所在地、予測可能な内部使用の費用対効果、高い信頼性が必要です。 | 単一リージョン デプロイを使用して、データの局所性を確保します。自動スケーリングを使用して、内部ユーザーの需要に合わせてリソースを効率的に管理します。 |
| リージョン e コマース バックエンド | e コマース プラットフォームには、継続的なサービスを確保するための特定のリージョンでの高可用性、販売イベント中のトラフィックの急増に対応するためのスケーラビリティ、顧客の取引とデータの堅牢なセキュリティが必要です。 | マルチゾーン クラスタ構成を作成すると、リージョンでの高可用性が実現します。セキュアブート構成を使用して、機密性の高い顧客データのセキュリティ体制を強化します。 |
| リージョン データ処理および分析プラットフォーム | 大規模なデータセットを処理して分析するためのプラットフォームには、コンプライアンスとパフォーマンスのためのデータの局所性、断続的なバッチジョブの費用対効果の高いコンピューティング、データへの安全なアクセスが必要です。 | 単一リージョン デプロイにより、データが地理的境界内に保持されます。大規模な処理タスクとアイドル期間のリソースをスケーリングします。 |
アーキテクチャ
次の図は、テンプレートのコンポーネントと接続を示しています。
このテンプレートのコンポーネント構成について説明します。
GKE Standard クラスタ: ワークロードが実行される費用対効果の高い単一リージョン クラスタ。
次の表に、このテンプレートのクラスタ構成を示します。
構成 目的 locationはus-central1に設定されています。クラスタ リソースを単一の地理的領域に限定し、データの局所性を確保して、リージョン間のデータ転送コストとレイテンシを最小限に抑えます。 initial_node_countは1に設定されています。クラスタが最初にプロビジョニングされるときに、クラスタのデフォルトのノードプールに作成する初期ノードを定義します。リージョン クラスタの場合、これはゾーンあたりのノード数です。 release_channelは{"channel":"REGULAR"}に設定されています。GKE クラスタが安定した予測可能な更新を受け取り、新機能と信頼性のバランスが取れるようにします。 enable_intranode_visibilityはtrueに設定されています。VPC フローログでノード内トラフィックの可視性を有効にします。これは、ネットワーク モニタリング、トラブルシューティング、セキュリティ分析に必要です。 control_plane_endpoints_configは{"dns_endpoint_config":{"allow_external_traffic":true}}に設定されています。GKE コントロール プレーンは、Virtual Private Cloud(VPC)ネットワークの外部からクラスタを管理できるように、一般公開されるように構成されています。 GKE ノードプール: アプリケーションのコンテナを実行するワーカーノードのグループ。
次の表に、このテンプレートのノードプール構成を示します。
構成 目的 locationはus-central1に設定されています。このノードプールが作成されるリージョンを指定します。クラスタのロケーションと同様に、ノードプール リソースが単一の地理的領域に配置されます。 autoscalingは{"max_node_count":3, "min_node_count":1}に設定されています。このノードプールのクラスタ オートスケーラーを構成します。 ノードプールに常に 1 つ以上のノードが維持され、上限を 3 つのノードに設定して、コストとリソース消費を制御します。 node_configは{"machine_type":"e2-medium", "oauth_scopes":["https://www.googleapis.com/auth/cloud-platform"], "shielded_instance_config":{"enable_secure_boot":true}}に設定されています。このプール内のノードの構成をグループ化します。マシンタイプは、汎用ワークロードに適した CPU とメモリのバランスです。サービス アカウントに付与されるアクセス権を定義します。Shielded VM インスタンスのセキュアブートを有効にし、ブートレベルのマルウェアから保護します。
Helm チャートの構成
次の表に、GKE で基本的なウェブ アプリケーションをデプロイしてスケーリングするためにカスタマイズされた Helm チャートの構成を示します。
| 構成 | 目的 |
|---|---|
replicaCount: 2 |
初期レベルの冗長性を確立するために、2 つの初期レプリカを作成します。 |
image.repository: gcr.io/google-samples/hello-app |
基本的なウェブサーバーの Docker イメージを使用します。 |
resources.requests: {"cpu": "100m", "memory": "128Mi"} |
各 Pod に予約される CPU とメモリの最小量を指定し、利用可能なリソースと効率的なスケジューリングを確保します。 |
hpa: {"enabled": true, "minReplicas": 2, "maxReplicas": 10, "targetCPUUtilizationPercentage": 60} |
水平 Pod オートスケーラーを有効にして、CPU 使用率に基づいて Pod の数を 2 ~ 10 の間で自動的に調整し、パフォーマンスと費用対効果を確保します。 |
service: {"type": "ClusterIP", "port": 80} |
標準の HTTP ポートでクラスタ内の内部アクセス用にサービスを構成します。 |
pdb: {"enabled": true, "minAvailable": 1} |
Pod Disruption Budget を有効にして、自発的な中断中に少なくとも 1 つのレプリカが使用可能な状態を維持し、高可用性を維持します。 |
ウェブ アプリケーションを作成する
ウェブ アプリケーションをデプロイするには、 単一リージョン GKE クラスタとワークロード テンプレートを使用します。
ウェブ インフラストラクチャをデプロイする
単一リージョン GKE クラスタ テンプレートを構成してデプロイし、ウェブ ワークロードが実行される基盤となるインフラストラクチャを作成します。
単一リージョン GKE クラスタ テンプレートを複製して、アプリケーションとしてデプロイします。
選択したデプロイ プロジェクトに GKE クラスタが作成されます。
コンポーネントを構成します。詳しくは以下をご覧ください。
[デプロイ] をクリックします。数分後にアプリケーションがデプロイされます。
[アプリケーションの詳細] パネルで、[出力] タブをクリックします。
アプリケーションの cluster_id を確認します。この情報は、Helm チャートをデプロイするときに使用します。
ウェブ ワークロードをデプロイする
単一リージョン GKE ワークロード テンプレートを使用して、作成したクラスタにウェブ ワークロードをデプロイします。ウェブ ワークロード構成を含む Helm チャートをデプロイします。
[Google カタログ] ページの [単一リージョン GKE ワークロード] テンプレートで、[新しいアプリケーションを作成] をクリックします。
[名前] フィールドに、アプリケーションの一意の名前を入力します。
[GKE デプロイ ターゲット] 領域で、次の操作を行います。
[**プロジェクト リスト**] から、 _単一リージョン GKE クラスタ_ アプリケーションから GKE クラスタをデプロイしたプロジェクトを選択します。
[リージョン] リストから、GKE クラスタをデプロイしたリージョンを選択します。
[クラスタ] リストから、デプロイされた GKE クラスタを選択します。
[Namespace] リストに、GKE クラスタをデプロイした Namespace を入力します。名前を変更していない場合は、「
default」と入力します。[アプリケーションを作成] をクリックします。
アプリケーションが作成され、構成ファイルが表示されます。
[Helm チャート] パネルで、次の操作を行います。
構成の詳細を確認します。
省略可: 独自のニーズに合わせて構成をカスタマイズします。
Helm チャートをクラスタにデプロイするには、[デプロイ] をクリックします。
詳細な手順については、アプリケーションをデプロイするをご覧ください。
数分後、Helm チャートの構成が GKE クラスタにデプロイされます。
次のステップ
- このテンプレートをデプロイまたは複製する方法を学習する。
- 特定のニーズに合わせてテンプレートをカスタマイズする 方法を理解する。
- アーキテクチャ フレームワークで一般的なアーキテクチャのベスト プラクティスを確認する。Google Cloud