本番環境用に最適化された高セキュリティの Google Kubernetes Engine(GKE)クラスタとワークロードを作成します。このガイドでは、本番環境のウェブ アプリケーションのデプロイに使用できる次のテンプレートについて説明します。
エンタープライズ グレードの本番環境 GKE クラスタ テンプレート: 本番環境アプリケーションに必要な基盤となるインフラストラクチャを作成します。このテンプレートは、完全性、高度なネットワーキング、障害復旧に最適化された安全なプライベート GKE クラスタを設定します。
エンタープライズ グレードのプロダクション GKE ワークロード(プレビュー): 高可用性のステートレス ウェブ アプリケーションの構成を含む Helm チャートをデプロイします。ワークロードは、セキュリティ、信頼性、サービスの継続性を強化するように構成されています。
たとえば、クラスタ テンプレートとワークロード テンプレートをデプロイして、次のビジネスニーズに対応できます。
| 例 | ビジネスニーズ | 実装 |
|---|---|---|
| グローバル取引プラットフォーム | 金融機関は、高頻度取引を処理するために、低レイテンシでグローバルに分散された取引プラットフォームを必要としています。このプラットフォームには、最大限の稼働時間、厳格なセキュリティ、監査可能なコンプライアンスが求められます。 | 高度なネットワーキングを備えたグローバルに分散されたマルチリージョン クラスタを使用して、超低レイテンシと復元力を確保します。データ保護と規制遵守のために、強力なネットワーク ポリシー、プライベート クラスタ構成、高度なセキュリティ機能を実装します。 |
| マルチテナント SaaS プラットフォーム | Software as a Service(SaaS)プロバイダは、数千もの企業顧客向けに、高度にスケーラブルで安全かつ費用対効果に優れたプラットフォームをホストする必要があります。そのため、厳格なテナント分離、動的なリソース割り当て、ダウンタイムのない新機能の継続的な配信が求められます。 | 堅牢な Namespace 分離、ネットワーク セグメンテーション、割り当て管理を備えたマルチテナント クラスタを使用して、テナント間の公平なリソース共有とセキュリティを確保します。 |
| 重要なオペレーションのリアルタイム推論 | 組織は、ミッション クリティカルな不正行為検出アプリケーションでリアルタイム推論を行うために AI/ML モデルをデプロイする必要があります。このアプリケーションでは、極めて低いレイテンシ、高いスループット、完全な監査可能性を備えた新しいモデル バージョンに迅速に適応する機能が求められます。 | AI 推論用の専用ノードプールを使用してクラスタを構成します。低レイテンシのネットワーク接続を確保し、推論エンドポイントへの効率的なトラフィック ルーティングを有効にします。 |
アーキテクチャ
次の図は、テンプレートのコンポーネントと接続を示しています。
このテンプレートのコンポーネント構成は次のとおりです。
GKE Standard クラスタ: ワークロードが実行されるクラスタ。
次の表に、このテンプレートのクラスタ構成を示します。
構成 目的 location: us-central1地理的境界内のデータの局所性とコンプライアンスを確保します。リージョン内のマルチゾーン設定により、高可用性が実現します。 network: projects/PROJECT_ID/global/networks/enterprise-vpc通常、ネットワーク セグメンテーションと接続用に設計された既存の VPC を指定します。 subnetwork: projects/PROJECT_ID/regions/us-central1/subnetworks/gke-subnet通常、適切な IP 割り当てとネットワーク分離で設計された VPC 内のクラスタのサブネットワークを指定します。 master_authorized_networks_config: [{"cidr_block": "10.0.0.0/8", "display_name": "Internal Network"}]コントロール プレーン エンドポイントへのアクセスを特定の信頼できる IP CIDR ブロックに制限します。これにより、クラスタ管理 API への不正アクセスを防ぐことができます。 private_cluster_config.enable_private_endpoint: trueコントロール プレーンにアクセスできるのは、VPC 内または承認済みのネットワーク内の内部 IP アドレスのみです。これにより、公開を削除してセキュリティが強化されます。 private_cluster_config.enable_private_nodes: trueすべてのワーカーノードにプライベート IP アドレスのみが割り当てられ、公共のインターネットから隔離され、攻撃対象領域が縮小されます。 release_channel: STABLE予測可能で徹底的にテストされたアップデートにより、本番環境の安定性が維持されます。 network_policy.enabled: trueKubernetes ネットワーク ポリシーを有効にします。これにより、Pod 間の通信を制御して、セキュリティとマイクロセグメンテーションを強化できます。 binary_authorization: trueデプロイ ポリシーを適用し、信頼できる署名付きコンテナ イメージのみがクラスタで実行されるようにします。 database_encryption: {"state": "ENCRYPTED_WITH_CMEK", "key_name": "projects/PROJECT_ID/locations/us-central1/keyRings/gke-keyring/cryptoKeys/gke-etcd-key"}顧客管理の暗号鍵(CMEK)はデータベースを暗号化し、データ セキュリティを確保してコンプライアンス要件を満たします。 workload_identity_config: {"enabled": true}Kubernetes サービス アカウントが Google Cloud サービス アカウントとして機能し、IAM を使用してリソースへのきめ細かい安全なアクセスを可能にします。 logging_configとmonitoring_configが{"component_config": {"enable_components": ["SYSTEM_COMPONENTS", "WORKLOADS"]}}に設定されているCloud Logging と Cloud Monitoring と統合され、本番環境ワークロードの包括的なオブザーバビリティ、監査、アラートが保証されます。 maintenance_policy: {"daily_maintenance_window": {"start_time": "03:00"}, "recurring_window": {"start_time": "00:00", "end_time": "04:00", "recurrence": "FREQ=WEEKLY;BYDAY=SAT,SUN"}}メンテナンスの時間枠は、GKE が自動アップグレードを実行するタイミングを制御し、重要なアプリケーションの中断を最小限に抑えます。 enable_shielded_nodes: trueShielded GKE Nodes は、セキュアブートや整合性モニタリングなどのセキュリティ機能を提供し、ルートキットやブートレベルのマルウェアから保護します。 gateway_api_config: {"channel": "CHANNEL_STANDARD"}エンタープライズ アプリケーションでの複雑なルーティング、ロード バランシング、API 管理のための高度なトラフィック管理。 security_posture_config: {"mode": "ENTERPRISE", "vulnerability_mode": "VULNERABILITY_ENTERPRISE"}脆弱性スキャンやポリシーの適用など、高度なセキュリティ ポスチャー管理。 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: 3 |
3 つの初期レプリカを作成して、アプリケーションの初期レベルの冗長性と基本的な高可用性を確立します。 |
image.repository: gcr.io/google-samples/hello-app |
プレースホルダとして基本的なウェブサーバーの Docker イメージを使用します。 |
resources.requests: {"cpu": "100m", "memory": "128Mi"} |
各 Pod に予約される CPU とメモリの最小量を指定し、使用可能なリソースと効率的なスケジューリングを確保します。 |
resources.limits: {"cpu": "250m", "memory": "256Mi"} |
各 Pod に予約される CPU とメモリの最大量を指定し、単一の Pod によるリソースの独占を防ぎます。 |
networkPolicy.enabled: true |
アプリケーションの Kubernetes ネットワーク ポリシーを有効にします。これにより、Pod が相互に通信する方法や他のネットワーク エンドポイントと通信する方法のルールを定義し、ネットワークのセグメンテーションと分離を適用できます。 |
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] リストで、ワークロードの Namespace を入力します。名前を変更していない場合は、
defaultと入力します。[アプリケーションを作成] をクリックします。
アプリケーションが作成され、構成ファイルが表示されます。
[Helm チャート] パネルで、次の操作を行います。
構成の詳細を確認します。
省略可: 独自のニーズに合わせて構成をカスタマイズします。
Helm チャートをクラスタにデプロイするには、[デプロイ] をクリックします。
詳細な手順については、アプリケーションをデプロイするをご覧ください。
数分後、Helm チャート構成が GKE クラスタにデプロイされます。
次のステップ
- テンプレートを複製してカスタマイズする方法については、クイックスタート: Google テンプレートをカスタマイズしてデプロイするをご覧ください。
- アプリケーション テンプレートを設計して、独自の構成を定義します。
- Google Cloud アーキテクチャ フレームワークで、一般的なアーキテクチャのベスト プラクティスを特定する。