エンタープライズ グレードのプロダクション GKE クラスタとワークロード

本番環境用に最適化された高セキュリティの 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: true Kubernetes ネットワーク ポリシーを有効にします。これにより、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_configmonitoring_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: true Shielded 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 クラスタ テンプレートを構成してデプロイし、ウェブ ワークロードが実行される基盤となるインフラストラクチャを作成します。

  1. エンタープライズ クラスの本番環境 GKE クラスタ テンプレートを複製してアプリケーションとしてデプロイします。

    選択したデプロイ プロジェクトに GKE クラスタが作成されます。

  2. コンポーネントを構成します。詳しくは以下をご覧ください。

  3. [デプロイ] をクリックします。アプリケーションは数分後にデプロイされます。

  4. [アプリケーションの詳細] パネルで、[出力] タブをクリックします。

  5. アプリケーションの cluster_id を特定します。この情報は、helm チャートをデプロイするときに使用します。

ウェブ ワークロードをデプロイする

エンタープライズ グレードのプロダクション GKE ワークロード テンプレートを使用して、作成したクラスタにウェブ ワークロードをデプロイします。ウェブ ワークロード構成を含む Helm チャートをデプロイします。

  1. [Google カタログ] ページの [エンタープライズ グレードのプロダクション GKE ワークロード] テンプレートで、[新しいアプリケーションを作成] をクリックします。

  2. [名前] フィールドに、アプリケーションの一意の名前を入力します。

  3. [GKE デプロイ ターゲット] 領域で、次の操作を行います。

    1. [プロジェクト リスト] で、エンタープライズ グレードの本番環境 GKE クラスタ アプリケーションから GKE クラスタをデプロイしたプロジェクトを選択します。

    2. [リージョン] リストから、GKE クラスタをデプロイしたリージョンを選択します。

    3. [クラスタ] リストから、デプロイされた GKE クラスタを選択します。

    4. [Namespace] リストで、ワークロードの Namespace を入力します。名前を変更していない場合は、default と入力します。

    5. [アプリケーションを作成] をクリックします。

    アプリケーションが作成され、構成ファイルが表示されます。

  4. [Helm チャート] パネルで、次の操作を行います。

    1. 構成の詳細を確認します。

    2. 省略可: 独自のニーズに合わせて構成をカスタマイズします。

    3. Helm チャートをクラスタにデプロイするには、[デプロイ] をクリックします。

      詳細な手順については、アプリケーションをデプロイするをご覧ください。

    数分後、Helm チャート構成が GKE クラスタにデプロイされます。

次のステップ